aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--web/app/controller/Root.js118
1 files changed, 63 insertions, 55 deletions
diff --git a/web/app/controller/Root.js b/web/app/controller/Root.js
index 84a73c82..2a20dbe3 100644
--- a/web/app/controller/Root.js
+++ b/web/app/controller/Root.js
@@ -124,7 +124,7 @@ Ext.define('Traccar.controller.Root', {
},
asyncUpdate: function (first) {
- var protocol, pathname, socket, self = this;
+ var self = this, protocol, pathname, socket;
protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
pathname = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/') + 1);
socket = new WebSocket(protocol + '//' + window.location.host + pathname + 'api/socket');
@@ -134,67 +134,75 @@ Ext.define('Traccar.controller.Root', {
};
socket.onmessage = function (event) {
- var i, store, data, array, entity, device, alarmKey, text, geofence;
-
- data = Ext.decode(event.data);
+ var data = Ext.decode(event.data);
if (data.devices) {
- array = data.devices;
- store = Ext.getStore('Devices');
- for (i = 0; i < array.length; i++) {
- entity = store.getById(array[i].id);
- if (entity) {
- entity.set({
- status: array[i].status,
- lastUpdate: array[i].lastUpdate
- }, {
- dirty: false
- });
- }
- }
+ self.updateDevices(data.devices);
}
-
if (data.positions) {
- array = data.positions;
- store = Ext.getStore('LatestPositions');
- for (i = 0; i < array.length; i++) {
- entity = store.findRecord('deviceId', array[i].deviceId, 0, false, false, true);
- if (entity) {
- entity.set(array[i]);
- } else {
- store.add(Ext.create('Traccar.model.Position', array[i]));
- }
- }
+ self.updatePositions(data.positions);
}
-
if (data.events) {
- array = data.events;
- store = Ext.getStore('Events');
- for (i = 0; i < array.length; i++) {
- store.add(array[i]);
- if (array[i].type === 'commandResult') {
- text = Strings.eventCommandResult + ': ' + array[i].attributes.result;
- } else if (array[i].type === 'alarm') {
- alarmKey = 'alarm' + array[i].attributes.alarm.charAt(0).toUpperCase() + array[i].attributes.alarm.slice(1);
- text = Strings[alarmKey] || alarmKey;
- } else {
- text = Traccar.app.getEventString(array[i].type);
- }
- if (array[i].geofenceId !== 0) {
- geofence = Ext.getStore('Geofences').getById(array[i].geofenceId);
- if (geofence) {
- text += ' \"' + geofence.get('name') + '"';
- }
- }
- device = Ext.getStore('Devices').getById(array[i].deviceId);
- if (device) {
- if (self.mutePressed()) {
- self.beep();
- }
- Ext.toast(text, device.get('name'), 'br');
- }
- }
+ self.updateEvents(data.events);
}
};
+ },
+
+ updateDevices: function (array) {
+ var i, store, entity;
+ store = Ext.getStore('Devices');
+ for (i = 0; i < array.length; i++) {
+ entity = store.getById(array[i].id);
+ if (entity) {
+ entity.set({
+ status: array[i].status,
+ lastUpdate: array[i].lastUpdate
+ }, {
+ dirty: false
+ });
+ }
+ }
+ },
+
+ updatePositions: function (array) {
+ var i, store, data, entity;
+ store = Ext.getStore('LatestPositions');
+ for (i = 0; i < array.length; i++) {
+ entity = store.findRecord('deviceId', array[i].deviceId, 0, false, false, true);
+ if (entity) {
+ entity.set(array[i]);
+ } else {
+ store.add(Ext.create('Traccar.model.Position', array[i]));
+ }
+ }
+ },
+
+ updateEvents: function (array) {
+ var i, store, device, alarmKey, text, geofence;
+ store = Ext.getStore('Events');
+ for (i = 0; i < array.length; i++) {
+ store.add(array[i]);
+ if (array[i].type === 'commandResult') {
+ text = Strings.eventCommandResult + ': ' + array[i].attributes.result;
+ } else if (array[i].type === 'alarm') {
+ alarmKey = 'alarm' + array[i].attributes.alarm.charAt(0).toUpperCase() + array[i].attributes.alarm.slice(1);
+ text = Strings[alarmKey] || alarmKey;
+ } else {
+ text = Traccar.app.getEventString(array[i].type);
+ }
+ if (array[i].geofenceId !== 0) {
+ geofence = Ext.getStore('Geofences').getById(array[i].geofenceId);
+ if (geofence) {
+ text += ' \"' + geofence.get('name') + '"';
+ }
+ }
+ device = Ext.getStore('Devices').getById(array[i].deviceId);
+ if (device) {
+ if (this.mutePressed()) {
+ this.beep();
+ }
+ Ext.toast(text, device.get('name'), 'br');
+ }
+ }
}
});