aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/web/gui/src/main/webapp/app/view/topo/topoOblique.js
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/web/gui/src/main/webapp/app/view/topo/topoOblique.js')
-rw-r--r--framework/src/onos/web/gui/src/main/webapp/app/view/topo/topoOblique.js257
1 files changed, 0 insertions, 257 deletions
diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/topo/topoOblique.js b/framework/src/onos/web/gui/src/main/webapp/app/view/topo/topoOblique.js
deleted file mode 100644
index e84b1173..00000000
--- a/framework/src/onos/web/gui/src/main/webapp/app/view/topo/topoOblique.js
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * 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.
- */
-
-/*
- ONOS GUI -- Topology Oblique View Module.
- Provides functionality to view the topology as two planes (packet & optical)
- from an oblique (side-on) perspective.
- */
-
-(function () {
- 'use strict';
-
- // injected refs
- var $log, fs, sus, flash;
-
- // api to topoForce
- var api;
- /*
- force() // get ref to force layout object
- zoomLayer() // get ref to zoom layer
- nodeGBBox() // get bounding box of node group layer
- node() // get ref to D3 selection of nodes
- link() // get ref to D3 selection of links
- nodes() // get ref to network nodes array
- tickStuff // ref to tick functions
- nodeLock(b) // test-and-set nodeLock state
- opacifyMap(b) // show or hide map layer
- inLayer(d, layer) // return true if d in layer {'pkt'|'opt'}
- calcLinkPos() // recomputes link pos based on node data
- */
-
- // configuration
- var xsky = -.7, // x skew y factor
- xsk = -35, // x skew angle
- ysc = .5, // y scale
- pad = 50,
- time = 1500,
- fill = {
- pkt: 'rgba(130,130,170,0.3)', // blue-ish
- opt: 'rgba(170,130,170,0.3)' // magenta-ish
- };
-
- // internal state
- var oblique = false,
- xffn = null,
- plane = {},
- oldNodeLock;
-
-
- function planeId(tag) {
- return 'topo-obview-' + tag + 'Plane';
- }
-
- function ytfn(h, dir) {
- return h * ysc * dir * 1.1;
- }
-
- function obXform(h, dir) {
- var yt = ytfn(h, dir);
- return sus.scale(1, ysc) + sus.translate(0, yt) + sus.skewX(xsk);
- }
-
- function noXform() {
- return sus.skewX(0) + sus.translate(0,0) + sus.scale(1,1);
- }
-
- function padBox(box, p) {
- box.x -= p;
- box.y -= p;
- box.width += p*2;
- box.height += p*2;
- }
-
- function toObliqueView() {
- var box = api.nodeGBBox(),
- ox, oy;
-
- padBox(box, pad);
-
- ox = box.x + box.width / 2;
- oy = box.y + box.height / 2;
-
- // remember node lock state, then lock the nodes down
- oldNodeLock = api.nodeLock(true);
- api.opacifyMap(false);
-
- insertPlanes(ox, oy);
-
- xffn = function (xy, dir) {
- var yt = ytfn(box.height, dir),
- ax = xy.x - ox,
- ay = xy.y - oy,
- x = ax + ay * xsky,
- y = (ay + yt) * ysc;
- return {x: ox + x, y: oy + y};
- };
-
- showPlane('pkt', box, -1);
- showPlane('opt', box, 1);
- obTransitionNodes();
- }
-
- function toNormalView() {
- xffn = null;
-
- hidePlane('pkt');
- hidePlane('opt');
- obTransitionNodes();
-
- removePlanes();
-
- // restore node lock state
- api.nodeLock(oldNodeLock);
- api.opacifyMap(true);
- }
-
- function obTransitionNodes() {
- // return the direction for the node
- // -1 for pkt layer, 1 for optical layer
- function dir(d) {
- return api.inLayer(d, 'pkt') ? -1 : 1;
- }
-
- if (xffn) {
- api.nodes().forEach(function (d) {
- var oldxy = {x: d.x, y: d.y},
- coords = xffn(oldxy, dir(d));
- d.oldxy = oldxy;
- d.px = d.x = coords.x;
- d.py = d.y = coords.y;
- });
- } else {
- api.nodes().forEach(function (d) {
- var old = d.oldxy || {x: d.x, y: d.y};
- d.px = d.x = old.x;
- d.py = d.y = old.y;
- delete d.oldxy;
- });
- }
-
- api.node().transition()
- .duration(time)
- .attr(api.tickStuff.nodeAttr);
- api.link().transition()
- .duration(time)
- .call(api.calcLinkPos)
- .attr(api.tickStuff.linkAttr)
- .call(api.applyNumLinkLabels);
- api.linkLabel().transition()
- .duration(time)
- .attr(api.tickStuff.linkLabelAttr);
- }
-
- function showPlane(tag, box, dir) {
- // set box origin at center..
- box.x = -box.width/2;
- box.y = -box.height/2;
-
- plane[tag].select('rect')
- .attr(box)
- .attr('opacity', 0)
- .transition()
- .duration(time)
- .attr('opacity', 1)
- .attr('transform', obXform(box.height, dir));
- }
-
- function hidePlane(tag) {
- plane[tag].select('rect')
- .transition()
- .duration(time)
- .attr('opacity', 0)
- .attr('transform', noXform());
- }
-
- function insertPlanes(ox, oy) {
- function ins(tag) {
- var id = planeId(tag),
- g = api.zoomLayer().insert('g', '#topo-G')
- .attr('id', id)
- .attr('transform', sus.translate(ox,oy));
- g.append('rect')
- .attr('fill', fill[tag])
- .attr('opacity', 0);
- plane[tag] = g;
- }
- ins('opt');
- ins('pkt');
- }
-
- function removePlanes() {
- function rem(tag) {
- var id = planeId(tag);
- api.zoomLayer().select('#'+id)
- .transition()
- .duration(time + 50)
- .remove();
- delete plane[tag];
- }
- rem('opt');
- rem('pkt');
- }
-
-
-// === -----------------------------------------------------
-// === MODULE DEFINITION ===
-
-angular.module('ovTopo')
- .factory('TopoObliqueService',
- ['$log', 'FnService', 'SvgUtilService', 'FlashService',
-
- function (_$log_, _fs_, _sus_, _flash_) {
- $log = _$log_;
- fs = _fs_;
- sus = _sus_;
- flash = _flash_;
-
- function initOblique(_api_) {
- api = _api_;
- }
-
- function destroyOblique() { }
-
- function toggleOblique() {
- oblique = !oblique;
- if (oblique) {
- api.force().stop();
- flash.flash('Oblique view');
- toObliqueView();
- } else {
- flash.flash('Normal view');
- toNormalView();
- }
- }
-
- return {
- initOblique: initOblique,
- destroyOblique: destroyOblique,
-
- isOblique: function () { return oblique; },
- toggleOblique: toggleOblique
- };
- }]);
-}());