aboutsummaryrefslogtreecommitdiff
path: root/web/app/view
diff options
context:
space:
mode:
Diffstat (limited to 'web/app/view')
-rw-r--r--web/app/view/BaseMap.js2
-rw-r--r--web/app/view/CommandDialog.js27
-rw-r--r--web/app/view/CommandDialogController.js20
-rw-r--r--web/app/view/MapMarkerController.js32
4 files changed, 66 insertions, 15 deletions
diff --git a/web/app/view/BaseMap.js b/web/app/view/BaseMap.js
index 2e981f0..f0d51d5 100644
--- a/web/app/view/BaseMap.js
+++ b/web/app/view/BaseMap.js
@@ -122,7 +122,7 @@ Ext.define('Traccar.view.BaseMap', {
this.map.on('click', function (e) {
this.map.forEachFeatureAtPixel(e.pixel, function (feature, layer) {
this.fireEvent('selectfeature', feature);
- }, this);
+ }.bind(this));
}, this);
},
diff --git a/web/app/view/CommandDialog.js b/web/app/view/CommandDialog.js
index af36f55..24e0e19 100644
--- a/web/app/view/CommandDialog.js
+++ b/web/app/view/CommandDialog.js
@@ -90,6 +90,33 @@ Ext.define('Traccar.view.CommandDialog', {
hidden: true
}]
}, {
+ xtype: 'fieldcontainer',
+ reference: 'paramSetTimezone',
+ name: 'attributes',
+ hidden: true,
+
+ items: [{
+ xtype: 'numberfield',
+ fieldLabel: Strings.commandTimezone,
+ name: 'timezone',
+ minValue: -12,
+ step: 0.5,
+ maxValue: +14
+ }]
+ }, {
+ xtype: 'fieldcontainer',
+ reference: 'paramSetIndicator',
+ name: 'attributes',
+ hidden: true,
+
+ items: [{
+ xtype: 'numberfield',
+ fieldLabel: Strings.commandData,
+ name: 'data',
+ minValue: 0,
+ maxValue: 99
+ }]
+ }, {
xtype: 'textfield',
reference: 'paramCustom',
fieldLabel: Strings.commandCustom,
diff --git a/web/app/view/CommandDialogController.js b/web/app/view/CommandDialogController.js
index 9442e4f..6e809fa 100644
--- a/web/app/view/CommandDialogController.js
+++ b/web/app/view/CommandDialogController.js
@@ -28,6 +28,10 @@ Ext.define('Traccar.view.CommandDialogController', {
selected.getValue() !== 'sendSms' && selected.getValue() !== 'sendUssd');
this.lookupReference('paramSmsMessage').setHidden(
selected.getValue() !== 'sendSms');
+ this.lookupReference('paramSetTimezone').setHidden(
+ selected.getValue() !== 'setTimezone');
+ this.lookupReference('paramSetIndicator').setHidden(
+ selected.getValue() !== 'setIndicator');
this.lookupReference('paramCustom').setHidden(
selected.getValue() !== 'custom');
},
@@ -78,6 +82,22 @@ Ext.define('Traccar.view.CommandDialogController', {
});
}
+ if (record.get('type') === 'setTimezone') {
+ attributes = this.lookupReference('paramSetTimezone');
+ value = attributes.down('numberfield[name="timezone"]').getValue();
+ record.set('attributes', {
+ timezone: value * 3600
+ });
+ }
+
+ if (record.get('type') === 'setIndicator') {
+ attributes = this.lookupReference('paramSetIndicator');
+ value = attributes.down('numberfield[name="data"]').getValue();
+ record.set('attributes', {
+ data: value
+ });
+ }
+
if (record.get('type') === 'custom') {
value = this.lookupReference('paramCustom').getValue();
record.set('attributes', {
diff --git a/web/app/view/MapMarkerController.js b/web/app/view/MapMarkerController.js
index 5fa9f4c..b978aaf 100644
--- a/web/app/view/MapMarkerController.js
+++ b/web/app/view/MapMarkerController.js
@@ -92,7 +92,8 @@ Ext.define('Traccar.view.MapMarkerController', {
style = marker.getStyle();
if (style.getImage().fill !== this.getDeviceColor(device) ||
style.getImage().category !== device.get('category')) {
- marker.setStyle(this.updateDeviceMarker(style, this.getDeviceColor(device), device.get('category')));
+ this.updateDeviceMarker(style, this.getDeviceColor(device), device.get('category'));
+ marker.changed();
}
if (style.getText().getText() !== device.get('name')) {
style.getText().setText(device.get('name'));
@@ -144,7 +145,7 @@ Ext.define('Traccar.view.MapMarkerController', {
marker = this.latestMarkers[deviceId];
style = marker.getStyle();
if (style.getImage().angle !== position.get('course')) {
- Traccar.DeviceImages.rotateImageIcon(style.getImage(), position.get('course'));
+ this.rotateMarker(style, position.get('course'));
}
marker.setGeometry(geometry);
} else {
@@ -327,10 +328,15 @@ Ext.define('Traccar.view.MapMarkerController', {
style.getImage().category);
text = style.getText();
text.setOffsetY(-image.getSize()[1] / 2 - Traccar.Style.mapTextOffset);
- return new ol.style.Style({
- image: image,
- text: text
- });
+ style.setText(text);
+ style.setImage(image);
+ },
+
+ rotateMarker: function (style, angle) {
+ style.setImage(Traccar.DeviceImages.getImageIcon(style.getImage().fill,
+ style.getImage().zoom,
+ angle,
+ style.getImage().category));
},
updateDeviceMarker: function (style, color, category) {
@@ -341,21 +347,19 @@ Ext.define('Traccar.view.MapMarkerController', {
category);
text = style.getText();
text.setOffsetY(-image.getSize()[1] / 2 - Traccar.Style.mapTextOffset);
- return new ol.style.Style({
- image: image,
- text: text
- });
+ style.setText(text);
+ style.setImage(image);
},
selectMarker: function (marker, center) {
if (this.selectedMarker) {
- this.selectedMarker.setStyle(
- this.resizeMarker(this.selectedMarker.getStyle(), false));
+ this.resizeMarker(this.selectedMarker.getStyle(), false);
+ this.selectedMarker.changed();
}
if (marker) {
- marker.setStyle(
- this.resizeMarker(marker.getStyle(), true));
+ this.resizeMarker(marker.getStyle(), true);
+ marker.changed();
if (center) {
this.getView().getMapView().setCenter(marker.getGeometry().getCoordinates());
}