From 54210c6f8bcd5d2e467d63aa5ac51389c8853b5f Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Tue, 26 Dec 2017 09:01:04 +0500 Subject: Implement disabling devices --- web/app/model/Device.js | 3 +++ web/app/view/dialog/Device.js | 12 +++++++++++- web/app/view/dialog/DeviceController.js | 29 +++++++++++++++++++++++++++++ web/app/view/dialog/User.js | 2 +- web/app/view/edit/Devices.js | 15 ++++++++++++--- web/app/view/edit/Users.js | 2 +- web/app/view/permissions/Devices.js | 8 ++++++++ 7 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 web/app/view/dialog/DeviceController.js (limited to 'web/app') diff --git a/web/app/model/Device.js b/web/app/model/Device.js index 9de5828..df6b09b 100644 --- a/web/app/model/Device.js +++ b/web/app/model/Device.js @@ -55,6 +55,9 @@ Ext.define('Traccar.model.Device', { }, { name: 'groupId', type: 'int' + }, { + name: 'disabled', + type: 'boolean' }, { name: 'geofenceIds' }, { diff --git a/web/app/view/dialog/Device.js b/web/app/view/dialog/Device.js index c024bf3..50a5e79 100644 --- a/web/app/view/dialog/Device.js +++ b/web/app/view/dialog/Device.js @@ -19,9 +19,11 @@ Ext.define('Traccar.view.dialog.Device', { extend: 'Traccar.view.dialog.BaseEdit', requires: [ - 'Traccar.view.ClearableComboBox' + 'Traccar.view.ClearableComboBox', + 'Traccar.view.dialog.DeviceController' ], + controller: 'device', title: Strings.sharedDevice, items: { @@ -82,6 +84,14 @@ Ext.define('Traccar.view.dialog.Device', { '{name}'; } } + }, { + xtype: 'checkboxfield', + inputValue: true, + uncheckedValue: false, + name: 'disabled', + fieldLabel: Strings.sharedDisabled, + hidden: true, + reference: 'disabledField' }] }] } diff --git a/web/app/view/dialog/DeviceController.js b/web/app/view/dialog/DeviceController.js new file mode 100644 index 0000000..d6ddc58 --- /dev/null +++ b/web/app/view/dialog/DeviceController.js @@ -0,0 +1,29 @@ +/* + * Copyright 2017 Anton Tananaev (anton@traccar.org) + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +Ext.define('Traccar.view.dialog.DeviceController', { + extend: 'Traccar.view.dialog.BaseEditController', + alias: 'controller.device', + + init: function () { + if (Traccar.app.getUser().get('admin')) { + this.lookupReference('disabledField').setHidden(false); + } + } + +}); diff --git a/web/app/view/dialog/User.js b/web/app/view/dialog/User.js index be27a51..45ecd6e 100644 --- a/web/app/view/dialog/User.js +++ b/web/app/view/dialog/User.js @@ -104,7 +104,7 @@ Ext.define('Traccar.view.dialog.User', { inputValue: true, uncheckedValue: false, name: 'disabled', - fieldLabel: Strings.userDisabled, + fieldLabel: Strings.sharedDisabled, disabled: true, reference: 'disabledField' }, { diff --git a/web/app/view/edit/Devices.js b/web/app/view/edit/Devices.js index 39550b6..6e581d4 100644 --- a/web/app/view/edit/Devices.js +++ b/web/app/view/edit/Devices.js @@ -81,11 +81,14 @@ Ext.define('Traccar.view.edit.Devices', { viewConfig: { enableTextSelection: true, getRowClass: function (record) { - var status = record.get('status'); + var status = record.get('status'), result = ''; + if (record.get('disabled')) { + result = 'view-item-disabled '; + } if (status) { - return Ext.getStore('DeviceStatuses').getById(status).get('color'); + result += Ext.getStore('DeviceStatuses').getById(status).get('color'); } - return null; + return result; } }, @@ -124,6 +127,12 @@ Ext.define('Traccar.view.edit.Devices', { store: 'Groups' }, renderer: Traccar.AttributeFormatter.getFormatter('groupId') + }, { + text: Strings.sharedDisabled, + dataIndex: 'disabled', + renderer: Traccar.AttributeFormatter.getFormatter('disabled'), + hidden: true, + filter: 'boolean' }, { text: Strings.sharedGeofences, dataIndex: 'geofenceIds', diff --git a/web/app/view/edit/Users.js b/web/app/view/edit/Users.js index fd37199..b0a67ff 100644 --- a/web/app/view/edit/Users.js +++ b/web/app/view/edit/Users.js @@ -133,7 +133,7 @@ Ext.define('Traccar.view.edit.Users', { hidden: true, filter: 'boolean' }, { - text: Strings.userDisabled, + text: Strings.sharedDisabled, dataIndex: 'disabled', renderer: Traccar.AttributeFormatter.getFormatter('disabled'), filter: 'boolean' diff --git a/web/app/view/permissions/Devices.js b/web/app/view/permissions/Devices.js index d120eac..3180b10 100644 --- a/web/app/view/permissions/Devices.js +++ b/web/app/view/permissions/Devices.js @@ -57,6 +57,14 @@ Ext.define('Traccar.view.permissions.Devices', { minWidth: Traccar.Style.columnWidthNormal, hidden: true, filter: 'string' + }, { + text: Strings.sharedDisabled, + dataIndex: 'disabled', + flex: 1, + minWidth: Traccar.Style.columnWidthNormal, + renderer: Traccar.AttributeFormatter.getFormatter('disabled'), + hidden: true, + filter: 'boolean' }, { text: Strings.groupDialog, dataIndex: 'groupId', -- cgit v1.2.3