diff options
author | Anton Tananaev <anton@traccar.org> | 2024-04-06 09:17:52 -0700 |
---|---|---|
committer | Anton Tananaev <anton@traccar.org> | 2024-04-06 09:17:52 -0700 |
commit | b392a4af78e01c8e0f50aad5468e9583675b24be (patch) | |
tree | 0a4fd7c4ee020e0829817853469979d4e998a69a /legacy/web/app/view/map/MapController.js | |
parent | 94cadecda794358a53995c276697919eaf540466 (diff) | |
download | trackermap-web-b392a4af78e01c8e0f50aad5468e9583675b24be.tar.gz trackermap-web-b392a4af78e01c8e0f50aad5468e9583675b24be.tar.bz2 trackermap-web-b392a4af78e01c8e0f50aad5468e9583675b24be.zip |
Move to the legacy folder
Diffstat (limited to 'legacy/web/app/view/map/MapController.js')
-rw-r--r-- | legacy/web/app/view/map/MapController.js | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/legacy/web/app/view/map/MapController.js b/legacy/web/app/view/map/MapController.js new file mode 100644 index 00000000..f6d88eed --- /dev/null +++ b/legacy/web/app/view/map/MapController.js @@ -0,0 +1,101 @@ +/* + * Copyright 2015 - 2022 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() && !Traccar.app.getPreference('disableReports', false)); + this.lookupReference('showEventsButton').setVisible( + Traccar.app.isMobile() && !Traccar.app.getBooleanAttributePreference('ui.disableEvents')); + }, + + showReports: function () { + Traccar.app.showReports(true); + }, + + showEvents: function () { + Traccar.app.showEvents(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); + }, + + showAccuracy: function (button) { + this.getView().getAccuracyLayer().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( + Ext.String.htmlDecode(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); + } +}); |