From 4b6dec4e4b3e9d852d0de574d268993f03eb8cad Mon Sep 17 00:00:00 2001 From: Nikolaus Krismer <niko@krismer.de> Date: Fri, 21 Mar 2014 11:21:05 +0100 Subject: [PATCH] added warning icon regarding websocket/configuration status --- src/main/webapp/css/{isoga.css => isomap.css} | 7 +++- src/main/webapp/js/isochrone/isoMap.js | 32 +++++++++++++++---- src/main/webapp/js/map/control/wswarning.js | 19 +++++++++++ 3 files changed, 51 insertions(+), 7 deletions(-) rename src/main/webapp/css/{isoga.css => isomap.css} (85%) create mode 100644 src/main/webapp/js/map/control/wswarning.js diff --git a/src/main/webapp/css/isoga.css b/src/main/webapp/css/isomap.css similarity index 85% rename from src/main/webapp/css/isoga.css rename to src/main/webapp/css/isomap.css index 5f604fc8..3d96d735 100644 --- a/src/main/webapp/css/isoga.css +++ b/src/main/webapp/css/isomap.css @@ -34,13 +34,18 @@ fieldset { padding:0; border:0; margin-top:25px; } background: url('/isochrone/img/help_filled.png') no-repeat scroll 0px 0px transparent; } +.wsWarning-control-div { + background: url('/isochrone/img/warning.png') no-repeat scroll 0px 0px transparent; +} + .settings-control-div { background: url('/isochrone/img/settings.png') no-repeat scroll 0px 0px transparent; clear: none; } .help-control-div, -.settings-control-div { +.settings-control-div, +.wsWarning-control-div { background-position: center; background-size: 90%; cursor: pointer; diff --git a/src/main/webapp/js/isochrone/isoMap.js b/src/main/webapp/js/isochrone/isoMap.js index 9a755531..87ae69f4 100644 --- a/src/main/webapp/js/isochrone/isoMap.js +++ b/src/main/webapp/js/isochrone/isoMap.js @@ -1,11 +1,11 @@ -define(['jQuery', 'leaflet', 'console', 'map/layer/bing','map/layer/google', 'map/control/settings', 'map/control/help', 'map/control/geosearch', 'map/control/geosearchProvider/osm', 'map/ipLocator/ipProvider', 'map/ipLocator/ipLocator'], function($, L, logger, BingLayer, GoogleLayer, SettingsControl, HelpControl, GeoSearch, OSMProvider, IpProvider, IpLocator) { +define(['jQuery', 'leaflet', 'console', 'map/layer/bing','map/layer/google', 'map/control/help', 'map/control/settings', 'map/control/wswarning', 'map/control/geosearch', 'map/control/geosearchProvider/osm', 'map/ipLocator/ipProvider', 'map/ipLocator/ipLocator'], function($, L, logger, BingLayer, GoogleLayer, HelpControl, SettingsControl, WsWarningControl, GeoSearch, OSMProvider, IpProvider, IpLocator) { // Private static fields var INNSBRUCK = [47.265718, 11.391342]; // var VIENNA = [48.186312, 16.317615]; // Class function (a.k.a. constructor) function IsoMap(div) { - // self has to be used insteaf of this in private methods to refer to public vars/mathods + // self has to be used instead of this in private methods to refer to public vars/mathods // var self = this; // Private fields @@ -19,6 +19,7 @@ define(['jQuery', 'leaflet', 'console', 'map/layer/bing','map/layer/google', 'ma zoomControl: false, // hide default zoom control, so we can create a bottomright one zoom: 12 }; + var wsWarningControl = null; // Constructor code @@ -51,12 +52,12 @@ define(['jQuery', 'leaflet', 'console', 'map/layer/bing','map/layer/google', 'ma // Map creation and control assignment require(['locateControl', 'map/ipLocator/mapIncluder'], function() { map = L.map(mDiv, mapOptions); - map.addControl(new SettingsControl({position: 'bottomright'})); - map.addControl(new HelpControl({position: 'bottomright'})); + map.addControl(L.control.scale({position: 'bottomleft'})); + map.addControl(new SettingsControl()); + map.addControl(new HelpControl()); map.addControl(layerControl); - map.addControl(L.control.zoom({position: 'bottomright'})); map.addControl(L.control.locate({position: 'bottomright'})); - map.addControl(L.control.scale({position: 'bottomleft'})); + map.addControl(L.control.zoom({position: 'bottomright'})); map.addControl(new GeoSearch({ doReverseLookup: true, position: 'topleft', @@ -65,6 +66,11 @@ define(['jQuery', 'leaflet', 'console', 'map/layer/bing','map/layer/google', 'ma })); map.attributionControl.setPrefix('IsoMap v@version@'); + + warningIndicatorShow(); + $(document).on('websocket_error', warningIndicatorShow); + $(document).on('websocket_close', warningIndicatorShow); + $(document).on('getConfiguration', warningIndicatorHide); $(document).trigger('isomap_draw'); }); }; @@ -210,6 +216,20 @@ define(['jQuery', 'leaflet', 'console', 'map/layer/bing','map/layer/google', 'ma this.draw(); } + + function warningIndicatorHide() { + if (wsWarningControl !== null) { + map.removeControl(wsWarningControl); + wsWarningControl = null; + } + }; + + function warningIndicatorShow() { + if (wsWarningControl === null) { + wsWarningControl = new WsWarningControl(); + map.addControl(wsWarningControl); + } + }; } // Public static field diff --git a/src/main/webapp/js/map/control/wswarning.js b/src/main/webapp/js/map/control/wswarning.js new file mode 100644 index 00000000..2261b71d --- /dev/null +++ b/src/main/webapp/js/map/control/wswarning.js @@ -0,0 +1,19 @@ +define(['leaflet', 'console'], function(L, logger) { + L.WsWarningControl = L.Control.extend({ + options: { + position: 'bottomleft' + }, + + onAdd: function() { + this._container = L.DomUtil.create('div', 'help-control'); + this._container.id = 'wsWarning-control-div'; + this._container.className = 'wsWarning-control-div'; + this._container.title = 'Problem regarding websocket/configuration'; + + L.DomEvent.disableClickPropagation(this._container); + return this._container; + } + }); + + return L.WsWarningControl; +}); -- GitLab