From 9731e7543eaf3777625aebec346b4f10690a8b3b Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Thu, 23 Aug 2018 08:38:55 +0500 Subject: Implement Device Accumulators reset --- web/app/view/DeviceMenu.js | 6 +-- web/app/view/DeviceMenuController.js | 8 ++-- web/app/view/SettingsMenuController.js | 1 - web/app/view/dialog/DeviceAccumulators.js | 55 ++++++++++++++++++++++ .../view/dialog/DeviceAccumulatorsController.js | 48 +++++++++++++++++++ web/app/view/dialog/DeviceDistance.js | 50 -------------------- web/app/view/dialog/DeviceDistanceController.js | 41 ---------------- web/l10n/en.json | 2 +- 8 files changed, 112 insertions(+), 99 deletions(-) create mode 100644 web/app/view/dialog/DeviceAccumulators.js create mode 100644 web/app/view/dialog/DeviceAccumulatorsController.js delete mode 100644 web/app/view/dialog/DeviceDistance.js delete mode 100644 web/app/view/dialog/DeviceDistanceController.js diff --git a/web/app/view/DeviceMenu.js b/web/app/view/DeviceMenu.js index c9416845..e4623b94 100644 --- a/web/app/view/DeviceMenu.js +++ b/web/app/view/DeviceMenu.js @@ -63,10 +63,10 @@ Ext.define('Traccar.view.DeviceMenu', { reference: 'menuMaintenancesButton' }, { hidden: true, - text: Strings.sharedDeviceDistance, + text: Strings.sharedDeviceAccumulators, glyph: 'xf0e4@FontAwesome', - handler: 'onDeviceDistanceClick', - reference: 'menuDeviceDistanceButton' + handler: 'onDeviceAccumulatorsClick', + reference: 'menuDeviceAccumulatorsButton' }] } }); diff --git a/web/app/view/DeviceMenuController.js b/web/app/view/DeviceMenuController.js index f191756c..9355571c 100644 --- a/web/app/view/DeviceMenuController.js +++ b/web/app/view/DeviceMenuController.js @@ -27,6 +27,7 @@ Ext.define('Traccar.view.DeviceMenuController', { 'Traccar.view.edit.ComputedAttributes', 'Traccar.view.permissions.SavedCommands', 'Traccar.view.permissions.Maintenances', + 'Traccar.view.dialog.DeviceAccumulators', 'Traccar.view.BaseWindow' ], @@ -36,7 +37,7 @@ Ext.define('Traccar.view.DeviceMenuController', { this.lookupReference('menuComputedAttributesButton').setHidden( Traccar.app.getBooleanAttributePreference('ui.disableComputedAttributes')); this.lookupReference('menuCommandsButton').setHidden(Traccar.app.getPreference('limitCommands', false)); - this.lookupReference('menuDeviceDistanceButton').setHidden( + this.lookupReference('menuDeviceAccumulatorsButton').setHidden( !Traccar.app.getUser().get('administrator') && Traccar.app.getUser().get('userLimit') === 0 || Traccar.app.getVehicleFeaturesDisabled()); this.lookupReference('menuMaintenancesButton').setHidden( Traccar.app.getVehicleFeaturesDisabled() || Traccar.app.getBooleanAttributePreference('ui.disableMaintenances')); @@ -120,12 +121,13 @@ Ext.define('Traccar.view.DeviceMenuController', { }).show(); }, - onDeviceDistanceClick: function () { - var position, dialog = Ext.create('Traccar.view.dialog.DeviceDistance'); + onDeviceAccumulatorsClick: function () { + var position, dialog = Ext.create('Traccar.view.dialog.DeviceAccumulators'); dialog.deviceId = this.getView().up('deviceMenu').device.getId(); position = Ext.getStore('LatestPositions').findRecord('deviceId', dialog.deviceId, 0, false, false, true); if (position) { dialog.lookupReference('totalDistance').setValue(position.get('attributes').totalDistance); + dialog.lookupReference('hours').setValue(position.get('attributes').hours); } dialog.show(); } diff --git a/web/app/view/SettingsMenuController.js b/web/app/view/SettingsMenuController.js index 59f62c2e..37e0634c 100644 --- a/web/app/view/SettingsMenuController.js +++ b/web/app/view/SettingsMenuController.js @@ -30,7 +30,6 @@ Ext.define('Traccar.view.SettingsMenuController', { 'Traccar.view.edit.Notifications', 'Traccar.view.edit.ComputedAttributes', 'Traccar.view.Statistics', - 'Traccar.view.dialog.DeviceDistance', 'Traccar.view.edit.Calendars', 'Traccar.view.edit.SavedCommands', 'Traccar.view.edit.Maintenances', diff --git a/web/app/view/dialog/DeviceAccumulators.js b/web/app/view/dialog/DeviceAccumulators.js new file mode 100644 index 00000000..eaa4e9f5 --- /dev/null +++ b/web/app/view/dialog/DeviceAccumulators.js @@ -0,0 +1,55 @@ +/* + * Copyright 2016 - 2017 Anton Tananaev (anton@traccar.org) + * Copyright 2016 - 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.DeviceAccumulators', { + extend: 'Traccar.view.dialog.Base', + + requires: [ + 'Traccar.view.dialog.DeviceAccumulatorsController' + ], + + controller: 'deviceAccumulators', + title: Strings.sharedDeviceAccumulators, + + items: [{ + xtype: 'customNumberField', + dataType: 'distance', + reference: 'totalDistance', + fieldLabel: Strings.deviceTotalDistance + }, { + xtype: 'customNumberField', + dataType: 'hours', + reference: 'hours', + fieldLabel: Strings.positionHours + }], + + buttons: [{ + reference: 'setButton', + glyph: 'xf00c@FontAwesome', + tooltip: Strings.sharedSet, + tooltipType: 'title', + minWidth: 0, + handler: 'onSetClick' + }, { + glyph: 'xf00d@FontAwesome', + tooltip: Strings.sharedCancel, + tooltipType: 'title', + minWidth: 0, + handler: 'closeView' + }] +}); diff --git a/web/app/view/dialog/DeviceAccumulatorsController.js b/web/app/view/dialog/DeviceAccumulatorsController.js new file mode 100644 index 00000000..2fdae6c5 --- /dev/null +++ b/web/app/view/dialog/DeviceAccumulatorsController.js @@ -0,0 +1,48 @@ +/* + * Copyright 2016 - 2018 Anton Tananaev (anton@traccar.org) + * Copyright 2016 - 2018 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.DeviceAccumulatorsController', { + extend: 'Ext.app.ViewController', + alias: 'controller.deviceAccumulators', + + onSetClick: function () { + var totalDistance, hours, data = { + deviceId: this.getView().deviceId + }; + totalDistance = this.lookupReference('totalDistance'); + if (!isNaN(totalDistance.getRawValue())) { + data.totalDistance = totalDistance.getValue(); + } + hours = this.lookupReference('hours'); + if (!isNaN(hours.getRawValue())) { + data.hours = hours.getValue(); + } + Ext.Ajax.request({ + scope: this, + method: 'PUT', + url: 'api/devices/' + data.deviceId + '/accumulators', + jsonData: Ext.util.JSON.encode(data), + callback: function (options, success, response) { + if (!success) { + Traccar.app.showError(response); + } + } + }); + this.closeView(); + } +}); diff --git a/web/app/view/dialog/DeviceDistance.js b/web/app/view/dialog/DeviceDistance.js deleted file mode 100644 index 53945885..00000000 --- a/web/app/view/dialog/DeviceDistance.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2016 - 2017 Anton Tananaev (anton@traccar.org) - * Copyright 2016 - 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.DeviceDistance', { - extend: 'Traccar.view.dialog.Base', - - requires: [ - 'Traccar.view.dialog.DeviceDistanceController' - ], - - controller: 'deviceDistance', - title: Strings.sharedDeviceDistance, - - items: [{ - xtype: 'customNumberField', - dataType: 'distance', - reference: 'totalDistance', - fieldLabel: Strings.deviceTotalDistance - }], - - buttons: [{ - reference: 'setButton', - glyph: 'xf00c@FontAwesome', - tooltip: Strings.sharedSet, - tooltipType: 'title', - minWidth: 0, - handler: 'onSetClick' - }, { - glyph: 'xf00d@FontAwesome', - tooltip: Strings.sharedCancel, - tooltipType: 'title', - minWidth: 0, - handler: 'closeView' - }] -}); diff --git a/web/app/view/dialog/DeviceDistanceController.js b/web/app/view/dialog/DeviceDistanceController.js deleted file mode 100644 index ae14f33c..00000000 --- a/web/app/view/dialog/DeviceDistanceController.js +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2016 - 2017 Anton Tananaev (anton@traccar.org) - * Copyright 2016 - 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.DeviceDistanceController', { - extend: 'Ext.app.ViewController', - alias: 'controller.deviceDistance', - - onSetClick: function () { - var data = { - deviceId: this.getView().deviceId, - totalDistance: this.lookupReference('totalDistance').getValue() - }; - Ext.Ajax.request({ - scope: this, - method: 'PUT', - url: 'api/devices/' + data.deviceId + '/distance', - jsonData: Ext.util.JSON.encode(data), - callback: function (options, success, response) { - if (!success) { - Traccar.app.showError(response); - } - } - }); - this.closeView(); - } -}); diff --git a/web/l10n/en.json b/web/l10n/en.json index 0fa5043c..5acc1ea1 100644 --- a/web/l10n/en.json +++ b/web/l10n/en.json @@ -53,7 +53,6 @@ "sharedComputedAttributes": "Computed Attributes", "sharedCheckComputedAttribute": "Check Computed Attribute", "sharedExpression": "Expression", - "sharedDeviceDistance": "Device Distance", "sharedDevice": "Device", "sharedTestNotification": "Send Test Notification", "sharedCalendar": "Calendar", @@ -77,6 +76,7 @@ "sharedDisabled": "Disabled", "sharedMaintenance": "Maintenance", "sharedMaintenances": "Maintenances", + "sharedDeviceAccumulators": "Accumulators", "attributeSpeedLimit": "Speed Limit", "attributePolylineDistance": "Polyline Distance", "attributeReportIgnoreOdometer": "Report: Ignore Odometer", -- cgit v1.2.3