diff options
Diffstat (limited to 'web/app')
-rw-r--r-- | web/app/view/BaseEditDialogController.js | 22 | ||||
-rw-r--r-- | web/app/view/DeviceDialog.js (renamed from web/app/view/device/DeviceDialog.js) | 25 | ||||
-rw-r--r-- | web/app/view/device/DeviceController.js | 8 | ||||
-rw-r--r-- | web/app/view/device/DeviceDialogController.js | 45 |
4 files changed, 29 insertions, 71 deletions
diff --git a/web/app/view/BaseEditDialogController.js b/web/app/view/BaseEditDialogController.js index df4db0e50..863a75dcb 100644 --- a/web/app/view/BaseEditDialogController.js +++ b/web/app/view/BaseEditDialogController.js @@ -19,9 +19,27 @@ Ext.define('Traccar.view.BaseEditDialogController', { alias: 'controller.baseEditDialog', onSaveClick: function(button) { - var dialog = button.up('window').down('form'); + var dialog, store, record; + dialog = button.up('window').down('form'); dialog.updateRecord(); - dialog.getRecord().save(); + record = dialog.getRecord(); + store = record.store; + if (store) { + if (record.phantom) { + store.add(record); + } + store.sync({ + success: function() { + store.reload(); // workaround for selection problem + }, + failure: function(batch) { + store.rejectChanges(); + Traccar.ErrorManager.check(true, batch.exceptions[0].getResponse()); + } + }); + } else { + record.save(); + } button.up('window').close(); } }); diff --git a/web/app/view/device/DeviceDialog.js b/web/app/view/DeviceDialog.js index 5c5042587..759fade6d 100644 --- a/web/app/view/device/DeviceDialog.js +++ b/web/app/view/DeviceDialog.js @@ -14,20 +14,16 @@ * limitations under the License. */ -Ext.define('Traccar.view.device.DeviceDialog', { - extend: 'Ext.window.Window', +Ext.define('Traccar.view.DeviceDialog', { + extend: 'Traccar.view.BaseEditDialog', requires: [ - 'Traccar.view.device.DeviceDialogController' + 'Traccar.view.BaseEditDialogController' ], - controller: 'deviceDialog', - - bodyPadding: styles.panelPadding, + controller: 'baseEditDialog', title: strings.deviceDialog, - resizable: false, - modal: true, - + items: { xtype: 'form', items: [{ @@ -41,14 +37,5 @@ Ext.define('Traccar.view.device.DeviceDialog', { fieldLabel: strings.deviceIdentifier, allowBlank: false }] - }, - - buttons: [{ - text: strings.sharedSave, - handler: 'onSaveClick' - }, { - text: strings.sharedCancel, - handler: 'onCancelClick' - }] - + } }); diff --git a/web/app/view/device/DeviceController.js b/web/app/view/device/DeviceController.js index 58386596d..e2e82448d 100644 --- a/web/app/view/device/DeviceController.js +++ b/web/app/view/device/DeviceController.js @@ -19,10 +19,8 @@ Ext.define('Traccar.view.device.DeviceController', { alias: 'controller.device', requires: [ - 'Traccar.view.device.DeviceDialog', 'Traccar.view.CommandDialog', 'Traccar.view.user.UserDialog', - 'Traccar.view.ServerDialog', 'Traccar.view.user.User', 'Traccar.view.login.LoginController' ], @@ -51,7 +49,8 @@ Ext.define('Traccar.view.device.DeviceController', { onAddClick: function() { var device, dialog; device = Ext.create('Traccar.model.Device'); - dialog = Ext.create('Traccar.view.device.DeviceDialog'); + device.store = this.getView().getStore(); + dialog = Ext.create('Traccar.view.DeviceDialog'); dialog.down('form').loadRecord(device); dialog.show(); }, @@ -59,7 +58,7 @@ Ext.define('Traccar.view.device.DeviceController', { onEditClick: function() { var device, dialog; device = this.getView().getSelectionModel().getSelection()[0]; - dialog = Ext.create('Traccar.view.device.DeviceDialog'); + dialog = Ext.create('Traccar.view.DeviceDialog'); dialog.down('form').loadRecord(device); dialog.show(); }, @@ -135,5 +134,4 @@ Ext.define('Traccar.view.device.DeviceController', { this.getView().getSelectionModel().deselectAll(); } } - }); diff --git a/web/app/view/device/DeviceDialogController.js b/web/app/view/device/DeviceDialogController.js deleted file mode 100644 index 0fcb1efb3..000000000 --- a/web/app/view/device/DeviceDialogController.js +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -Ext.define('Traccar.view.device.DeviceDialogController', { - extend: 'Ext.app.ViewController', - alias: 'controller.deviceDialog', - - onSaveClick: function(button) { - var dialog = button.up('window').down('form'); - dialog.updateRecord(); - var store = Ext.getStore('Devices'); - var device = dialog.getRecord(); - if (device.phantom) { - store.add(device); - } - store.sync({ - success: function() { - store.reload(); // workaround for selection problem - }, - failure: function(batch) { - store.rejectChanges(); // TODO - Traccar.ErrorManager.check(true, batch.exceptions[0].getResponse()); - } - }); - button.up('window').close(); - }, - - onCancelClick: function(button) { - button.up('window').close(); - } - -}); |