Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(217)

Side by Side Diff: third_party/pkg/angular/lib/routing/routing.dart

Issue 257423008: Update all Angular libs (run update_all.sh). (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 part of angular.routing; 1 part of angular.routing;
2 2
3 /** 3 /**
4 * A factory of route to template bindings. 4 * A factory of route to template bindings.
5 */ 5 */
6 class ViewFactory { 6 class RouteViewFactory {
7 NgRoutingHelper locationService; 7 NgRoutingHelper locationService;
8 8
9 ViewFactory(this.locationService); 9 RouteViewFactory(this.locationService);
10 10
11 call(String templateUrl) => 11 call(String templateUrl) =>
12 (RouteEnterEvent event) => _enterHandler(event, templateUrl); 12 (RouteEnterEvent event) => _enterHandler(event, templateUrl);
13 13
14 _enterHandler(RouteEnterEvent event, String templateUrl, [List<Module> modules ]) => 14 _enterHandler(RouteEnterEvent event, String templateUrl,
15 locationService._route(event.route, templateUrl, fromEvent: true, modules: modules); 15 {List<Module> modules, String templateHtml}) =>
16 locationService._route(event.route, templateUrl, fromEvent: true,
17 modules: modules, templateHtml: templateHtml);
16 18
17 configure(Map<String, NgRouteCfg> config) => 19 configure(Map<String, NgRouteCfg> config) =>
18 _configure(locationService.router.root, config); 20 _configure(locationService.router.root, config);
19 21
20 _configure(Route route, Map<String, NgRouteCfg> config) { 22 _configure(Route route, Map<String, NgRouteCfg> config) {
21 config.forEach((name, cfg) { 23 config.forEach((name, cfg) {
22 var moduledCalled = false; 24 var modulesCalled = false;
23 List<Module> newModules; 25 List<Module> newModules;
24 route.addRoute( 26 route.addRoute(
25 name: name, 27 name: name,
26 path: cfg.path, 28 path: cfg.path,
27 defaultRoute: cfg.defaultRoute, 29 defaultRoute: cfg.defaultRoute,
28 enter: (RouteEnterEvent e) { 30 enter: (RouteEnterEvent e) {
29 if (cfg.view != null) { 31 if (cfg.view != null || cfg.viewHtml != null) {
30 _enterHandler(e, cfg.view, newModules); 32 _enterHandler(e, cfg.view,
33 modules: newModules, templateHtml: cfg.viewHtml);
31 } 34 }
32 if (cfg.enter != null) { 35 if (cfg.enter != null) {
33 cfg.enter(e); 36 cfg.enter(e);
34 } 37 }
35 }, 38 },
36 preEnter: (RoutePreEnterEvent e) { 39 preEnter: (RoutePreEnterEvent e) {
37 if (cfg.modules != null && !moduledCalled) { 40 if (cfg.modules != null && !modulesCalled) {
38 moduledCalled = true; 41 modulesCalled = true;
39 var modules = cfg.modules(); 42 var modules = cfg.modules();
40 if (modules is Future) { 43 if (modules is Future) {
41 e.allowEnter(modules.then((List<Module> m) { 44 e.allowEnter(modules.then((List<Module> m) {
42 newModules = m; 45 newModules = m;
43 return true; 46 return true;
44 })); 47 }));
45 } else { 48 } else {
46 newModules = modules; 49 newModules = modules;
47 } 50 }
48 } 51 }
49 if (cfg.preEnter != null) { 52 if (cfg.preEnter != null) {
50 cfg.preEnter(e); 53 cfg.preEnter(e);
51 } 54 }
52 }, 55 },
53 leave: cfg.leave, 56 leave: cfg.leave,
54 mount: (Route mountRoute) { 57 mount: (Route mountRoute) {
55 if (cfg.mount != null) { 58 if (cfg.mount != null) {
56 _configure(mountRoute, cfg.mount); 59 _configure(mountRoute, cfg.mount);
57 } 60 }
58 }); 61 });
59 }); 62 });
60 } 63 }
61 } 64 }
62 65
63 NgRouteCfg ngRoute({String path, String view, Map<String, NgRouteCfg> mount, 66 NgRouteCfg ngRoute({String path, String view, String viewHtml,
64 modules(), bool defaultRoute: false, RoutePreEnterEventHandler preEnter, 67 Map<String, NgRouteCfg> mount, modules(), bool defaultRoute: false,
65 RouteEnterEventHandler enter, RouteLeaveEventHandler leave}) => 68 RoutePreEnterEventHandler preEnter, RouteEnterEventHandler enter,
66 new NgRouteCfg(path: path, view: view, mount: mount, modules: modules, 69 RouteLeaveEventHandler leave}) =>
67 defaultRoute: defaultRoute, preEnter: preEnter, enter: enter, 70 new NgRouteCfg(path: path, view: view, viewHtml: viewHtml, mount: mount,
68 leave: leave); 71 modules: modules, defaultRoute: defaultRoute, preEnter: preEnter,
72 enter: enter, leave: leave);
69 73
70 class NgRouteCfg { 74 class NgRouteCfg {
71 final String path; 75 final String path;
72 final String view; 76 final String view;
77 final String viewHtml;
73 final Map<String, NgRouteCfg> mount; 78 final Map<String, NgRouteCfg> mount;
74 final Function modules; 79 final Function modules;
75 final bool defaultRoute; 80 final bool defaultRoute;
76 final RouteEnterEventHandler enter; 81 final RouteEnterEventHandler enter;
77 final RoutePreEnterEventHandler preEnter; 82 final RoutePreEnterEventHandler preEnter;
78 final RouteLeaveEventHandler leave; 83 final RouteLeaveEventHandler leave;
79 84
80 NgRouteCfg({this.view, this.path, this.mount, this.modules, this.defaultRoute, 85 NgRouteCfg({this.view, this.viewHtml, this.path, this.mount, this.modules,
81 this.enter, this.preEnter, this.leave}); 86 this.defaultRoute, this.enter, this.preEnter, this.leave});
82 } 87 }
83 88
84 /** 89 /**
85 * An interface that must be implemented by the user of routing library and 90 * An interface that must be implemented by the user of routing library and
86 * should include the route initialization. 91 * should include the route initialization.
87 * 92 *
88 * The [init] method will be called by the framework once the router is 93 * The [init] method will be called by the framework once the router is
89 * instantiated but before [NgBindRouteDirective] and [NgViewDirective]. 94 * instantiated but before [NgBindRouteDirective] and [NgViewDirective].
90 *
91 * Deprecated: use RouteInitializerFn instead.
92 */ 95 */
93 @deprecated 96 @Deprecated("use RouteInitializerFn instead")
94 abstract class RouteInitializer { 97 abstract class RouteInitializer {
95 void init(Router router, ViewFactory viewFactory); 98 void init(Router router, RouteViewFactory viewFactory);
96 } 99 }
97 100
98 /** 101 /**
99 * An typedef that must be implemented by the user of routing library and 102 * An typedef that must be implemented by the user of routing library and
100 * should include the route initialization. 103 * should include the route initialization.
101 * 104 *
102 * The function will be called by the framework once the router is 105 * The function will be called by the framework once the router is
103 * instantiated but before [NgBindRouteDirective] and [NgViewDirective]. 106 * instantiated but before [NgBindRouteDirective] and [NgViewDirective].
104 */ 107 */
105 typedef void RouteInitializerFn(Router router, ViewFactory viewFactory); 108 typedef void RouteInitializerFn(Router router, RouteViewFactory viewFactory);
106 109
107 /** 110 /**
108 * A singleton helper service that handles routing initialization, global 111 * A singleton helper service that handles routing initialization, global
109 * events and view registries. 112 * events and view registries.
110 */ 113 */
111 @NgInjectableService() 114 @Injectable()
112 class NgRoutingHelper { 115 class NgRoutingHelper {
113 final Router router; 116 final Router router;
114 final NgApp _ngApp; 117 final Application _ngApp;
115 List<NgViewDirective> portals = <NgViewDirective>[]; 118 List<NgView> portals = <NgView>[];
116 Map<String, _View> _templates = new Map<String, _View>(); 119 Map<String, _View> _templates = new Map<String, _View>();
117 120
118 NgRoutingHelper(RouteInitializer initializer, Injector injector, this.router, this._ngApp) { 121 NgRoutingHelper(RouteInitializer initializer, Injector injector, this.router,
122 this._ngApp) {
119 // TODO: move this to constructor parameters when di issue is fixed: 123 // TODO: move this to constructor parameters when di issue is fixed:
120 // https://github.com/angular/di.dart/issues/40 124 // https://github.com/angular/di.dart/issues/40
121 RouteInitializerFn initializerFn = injector.get(RouteInitializerFn); 125 RouteInitializerFn initializerFn = injector.get(RouteInitializerFn);
122 if (initializer == null && initializerFn == null) { 126 if (initializer == null && initializerFn == null) {
123 window.console.error('No RouteInitializer implementation provided.'); 127 window.console.error('No RouteInitializer implementation provided.');
124 return; 128 return;
125 }; 129 };
126 130
127 if (initializerFn != null) { 131 if (initializerFn != null) {
128 initializerFn(router, new ViewFactory(this)); 132 initializerFn(router, new RouteViewFactory(this));
129 } else { 133 } else {
130 initializer.init(router, new ViewFactory(this)); 134 initializer.init(router, new RouteViewFactory(this));
131 } 135 }
132 router.onRouteStart.listen((RouteStartEvent routeEvent) { 136 router.onRouteStart.listen((RouteStartEvent routeEvent) {
133 routeEvent.completed.then((success) { 137 routeEvent.completed.then((success) {
134 if (success) { 138 if (success) {
135 portals.forEach((NgViewDirective p) => p._maybeReloadViews()); 139 portals.forEach((NgView p) => p._maybeReloadViews());
136 } 140 }
137 }); 141 });
138 }); 142 });
139 143
140 router.listen(appRoot: _ngApp.root); 144 router.listen(appRoot: _ngApp.element);
141 } 145 }
142 146
143 _reloadViews({Route startingFrom}) { 147 void _reloadViews({Route startingFrom}) {
144 var alreadyActiveViews = []; 148 var alreadyActiveViews = [];
145 var activePath = router.activePath; 149 var activePath = router.activePath;
146 if (startingFrom != null) { 150 if (startingFrom != null) {
147 activePath = activePath.skip(_routeDepth(startingFrom)); 151 activePath = activePath.skip(_routeDepth(startingFrom));
148 } 152 }
149 for (Route route in activePath) { 153 for (Route route in activePath) {
150 var viewDef = _templates[_routePath(route)]; 154 var viewDef = _templates[_routePath(route)];
151 if (viewDef == null) continue; 155 if (viewDef == null) continue;
152 var templateUrl = viewDef.template; 156 var templateUrl = viewDef.template;
153 157
154 NgViewDirective view = portals.lastWhere((NgViewDirective v) { 158 NgView view = portals.lastWhere((NgView v) {
155 return _routePath(route) != _routePath(v._route) && 159 return _routePath(route) != _routePath(v._route) &&
156 _routePath(route).startsWith(_routePath(v._route)); 160 _routePath(route).startsWith(_routePath(v._route));
157 }, orElse: () => null); 161 }, orElse: () => null);
158 if (view != null && !alreadyActiveViews.contains(view)) { 162 if (view != null && !alreadyActiveViews.contains(view)) {
159 view._show(templateUrl, route, viewDef.modules); 163 view._show(viewDef, route, viewDef.modules);
160 alreadyActiveViews.add(view); 164 alreadyActiveViews.add(view);
161 break; 165 break;
162 } 166 }
163 } 167 }
164 } 168 }
165 169
166 _route(Route route, String template, {bool fromEvent, List<Module> modules}) { 170 void _route(Route route, String template, {bool fromEvent, List<Module> module s,
167 _templates[_routePath(route)] = new _View(template, modules); 171 String templateHtml}) {
172 _templates[_routePath(route)] = new _View(template, templateHtml, modules);
168 } 173 }
169 174
170 _registerPortal(NgViewDirective ngView) { 175 void _registerPortal(NgView ngView) {
171 portals.add(ngView); 176 portals.add(ngView);
172 } 177 }
173 178
174 _unregisterPortal(NgViewDirective ngView) { 179 void _unregisterPortal(NgView ngView) {
175 portals.remove(ngView); 180 portals.remove(ngView);
176 } 181 }
177 } 182 }
178 183
179 class _View { 184 class _View {
180 final String template; 185 final String template;
186 final String templateHtml;
181 final List<Module> modules; 187 final List<Module> modules;
182 188
183 _View(this.template, this.modules); 189 _View(this.template, this.templateHtml, this.modules);
184 } 190 }
185 191
186 String _routePath(Route route) { 192 String _routePath(Route route) {
187 var path = []; 193 var path = [];
188 var p = route; 194 var p = route;
189 while (p.parent != null) { 195 while (p.parent != null) {
190 path.insert(0, p.name); 196 path.insert(0, p.name);
191 p = p.parent; 197 p = p.parent;
192 } 198 }
193 return path.join('.'); 199 return path.join('.');
194 } 200 }
195 201
196 int _routeDepth(Route route) { 202 int _routeDepth(Route route) {
197 var depth = 0; 203 var depth = 0;
198 var p = route; 204 var p = route;
199 while (p.parent != null) { 205 while (p.parent != null) {
200 depth++; 206 depth++;
201 p = p.parent; 207 p = p.parent;
202 } 208 }
203 return depth; 209 return depth;
204 } 210 }
OLDNEW
« no previous file with comments | « third_party/pkg/angular/lib/routing/ng_view.dart ('k') | third_party/pkg/angular/lib/tools/expression_extractor.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698