From 44806acd0e4fa1618e66ac61f2cc6e0505dc9c92 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Mon, 4 Sep 2017 09:44:54 +0500 Subject: Improve commands --- web/app/view/CustomNumberField.js | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'web/app/view/CustomNumberField.js') diff --git a/web/app/view/CustomNumberField.js b/web/app/view/CustomNumberField.js index 887e5c9..9144b52 100644 --- a/web/app/view/CustomNumberField.js +++ b/web/app/view/CustomNumberField.js @@ -20,7 +20,7 @@ Ext.define('Traccar.view.CustomNumberField', { xtype: 'customNumberField', beforeEl: '
', - unitEl: '
', + unitEl: '
', constructor: function (config) { var unit; @@ -44,6 +44,38 @@ Ext.define('Traccar.view.CustomNumberField', { config.valueToRaw = function (value) { return Ext.getStore('DistanceUnits').convertValue(value, Traccar.app.getPreference('distanceUnit', 'km')); }; + } else if (config.dataType === 'frequency') { + config.beforeSubTpl = this.beforeEl; + config.afterSubTpl = this.unitEl + '
'; + config.listeners = { + afterrender: function (numberField) { + if (!numberField.timeUnits) { + numberField.timeUnits = Ext.create({ + xtype: 'combobox', + renderTo: 'unitEl', + store: 'TimeUnits', + displayField: 'name', + valueField: 'factor', + value: 1, + width: 70 + }); + } + } + }; + config.rawToValue = function (rawValue) { + if (this.timeUnits) { + return rawValue * this.timeUnits.getValue(); + } else { + return rawValue; + } + }; + config.valueToRaw = function (value) { + if (this.timeUnits) { + return value / this.timeUnits.getValue(); + } else { + return value; + } + }; } this.callParent(arguments); } -- cgit v1.2.3 From a9c3d0532db72a635f373f2dce5bc5365aed16dc Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Mon, 4 Sep 2017 16:16:31 +0500 Subject: Improve CustomNumberField --- web/app/store/TimeUnits.js | 18 ++++- web/app/view/CustomNumberField.js | 109 ++++++++++++++++++------------- web/app/view/dialog/CommandController.js | 7 +- 3 files changed, 81 insertions(+), 53 deletions(-) (limited to 'web/app/view/CustomNumberField.js') diff --git a/web/app/store/TimeUnits.js b/web/app/store/TimeUnits.js index 6afeb93..0d16c4b 100644 --- a/web/app/store/TimeUnits.js +++ b/web/app/store/TimeUnits.js @@ -1,5 +1,5 @@ /* - * Copyright 2015 Anton Tananaev (anton@traccar.org) + * Copyright 2015 - 2017 Anton Tananaev (anton@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 @@ -17,16 +17,28 @@ Ext.define('Traccar.store.TimeUnits', { extend: 'Ext.data.Store', - fields: ['name', 'factor'], + fields: ['key', 'name', 'factor'], data: [{ + key: 's', name: Strings.sharedSecondAbbreviation, factor: 1 }, { + key: 'm', name: Strings.sharedMinuteAbbreviation, factor: 60 }, { + key: 'h', name: Strings.sharedHourAbbreviation, factor: 3600 - }] + }], + + convertValue: function (value, unit, back) { + var model; + if (!unit) { + unit = 'kn'; + } + model = this.findRecord('key', unit); + return back ? value * model.get('factor') : value / model.get('factor'); + } }); diff --git a/web/app/view/CustomNumberField.js b/web/app/view/CustomNumberField.js index 9144b52..bc07691 100644 --- a/web/app/view/CustomNumberField.js +++ b/web/app/view/CustomNumberField.js @@ -19,63 +19,80 @@ Ext.define('Traccar.view.CustomNumberField', { extend: 'Ext.form.field.Number', xtype: 'customNumberField', - beforeEl: '
', - unitEl: '
', + beforeEl: '
', + unitEl: '
', constructor: function (config) { - var unit; - if (config.dataType === 'speed') { - unit = Traccar.app.getPreference('speedUnit', 'kn'); - config.beforeSubTpl = this.beforeEl; - config.afterSubTpl = this.unitEl + Ext.getStore('SpeedUnits').findRecord('key', unit).get('name') + '
'; - config.rawToValue = function (rawValue) { - return Ext.getStore('SpeedUnits').convertValue(rawValue, Traccar.app.getPreference('speedUnit', 'kn'), true); - }; - config.valueToRaw = function (value) { - return Ext.getStore('SpeedUnits').convertValue(value, Traccar.app.getPreference('speedUnit', 'kn')); - }; - } else if (config.dataType === 'distance') { - config.beforeSubTpl = this.beforeEl; - unit = Traccar.app.getPreference('distanceUnit', 'km'); - config.afterSubTpl = this.unitEl + Ext.getStore('DistanceUnits').findRecord('key', unit).get('name') + '
'; - config.rawToValue = function (rawValue) { - return Ext.getStore('DistanceUnits').convertValue(rawValue, Traccar.app.getPreference('distanceUnit', 'km'), true); - }; - config.valueToRaw = function (value) { - return Ext.getStore('DistanceUnits').convertValue(value, Traccar.app.getPreference('distanceUnit', 'km')); - }; - } else if (config.dataType === 'frequency') { - config.beforeSubTpl = this.beforeEl; - config.afterSubTpl = this.unitEl + '
'; - config.listeners = { - afterrender: function (numberField) { - if (!numberField.timeUnits) { - numberField.timeUnits = Ext.create({ - xtype: 'combobox', - renderTo: 'unitEl', - store: 'TimeUnits', - displayField: 'name', - valueField: 'factor', - value: 1, - width: 70 - }); + var unitName = ''; + if (config.dataType) { + config.beforeBodyEl = this.beforeEl; + switch (config.dataType) { + case 'speed': + config.units = {}; + config.units.getStore = function () { + return Ext.getStore('SpeedUnits'); + }; + config.units.getValue = function () { + return Traccar.app.getPreference('speedUnit', 'kn'); + }; + unitName = Ext.getStore('SpeedUnits').findRecord('key', config.units.getValue()).get('name'); + break; + case 'distance': + config.units = {}; + config.units.getStore = function () { + return Ext.getStore('DistanceUnits'); + }; + config.units.getValue = function () { + return Traccar.app.getPreference('distanceUnit', 'km'); + }; + unitName = Ext.getStore('DistanceUnits').findRecord('key', config.units.getValue()).get('name'); + break; + case 'frequency': + if (!config.listeners) { + config.listeners = {}; } - } - }; + config.listeners.afterrender = function () { + if (!this.units) { + this.units = Ext.create({ + xtype: 'combobox', + renderTo: 'numberUnitEl', + store: 'TimeUnits', + displayField: 'name', + valueField: 'key', + editable: false, + numberField: this, + value: 's', + width: '70px', + listeners: { + select: function () { + this.numberField.step = this.getStore().convertValue(1, this.getValue(), true); + } + } + }); + } + }; + break; + default: + break; + } + config.afterBodyEl = this.unitEl + unitName + ''; config.rawToValue = function (rawValue) { - if (this.timeUnits) { - return rawValue * this.timeUnits.getValue(); + if (this.units) { + return this.units.getStore().convertValue(rawValue, this.units.getValue(), true); } else { - return rawValue; + return this.parseValue(rawValue); } }; config.valueToRaw = function (value) { - if (this.timeUnits) { - return value / this.timeUnits.getValue(); + if (this.units) { + return this.units.getStore().convertValue(value, this.units.getValue(), false); } else { - return value; + return this.parseValue(value); } }; + if (config.units) { + config.step = config.units.getStore().convertValue(1, config.units.getValue(), true); + } } this.callParent(arguments); } diff --git a/web/app/view/dialog/CommandController.js b/web/app/view/dialog/CommandController.js index 4ab5184..fc233f3 100644 --- a/web/app/view/dialog/CommandController.js +++ b/web/app/view/dialog/CommandController.js @@ -75,11 +75,10 @@ Ext.define('Traccar.view.dialog.CommandController', { record = form.getRecord(); parameters = this.lookupReference('parameters').items.items; - if (parameters.length > 0) { - for (i = 0; i < parameters.length; i++) { - attributes[parameters[i].key] = parameters[i].getValue(); - } + for (i = 0; i < parameters.length; i++) { + attributes[parameters[i].key] = parameters[i].getValue(); } + record.set('attributes', attributes); Ext.Ajax.request({ -- cgit v1.2.3 From b86c09cd3266b2bac9a7a8dbf848ed14fff1e6d7 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Tue, 5 Sep 2017 10:18:37 +0500 Subject: Remove unnecessary check --- web/app/view/CustomNumberField.js | 2 +- web/app/view/dialog/CommandController.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'web/app/view/CustomNumberField.js') diff --git a/web/app/view/CustomNumberField.js b/web/app/view/CustomNumberField.js index bc07691..e8fe5f7 100644 --- a/web/app/view/CustomNumberField.js +++ b/web/app/view/CustomNumberField.js @@ -19,7 +19,7 @@ Ext.define('Traccar.view.CustomNumberField', { extend: 'Ext.form.field.Number', xtype: 'customNumberField', - beforeEl: '
', + beforeEl: '
', unitEl: '
', constructor: function (config) { diff --git a/web/app/view/dialog/CommandController.js b/web/app/view/dialog/CommandController.js index fc233f3..0687f67 100644 --- a/web/app/view/dialog/CommandController.js +++ b/web/app/view/dialog/CommandController.js @@ -52,7 +52,7 @@ Ext.define('Traccar.view.dialog.CommandController', { config.uncheckedValue = false; break; default: - if (parameter.get('dataType') && parameter.get('dataType') === 'timezone') { + if (parameter.get('dataType') === 'timezone') { config.xtype = 'combobox'; config.queryMode = 'local'; config.displayField = 'key'; -- cgit v1.2.3