diff options
author | Abyss777 <abyss@fox5.ru> | 2017-07-12 12:20:08 +0500 |
---|---|---|
committer | Abyss777 <abyss@fox5.ru> | 2017-07-12 12:20:08 +0500 |
commit | d0d156b42eeba86d6a043be051470f05cd022919 (patch) | |
tree | c48863bbe645a1c10aa50cb4b2aa18f9022399df /web/app/view | |
parent | 79f557f7b4bb209876977bba99f8c0a18f672b29 (diff) | |
download | etbsa-traccar-web-d0d156b42eeba86d6a043be051470f05cd022919.tar.gz etbsa-traccar-web-d0d156b42eeba86d6a043be051470f05cd022919.tar.bz2 etbsa-traccar-web-d0d156b42eeba86d6a043be051470f05cd022919.zip |
Implement Drivers
Diffstat (limited to 'web/app/view')
-rw-r--r-- | web/app/view/SettingsMenu.js | 6 | ||||
-rw-r--r-- | web/app/view/SettingsMenuController.js | 11 | ||||
-rw-r--r-- | web/app/view/dialog/Driver.js | 42 | ||||
-rw-r--r-- | web/app/view/edit/Devices.js | 8 | ||||
-rw-r--r-- | web/app/view/edit/DevicesController.js | 17 | ||||
-rw-r--r-- | web/app/view/edit/Drivers.js | 57 | ||||
-rw-r--r-- | web/app/view/edit/DriversController.js | 32 | ||||
-rw-r--r-- | web/app/view/edit/Groups.js | 8 | ||||
-rw-r--r-- | web/app/view/edit/GroupsController.js | 19 | ||||
-rw-r--r-- | web/app/view/edit/Users.js | 7 | ||||
-rw-r--r-- | web/app/view/edit/UsersController.js | 18 | ||||
-rw-r--r-- | web/app/view/permissions/DeviceDrivers.js | 44 | ||||
-rw-r--r-- | web/app/view/permissions/GroupDrivers.js | 44 | ||||
-rw-r--r-- | web/app/view/permissions/UserDrivers.js | 44 |
14 files changed, 357 insertions, 0 deletions
diff --git a/web/app/view/SettingsMenu.js b/web/app/view/SettingsMenu.js index db426bb..f893a15 100644 --- a/web/app/view/SettingsMenu.js +++ b/web/app/view/SettingsMenu.js @@ -44,6 +44,12 @@ Ext.define('Traccar.view.SettingsMenu', { reference: 'settingsGroupsButton' }, { hidden: true, + text: Strings.sharedDrivers, + glyph: 'xf2c2@FontAwesome', + handler: 'onDriversClick', + reference: 'settingsDriversButton' + }, { + hidden: true, text: Strings.sharedGeofences, glyph: 'xf21d@FontAwesome', handler: 'onGeofencesClick', diff --git a/web/app/view/SettingsMenuController.js b/web/app/view/SettingsMenuController.js index a1883a6..102120d 100644 --- a/web/app/view/SettingsMenuController.js +++ b/web/app/view/SettingsMenuController.js @@ -26,6 +26,7 @@ Ext.define('Traccar.view.SettingsMenuController', { 'Traccar.view.edit.Users', 'Traccar.view.edit.Groups', 'Traccar.view.edit.Geofences', + 'Traccar.view.edit.Drivers', 'Traccar.view.Notifications', 'Traccar.view.edit.AttributeAliases', 'Traccar.view.edit.ComputedAttributes', @@ -55,6 +56,7 @@ Ext.define('Traccar.view.SettingsMenuController', { this.lookupReference('settingsGeofencesButton').setHidden(false); this.lookupReference('settingsNotificationsButton').setHidden(false); this.lookupReference('settingsCalendarsButton').setHidden(false); + this.lookupReference('settingsDriversButton').setHidden(false); } if (admin || (!deviceReadonly && !readonly)) { this.lookupReference('settingsAttributeAliasesButton').setHidden(false); @@ -156,6 +158,15 @@ Ext.define('Traccar.view.SettingsMenuController', { }).show(); }, + onDriversClick: function () { + Ext.create('Traccar.view.BaseWindow', { + title: Strings.sharedDrivers, + items: { + xtype: 'driversView' + } + }).show(); + }, + onLogoutClick: function () { Ext.create('Traccar.view.dialog.LoginController').logout(); } diff --git a/web/app/view/dialog/Driver.js b/web/app/view/dialog/Driver.js new file mode 100644 index 0000000..437ef66 --- /dev/null +++ b/web/app/view/dialog/Driver.js @@ -0,0 +1,42 @@ +/* + * 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 <http://www.gnu.org/licenses/>. + */ + +Ext.define('Traccar.view.dialog.Driver', { + extend: 'Traccar.view.dialog.BaseEdit', + + title: Strings.sharedDevice, + + items: { + xtype: 'form', + items: [{ + xtype: 'fieldset', + title: Strings.sharedRequired, + items: [{ + xtype: 'textfield', + name: 'name', + fieldLabel: Strings.sharedName, + allowBlank: false + }, { + xtype: 'textfield', + name: 'uniqueId', + fieldLabel: Strings.deviceIdentifier, + allowBlank: false + }] + }] + } +}); diff --git a/web/app/view/edit/Devices.js b/web/app/view/edit/Devices.js index 267a38b..97cbba2 100644 --- a/web/app/view/edit/Devices.js +++ b/web/app/view/edit/Devices.js @@ -83,6 +83,14 @@ Ext.define('Traccar.view.edit.Devices', { tooltip: Strings.sharedComputedAttributes, tooltipType: 'title' }, { + xtype: 'button', + disabled: true, + handler: 'onDriversClick', + reference: 'toolbarDriversButton', + glyph: 'xf2c2@FontAwesome', + tooltip: Strings.sharedDrivers, + tooltipType: 'title' + }, { disabled: true, handler: 'onCommandClick', reference: 'deviceCommandButton', diff --git a/web/app/view/edit/DevicesController.js b/web/app/view/edit/DevicesController.js index 2457d5c..0cdf18a 100644 --- a/web/app/view/edit/DevicesController.js +++ b/web/app/view/edit/DevicesController.js @@ -24,6 +24,7 @@ Ext.define('Traccar.view.edit.DevicesController', { 'Traccar.view.dialog.Device', 'Traccar.view.permissions.DeviceGeofences', 'Traccar.view.permissions.DeviceAttributes', + 'Traccar.view.permissions.DeviceDrivers', 'Traccar.view.BaseWindow', 'Traccar.model.Device', 'Traccar.model.Command' @@ -93,6 +94,21 @@ Ext.define('Traccar.view.edit.DevicesController', { }).show(); }, + onDriversClick: function () { + var device = this.getView().getSelectionModel().getSelection()[0]; + Ext.create('Traccar.view.BaseWindow', { + title: Strings.sharedDrivers, + items: { + xtype: 'deviceDriversView', + baseObjectName: 'deviceId', + linkObjectName: 'driverId', + storeName: 'Drivers', + urlApi: 'api/devices/drivers', + baseObject: device.getId() + } + }).show(); + }, + onCommandClick: function () { var device, deviceId, command, dialog, typesStore, online; device = this.getView().getSelectionModel().getSelection()[0]; @@ -122,6 +138,7 @@ Ext.define('Traccar.view.edit.DevicesController', { this.lookupReference('toolbarRemoveButton').setDisabled(empty || readonly || deviceReadonly); this.lookupReference('toolbarGeofencesButton').setDisabled(empty || readonly); this.lookupReference('toolbarAttributesButton').setDisabled(empty || readonly); + this.lookupReference('toolbarDriversButton').setDisabled(empty || readonly); this.lookupReference('deviceCommandButton').setDisabled(empty || readonly); }, diff --git a/web/app/view/edit/Drivers.js b/web/app/view/edit/Drivers.js new file mode 100644 index 0000000..59d8d2c --- /dev/null +++ b/web/app/view/edit/Drivers.js @@ -0,0 +1,57 @@ +/* + * 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 <http://www.gnu.org/licenses/>. + */ + +Ext.define('Traccar.view.edit.Drivers', { + extend: 'Ext.grid.Panel', + xtype: 'driversView', + + requires: [ + 'Ext.grid.filters.Filters', + 'Traccar.view.edit.DriversController', + 'Traccar.view.edit.Toolbar' + ], + + plugins: 'gridfilters', + + controller: 'drivers', + store: 'Drivers', + + tbar: { + xtype: 'editToolbar' + }, + + listeners: { + selectionchange: 'onSelectionChange' + }, + + columns: { + defaults: { + flex: 1, + minWidth: Traccar.Style.columnWidthNormal + }, + items: [{ + text: Strings.sharedName, + dataIndex: 'name', + filter: 'string' + }, { + text: Strings.sharedDescription, + dataIndex: 'uniqueId', + filter: 'string' + }] + } +}); diff --git a/web/app/view/edit/DriversController.js b/web/app/view/edit/DriversController.js new file mode 100644 index 0000000..2840c2a --- /dev/null +++ b/web/app/view/edit/DriversController.js @@ -0,0 +1,32 @@ +/* + * 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 <http://www.gnu.org/licenses/>. + */ + +Ext.define('Traccar.view.edit.DriversController', { + extend: 'Traccar.view.edit.ToolbarController', + alias: 'controller.drivers', + + requires: [ + 'Traccar.view.dialog.Driver', + 'Traccar.model.Driver' + ], + + objectModel: 'Traccar.model.Driver', + objectDialog: 'Traccar.view.dialog.Driver', + removeTitle: Strings.sharedDriver + +}); diff --git a/web/app/view/edit/Groups.js b/web/app/view/edit/Groups.js index d4d0830..deb797f 100644 --- a/web/app/view/edit/Groups.js +++ b/web/app/view/edit/Groups.js @@ -49,6 +49,14 @@ Ext.define('Traccar.view.edit.Groups', { glyph: 'xf0ae@FontAwesome', tooltip: Strings.sharedComputedAttributes, tooltipType: 'title' + }, { + xtype: 'button', + disabled: true, + handler: 'onDriversClick', + reference: 'toolbarDriversButton', + glyph: 'xf2c2@FontAwesome', + tooltip: Strings.sharedDrivers, + tooltipType: 'title' }] }, diff --git a/web/app/view/edit/GroupsController.js b/web/app/view/edit/GroupsController.js index 602bb09..a170b3e 100644 --- a/web/app/view/edit/GroupsController.js +++ b/web/app/view/edit/GroupsController.js @@ -23,6 +23,7 @@ Ext.define('Traccar.view.edit.GroupsController', { 'Traccar.view.dialog.Group', 'Traccar.view.permissions.GroupGeofences', 'Traccar.view.permissions.GroupAttributes', + 'Traccar.view.permissions.GroupDrivers', 'Traccar.view.BaseWindow', 'Traccar.model.Group' ], @@ -65,10 +66,28 @@ Ext.define('Traccar.view.edit.GroupsController', { }).show(); }, + onDriversClick: function () { + var admin, group; + admin = Traccar.app.getUser().get('admin'); + group = this.getView().getSelectionModel().getSelection()[0]; + Ext.create('Traccar.view.BaseWindow', { + title: Strings.sharedDrivers, + items: { + xtype: 'groupDriversView', + baseObjectName: 'groupId', + linkObjectName: 'driverId', + storeName: admin ? 'AllDrivers' : 'Drivers', + urlApi: 'api/groups/drivers', + baseObject: group.getId() + } + }).show(); + }, + onSelectionChange: function (selected) { var disabled = selected.length > 0; this.lookupReference('toolbarGeofencesButton').setDisabled(disabled); this.lookupReference('toolbarAttributesButton').setDisabled(disabled); + this.lookupReference('toolbarDriversButton').setDisabled(disabled); this.callParent(arguments); } }); diff --git a/web/app/view/edit/Users.js b/web/app/view/edit/Users.js index 0aafb3d..5c1c8ef 100644 --- a/web/app/view/edit/Users.js +++ b/web/app/view/edit/Users.js @@ -82,6 +82,13 @@ Ext.define('Traccar.view.edit.Users', { glyph: 'xf0ae@FontAwesome', tooltip: Strings.sharedComputedAttributes, tooltipType: 'title' + }, { + disabled: true, + handler: 'onDriversClick', + reference: 'userDriversButton', + glyph: 'xf2c2@FontAwesome', + tooltip: Strings.sharedDrivers, + tooltipType: 'title' }] }, diff --git a/web/app/view/edit/UsersController.js b/web/app/view/edit/UsersController.js index a6f150b..1fa17df 100644 --- a/web/app/view/edit/UsersController.js +++ b/web/app/view/edit/UsersController.js @@ -28,6 +28,7 @@ Ext.define('Traccar.view.edit.UsersController', { 'Traccar.view.permissions.UserCalendars', 'Traccar.view.permissions.UserUsers', 'Traccar.view.permissions.UserAttributes', + 'Traccar.view.permissions.UserDrivers', 'Traccar.view.Notifications', 'Traccar.view.BaseWindow', 'Traccar.model.User' @@ -172,6 +173,22 @@ Ext.define('Traccar.view.edit.UsersController', { }).show(); }, + onDriversClick: function () { + var user = this.getView().getSelectionModel().getSelection()[0]; + Ext.create('Traccar.view.BaseWindow', { + title: Strings.sharedDrivers, + items: { + xtype: 'userDriversView', + baseObjectName: 'userId', + linkObjectName: 'driverId', + storeName: 'AllDrivers', + linkStoreName: 'Drivers', + urlApi: 'api/permissions/drivers', + baseObject: user.getId() + } + }).show(); + }, + onSelectionChange: function (selection, selected) { var disabled = selected.length === 0; @@ -181,6 +198,7 @@ Ext.define('Traccar.view.edit.UsersController', { this.lookupReference('userNotificationsButton').setDisabled(disabled); this.lookupReference('userCalendarsButton').setDisabled(disabled); this.lookupReference('userAttributesButton').setDisabled(disabled); + this.lookupReference('userDriversButton').setDisabled(disabled); this.lookupReference('userUsersButton').setDisabled(disabled || selected[0].get('userLimit') === 0); this.callParent(arguments); } diff --git a/web/app/view/permissions/DeviceDrivers.js b/web/app/view/permissions/DeviceDrivers.js new file mode 100644 index 0000000..d3aa20b --- /dev/null +++ b/web/app/view/permissions/DeviceDrivers.js @@ -0,0 +1,44 @@ +/* + * 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 <http://www.gnu.org/licenses/>. + */ + +Ext.define('Traccar.view.permissions.DeviceDrivers', { + extend: 'Traccar.view.permissions.Base', + xtype: 'deviceDriversView', + + requires: [ + 'Ext.grid.filters.Filters' + ], + + plugins: 'gridfilters', + + columns: { + items: [{ + text: Strings.sharedName, + dataIndex: 'name', + flex: 1, + minWidth: Traccar.Style.columnWidthNormal, + filter: 'string' + }, { + text: Strings.deviceIdentifier, + dataIndex: 'uniqueId', + flex: 1, + minWidth: Traccar.Style.columnWidthNormal, + filter: 'string' + }] + } +}); diff --git a/web/app/view/permissions/GroupDrivers.js b/web/app/view/permissions/GroupDrivers.js new file mode 100644 index 0000000..61aa10a --- /dev/null +++ b/web/app/view/permissions/GroupDrivers.js @@ -0,0 +1,44 @@ +/* + * 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 <http://www.gnu.org/licenses/>. + */ + +Ext.define('Traccar.view.permissions.GroupDrivers', { + extend: 'Traccar.view.permissions.Base', + xtype: 'groupDriversView', + + requires: [ + 'Ext.grid.filters.Filters' + ], + + plugins: 'gridfilters', + + columns: { + items: [{ + text: Strings.sharedName, + dataIndex: 'name', + flex: 1, + minWidth: Traccar.Style.columnWidthNormal, + filter: 'string' + }, { + text: Strings.deviceIdentifier, + dataIndex: 'uniqueId', + flex: 1, + minWidth: Traccar.Style.columnWidthNormal, + filter: 'string' + }] + } +}); diff --git a/web/app/view/permissions/UserDrivers.js b/web/app/view/permissions/UserDrivers.js new file mode 100644 index 0000000..8f88ddd --- /dev/null +++ b/web/app/view/permissions/UserDrivers.js @@ -0,0 +1,44 @@ +/* + * 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 <http://www.gnu.org/licenses/>. + */ + +Ext.define('Traccar.view.permissions.UserDrivers', { + extend: 'Traccar.view.permissions.Base', + xtype: 'userDriversView', + + requires: [ + 'Ext.grid.filters.Filters' + ], + + plugins: 'gridfilters', + + columns: { + items: [{ + text: Strings.sharedName, + dataIndex: 'name', + flex: 1, + minWidth: Traccar.Style.columnWidthNormal, + filter: 'string' + }, { + text: Strings.deviceIdentifier, + dataIndex: 'uniqueId', + flex: 1, + minWidth: Traccar.Style.columnWidthNormal, + filter: 'string' + }] + } +}); |