aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--web/app/view/BaseEditDialogController.js22
-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.js8
-rw-r--r--web/app/view/device/DeviceDialogController.js45
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();
- }
-
-});