Simon Hunt

GUI -- Added 'mask' layer to alert user of loss of websocket connection.

Change-Id: I13f4cb0176936ec1a7db4efa58e5ad0e7ac9db15
...@@ -146,3 +146,24 @@ ...@@ -146,3 +146,24 @@
146 border: 0; 146 border: 0;
147 } 147 }
148 148
149 +/* Web Socket Closed Mask (starts hidden) */
150 +
151 +#topo-mask {
152 + display: none;
153 + position: absolute;
154 + top: 0;
155 + left: 0;
156 + width: 10000px;
157 + height: 8000px;
158 + z-index: 5000;
159 + background-color: rgba(0,0,0,0.75);
160 + padding: 60px;
161 +}
162 +
163 +#topo-mask p {
164 + margin: 8px 20px;
165 + color: #ddd;
166 + font-size: 14pt;
167 + font-style: italic;
168 +}
169 +
......
...@@ -151,6 +151,7 @@ ...@@ -151,6 +151,7 @@
151 debug: false 151 debug: false
152 }, 152 },
153 webSock, 153 webSock,
154 + sid = 0,
154 deviceLabelIndex = 0, 155 deviceLabelIndex = 0,
155 hostLabelIndex = 0, 156 hostLabelIndex = 0,
156 detailPane, 157 detailPane,
...@@ -169,7 +170,8 @@ ...@@ -169,7 +170,8 @@
169 nodeG, 170 nodeG,
170 linkG, 171 linkG,
171 node, 172 node,
172 - link; 173 + link,
174 + mask;
173 175
174 // ============================== 176 // ==============================
175 // For Debugging / Development 177 // For Debugging / Development
...@@ -193,10 +195,6 @@ ...@@ -193,10 +195,6 @@
193 195
194 function testMe(view) { 196 function testMe(view) {
195 view.alert('test'); 197 view.alert('test');
196 - detailPane.show();
197 - setTimeout(function () {
198 - detailPane.hide();
199 - }, 3000);
200 } 198 }
201 199
202 function abortIfLive() { 200 function abortIfLive() {
...@@ -1059,6 +1057,7 @@ ...@@ -1059,6 +1057,7 @@
1059 webSock.ws = new WebSocket(webSockUrl()); 1057 webSock.ws = new WebSocket(webSockUrl());
1060 1058
1061 webSock.ws.onopen = function() { 1059 webSock.ws.onopen = function() {
1060 + noWebSock(false);
1062 }; 1061 };
1063 1062
1064 webSock.ws.onmessage = function(m) { 1063 webSock.ws.onmessage = function(m) {
...@@ -1070,6 +1069,7 @@ ...@@ -1070,6 +1069,7 @@
1070 1069
1071 webSock.ws.onclose = function(m) { 1070 webSock.ws.onclose = function(m) {
1072 webSock.ws = null; 1071 webSock.ws = null;
1072 + noWebSock(true);
1073 }; 1073 };
1074 }, 1074 },
1075 1075
...@@ -1089,7 +1089,9 @@ ...@@ -1089,7 +1089,9 @@
1089 1089
1090 }; 1090 };
1091 1091
1092 - var sid = 0; 1092 + function noWebSock(b) {
1093 + mask.style('display',b ? 'block' : 'none');
1094 + }
1093 1095
1094 // TODO: use cache of pending messages (key = sid) to reconcile responses 1096 // TODO: use cache of pending messages (key = sid) to reconcile responses
1095 1097
...@@ -1273,6 +1275,11 @@ ...@@ -1273,6 +1275,11 @@
1273 1275
1274 } 1276 }
1275 1277
1278 +
1279 + function para(sel, text) {
1280 + sel.append('p').text(text);
1281 + }
1282 +
1276 // ============================== 1283 // ==============================
1277 // View life-cycle callbacks 1284 // View life-cycle callbacks
1278 1285
...@@ -1367,6 +1374,12 @@ ...@@ -1367,6 +1374,12 @@
1367 .on('tick', tick); 1374 .on('tick', tick);
1368 1375
1369 network.drag = d3u.createDragBehavior(network.force, selectCb, atDragEnd); 1376 network.drag = d3u.createDragBehavior(network.force, selectCb, atDragEnd);
1377 +
1378 + // create mask layer for when we lose connection to server.
1379 + mask = view.$div.append('div').attr('id','topo-mask');
1380 + para(mask, 'Oops!');
1381 + para(mask, 'Web-socket connection to server closed...');
1382 + para(mask, 'Try refreshing the page.');
1370 } 1383 }
1371 1384
1372 function load(view, ctx, flags) { 1385 function load(view, ctx, flags) {
......