Promoting new GUI resources into place; still hidden behind legacy redirect though.
Change-Id: If1f25cd7297b93374f492474eb321da16e9995ec
Showing
16 changed files
with
247 additions
and
181 deletions
... | @@ -63,7 +63,13 @@ | ... | @@ -63,7 +63,13 @@ |
63 | <configuration> | 63 | <configuration> |
64 | <instructions> | 64 | <instructions> |
65 | <_wab>src/main/webapp/</_wab> | 65 | <_wab>src/main/webapp/</_wab> |
66 | - <Include-Resource>src/main/webapp/app/view,{maven-resources}</Include-Resource> | 66 | + <Include-Resource> |
67 | + src/main/webapp/index.html, | ||
68 | + src/main/webapp/nav.html, | ||
69 | + src/main/webapp/onos.js, | ||
70 | + src/main/webapp/app/view, | ||
71 | + {maven-resources} | ||
72 | + </Include-Resource> | ||
67 | <Bundle-SymbolicName> | 73 | <Bundle-SymbolicName> |
68 | ${project.groupId}.${project.artifactId} | 74 | ${project.groupId}.${project.artifactId} |
69 | </Bundle-SymbolicName> | 75 | </Bundle-SymbolicName> | ... | ... |
... | @@ -34,10 +34,10 @@ import static com.google.common.io.ByteStreams.toByteArray; | ... | @@ -34,10 +34,10 @@ import static com.google.common.io.ByteStreams.toByteArray; |
34 | /** | 34 | /** |
35 | * Resource for serving the dynamically composed index.html. | 35 | * Resource for serving the dynamically composed index.html. |
36 | */ | 36 | */ |
37 | -@Path("/") | 37 | +@Path("/index.html") |
38 | public class MainIndexResource extends AbstractInjectionResource { | 38 | public class MainIndexResource extends AbstractInjectionResource { |
39 | 39 | ||
40 | - private static final String INDEX = "templates/index-template.html"; | 40 | + private static final String INDEX = "index.html"; |
41 | 41 | ||
42 | private static final String INJECT_CSS_START = "<!-- {INJECTED-STYLESHEETS-START} -->"; | 42 | private static final String INJECT_CSS_START = "<!-- {INJECTED-STYLESHEETS-START} -->"; |
43 | private static final String INJECT_CSS_END = "<!-- {INJECTED-STYLESHEETS-END} -->"; | 43 | private static final String INJECT_CSS_END = "<!-- {INJECTED-STYLESHEETS-END} -->"; | ... | ... |
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.onosproject.ui.impl; | ||
17 | + | ||
18 | +import org.onosproject.ui.UiExtension; | ||
19 | +import org.onosproject.ui.UiExtensionService; | ||
20 | +import org.onosproject.ui.UiView; | ||
21 | + | ||
22 | +import javax.ws.rs.GET; | ||
23 | +import javax.ws.rs.Path; | ||
24 | +import javax.ws.rs.Produces; | ||
25 | +import javax.ws.rs.core.Response; | ||
26 | +import java.io.ByteArrayInputStream; | ||
27 | +import java.io.IOException; | ||
28 | +import java.io.InputStream; | ||
29 | +import java.io.SequenceInputStream; | ||
30 | + | ||
31 | +import static com.google.common.collect.ImmutableList.of; | ||
32 | +import static com.google.common.io.ByteStreams.toByteArray; | ||
33 | +import static org.onosproject.ui.impl.MainViewResource.SCRIPT; | ||
34 | + | ||
35 | +/** | ||
36 | + * Resource for serving the dynamically composed onos.js. | ||
37 | + */ | ||
38 | +@Path("/onos.js") | ||
39 | +public class MainModuleResource extends AbstractInjectionResource { | ||
40 | + | ||
41 | + private static final String MAIN_JS = "onos.js"; | ||
42 | + | ||
43 | + private static final String INJECT_VIEW_IDS_START = "// {INJECTED-VIEW-IDS-START}"; | ||
44 | + private static final String INJECT_VIEW_IDS_END = "// {INJECTED-VIEW-IDS-END}"; | ||
45 | + | ||
46 | + @GET | ||
47 | + @Produces(SCRIPT) | ||
48 | + public Response getMainModule() throws IOException { | ||
49 | + UiExtensionService service = get(UiExtensionService.class); | ||
50 | + InputStream jsTemplate = getClass().getClassLoader().getResourceAsStream(MAIN_JS); | ||
51 | + String js = new String(toByteArray(jsTemplate)); | ||
52 | + | ||
53 | + int p1s = split(js, 0, INJECT_VIEW_IDS_START); | ||
54 | + int p1e = split(js, 0, INJECT_VIEW_IDS_END); | ||
55 | + int p2s = split(js, p1e, null); | ||
56 | + | ||
57 | + StreamEnumeration streams = | ||
58 | + new StreamEnumeration(of(stream(js, 0, p1s), | ||
59 | + includeViewIds(service), | ||
60 | + stream(js, p1e, p2s))); | ||
61 | + | ||
62 | + return Response.ok(new SequenceInputStream(streams)).build(); | ||
63 | + } | ||
64 | + | ||
65 | + // Produces an input stream including view id injections from all extensions. | ||
66 | + private InputStream includeViewIds(UiExtensionService service) { | ||
67 | + StringBuilder sb = new StringBuilder("\n"); | ||
68 | + for (UiExtension extension : service.getExtensions()) { | ||
69 | + for (UiView view : extension.views()) { | ||
70 | + sb.append(" '").append(view.id()).append("',"); | ||
71 | + } | ||
72 | + } | ||
73 | + return new ByteArrayInputStream(sb.toString().getBytes()); | ||
74 | + } | ||
75 | + | ||
76 | +} |
... | @@ -31,19 +31,14 @@ import java.io.SequenceInputStream; | ... | @@ -31,19 +31,14 @@ import java.io.SequenceInputStream; |
31 | 31 | ||
32 | import static com.google.common.collect.ImmutableList.of; | 32 | import static com.google.common.collect.ImmutableList.of; |
33 | import static com.google.common.io.ByteStreams.toByteArray; | 33 | import static com.google.common.io.ByteStreams.toByteArray; |
34 | -import static org.onosproject.ui.impl.MainViewResource.SCRIPT; | ||
35 | 34 | ||
36 | /** | 35 | /** |
37 | - * Resource for serving the dynamically composed onos.js. | 36 | + * Resource for serving the dynamically composed nav.html. |
38 | */ | 37 | */ |
39 | -@Path("/") | 38 | +@Path("/nav/nav.html") |
40 | -public class MainExtResource extends AbstractInjectionResource { | 39 | +public class MainNavResource extends AbstractInjectionResource { |
41 | 40 | ||
42 | - private static final String MAIN_JS = "templates/onos-template.js"; | 41 | + private static final String NAV_HTML = "nav.html"; |
43 | - private static final String NAV_HTML = "templates/nav-template.html"; | ||
44 | - | ||
45 | - private static final String INJECT_VIEW_IDS_START = "// {INJECTED-VIEW-IDS-START}"; | ||
46 | - private static final String INJECT_VIEW_IDS_END = "// {INJECTED-VIEW-IDS-END}"; | ||
47 | 42 | ||
48 | private static final String INJECT_VIEW_ITEMS_START = "<!-- {INJECTED-VIEW-NAV-START} -->"; | 43 | private static final String INJECT_VIEW_ITEMS_START = "<!-- {INJECTED-VIEW-NAV-START} -->"; |
49 | private static final String INJECT_VIEW_ITEMS_END = "<!-- {INJECTED-VIEW-NAV-END} -->"; | 44 | private static final String INJECT_VIEW_ITEMS_END = "<!-- {INJECTED-VIEW-NAV-END} -->"; |
... | @@ -52,38 +47,6 @@ public class MainExtResource extends AbstractInjectionResource { | ... | @@ -52,38 +47,6 @@ public class MainExtResource extends AbstractInjectionResource { |
52 | private static final String NAV_FORMAT = | 47 | private static final String NAV_FORMAT = |
53 | " <li> <a ng-click=\"navCtrl.hideNav()\" href=\"#/%s\">%s</a></li>"; | 48 | " <li> <a ng-click=\"navCtrl.hideNav()\" href=\"#/%s\">%s</a></li>"; |
54 | 49 | ||
55 | - @Path("/onos.js") | ||
56 | - @GET | ||
57 | - @Produces(SCRIPT) | ||
58 | - public Response getMainModule() throws IOException { | ||
59 | - UiExtensionService service = get(UiExtensionService.class); | ||
60 | - InputStream jsTemplate = getClass().getClassLoader().getResourceAsStream(MAIN_JS); | ||
61 | - String js = new String(toByteArray(jsTemplate)); | ||
62 | - | ||
63 | - int p1s = split(js, 0, INJECT_VIEW_IDS_START); | ||
64 | - int p1e = split(js, 0, INJECT_VIEW_IDS_END); | ||
65 | - int p2s = split(js, p1e, null); | ||
66 | - | ||
67 | - StreamEnumeration streams = | ||
68 | - new StreamEnumeration(of(stream(js, 0, p1s), | ||
69 | - includeViewIds(service), | ||
70 | - stream(js, p1e, p2s))); | ||
71 | - | ||
72 | - return Response.ok(new SequenceInputStream(streams)).build(); | ||
73 | - } | ||
74 | - | ||
75 | - // Produces an input stream including view id injections from all extensions. | ||
76 | - private InputStream includeViewIds(UiExtensionService service) { | ||
77 | - StringBuilder sb = new StringBuilder("\n"); | ||
78 | - for (UiExtension extension : service.getExtensions()) { | ||
79 | - for (UiView view : extension.views()) { | ||
80 | - sb.append(" '").append(view.id()).append("',"); | ||
81 | - } | ||
82 | - } | ||
83 | - return new ByteArrayInputStream(sb.toString().getBytes()); | ||
84 | - } | ||
85 | - | ||
86 | - @Path("/nav/nav.html") | ||
87 | @GET | 50 | @GET |
88 | @Produces(MediaType.TEXT_HTML) | 51 | @Produces(MediaType.TEXT_HTML) |
89 | public Response getNavigation() throws IOException { | 52 | public Response getNavigation() throws IOException { | ... | ... |
... | @@ -78,14 +78,33 @@ | ... | @@ -78,14 +78,33 @@ |
78 | </init-param> | 78 | </init-param> |
79 | <init-param> | 79 | <init-param> |
80 | <param-name>com.sun.jersey.config.property.classnames</param-name> | 80 | <param-name>com.sun.jersey.config.property.classnames</param-name> |
81 | - <param-value>org.onosproject.ui.impl.MainExtResource</param-value> | 81 | + <param-value>org.onosproject.ui.impl.MainModuleResource</param-value> |
82 | </init-param> | 82 | </init-param> |
83 | <load-on-startup>1</load-on-startup> | 83 | <load-on-startup>1</load-on-startup> |
84 | </servlet> | 84 | </servlet> |
85 | 85 | ||
86 | <servlet-mapping> | 86 | <servlet-mapping> |
87 | <servlet-name>Main Module</servlet-name> | 87 | <servlet-name>Main Module</servlet-name> |
88 | - <url-pattern>/dyn/*</url-pattern> | 88 | + <url-pattern>/onos.js</url-pattern> |
89 | + </servlet-mapping> | ||
90 | + | ||
91 | + <servlet> | ||
92 | + <servlet-name>Nav Module</servlet-name> | ||
93 | + <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> | ||
94 | + <init-param> | ||
95 | + <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name> | ||
96 | + <param-value>com.sun.jersey.api.core.ClassNamesResourceConfig</param-value> | ||
97 | + </init-param> | ||
98 | + <init-param> | ||
99 | + <param-name>com.sun.jersey.config.property.classnames</param-name> | ||
100 | + <param-value>org.onosproject.ui.impl.MainNavResource</param-value> | ||
101 | + </init-param> | ||
102 | + <load-on-startup>1</load-on-startup> | ||
103 | + </servlet> | ||
104 | + | ||
105 | + <servlet-mapping> | ||
106 | + <servlet-name>Nav Module</servlet-name> | ||
107 | + <url-pattern>/nav.html</url-pattern> | ||
89 | </servlet-mapping> | 108 | </servlet-mapping> |
90 | 109 | ||
91 | <servlet> | 110 | <servlet> | ... | ... |
1 | <!-- Masthead partial HTML --> | 1 | <!-- Masthead partial HTML --> |
2 | -<img class="logo" src="../data/img/onos-logo.png" ng-click="mastCtrl.toggleNav()"> | 2 | +<img class="logo" src="data/img/onos-logo.png" ng-click="mastCtrl.toggleNav()"> |
3 | <span class="title">Open Network Operating System</span> | 3 | <span class="title">Open Network Operating System</span> |
4 | <div id="mast-right"></div> | 4 | <div id="mast-right"></div> | ... | ... |
... | @@ -59,7 +59,7 @@ | ... | @@ -59,7 +59,7 @@ |
59 | 59 | ||
60 | // internal state | 60 | // internal state |
61 | var cache = d3.map(), | 61 | var cache = d3.map(), |
62 | - bundledUrlPrefix = '../data/map/'; | 62 | + bundledUrlPrefix = 'data/map/'; |
63 | 63 | ||
64 | function getUrl(id) { | 64 | function getUrl(id) { |
65 | if (id[0] === '*') { | 65 | if (id[0] === '*') { | ... | ... |
1 | -<!DOCTYPE html> | ||
2 | -<!-- | ||
3 | -~ Copyright 2014,2015 Open Networking Laboratory | ||
4 | -~ | ||
5 | -~ Licensed under the Apache License, Version 2.0 (the "License"); | ||
6 | -~ you may not use this file except in compliance with the License. | ||
7 | -~ You may obtain a copy of the License at | ||
8 | -~ | ||
9 | -~ http://www.apache.org/licenses/LICENSE-2.0 | ||
10 | -~ | ||
11 | -~ Unless required by applicable law or agreed to in writing, software | ||
12 | -~ distributed under the License is distributed on an "AS IS" BASIS, | ||
13 | -~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
14 | -~ See the License for the specific language governing permissions and | ||
15 | -~ limitations under the License. | ||
16 | ---> | ||
17 | -<html> | ||
18 | -<head> | ||
19 | - <meta charset="utf-8"> | ||
20 | - <link rel="shortcut icon" href="../data/img/onos-logo.png"> | ||
21 | - <title>ONOS Angular</title> | ||
22 | - | ||
23 | - <!-- Third party library code included here --> | ||
24 | - <!--TODO: use minified versions, once debugging is complete --> | ||
25 | - <script src="../tp/angular.js"></script> | ||
26 | - <script src="../tp/angular-route.js"></script> | ||
27 | - | ||
28 | - <script src="../tp/d3.js"></script> | ||
29 | - <script src="../tp/topojson.v1.min.js"></script> | ||
30 | - | ||
31 | - <!-- ONOS UI Framework included here --> | ||
32 | - <!-- TODO: use a single catenated-minified file here --> | ||
33 | - <script src="onos.js"></script> | ||
34 | - <script src="directives.js"></script> | ||
35 | - | ||
36 | - <script src="fw/util/util.js"></script> | ||
37 | - <script src="fw/util/fn.js"></script> | ||
38 | - <script src="fw/util/random.js"></script> | ||
39 | - <script src="fw/util/theme.js"></script> | ||
40 | - <script src="fw/util/keys.js"></script> | ||
41 | - | ||
42 | - <script src="fw/mast/mast.js"></script> | ||
43 | - <script src="fw/nav/nav.js"></script> | ||
44 | - | ||
45 | - <script src="fw/svg/svg.js"></script> | ||
46 | - <script src="fw/svg/glyph.js"></script> | ||
47 | - <script src="fw/svg/icon.js"></script> | ||
48 | - <script src="fw/svg/geodata.js"></script> | ||
49 | - <script src="fw/svg/map.js"></script> | ||
50 | - <script src="fw/svg/zoom.js"></script> | ||
51 | - <script src="fw/svg/svgUtil.js"></script> | ||
52 | - | ||
53 | - <script src="fw/remote/remote.js"></script> | ||
54 | - <script src="fw/remote/urlfn.js"></script> | ||
55 | - <script src="fw/remote/rest.js"></script> | ||
56 | - <script src="fw/remote/websocket.js"></script> | ||
57 | - <script src="fw/remote/wsevent.js"></script> | ||
58 | - | ||
59 | - <script src="fw/widget/widget.js"></script> | ||
60 | - <script src="fw/widget/table.js"></script> | ||
61 | - <script src="fw/widget/toolbar.js"></script> | ||
62 | - <script src="fw/widget/button.js"></script> | ||
63 | - | ||
64 | - <script src="fw/layer/layer.js"></script> | ||
65 | - <script src="fw/layer/panel.js"></script> | ||
66 | - <script src="fw/layer/flash.js"></script> | ||
67 | - <script src="fw/layer/quickhelp.js"></script> | ||
68 | - <script src="fw/layer/veil.js"></script> | ||
69 | - | ||
70 | - <!-- Framework and library stylesheets included here --> | ||
71 | - <!-- TODO: use a single catenated-minified file here --> | ||
72 | - <link rel="stylesheet" href="onos.css"> | ||
73 | - <link rel="stylesheet" href="common.css"> | ||
74 | - <link rel="stylesheet" href="fw/mast/mast.css"> | ||
75 | - <link rel="stylesheet" href="fw/svg/glyph.css"> | ||
76 | - <link rel="stylesheet" href="fw/svg/icon.css"> | ||
77 | - <link rel="stylesheet" href="fw/layer/panel.css"> | ||
78 | - <link rel="stylesheet" href="fw/layer/flash.css"> | ||
79 | - <link rel="stylesheet" href="fw/layer/quickhelp.css"> | ||
80 | - <link rel="stylesheet" href="fw/layer/veil.css"> | ||
81 | - <link rel="stylesheet" href="fw/nav/nav.css"> | ||
82 | - | ||
83 | - <!-- This is where contributed javascript will get injected --> | ||
84 | - <!-- {INJECTED-JAVASCRIPT-START} --> | ||
85 | - <script src="view/sample/sample.js"></script> | ||
86 | - <script src="view/topo/topo.js"></script> | ||
87 | - <script src="view/topo/topoEvent.js"></script> | ||
88 | - <script src="view/topo/topoFilter.js"></script> | ||
89 | - <script src="view/topo/topoForce.js"></script> | ||
90 | - <script src="view/topo/topoInst.js"></script> | ||
91 | - <script src="view/topo/topoModel.js"></script> | ||
92 | - <script src="view/topo/topoOblique.js"></script> | ||
93 | - <script src="view/topo/topoPanel.js"></script> | ||
94 | - <script src="view/topo/topoSelect.js"></script> | ||
95 | - <script src="view/topo/topoTraffic.js"></script> | ||
96 | - <script src="view/device/device.js"></script> | ||
97 | - <!-- {INJECTED-JAVASCRIPT-END} --> | ||
98 | - | ||
99 | - | ||
100 | - <!-- This is where contributed stylesheets will get injected --> | ||
101 | - <!-- {INJECTED-STYLESHEETS-START} --> | ||
102 | - <link rel="stylesheet" href="view/sample/sample.css"> | ||
103 | - <link rel="stylesheet" href="view/topo/topo.css"> | ||
104 | - <link rel="stylesheet" href="view/device/device.css"> | ||
105 | - <!-- TODO: inject style-sheet refs server-side --> | ||
106 | - <!-- {INJECTED-STYLESHEETS-END} --> | ||
107 | - | ||
108 | -</head> | ||
109 | -<body class="light" ng-app="onosApp"> | ||
110 | -<div id="frame" ng-controller="OnosCtrl as onosCtrl"> | ||
111 | - <div id="mast" | ||
112 | - ng-controller="MastCtrl as mastCtrl" | ||
113 | - ng-include="'fw/mast/mast.html'"></div> | ||
114 | - | ||
115 | - <div id="view" ng-view></div> | ||
116 | - | ||
117 | - <div id="nav" | ||
118 | - ng-controller="NavCtrl as navCtrl" | ||
119 | - ng-include="'fw/nav/nav.html'"></div> | ||
120 | - | ||
121 | - <div id="floatpanels"></div> | ||
122 | - <div id="alerts"></div> | ||
123 | - <div id="flash"></div> | ||
124 | - <div id="quickhelp"></div> | ||
125 | - <div id="veil" | ||
126 | - resize | ||
127 | - ng-style="resizeWithOffset(0, 0)"></div> | ||
128 | -</div> | ||
129 | -</body> | ||
130 | -</html> |
... | @@ -2,7 +2,7 @@ | ... | @@ -2,7 +2,7 @@ |
2 | <div id="ov-sample"> | 2 | <div id="ov-sample"> |
3 | <h2> A Sample View </h2> | 3 | <h2> A Sample View </h2> |
4 | 4 | ||
5 | - <img class="logo" src="../data/img/onos-logo.png"> | 5 | + <img class="logo" src="data/img/onos-logo.png"> |
6 | 6 | ||
7 | <p> | 7 | <p> |
8 | This is a <i>view</i> distinct from the Topology viewer, | 8 | This is a <i>view</i> distinct from the Topology viewer, | ... | ... |
web/gui/src/main/webapp/index.html
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<!-- | ||
3 | +~ Copyright 2014,2015 Open Networking Laboratory | ||
4 | +~ | ||
5 | +~ Licensed under the Apache License, Version 2.0 (the "License"); | ||
6 | +~ you may not use this file except in compliance with the License. | ||
7 | +~ You may obtain a copy of the License at | ||
8 | +~ | ||
9 | +~ http://www.apache.org/licenses/LICENSE-2.0 | ||
10 | +~ | ||
11 | +~ Unless required by applicable law or agreed to in writing, software | ||
12 | +~ distributed under the License is distributed on an "AS IS" BASIS, | ||
13 | +~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
14 | +~ See the License for the specific language governing permissions and | ||
15 | +~ limitations under the License. | ||
16 | +--> | ||
17 | +<html> | ||
18 | +<head> | ||
19 | + <meta charset="utf-8"> | ||
20 | + <link rel="shortcut icon" href="data/img/onos-logo.png"> | ||
21 | + <title>ONOS Angular</title> | ||
22 | + | ||
23 | + <!-- Third party library code included here --> | ||
24 | + <!--TODO: use minified versions, once debugging is complete --> | ||
25 | + <script src="tp/angular.js"></script> | ||
26 | + <script src="tp/angular-route.js"></script> | ||
27 | + | ||
28 | + <script src="tp/d3.js"></script> | ||
29 | + <script src="tp/topojson.v1.min.js"></script> | ||
30 | + | ||
31 | + <!-- ONOS UI Framework included here --> | ||
32 | + <!-- TODO: use a single catenated-minified file here --> | ||
33 | + <script src="onos.js"></script> | ||
34 | + <script src="app/directives.js"></script> | ||
35 | + | ||
36 | + <script src="app/fw/util/util.js"></script> | ||
37 | + <script src="app/fw/util/fn.js"></script> | ||
38 | + <script src="app/fw/util/random.js"></script> | ||
39 | + <script src="app/fw/util/theme.js"></script> | ||
40 | + <script src="app/fw/util/keys.js"></script> | ||
41 | + | ||
42 | + <script src="app/fw/mast/mast.js"></script> | ||
43 | + <script src="app/fw/nav/nav.js"></script> | ||
44 | + | ||
45 | + <script src="app/fw/svg/svg.js"></script> | ||
46 | + <script src="app/fw/svg/glyph.js"></script> | ||
47 | + <script src="app/fw/svg/icon.js"></script> | ||
48 | + <script src="app/fw/svg/geodata.js"></script> | ||
49 | + <script src="app/fw/svg/map.js"></script> | ||
50 | + <script src="app/fw/svg/zoom.js"></script> | ||
51 | + <script src="app/fw/svg/svgUtil.js"></script> | ||
52 | + | ||
53 | + <script src="app/fw/remote/remote.js"></script> | ||
54 | + <script src="app/fw/remote/urlfn.js"></script> | ||
55 | + <script src="app/fw/remote/rest.js"></script> | ||
56 | + <script src="app/fw/remote/websocket.js"></script> | ||
57 | + <script src="app/fw/remote/wsevent.js"></script> | ||
58 | + | ||
59 | + <script src="app/fw/widget/widget.js"></script> | ||
60 | + <script src="app/fw/widget/table.js"></script> | ||
61 | + <script src="app/fw/widget/toolbar.js"></script> | ||
62 | + <script src="app/fw/widget/button.js"></script> | ||
63 | + | ||
64 | + <script src="app/fw/layer/layer.js"></script> | ||
65 | + <script src="app/fw/layer/panel.js"></script> | ||
66 | + <script src="app/fw/layer/flash.js"></script> | ||
67 | + <script src="app/fw/layer/quickhelp.js"></script> | ||
68 | + <script src="app/fw/layer/veil.js"></script> | ||
69 | + | ||
70 | + <!-- Framework and library stylesheets included here --> | ||
71 | + <!-- TODO: use a single catenated-minified file here --> | ||
72 | + <link rel="stylesheet" href="app/onos.css"> | ||
73 | + <link rel="stylesheet" href="app/common.css"> | ||
74 | + <link rel="stylesheet" href="app/fw/mast/mast.css"> | ||
75 | + <link rel="stylesheet" href="app/fw/svg/glyph.css"> | ||
76 | + <link rel="stylesheet" href="app/fw/svg/icon.css"> | ||
77 | + <link rel="stylesheet" href="app/fw/layer/panel.css"> | ||
78 | + <link rel="stylesheet" href="app/fw/layer/flash.css"> | ||
79 | + <link rel="stylesheet" href="app/fw/layer/quickhelp.css"> | ||
80 | + <link rel="stylesheet" href="app/fw/layer/veil.css"> | ||
81 | + <link rel="stylesheet" href="app/fw/nav/nav.css"> | ||
82 | + | ||
83 | + <!-- This is where contributed javascript will get injected --> | ||
84 | + <!-- {INJECTED-JAVASCRIPT-START} --> | ||
85 | + <script src="app/view/sample/sample.js"></script> | ||
86 | + <script src="app/view/topo/topo.js"></script> | ||
87 | + <script src="app/view/topo/topoEvent.js"></script> | ||
88 | + <script src="app/view/topo/topoFilter.js"></script> | ||
89 | + <script src="app/view/topo/topoForce.js"></script> | ||
90 | + <script src="app/view/topo/topoInst.js"></script> | ||
91 | + <script src="app/view/topo/topoModel.js"></script> | ||
92 | + <script src="app/view/topo/topoOblique.js"></script> | ||
93 | + <script src="app/view/topo/topoPanel.js"></script> | ||
94 | + <script src="app/view/topo/topoSelect.js"></script> | ||
95 | + <script src="app/view/topo/topoTraffic.js"></script> | ||
96 | + <script src="app/view/device/device.js"></script> | ||
97 | + <!-- {INJECTED-JAVASCRIPT-END} --> | ||
98 | + | ||
99 | + | ||
100 | + <!-- This is where contributed stylesheets will get injected --> | ||
101 | + <!-- {INJECTED-STYLESHEETS-START} --> | ||
102 | + <link rel="stylesheet" href="app/view/sample/sample.css"> | ||
103 | + <link rel="stylesheet" href="app/view/topo/topo.css"> | ||
104 | + <link rel="stylesheet" href="app/view/device/device.css"> | ||
105 | + <!-- TODO: inject style-sheet refs server-side --> | ||
106 | + <!-- {INJECTED-STYLESHEETS-END} --> | ||
107 | + | ||
108 | +</head> | ||
109 | +<body class="light" ng-app="onosApp"> | ||
110 | +<div id="frame" ng-controller="OnosCtrl as onosCtrl"> | ||
111 | + <div id="mast" | ||
112 | + ng-controller="MastCtrl as mastCtrl" | ||
113 | + ng-include="'app/fw/mast/mast.html'"></div> | ||
114 | + | ||
115 | + <div id="view" ng-view></div> | ||
116 | + | ||
117 | + <div id="nav" | ||
118 | + ng-controller="NavCtrl as navCtrl" | ||
119 | + ng-include="'nav.html'"></div> | ||
120 | + | ||
121 | + <div id="floatpanels"></div> | ||
122 | + <div id="alerts"></div> | ||
123 | + <div id="flash"></div> | ||
124 | + <div id="quickhelp"></div> | ||
125 | + <div id="veil" | ||
126 | + resize | ||
127 | + ng-style="resizeWithOffset(0, 0)"></div> | ||
128 | +</div> | ||
129 | +</body> | ||
130 | +</html> |
... | @@ -3,7 +3,9 @@ | ... | @@ -3,7 +3,9 @@ |
3 | <h3>(Note - this is temporary)</h3> | 3 | <h3>(Note - this is temporary)</h3> |
4 | 4 | ||
5 | <ul> | 5 | <ul> |
6 | + <!-- {INJECTED-VIEW-NAV-START} --> | ||
6 | <li> <a ng-click="navCtrl.hideNav()" href="#/sample">Sample View</a></li> | 7 | <li> <a ng-click="navCtrl.hideNav()" href="#/sample">Sample View</a></li> |
7 | <li> <a ng-click="navCtrl.hideNav()" href="#/topo">Topology View</a></li> | 8 | <li> <a ng-click="navCtrl.hideNav()" href="#/topo">Topology View</a></li> |
8 | <li> <a ng-click="navCtrl.hideNav()" href="#/device">Device View</a></li> | 9 | <li> <a ng-click="navCtrl.hideNav()" href="#/device">Device View</a></li> |
10 | + <!-- {INJECTED-VIEW-NAV-END} --> | ||
9 | </ul> | 11 | </ul> | ... | ... |
... | @@ -104,7 +104,7 @@ | ... | @@ -104,7 +104,7 @@ |
104 | } | 104 | } |
105 | 105 | ||
106 | function viewTemplateUrl(vid) { | 106 | function viewTemplateUrl(vid) { |
107 | - return 'view/' + vid + '/' + vid + '.html'; | 107 | + return 'app/view/' + vid + '/' + vid + '.html'; |
108 | } | 108 | } |
109 | 109 | ||
110 | // Add routes for each defined view. | 110 | // Add routes for each defined view. | ... | ... |
... | @@ -51,7 +51,7 @@ describe('factory: fw/svg/geodata.js', function() { | ... | @@ -51,7 +51,7 @@ describe('factory: fw/svg/geodata.js', function() { |
51 | promise = gds.fetchTopoData(id); | 51 | promise = gds.fetchTopoData(id); |
52 | expect(promise.meta).toBeDefined(); | 52 | expect(promise.meta).toBeDefined(); |
53 | expect(promise.meta.id).toBe(id); | 53 | expect(promise.meta.id).toBe(id); |
54 | - expect(promise.meta.url).toBe('../data/map/foo.json'); | 54 | + expect(promise.meta.url).toBe('data/map/foo.json'); |
55 | }); | 55 | }); |
56 | 56 | ||
57 | it('should treat an external id as the url itself', function () { | 57 | it('should treat an external id as the url itself', function () { | ... | ... |
-
Please register or login to post a comment