GUI -- TopoView - implemented show/hide background map ('B' keystroke)
- reworked SvgUtilService.makeVisible() to be dual-purpose .visible(el, [b]) method.
Change-Id: I8e68994627d1022066cdc9dcbed006675431d91a
diff --git a/web/gui/src/main/webapp/app/fw/svg/svgUtil.js b/web/gui/src/main/webapp/app/fw/svg/svgUtil.js
index 2c47d44..b6c98f0 100644
--- a/web/gui/src/main/webapp/app/fw/svg/svgUtil.js
+++ b/web/gui/src/main/webapp/app/fw/svg/svgUtil.js
@@ -235,12 +235,16 @@
return s.replace(/px$/,'');
}
+ function safeId(s) {
+ return s.replace(/[^a-z0-9]/gi, '-');
+ }
+
function makeVisible(el, b) {
el.style('visibility', (b ? 'visible' : 'hidden'));
}
- function safeId(s) {
- return s.replace(/[^a-z0-9]/gi, '-');
+ function isVisible(el) {
+ return el.style('visibility') === 'visible';
}
return {
@@ -249,8 +253,14 @@
cat7: cat7,
translate: translate,
stripPx: stripPx,
- makeVisible: makeVisible,
- safeId: safeId
+ safeId: safeId,
+ visible: function (el, x) {
+ if (x === undefined) {
+ return isVisible(el);
+ } else {
+ makeVisible(el, x);
+ }
+ }
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topo.js b/web/gui/src/main/webapp/app/view/topo/topo.js
index c413347..00b06d5 100644
--- a/web/gui/src/main/webapp/app/view/topo/topo.js
+++ b/web/gui/src/main/webapp/app/view/topo/topo.js
@@ -48,7 +48,7 @@
H: [tfs.toggleHosts, 'Toggle host visibility'],
M: [tfs.toggleOffline, 'Toggle offline visibility'],
- //B: [toggleBg, 'Toggle background image'],
+ B: [toggleMap, 'Toggle background map'],
//P: togglePorts,
//X: [toggleNodeLock, 'Lock / unlock node positions'],
@@ -94,6 +94,10 @@
tfs.updateDeviceColors();
}
+ function toggleMap() {
+ sus.visible(mapG, !sus.visible(mapG));
+ }
+
function resetZoom() {
zoomer.reset();
}
@@ -184,7 +188,7 @@
}
function showNoDevs(b) {
- sus.makeVisible(noDevsLayer, b);
+ sus.visible(noDevsLayer, b);
}
function showCallibrationPoints() {
diff --git a/web/gui/src/main/webapp/app/view/topo/topoForce.js b/web/gui/src/main/webapp/app/view/topo/topoForce.js
index 35c606f..8f15b947 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoForce.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoForce.js
@@ -365,21 +365,21 @@
}
function updateHostVisibility() {
- sus.makeVisible(nodeG.selectAll('.host'), showHosts);
- sus.makeVisible(linkG.selectAll('.hostLink'), showHosts);
+ sus.visible(nodeG.selectAll('.host'), showHosts);
+ sus.visible(linkG.selectAll('.hostLink'), showHosts);
}
function updateOfflineVisibility(dev) {
function updDev(d, show) {
- sus.makeVisible(d.el, show);
+ sus.visible(d.el, show);
tms.findAttachedLinks(d.id).forEach(function (link) {
b = show && ((link.type() !== 'hostLink') || showHosts);
- sus.makeVisible(link.el, b);
+ sus.visible(link.el, b);
});
tms.findAttachedHosts(d.id).forEach(function (host) {
b = show && showHosts;
- sus.makeVisible(host.el, b);
+ sus.visible(host.el, b);
});
}
@@ -721,7 +721,7 @@
textDy = r + 10;
d.el = node;
- sus.makeVisible(node, showHosts);
+ sus.visible(node, showHosts);
is.addHostIcon(node, r, gid);
@@ -849,7 +849,7 @@
d.el = link;
restyleLinkElement(d);
if (d.type() === 'hostLink') {
- sus.makeVisible(link, showHosts);
+ sus.visible(link, showHosts);
}
}
diff --git a/web/gui/src/main/webapp/tests/app/fw/svg/svgUtil-spec.js b/web/gui/src/main/webapp/tests/app/fw/svg/svgUtil-spec.js
index 69fe750..6fb1a60 100644
--- a/web/gui/src/main/webapp/tests/app/fw/svg/svgUtil-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/svg/svgUtil-spec.js
@@ -41,7 +41,7 @@
it('should define api functions', function () {
expect(fs.areFunctions(sus, [
'createDragBehavior', 'loadGlow', 'cat7', 'translate', 'stripPx',
- 'makeVisible', 'safeId'
+ 'safeId', 'visible'
])).toBeTruthy();
});
@@ -114,15 +114,17 @@
expect(sus.stripPx('4px')).toEqual('4');
});
- // === makeVisible()
+ // === visible()
it('should hide and show an element', function () {
var r = svg.append('rect');
- sus.makeVisible(r, false);
+ sus.visible(r, false);
expect(r.style('visibility')).toEqual('hidden');
+ expect(sus.visible(r)).toBe(false);
- sus.makeVisible(r, true);
+ sus.visible(r, true);
expect(r.style('visibility')).toEqual('visible');
+ expect(sus.visible(r)).toBe(true);
});
});