diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2017-03-08 19:21:24 +1300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-08 19:21:24 +1300 |
commit | 2e76f6cb4487a1efd3fbe168e6168f9ed5c2df47 (patch) | |
tree | e8649620a02d050b1c2e907212ae2a0ef2cfd041 | |
parent | 50a2616002602c379f408d5ecc404a59d317b0ca (diff) | |
parent | f30f6961890371e026cd548874a31292e2de3c21 (diff) | |
download | trackermap-web-2e76f6cb4487a1efd3fbe168e6168f9ed5c2df47.tar.gz trackermap-web-2e76f6cb4487a1efd3fbe168e6168f9ed5c2df47.tar.bz2 trackermap-web-2e76f6cb4487a1efd3fbe168e6168f9ed5c2df47.zip |
Merge pull request #422 from Abyss777/sms_commands
Implement SMS commands
-rw-r--r-- | web/app/model/Command.js | 5 | ||||
-rw-r--r-- | web/app/store/CommandTypes.js | 16 | ||||
-rw-r--r-- | web/app/view/CommandDialog.js | 13 | ||||
-rw-r--r-- | web/app/view/CommandDialogController.js | 13 | ||||
-rw-r--r-- | web/app/view/DevicesController.js | 18 |
5 files changed, 46 insertions, 19 deletions
diff --git a/web/app/model/Command.js b/web/app/model/Command.js index b298028f..789c3647 100644 --- a/web/app/model/Command.js +++ b/web/app/model/Command.js @@ -1,5 +1,5 @@ /* - * Copyright 2015 Anton Tananaev (anton@traccar.org) + * 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 @@ -26,6 +26,9 @@ Ext.define('Traccar.model.Command', { name: 'type', type: 'string' }, { + name: 'textChannel', + type: 'boolean' + }, { name: 'attributes' }] }); diff --git a/web/app/store/CommandTypes.js b/web/app/store/CommandTypes.js index ad5faba2..445f937d 100644 --- a/web/app/store/CommandTypes.js +++ b/web/app/store/CommandTypes.js @@ -1,5 +1,6 @@ /* * Copyright 2016 Gabor Somogyi (gabor.g.somogyi@gmail.com) + * Copyright 2017 Andrey Kunitsyn (andrey@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 @@ -19,17 +20,9 @@ Ext.define('Traccar.store.CommandTypes', { extend: 'Ext.data.Store', fields: ['type', 'name'], - listeners: { - 'beforeload' : function (store) { - var proxy; - proxy = store.getProxy(); - proxy.setUrl('api/commandtypes?deviceId' + proxy.extraParams.deviceId); - } - }, - proxy: { type: 'rest', - url: '', + url: 'api/commandtypes', reader: { type: 'json', getData: function (data) { @@ -46,6 +39,11 @@ Ext.define('Traccar.store.CommandTypes', { }); return data; } + }, + listeners: { + 'exception' : function (proxy, response) { + Traccar.app.showError(response); + } } } }); diff --git a/web/app/view/CommandDialog.js b/web/app/view/CommandDialog.js index 24e0e191..ef486c41 100644 --- a/web/app/view/CommandDialog.js +++ b/web/app/view/CommandDialog.js @@ -1,5 +1,5 @@ /* - * Copyright 2015 Anton Tananaev (anton@traccar.org) + * 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 @@ -28,8 +28,19 @@ Ext.define('Traccar.view.CommandDialog', { items: { xtype: 'form', items: [{ + xtype: 'checkboxfield', + name: 'textChannel', + reference: 'textChannelCheckBox', + inputValue: true, + uncheckedValue: false, + fieldLabel: Strings.notificationSms, + listeners: { + change: 'onTextChannelChange' + } + }, { xtype: 'combobox', name: 'type', + reference: 'commandType', fieldLabel: Strings.sharedType, store: 'CommandTypes', displayField: 'name', diff --git a/web/app/view/CommandDialogController.js b/web/app/view/CommandDialogController.js index 6e809fa1..c2859d0a 100644 --- a/web/app/view/CommandDialogController.js +++ b/web/app/view/CommandDialogController.js @@ -1,5 +1,5 @@ /* - * Copyright 2015 Anton Tananaev (anton@traccar.org) + * 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 @@ -113,9 +113,18 @@ Ext.define('Traccar.view.CommandDialogController', { }); }, + onTextChannelChange: function (checkbox, newValue) { + var typesStore = this.lookupReference('commandType').getStore(); + typesStore.getProxy().setExtraParam('textChannel', newValue); + typesStore.reload(); + }, + onSendResult: function (options, success, response) { if (success) { - Ext.toast(Strings.commandSent); + Ext.toast({ + html: Strings.commandSent, + align: 'br' + }); this.closeView(); } else { Traccar.app.showError(response); diff --git a/web/app/view/DevicesController.js b/web/app/view/DevicesController.js index ad0dd363..742077b2 100644 --- a/web/app/view/DevicesController.js +++ b/web/app/view/DevicesController.js @@ -74,28 +74,34 @@ Ext.define('Traccar.view.DevicesController', { }, onCommandClick: function () { - var device, deviceId, command, dialog, comboStore; + var device, deviceId, command, dialog, typesStore, online; device = this.getView().getSelectionModel().getSelection()[0]; + online = device.get('status') === 'online'; deviceId = device.get('id'); + command = Ext.create('Traccar.model.Command'); command.set('deviceId', deviceId); + command.set('textChannel', !online); + dialog = Ext.create('Traccar.view.CommandDialog'); - comboStore = dialog.down('form').down('combobox').getStore(); - comboStore.getProxy().setExtraParam('deviceId', deviceId); + + typesStore = dialog.lookupReference('commandType').getStore(); + typesStore.getProxy().setExtraParam('deviceId', deviceId); + dialog.down('form').loadRecord(command); + dialog.lookupReference('textChannelCheckBox').setDisabled(!online); dialog.show(); }, updateButtons: function (selected) { - var readonly, deviceReadonly, empty, online; + var readonly, deviceReadonly, empty; deviceReadonly = Traccar.app.getPreference('deviceReadonly', false) && !Traccar.app.getUser().get('admin'); readonly = Traccar.app.getPreference('readonly', false) && !Traccar.app.getUser().get('admin'); empty = selected.getCount() === 0; - online = selected.getLastSelected().get('status') === 'online'; this.lookupReference('toolbarEditButton').setDisabled(empty || readonly || deviceReadonly); this.lookupReference('toolbarRemoveButton').setDisabled(empty || readonly || deviceReadonly); this.lookupReference('toolbarGeofencesButton').setDisabled(empty || readonly); - this.lookupReference('deviceCommandButton').setDisabled(empty || readonly || !online); + this.lookupReference('deviceCommandButton').setDisabled(empty || readonly); }, onSelectionChange: function (selected) { |