aboutsummaryrefslogtreecommitdiff
path: root/web/app
diff options
context:
space:
mode:
authorAbyss777 <abyss@fox5.ru>2017-03-07 15:32:22 +0500
committerAbyss777 <abyss@fox5.ru>2017-03-07 15:39:21 +0500
commit7db1c1cdcf617e146e927c4aadde239959a9d3de (patch)
tree6caf2497b4d217557e8f00887ec6442e2bfd0c73 /web/app
parent50a2616002602c379f408d5ecc404a59d317b0ca (diff)
downloadetbsa-traccar-web-7db1c1cdcf617e146e927c4aadde239959a9d3de.tar.gz
etbsa-traccar-web-7db1c1cdcf617e146e927c4aadde239959a9d3de.tar.bz2
etbsa-traccar-web-7db1c1cdcf617e146e927c4aadde239959a9d3de.zip
Implement SMS commands
Diffstat (limited to 'web/app')
-rw-r--r--web/app/model/Command.js5
-rw-r--r--web/app/store/CommandTypes.js16
-rw-r--r--web/app/view/CommandDialog.js13
-rw-r--r--web/app/view/CommandDialogController.js13
-rw-r--r--web/app/view/DevicesController.js10
5 files changed, 40 insertions, 17 deletions
diff --git a/web/app/model/Command.js b/web/app/model/Command.js
index b298028..789c364 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 ad5faba..445f937 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 24e0e19..ef486c4 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 6e809fa..c2859d0 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 ad0dd36..d65055e 100644
--- a/web/app/view/DevicesController.js
+++ b/web/app/view/DevicesController.js
@@ -74,28 +74,30 @@ Ext.define('Traccar.view.DevicesController', {
},
onCommandClick: function () {
- var device, deviceId, command, dialog, comboStore;
+ var device, deviceId, command, dialog, comboStore, 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);
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) {