GUI -- Clean up of index.html and onos.js generation.
Change-Id: Icc1cdeb0e36b29bb76cee9d90fb342e131b78644
Showing
8 changed files
with
48 additions
and
44 deletions
| ... | @@ -62,9 +62,9 @@ public class MainIndexResource extends AbstractInjectionResource { | ... | @@ -62,9 +62,9 @@ public class MainIndexResource extends AbstractInjectionResource { |
| 62 | InputStream indexTemplate = classLoader.getResourceAsStream(INDEX); | 62 | InputStream indexTemplate = classLoader.getResourceAsStream(INDEX); |
| 63 | String index = new String(toByteArray(indexTemplate)); | 63 | String index = new String(toByteArray(indexTemplate)); |
| 64 | 64 | ||
| 65 | - int p1s = split(index, 0, INJECT_JS_START); | 65 | + int p1s = split(index, 0, INJECT_JS_START) - INJECT_JS_START.length(); |
| 66 | int p1e = split(index, p1s, INJECT_JS_END); | 66 | int p1e = split(index, p1s, INJECT_JS_END); |
| 67 | - int p2s = split(index, p1e, INJECT_CSS_START); | 67 | + int p2s = split(index, p1e, INJECT_CSS_START) - INJECT_CSS_START.length(); |
| 68 | int p2e = split(index, p2s, INJECT_CSS_END); | 68 | int p2e = split(index, p2s, INJECT_CSS_END); |
| 69 | int p3s = split(index, p2e, null); | 69 | int p3s = split(index, p2e, null); |
| 70 | 70 | ||
| ... | @@ -78,17 +78,23 @@ public class MainIndexResource extends AbstractInjectionResource { | ... | @@ -78,17 +78,23 @@ public class MainIndexResource extends AbstractInjectionResource { |
| 78 | return Response.ok(new SequenceInputStream(streams)).build(); | 78 | return Response.ok(new SequenceInputStream(streams)).build(); |
| 79 | } | 79 | } |
| 80 | 80 | ||
| 81 | - // Produces an input stream including CSS injections from all extensions. | 81 | + // Produces an input stream including JS injections from all extensions. |
| 82 | - private InputStream includeCss(UiExtensionService service) { | 82 | + private InputStream includeJs(UiExtensionService service) { |
| 83 | Builder<InputStream> builder = ImmutableList.builder(); | 83 | Builder<InputStream> builder = ImmutableList.builder(); |
| 84 | - service.getExtensions().forEach(ext -> add(builder, ext.css())); | 84 | + service.getExtensions().forEach(ext -> { |
| 85 | + add(builder, ext.js()); | ||
| 86 | + add(builder, new NewlineInputStream()); | ||
| 87 | + }); | ||
| 85 | return new SequenceInputStream(new StreamEnumeration(builder.build())); | 88 | return new SequenceInputStream(new StreamEnumeration(builder.build())); |
| 86 | } | 89 | } |
| 87 | 90 | ||
| 88 | - // Produces an input stream including JS injections from all extensions. | 91 | + // Produces an input stream including CSS injections from all extensions. |
| 89 | - private InputStream includeJs(UiExtensionService service) { | 92 | + private InputStream includeCss(UiExtensionService service) { |
| 90 | Builder<InputStream> builder = ImmutableList.builder(); | 93 | Builder<InputStream> builder = ImmutableList.builder(); |
| 91 | - service.getExtensions().forEach(ext -> add(builder, ext.js())); | 94 | + service.getExtensions().forEach(ext -> { |
| 95 | + add(builder, ext.css()); | ||
| 96 | + add(builder, new NewlineInputStream()); | ||
| 97 | + }); | ||
| 92 | return new SequenceInputStream(new StreamEnumeration(builder.build())); | 98 | return new SequenceInputStream(new StreamEnumeration(builder.build())); |
| 93 | } | 99 | } |
| 94 | 100 | ||
| ... | @@ -99,4 +105,19 @@ public class MainIndexResource extends AbstractInjectionResource { | ... | @@ -99,4 +105,19 @@ public class MainIndexResource extends AbstractInjectionResource { |
| 99 | } | 105 | } |
| 100 | } | 106 | } |
| 101 | 107 | ||
| 108 | + private static final String NL = String.format("%n"); | ||
| 109 | + private static final byte[] NL_BYTES = NL.getBytes(); | ||
| 110 | + | ||
| 111 | + private static class NewlineInputStream extends InputStream { | ||
| 112 | + private int index = 0; | ||
| 113 | + | ||
| 114 | + @Override | ||
| 115 | + public int read() throws IOException { | ||
| 116 | + if (index == NL_BYTES.length) { | ||
| 117 | + return -1; | ||
| 118 | + } | ||
| 119 | + return NL_BYTES[index++]; | ||
| 120 | + } | ||
| 121 | + } | ||
| 122 | + | ||
| 102 | } | 123 | } | ... | ... |
| ... | @@ -43,6 +43,8 @@ public class MainModuleResource extends AbstractInjectionResource { | ... | @@ -43,6 +43,8 @@ public class MainModuleResource extends AbstractInjectionResource { |
| 43 | 43 | ||
| 44 | private static final String INJECT_VIEW_IDS_START = "// {INJECTED-VIEW-IDS-START}"; | 44 | private static final String INJECT_VIEW_IDS_START = "// {INJECTED-VIEW-IDS-START}"; |
| 45 | private static final String INJECT_VIEW_IDS_END = "// {INJECTED-VIEW-IDS-END}"; | 45 | private static final String INJECT_VIEW_IDS_END = "// {INJECTED-VIEW-IDS-END}"; |
| 46 | + private static final String PREFIX = " '"; | ||
| 47 | + private static final String SUFFIX = String.format("',%n"); | ||
| 46 | 48 | ||
| 47 | @GET | 49 | @GET |
| 48 | @Produces(SCRIPT) | 50 | @Produces(SCRIPT) |
| ... | @@ -51,7 +53,7 @@ public class MainModuleResource extends AbstractInjectionResource { | ... | @@ -51,7 +53,7 @@ public class MainModuleResource extends AbstractInjectionResource { |
| 51 | InputStream jsTemplate = getClass().getClassLoader().getResourceAsStream(MAIN_JS); | 53 | InputStream jsTemplate = getClass().getClassLoader().getResourceAsStream(MAIN_JS); |
| 52 | String js = new String(toByteArray(jsTemplate)); | 54 | String js = new String(toByteArray(jsTemplate)); |
| 53 | 55 | ||
| 54 | - int p1s = split(js, 0, INJECT_VIEW_IDS_START); | 56 | + int p1s = split(js, 0, INJECT_VIEW_IDS_START) - INJECT_VIEW_IDS_START.length(); |
| 55 | int p1e = split(js, 0, INJECT_VIEW_IDS_END); | 57 | int p1e = split(js, 0, INJECT_VIEW_IDS_END); |
| 56 | int p2s = split(js, p1e, null); | 58 | int p2s = split(js, p1e, null); |
| 57 | 59 | ||
| ... | @@ -68,7 +70,7 @@ public class MainModuleResource extends AbstractInjectionResource { | ... | @@ -68,7 +70,7 @@ public class MainModuleResource extends AbstractInjectionResource { |
| 68 | StringBuilder sb = new StringBuilder("\n"); | 70 | StringBuilder sb = new StringBuilder("\n"); |
| 69 | for (UiExtension extension : service.getExtensions()) { | 71 | for (UiExtension extension : service.getExtensions()) { |
| 70 | for (UiView view : extension.views()) { | 72 | for (UiView view : extension.views()) { |
| 71 | - sb.append(" '").append(view.id()).append("',"); | 73 | + sb.append(PREFIX).append(view.id()).append(SUFFIX); |
| 72 | } | 74 | } |
| 73 | } | 75 | } |
| 74 | return new ByteArrayInputStream(sb.toString().getBytes()); | 76 | return new ByteArrayInputStream(sb.toString().getBytes()); | ... | ... |
| ... | @@ -223,9 +223,7 @@ | ... | @@ -223,9 +223,7 @@ |
| 223 | 223 | ||
| 224 | // return the given string with the first character capitalized. | 224 | // return the given string with the first character capitalized. |
| 225 | function cap(s) { | 225 | function cap(s) { |
| 226 | - return s.toLowerCase().replace(/^[a-z]/, function (m) { | 226 | + return s ? s[0].toUpperCase() + s.slice(1) : s; |
| 227 | - return m.toUpperCase(); | ||
| 228 | - }); | ||
| 229 | } | 227 | } |
| 230 | 228 | ||
| 231 | // return the parameter without a px suffix | 229 | // return the parameter without a px suffix | ... | ... |
| ... | @@ -326,13 +326,9 @@ | ... | @@ -326,13 +326,9 @@ |
| 326 | ['scroll down', 'See more apps'] | 326 | ['scroll down', 'See more apps'] |
| 327 | ]); | 327 | ]); |
| 328 | 328 | ||
| 329 | - function capitalize(s) { | ||
| 330 | - return s ? s[0].toUpperCase() + s.slice(1) : s; | ||
| 331 | - } | ||
| 332 | - | ||
| 333 | function createConfirmationText(action, itemId) { | 329 | function createConfirmationText(action, itemId) { |
| 334 | var content = ds.createDiv(); | 330 | var content = ds.createDiv(); |
| 335 | - content.append('p').text(capitalize(action) + ' ' + itemId); | 331 | + content.append('p').text(fs.cap(action) + ' ' + itemId); |
| 336 | if (strongWarning[itemId]) { | 332 | if (strongWarning[itemId]) { |
| 337 | content.append('p').text(discouragement).classed('strong', true); | 333 | content.append('p').text(discouragement).classed('strong', true); |
| 338 | } | 334 | } | ... | ... |
| ... | @@ -130,7 +130,7 @@ | ... | @@ -130,7 +130,7 @@ |
| 130 | <script src="app/view/processor/processor.js"></script> | 130 | <script src="app/view/processor/processor.js"></script> |
| 131 | <script src="app/view/tunnel/tunnel.js"></script> | 131 | <script src="app/view/tunnel/tunnel.js"></script> |
| 132 | 132 | ||
| 133 | - <!-- This is where contributed javascript will get injected --> | 133 | + <!-- Contributed javascript injected here --> |
| 134 | <!-- {INJECTED-JAVASCRIPT-START} --> | 134 | <!-- {INJECTED-JAVASCRIPT-START} --> |
| 135 | <!-- {INJECTED-JAVASCRIPT-END} --> | 135 | <!-- {INJECTED-JAVASCRIPT-END} --> |
| 136 | 136 | ||
| ... | @@ -150,7 +150,7 @@ | ... | @@ -150,7 +150,7 @@ |
| 150 | <link rel="stylesheet" href="app/view/processor/processor.css"> | 150 | <link rel="stylesheet" href="app/view/processor/processor.css"> |
| 151 | <link rel="stylesheet" href="app/view/tunnel/tunnel.css"> | 151 | <link rel="stylesheet" href="app/view/tunnel/tunnel.css"> |
| 152 | 152 | ||
| 153 | - <!-- This is where contributed stylesheets will get injected --> | 153 | + <!-- Contributed stylesheets injected here --> |
| 154 | <!-- {INJECTED-STYLESHEETS-START} --> | 154 | <!-- {INJECTED-STYLESHEETS-START} --> |
| 155 | <!-- {INJECTED-STYLESHEETS-END} --> | 155 | <!-- {INJECTED-STYLESHEETS-END} --> |
| 156 | 156 | ... | ... |
| ... | @@ -33,38 +33,27 @@ | ... | @@ -33,38 +33,27 @@ |
| 33 | 'onosWidget' | 33 | 'onosWidget' |
| 34 | ]; | 34 | ]; |
| 35 | 35 | ||
| 36 | - // view IDs.. note the first view listed is loaded at startup | 36 | + // view IDs.. injected via the servlet |
| 37 | var viewIds = [ | 37 | var viewIds = [ |
| 38 | // {INJECTED-VIEW-IDS-START} | 38 | // {INJECTED-VIEW-IDS-START} |
| 39 | - 'topo', | ||
| 40 | - 'device', | ||
| 41 | - 'flow', | ||
| 42 | - 'port', | ||
| 43 | - 'group', | ||
| 44 | - 'meter', | ||
| 45 | - 'host', | ||
| 46 | - 'app', | ||
| 47 | - 'intent', | ||
| 48 | - 'cluster', | ||
| 49 | - 'link', | ||
| 50 | // {INJECTED-VIEW-IDS-END} | 39 | // {INJECTED-VIEW-IDS-END} |
| 51 | - | ||
| 52 | // dummy entry | 40 | // dummy entry |
| 53 | '' | 41 | '' |
| 54 | ]; | 42 | ]; |
| 55 | 43 | ||
| 56 | - var viewDependencies = []; | 44 | + var defaultView = 'topo', |
| 45 | + viewDependencies = []; | ||
| 57 | 46 | ||
| 58 | viewIds.forEach(function (id) { | 47 | viewIds.forEach(function (id) { |
| 59 | if (id) { | 48 | if (id) { |
| 60 | - viewDependencies.push('ov' + capitalize(id)); | 49 | + viewDependencies.push('ov' + cap(id)); |
| 61 | } | 50 | } |
| 62 | }); | 51 | }); |
| 63 | 52 | ||
| 64 | var moduleDependencies = coreDependencies.concat(viewDependencies); | 53 | var moduleDependencies = coreDependencies.concat(viewDependencies); |
| 65 | 54 | ||
| 66 | - function capitalize(word) { | 55 | + function cap(s) { |
| 67 | - return word ? word[0].toUpperCase() + word.slice(1) : word; | 56 | + return s ? s[0].toUpperCase() + s.slice(1) : s; |
| 68 | } | 57 | } |
| 69 | 58 | ||
| 70 | angular.module('onosApp', moduleDependencies) | 59 | angular.module('onosApp', moduleDependencies) |
| ... | @@ -97,8 +86,6 @@ | ... | @@ -97,8 +86,6 @@ |
| 97 | flash.initFlash(); | 86 | flash.initFlash(); |
| 98 | qhs.initQuickHelp(); | 87 | qhs.initQuickHelp(); |
| 99 | 88 | ||
| 100 | - // TODO: register handler for user settings, etc. | ||
| 101 | - | ||
| 102 | wss.createWebSocket({ | 89 | wss.createWebSocket({ |
| 103 | wsport: $location.search().wsport | 90 | wsport: $location.search().wsport |
| 104 | }); | 91 | }); |
| ... | @@ -111,14 +98,14 @@ | ... | @@ -111,14 +98,14 @@ |
| 111 | }]) | 98 | }]) |
| 112 | 99 | ||
| 113 | .config(['$routeProvider', function ($routeProvider) { | 100 | .config(['$routeProvider', function ($routeProvider) { |
| 114 | - // If view ID not provided, route to the first view in the list. | 101 | + // If view ID not provided, route to the default view |
| 115 | $routeProvider | 102 | $routeProvider |
| 116 | .otherwise({ | 103 | .otherwise({ |
| 117 | - redirectTo: '/topo' | 104 | + redirectTo: '/' + defaultView |
| 118 | }); | 105 | }); |
| 119 | 106 | ||
| 120 | function viewCtrlName(vid) { | 107 | function viewCtrlName(vid) { |
| 121 | - return 'Ov' + capitalize(vid) + 'Ctrl'; | 108 | + return 'Ov' + cap(vid) + 'Ctrl'; |
| 122 | } | 109 | } |
| 123 | 110 | ||
| 124 | function viewTemplateUrl(vid) { | 111 | function viewTemplateUrl(vid) { | ... | ... |
-
Please register or login to post a comment