diff options
Diffstat (limited to 'framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/resources/app/view')
4 files changed, 253 insertions, 0 deletions
diff --git a/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/resources/app/view/sampleTopov/sampleTopov.css b/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/resources/app/view/sampleTopov/sampleTopov.css new file mode 100644 index 00000000..cbf460f9 --- /dev/null +++ b/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/resources/app/view/sampleTopov/sampleTopov.css @@ -0,0 +1,2 @@ +/* css for sample app topology overlay */ + diff --git a/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/resources/app/view/sampleTopov/sampleTopov.html b/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/resources/app/view/sampleTopov/sampleTopov.html new file mode 100644 index 00000000..b1c9acbb --- /dev/null +++ b/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/resources/app/view/sampleTopov/sampleTopov.html @@ -0,0 +1,4 @@ +<!-- partial HTML --> +<div id="ov-sample-topov"> + <p>This is a hidden view .. just a placeholder to house the javascript</p> +</div> diff --git a/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/resources/app/view/sampleTopov/sampleTopovDemo.js b/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/resources/app/view/sampleTopov/sampleTopovDemo.js new file mode 100644 index 00000000..0b82d811 --- /dev/null +++ b/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/resources/app/view/sampleTopov/sampleTopovDemo.js @@ -0,0 +1,104 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + Sample Demo module. This contains the "business logic" for the topology + overlay that we are implementing. + */ + +(function () { + 'use strict'; + + // injected refs + var $log, fs, flash, wss; + + // constants + var displayStart = 'sampleDisplayStart', + displayUpdate = 'sampleDisplayUpdate', + displayStop = 'sampleDisplayStop'; + + // internal state + var currentMode = null; + + + // === --------------------------- + // === Helper functions + + function sendDisplayStart(mode) { + wss.sendEvent(displayStart, { + mode: mode + }); + } + + function sendDisplayUpdate(what) { + wss.sendEvent(displayUpdate, { + id: what ? what.id : '' + }); + } + + function sendDisplayStop() { + wss.sendEvent(displayStop); + } + + // === --------------------------- + // === Main API functions + + function startDisplay(mode) { + if (currentMode === mode) { + $log.debug('(in mode', mode, 'already)'); + } else { + currentMode = mode; + sendDisplayStart(mode); + flash.flash('Starting display mode: ' + mode); + } + } + + function updateDisplay(m) { + if (currentMode) { + sendDisplayUpdate(m); + } + } + + function stopDisplay() { + if (currentMode) { + currentMode = null; + sendDisplayStop(); + flash.flash('Canceling display mode'); + return true; + } + return false; + } + + // === --------------------------- + // === Module Factory Definition + + angular.module('ovSampleTopov', []) + .factory('SampleTopovDemoService', + ['$log', 'FnService', 'FlashService', 'WebSocketService', + + function (_$log_, _fs_, _flash_, _wss_) { + $log = _$log_; + fs = _fs_; + flash = _flash_; + wss = _wss_; + + return { + startDisplay: startDisplay, + updateDisplay: updateDisplay, + stopDisplay: stopDisplay + }; + }]); +}()); diff --git a/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/resources/app/view/sampleTopov/sampleTopovOverlay.js b/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/resources/app/view/sampleTopov/sampleTopovOverlay.js new file mode 100644 index 00000000..12875e1f --- /dev/null +++ b/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/resources/app/view/sampleTopov/sampleTopovOverlay.js @@ -0,0 +1,143 @@ +// sample topology overlay - client side +// +// This is the glue that binds our business logic (in sampleTopovDemo.js) +// to the overlay framework. + +(function () { + 'use strict'; + + // injected refs + var $log, tov, stds; + + // internal state should be kept in the service module (not here) + + // our overlay definition + var overlay = { + // NOTE: this must match the ID defined in AppUiTopoOverlay + overlayId: 'meowster-overlay', + glyphId: '*star4', + tooltip: 'Sample Meowster Topo Overlay', + + // These glyphs get installed using the overlayId as a prefix. + // e.g. 'star4' is installed as 'meowster-overlay-star4' + // They can be referenced (from this overlay) as '*star4' + // That is, the '*' prefix stands in for 'meowster-overlay-' + glyphs: { + star4: { + vb: '0 0 8 8', + d: 'M1,4l2,-1l1,-2l1,2l2,1l-2,1l-1,2l-1,-2z' + }, + banner: { + vb: '0 0 6 6', + d: 'M1,1v4l2,-2l2,2v-4z' + } + }, + + activate: function () { + $log.debug("Sample topology overlay ACTIVATED"); + }, + deactivate: function () { + stds.stopDisplay(); + $log.debug("Sample topology overlay DEACTIVATED"); + }, + + // detail panel button definitions + buttons: { + foo: { + gid: 'chain', + tt: 'A FOO action', + cb: function (data) { + $log.debug('FOO action invoked with data:', data); + } + }, + bar: { + gid: '*banner', + tt: 'A BAR action', + cb: function (data) { + $log.debug('BAR action invoked with data:', data); + } + } + }, + + // Key bindings for traffic overlay buttons + // NOTE: fully qual. button ID is derived from overlay-id and key-name + keyBindings: { + 0: { + cb: function () { stds.stopDisplay(); }, + tt: 'Cancel Display Mode', + gid: 'xMark' + }, + V: { + cb: function () { stds.startDisplay('mouse'); }, + tt: 'Start Mouse Mode', + gid: '*banner' + }, + F: { + cb: function () { stds.startDisplay('link'); }, + tt: 'Start Link Mode', + gid: 'chain' + }, + G: { + cb: buttonCallback, + tt: 'Uses the G key', + gid: 'crown' + }, + + _keyOrder: [ + '0', 'V', 'F', 'G' + ] + }, + + hooks: { + // hook for handling escape key + // Must return true to consume ESC, false otherwise. + escape: function () { + // Must return true to consume ESC, false otherwise. + return stds.stopDisplay(); + }, + + // hooks for when the selection changes... + empty: function () { + selectionCallback('empty'); + }, + single: function (data) { + selectionCallback('single', data); + }, + multi: function (selectOrder) { + selectionCallback('multi', selectOrder); + tov.addDetailButton('foo'); + tov.addDetailButton('bar'); + }, + mouseover: function (m) { + // m has id, class, and type properties + $log.debug('mouseover:', m); + stds.updateDisplay(m); + }, + mouseout: function () { + $log.debug('mouseout'); + stds.updateDisplay(); + } + } + }; + + + function buttonCallback(x) { + $log.debug('Toolbar-button callback', x); + } + + function selectionCallback(x, d) { + $log.debug('Selection callback', x, d); + } + + // invoke code to register with the overlay service + angular.module('ovSampleTopov') + .run(['$log', 'TopoOverlayService', 'SampleTopovDemoService', + + function (_$log_, _tov_, _stds_) { + $log = _$log_; + tov = _tov_; + stds = _stds_; + tov.register(overlay); + }]); + +}()); |