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.css | 4 ++++ 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 ++++++++ web/l10n/en.json | 2 +- 9 files changed, 70 insertions(+), 7 deletions(-) create mode 100644 web/app/view/dialog/DeviceController.js diff --git a/web/app.css b/web/app.css index 0bf0c6d..e06bb66 100644 --- a/web/app.css +++ b/web/app.css @@ -8,6 +8,10 @@ background-color: rgba(255, 84, 104, 0.3); } +.view-item-disabled { + opacity: 0.5; +} + .toolbar-header-style { background-color: #5fa2dd !important; } 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', diff --git a/web/l10n/en.json b/web/l10n/en.json index 880f211..78a2b65 100644 --- a/web/l10n/en.json +++ b/web/l10n/en.json @@ -74,6 +74,7 @@ "sharedSavedCommands": "Saved Commands", "sharedNew": "New…", "sharedShowAddress": "Show Address", + "sharedDisabled": "Disabled", "attributeSpeedLimit": "Speed Limit", "attributeReportIgnoreOdometer": "Report: Ignore Odometer", "attributeMaintenanceStart": "Maintenance: Start", @@ -111,7 +112,6 @@ "userPassword": "Password", "userAdmin": "Admin", "userRemember": "Remember", - "userDisabled": "Disabled", "userExpirationTime": "Expiration", "userDeviceLimit": "Device Limit", "userUserLimit": "User Limit", -- cgit v1.2.3