diff --git a/modules/angular2/alt_router.ts b/modules/angular2/alt_router.ts index 0aa7ea79f4..d7ea77a688 100644 --- a/modules/angular2/alt_router.ts +++ b/modules/angular2/alt_router.ts @@ -5,7 +5,7 @@ */ export {Router, RouterOutletMap} from './src/alt_router/router'; -export {RouteSegment, UrlSegment, Tree} from './src/alt_router/segments'; +export {RouteSegment, UrlSegment, Tree, UrlTree, RouteTree} from './src/alt_router/segments'; export {Routes} from './src/alt_router/metadata/decorators'; export {Route} from './src/alt_router/metadata/metadata'; export { diff --git a/modules/angular2/src/alt_router/interfaces.ts b/modules/angular2/src/alt_router/interfaces.ts index 8d5a35aae4..c09b38df5f 100644 --- a/modules/angular2/src/alt_router/interfaces.ts +++ b/modules/angular2/src/alt_router/interfaces.ts @@ -1,11 +1,10 @@ -import {RouteSegment, Tree} from './segments'; +import {RouteSegment, Tree, RouteTree} from './segments'; export interface OnActivate { - routerOnActivate(curr: RouteSegment, prev?: RouteSegment, currTree?: Tree, - prevTree?: Tree): void; + routerOnActivate(curr: RouteSegment, prev?: RouteSegment, currTree?: RouteTree, + prevTree?: RouteTree): void; } export interface CanDeactivate { - routerCanDeactivate(currTree?: Tree, - futureTree?: Tree): Promise; + routerCanDeactivate(currTree?: RouteTree, futureTree?: RouteTree): Promise; } \ No newline at end of file diff --git a/modules/angular2/src/alt_router/link.ts b/modules/angular2/src/alt_router/link.ts index 1b151aef42..88e1b4d12b 100644 --- a/modules/angular2/src/alt_router/link.ts +++ b/modules/angular2/src/alt_router/link.ts @@ -1,9 +1,9 @@ -import {Tree, TreeNode, UrlSegment, RouteSegment, rootNode} from './segments'; +import {Tree, TreeNode, UrlSegment, RouteSegment, rootNode, UrlTree, RouteTree} from './segments'; import {isBlank, isPresent, isString, isStringMap} from 'angular2/src/facade/lang'; import {ListWrapper} from 'angular2/src/facade/collection'; -export function link(segment: RouteSegment, routeTree: Tree, - urlTree: Tree, change: any[]): Tree { +export function link(segment: RouteSegment, routeTree: RouteTree, urlTree: UrlTree, + change: any[]): UrlTree { if (change.length === 0) return urlTree; let startingNode; @@ -29,10 +29,10 @@ export function link(segment: RouteSegment, routeTree: Tree, let updated = _update(startingNode, normalizedChange); let newRoot = _constructNewTree(rootNode(urlTree), startingNode, updated); - return new Tree(newRoot); + return new UrlTree(newRoot); } -function _findUrlSegment(segment: RouteSegment, routeTree: Tree): UrlSegment { +function _findUrlSegment(segment: RouteSegment, routeTree: RouteTree): UrlSegment { let s = segment; let res = null; while (isBlank(res)) { diff --git a/modules/angular2/src/alt_router/recognize.ts b/modules/angular2/src/alt_router/recognize.ts index 06d91362f1..7d7c85ec87 100644 --- a/modules/angular2/src/alt_router/recognize.ts +++ b/modules/angular2/src/alt_router/recognize.ts @@ -1,4 +1,4 @@ -import {RouteSegment, UrlSegment, Tree, TreeNode, rootNode} from './segments'; +import {RouteSegment, UrlSegment, Tree, TreeNode, rootNode, UrlTree, RouteTree} from './segments'; import {RoutesMetadata, RouteMetadata} from './metadata/metadata'; import {Type, isBlank, isPresent, stringify} from 'angular2/src/facade/lang'; import {ListWrapper, StringMapWrapper} from 'angular2/src/facade/collection'; @@ -10,10 +10,9 @@ import {reflector} from 'angular2/src/core/reflection/reflection'; // TODO: vsavkin: recognize should take the old tree and merge it export function recognize(componentResolver: ComponentResolver, type: Type, - url: Tree): Promise> { + url: UrlTree): Promise { let matched = new _MatchResult(type, [url.root], null, rootNode(url).children, []); - return _constructSegment(componentResolver, matched) - .then(roots => new Tree(roots[0])); + return _constructSegment(componentResolver, matched).then(roots => new RouteTree(roots[0])); } function _recognize(componentResolver: ComponentResolver, parentType: Type, diff --git a/modules/angular2/src/alt_router/router.ts b/modules/angular2/src/alt_router/router.ts index b5630beac0..65ea6ad595 100644 --- a/modules/angular2/src/alt_router/router.ts +++ b/modules/angular2/src/alt_router/router.ts @@ -20,7 +20,8 @@ import { equalSegments, routeSegmentComponentFactory, RouteSegment, - Tree, + UrlTree, + RouteTree, rootNode, TreeNode, UrlSegment, @@ -36,8 +37,8 @@ export class RouterOutletMap { } export class Router { - private _prevTree: Tree; - private _urlTree: Tree; + private _prevTree: RouteTree; + private _urlTree: UrlTree; private _locationSubscription: any; private _changes: EventEmitter = new EventEmitter(); @@ -49,7 +50,7 @@ export class Router { this.navigateByUrl(this._location.path()); } - get urlTree(): Tree { return this._urlTree; } + get urlTree(): UrlTree { return this._urlTree; } navigateByUrl(url: string): Promise { return this._navigate(this._urlSerializer.parse(url)); @@ -66,7 +67,7 @@ export class Router { (change) => { this._navigate(this._urlSerializer.parse(change['url'])); }); } - private _navigate(url: Tree): Promise { + private _navigate(url: UrlTree): Promise { this._urlTree = url; return recognize(this._componentResolver, this._rootComponentType, url) .then(currTree => { @@ -82,7 +83,7 @@ export class Router { }); } - createUrlTree(changes: any[], segment?: RouteSegment): Tree { + createUrlTree(changes: any[], segment?: RouteSegment): UrlTree { if (isPresent(this._prevTree)) { let s = isPresent(segment) ? segment : this._prevTree.root; return link(s, this._prevTree, this.urlTree, changes); @@ -91,11 +92,11 @@ export class Router { } } - serializeUrl(url: Tree): string { return this._urlSerializer.serialize(url); } + serializeUrl(url: UrlTree): string { return this._urlSerializer.serialize(url); } get changes(): Observable { return this._changes; } - get routeTree(): Tree { return this._prevTree; } + get routeTree(): RouteTree { return this._prevTree; } } @@ -103,7 +104,7 @@ class _LoadSegments { private deactivations: Object[][] = []; private performMutation: boolean = true; - constructor(private currTree: Tree, private prevTree: Tree) {} + constructor(private currTree: RouteTree, private prevTree: RouteTree) {} load(parentOutletMap: RouterOutletMap, rootComponent: Object): Promise { let prevRoot = isPresent(this.prevTree) ? rootNode(this.prevTree) : null; diff --git a/modules/angular2/src/alt_router/router_url_serializer.ts b/modules/angular2/src/alt_router/router_url_serializer.ts index 7757e7f1e5..357480c7bc 100644 --- a/modules/angular2/src/alt_router/router_url_serializer.ts +++ b/modules/angular2/src/alt_router/router_url_serializer.ts @@ -1,20 +1,20 @@ -import {UrlSegment, Tree, TreeNode, rootNode} from './segments'; +import {UrlSegment, Tree, TreeNode, rootNode, UrlTree} from './segments'; import {BaseException} from 'angular2/src/facade/exceptions'; import {isBlank, isPresent, RegExpWrapper} from 'angular2/src/facade/lang'; import {ListWrapper} from 'angular2/src/facade/collection'; export abstract class RouterUrlSerializer { - abstract parse(url: string): Tree; - abstract serialize(tree: Tree): string; + abstract parse(url: string): UrlTree; + abstract serialize(tree: UrlTree): string; } export class DefaultRouterUrlSerializer extends RouterUrlSerializer { - parse(url: string): Tree { + parse(url: string): UrlTree { let root = new _UrlParser().parse(url); - return new Tree(root); + return new UrlTree(root); } - serialize(tree: Tree): string { return _serializeUrlTreeNode(rootNode(tree)); } + serialize(tree: UrlTree): string { return _serializeUrlTreeNode(rootNode(tree)); } } function _serializeUrlTreeNode(node: TreeNode): string { diff --git a/modules/angular2/src/alt_router/segments.ts b/modules/angular2/src/alt_router/segments.ts index 2c9e635b34..72ae311558 100644 --- a/modules/angular2/src/alt_router/segments.ts +++ b/modules/angular2/src/alt_router/segments.ts @@ -28,6 +28,14 @@ export class Tree { pathFromRoot(t: T): T[] { return _findPath(t, this._root, []).map(s => s.value); } } +export class UrlTree extends Tree { + constructor(root: TreeNode) { super(root); } +} + +export class RouteTree extends Tree { + constructor(root: TreeNode) { super(root); } +} + export function rootNode(tree: Tree): TreeNode { return tree._root; } @@ -103,7 +111,7 @@ export class RouteSegment { get stringifiedUrlSegments(): string { return this.urlSegments.map(s => s.toString()).join("/"); } } -export function serializeRouteSegmentTree(tree: Tree): string { +export function serializeRouteSegmentTree(tree: RouteTree): string { return _serializeRouteSegmentTree(tree._root); } diff --git a/modules/angular2/test/alt_router/link_spec.ts b/modules/angular2/test/alt_router/link_spec.ts index fb82a52561..e6c6208c6f 100644 --- a/modules/angular2/test/alt_router/link_spec.ts +++ b/modules/angular2/test/alt_router/link_spec.ts @@ -15,7 +15,13 @@ import { xit } from 'angular2/testing_internal'; -import {RouteSegment, UrlSegment, Tree, TreeNode} from 'angular2/src/alt_router/segments'; +import { + RouteSegment, + UrlSegment, + UrlTree, + TreeNode, + RouteTree +} from 'angular2/src/alt_router/segments'; import {link} from 'angular2/src/alt_router/link'; import {DefaultRouterUrlSerializer} from 'angular2/src/alt_router/router_url_serializer'; @@ -88,7 +94,7 @@ export function main() { let child = new RouteSegment([], null, null, null, null); let root = new TreeNode(new RouteSegment([c], {}, null, null, null), [new TreeNode(child, [])]); - let tree = new Tree(root); + let tree = new RouteTree(root); let t = link(child, tree, p, ["./c2"]); expect(parser.serialize(t)).toEqual("/a(aux:ap)/c2(aux:cp)"); @@ -96,7 +102,7 @@ export function main() { }); } -function s(u: UrlSegment): Tree { +function s(u: UrlSegment): RouteTree { let root = new TreeNode(new RouteSegment([u], {}, null, null, null), []); - return new Tree(root); + return new RouteTree(root); } \ No newline at end of file diff --git a/modules/angular2/test/alt_router/recognize_spec.ts b/modules/angular2/test/alt_router/recognize_spec.ts index 4c92cf4ace..cce26e0ea1 100644 --- a/modules/angular2/test/alt_router/recognize_spec.ts +++ b/modules/angular2/test/alt_router/recognize_spec.ts @@ -18,7 +18,7 @@ import { import {recognize} from 'angular2/src/alt_router/recognize'; import {Routes, Route} from 'angular2/alt_router'; import {provide, Component, ComponentResolver} from 'angular2/core'; -import {UrlSegment, Tree} from 'angular2/src/alt_router/segments'; +import {UrlSegment, RouteTree, UrlTree} from 'angular2/src/alt_router/segments'; import {DefaultRouterUrlSerializer} from 'angular2/src/alt_router/router_url_serializer'; import {DEFAULT_OUTLET_NAME} from 'angular2/src/alt_router/constants'; @@ -192,7 +192,7 @@ export function main() { }); } -function tree(url: string): Tree { +function tree(url: string): UrlTree { return new DefaultRouterUrlSerializer().parse(url); } diff --git a/modules/playground/src/alt_routing/inbox-app.ts b/modules/playground/src/alt_routing/inbox-app.ts index 179468ed86..87adaf8da3 100644 --- a/modules/playground/src/alt_routing/inbox-app.ts +++ b/modules/playground/src/alt_routing/inbox-app.ts @@ -7,7 +7,8 @@ import { ROUTER_PROVIDERS, OnActivate, RouteSegment, - Tree, + RouteTree, + UrlTree } from 'angular2/alt_router'; import * as db from './data'; import {Location} from 'angular2/platform/common'; @@ -99,8 +100,8 @@ class InboxDetailCmp implements OnActivate { constructor(private _db: DbService) {} - routerOnActivate(curr: RouteSegment, prev?: RouteSegment, currTree?: Tree, - prevTree?: Tree): void { + routerOnActivate(curr: RouteSegment, prev?: RouteSegment, currTree?: RouteTree, + prevTree?: RouteTree): void { let id = curr.getParam("id"); this._db.email(id).then(data => this.record.setData(data)); } @@ -113,8 +114,8 @@ class InboxCmp implements OnActivate { constructor(private _db: DbService) {} - routerOnActivate(curr: RouteSegment, prev?: RouteSegment, currTree?: Tree, - prevTree?: Tree): void { + routerOnActivate(curr: RouteSegment, prev?: RouteSegment, currTree?: RouteTree, + prevTree?: RouteTree): void { var sortType = curr.getParam('sort'); var sortEmailsByDate = isPresent(sortType) && sortType == "date";