diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2017-03-28 22:27:44 +1300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-28 22:27:44 +1300 |
commit | 94973f80f543f82630351a7e5943dd4c9150a8b0 (patch) | |
tree | 1da6153cd3f9d864ac55481fb563371bcfde7945 /web/app/view/map/MapController.js | |
parent | 9a5d244db1fe558388ecddccd0d60b674dc53d22 (diff) | |
parent | 6c0d7e512c585fe159aa30c8bb844b02bb9d99be (diff) | |
download | etbsa-traccar-web-94973f80f543f82630351a7e5943dd4c9150a8b0.tar.gz etbsa-traccar-web-94973f80f543f82630351a7e5943dd4c9150a8b0.tar.bz2 etbsa-traccar-web-94973f80f543f82630351a7e5943dd4c9150a8b0.zip |
Merge pull request #453 from Abyss777/move_map
Move map related classes to subfolder
Diffstat (limited to 'web/app/view/map/MapController.js')
-rw-r--r-- | web/app/view/map/MapController.js | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/web/app/view/map/MapController.js b/web/app/view/map/MapController.js new file mode 100644 index 0000000..8a5e81c --- /dev/null +++ b/web/app/view/map/MapController.js @@ -0,0 +1,89 @@ +/* + * Copyright 2015 - 2017 Anton Tananaev (anton@traccar.org) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +Ext.define('Traccar.view.map.MapController', { + extend: 'Traccar.view.map.MapMarkerController', + alias: 'controller.map', + + requires: [ + 'Traccar.GeofenceConverter' + ], + + config: { + listen: { + controller: { + '*': { + mapstaterequest: 'getMapState', + zoomtoalldevices: 'zoomToAllDevices' + } + }, + store: { + '#Geofences': { + load: 'updateGeofences', + add: 'updateGeofences', + update: 'updateGeofences', + remove: 'updateGeofences' + } + } + } + }, + + init: function () { + this.callParent(); + this.lookupReference('showReportsButton').setVisible(Traccar.app.isMobile()); + }, + + showReports: function () { + Traccar.app.showReports(true); + }, + + onFollowClick: function (button, pressed) { + if (pressed && this.selectedMarker) { + this.getView().getMapView().setCenter(this.selectedMarker.getGeometry().getCoordinates()); + } + }, + + showLiveRoutes: function (button) { + this.getView().getLiveRouteLayer().setVisible(button.pressed); + }, + + getMapState: function () { + var zoom, center, projection; + projection = this.getView().getMapView().getProjection(); + center = ol.proj.transform(this.getView().getMapView().getCenter(), projection, 'EPSG:4326'); + zoom = this.getView().getMapView().getZoom(); + this.fireEvent('mapstate', center[1], center[0], zoom); + }, + + updateGeofences: function () { + this.getView().getGeofencesSource().clear(); + if (this.lookupReference('showGeofencesButton').pressed) { + Ext.getStore('Geofences').each(function (geofence) { + var feature = new ol.Feature(Traccar.GeofenceConverter + .wktToGeometry(this.getView().getMapView(), geofence.get('area'))); + feature.setStyle(this.getAreaStyle(geofence.get('name'), + geofence.get('attributes') ? geofence.get('attributes').color : null)); + this.getView().getGeofencesSource().addFeature(feature); + return true; + }, this); + } + }, + + zoomToAllDevices: function () { + this.zoomToAllPositions(Ext.getStore('LatestPositions').getData().items); + } +}); |