diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2015-10-03 21:01:45 +1300 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2015-10-03 21:01:45 +1300 |
commit | 48f981a2a9755fb0af6497020e499bb0883e0e1f (patch) | |
tree | ac960f950e4f37aec2614a97a706aed34a1fb2db /web/app/view/MapController.js | |
parent | d16121684ecae7646aa87616a64d60978d087bc0 (diff) | |
download | trackermap-server-48f981a2a9755fb0af6497020e499bb0883e0e1f.tar.gz trackermap-server-48f981a2a9755fb0af6497020e499bb0883e0e1f.tar.bz2 trackermap-server-48f981a2a9755fb0af6497020e499bb0883e0e1f.zip |
Enable JavaScript strict mode
Diffstat (limited to 'web/app/view/MapController.js')
-rw-r--r-- | web/app/view/MapController.js | 350 |
1 files changed, 177 insertions, 173 deletions
diff --git a/web/app/view/MapController.js b/web/app/view/MapController.js index 66cbe6b31..cca746a20 100644 --- a/web/app/view/MapController.js +++ b/web/app/view/MapController.js @@ -13,202 +13,206 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -Ext.define('Traccar.view.MapController', { - extend: 'Ext.app.ViewController', - alias: 'controller.map', - - config: { - listen: { - controller: { - '*': { - reportShow: 'reportShow', - reportClear: 'reportClear', - selectDevice: 'selectDevice', - selectReport: 'selectReport' +(function () { + 'use strict'; + + Ext.define('Traccar.view.MapController', { + extend: 'Ext.app.ViewController', + alias: 'controller.map', + + config: { + listen: { + controller: { + '*': { + reportShow: 'reportShow', + reportClear: 'reportClear', + selectDevice: 'selectDevice', + selectReport: 'selectReport' + } } } - } - }, - - init: function () { - this.liveData = {}; - this.update(true); - }, - - update: function (first) { - Ext.Ajax.request({ - scope: this, - url: '/api/async', - params: { - first: first - }, - success: function (response) { - var data = Ext.decode(response.responseText).data; - - var i; - for (i = 0; i < data.length; i++) { - - var store = Ext.getStore('LatestPositions'); - - var found = store.query('deviceId', data[i].deviceId); - if (found.getCount() > 0) { - found.first().set(data[i]); - } else { - store.add(Ext.create('Traccar.model.Position', data[i])); + }, + + init: function () { + this.liveData = {}; + this.update(true); + }, + + update: function (first) { + Ext.Ajax.request({ + scope: this, + url: '/api/async', + params: { + first: first + }, + success: function (response) { + var data = Ext.decode(response.responseText).data; + + var i; + for (i = 0; i < data.length; i++) { + + var store = Ext.getStore('LatestPositions'); + + var found = store.query('deviceId', data[i].deviceId); + if (found.getCount() > 0) { + found.first().set(data[i]); + } else { + store.add(Ext.create('Traccar.model.Position', data[i])); + } + + var geometry = new ol.geom.Point(ol.proj.fromLonLat([ + data[i].longitude, + data[i].latitude + ])); + + if (data[i].deviceId in this.liveData) { + this.liveData[data[i].deviceId].setGeometry(geometry); + } else { + var style = this.getMarkerStyle(styles.mapLiveRadius, styles.mapLiveColor); + var marker = new ol.Feature({ + geometry: geometry, + originalStyle: style + }); + marker.setStyle(style); + this.getView().vectorSource.addFeature(marker); + this.liveData[data[i].deviceId] = marker; + } } - var geometry = new ol.geom.Point(ol.proj.fromLonLat([ - data[i].longitude, - data[i].latitude - ])); - - if (data[i].deviceId in this.liveData) { - this.liveData[data[i].deviceId].setGeometry(geometry); - } else { - var style = this.getMarkerStyle(styles.mapLiveRadius, styles.mapLiveColor); - var marker = new ol.Feature({ - geometry: geometry, - originalStyle: style - }); - marker.setStyle(style); - this.getView().vectorSource.addFeature(marker); - this.liveData[data[i].deviceId] = marker; - } + this.update(false); + }, + failure: function () { + // TODO: error } - - this.update(false); - }, - failure: function () { - // TODO: error - } - }); - }, - - getLineStyle: function () { - return new ol.style.Style({ - stroke: new ol.style.Stroke({ - color: styles.mapStrokeColor, - width: styles.mapRouteWidth - }) - }); - }, - - getMarkerStyle: function (radius, color) { - /*return new ol.style.Style({ - text: new ol.style.Text({ - text: '\uf041', - font: 'normal 32px FontAwesome', - textBaseline: 'Bottom', - fill: new ol.style.Fill({ - color: color - }), - stroke: new ol.style.Stroke({ - color: 'black', - width: 2 - }) - }) - });*/ - return new ol.style.Style({ - image: new ol.style.Circle({ - radius: radius, - fill: new ol.style.Fill({ - color: color - }), + }); + }, + + getLineStyle: function () { + return new ol.style.Style({ stroke: new ol.style.Stroke({ color: styles.mapStrokeColor, - width: styles.mapMarkerStroke + width: styles.mapRouteWidth }) - }) - }); - }, - - reportShow: function () { - this.reportClear(); - - var vectorSource = this.getView().vectorSource; - - var data = Ext.getStore('Positions').getData(); - - var index; - var positions = []; - this.reportRoutePoints = {}; - - for (index = 0; index < data.getCount(); index++) { - var point = ol.proj.fromLonLat([ - data.getAt(index).data.longitude, - data.getAt(index).data.latitude - ]); - positions.push(point); - - var style = this.getMarkerStyle(styles.mapReportRadius, styles.mapReportColor); - var feature = new ol.Feature({ - geometry: new ol.geom.Point(positions[index]), - originalStyle: style }); - feature.setStyle(style); - this.reportRoutePoints[data.getAt(index).get('id')] = feature; - } + }, + + getMarkerStyle: function (radius, color) { + /*return new ol.style.Style({ + text: new ol.style.Text({ + text: '\uf041', + font: 'normal 32px FontAwesome', + textBaseline: 'Bottom', + fill: new ol.style.Fill({ + color: color + }), + stroke: new ol.style.Stroke({ + color: 'black', + width: 2 + }) + }) + });*/ + return new ol.style.Style({ + image: new ol.style.Circle({ + radius: radius, + fill: new ol.style.Fill({ + color: color + }), + stroke: new ol.style.Stroke({ + color: styles.mapStrokeColor, + width: styles.mapMarkerStroke + }) + }) + }); + }, - this.reportRoute = new ol.Feature({ - geometry: new ol.geom.LineString(positions) - }); - this.reportRoute.setStyle(this.getLineStyle()); - vectorSource.addFeature(this.reportRoute); + reportShow: function () { + this.reportClear(); - for (var key in this.reportRoutePoints) { - if (this.reportRoutePoints.hasOwnProperty(key)) { - vectorSource.addFeature(this.reportRoutePoints[key]); - } - } - }, + var vectorSource = this.getView().vectorSource; - reportClear: function () { - var index; - var vectorSource = this.getView().vectorSource; + var data = Ext.getStore('Positions').getData(); - if (this.reportRoute !== undefined) { - vectorSource.removeFeature(this.reportRoute); - this.reportRoute = undefined; - } + var index; + var positions = []; + this.reportRoutePoints = {}; + + for (index = 0; index < data.getCount(); index++) { + var point = ol.proj.fromLonLat([ + data.getAt(index).data.longitude, + data.getAt(index).data.latitude + ]); + positions.push(point); + + var style = this.getMarkerStyle(styles.mapReportRadius, styles.mapReportColor); + var feature = new ol.Feature({ + geometry: new ol.geom.Point(positions[index]), + originalStyle: style + }); + feature.setStyle(style); + this.reportRoutePoints[data.getAt(index).get('id')] = feature; + } + + this.reportRoute = new ol.Feature({ + geometry: new ol.geom.LineString(positions) + }); + this.reportRoute.setStyle(this.getLineStyle()); + vectorSource.addFeature(this.reportRoute); - if (this.reportRoutePoints !== undefined) { for (var key in this.reportRoutePoints) { if (this.reportRoutePoints.hasOwnProperty(key)) { - vectorSource.removeFeature(this.reportRoutePoints[key]); + vectorSource.addFeature(this.reportRoutePoints[key]); } } - this.reportRoutePoints = {}; - } - }, + }, - selectPosition: function (feature) { - if (this.currentFeature !== undefined) { - this.currentFeature.setStyle(this.currentFeature.get('originalStyle')); - } + reportClear: function () { + var index; + var vectorSource = this.getView().vectorSource; - if (feature !== undefined) { - feature.setStyle(this.getMarkerStyle(styles.mapSelectRadius, styles.mapSelectColor)); + if (this.reportRoute !== undefined) { + vectorSource.removeFeature(this.reportRoute); + this.reportRoute = undefined; + } - var pan = ol.animation.pan({ - duration: styles.mapDelay, - source: this.getView().mapView.getCenter() - }); - this.getView().map.beforeRender(pan); - this.getView().mapView.setCenter(feature.getGeometry().getCoordinates()); - } + if (this.reportRoutePoints !== undefined) { + for (var key in this.reportRoutePoints) { + if (this.reportRoutePoints.hasOwnProperty(key)) { + vectorSource.removeFeature(this.reportRoutePoints[key]); + } + } + this.reportRoutePoints = {}; + } + }, - this.currentFeature = feature; - }, + selectPosition: function (feature) { + if (this.currentFeature !== undefined) { + this.currentFeature.setStyle(this.currentFeature.get('originalStyle')); + } - selectDevice: function (device) { - this.selectPosition(this.liveData[device.get('id')]); - }, + if (feature !== undefined) { + feature.setStyle(this.getMarkerStyle(styles.mapSelectRadius, styles.mapSelectColor)); + + var pan = ol.animation.pan({ + duration: styles.mapDelay, + source: this.getView().mapView.getCenter() + }); + this.getView().map.beforeRender(pan); + this.getView().mapView.setCenter(feature.getGeometry().getCoordinates()); + } - selectReport: function (position) { - if (this.reportRoutePoints[position.get('id')] !== undefined) { - this.selectPosition(this.reportRoutePoints[position.get('id')]); + this.currentFeature = feature; + }, + + selectDevice: function (device) { + this.selectPosition(this.liveData[device.get('id')]); + }, + + selectReport: function (position) { + if (this.reportRoutePoints[position.get('id')] !== undefined) { + this.selectPosition(this.reportRoutePoints[position.get('id')]); + } } - } -}); + }); + +})(); |