import { RouteBuilder } from './route-builder.service'; export class RouteBuilderImpl implements RouteBuilder { public currentProfile: string = 'layout'; public profiles: any[] = [ // Start with the old pages (if we asked for it). {id: 'old-layout', templatePath: '/static/partials/'}, // Fallback back combined new/existing pages. {id: 'layout', templatePath: '/static/partials/'} ]; constructor(private routeProvider: ng.route.IRouteProvider, private pages: any) { for (let i = 0; i < this.profiles.length; ++i) { if (this.profiles[i].id == this.currentProfile) { this.profiles = this.profiles.slice(i); break; } } } public otherwise(options: any): void { this.routeProvider.otherwise(options); } public route(path: string, pagename: string): RouteBuilder { // Lookup the page, matching our lists of profiles. var pair = this.pages.get(pagename, this.profiles); if (!pair) { throw Error('Unknown page: ' + pagename); } // Create the route. var foundProfile = pair[0]; var page = pair[1]; var templateUrl = foundProfile.templatePath + page.templateName; var options = page.flags || {}; options['templateUrl'] = templateUrl; options['reloadOnSearch'] = false; options['controller'] = page.controller; this.routeProvider.when(path, options); return this; } }