aboutsummaryrefslogtreecommitdiff
path: root/web/app/view/CustomNumberField.js
diff options
context:
space:
mode:
authorAbyss777 <abyss@fox5.ru>2017-04-19 14:17:11 +0500
committerAbyss777 <abyss@fox5.ru>2017-04-19 14:17:11 +0500
commit3810a8be84b010f6c26f7541be22ecd6a973af58 (patch)
treea266c3fad333c50d0c1361ccc358fd685625ea01 /web/app/view/CustomNumberField.js
parent648d5fe1e4a0d92b79410572d386dac45b4e8d36 (diff)
downloadtrackermap-web-3810a8be84b010f6c26f7541be22ecd6a973af58.tar.gz
trackermap-web-3810a8be84b010f6c26f7541be22ecd6a973af58.tar.bz2
trackermap-web-3810a8be84b010f6c26f7541be22ecd6a973af58.zip
Convert speed and distance for known attributes
Diffstat (limited to 'web/app/view/CustomNumberField.js')
-rw-r--r--web/app/view/CustomNumberField.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/web/app/view/CustomNumberField.js b/web/app/view/CustomNumberField.js
new file mode 100644
index 00000000..7e2b88e9
--- /dev/null
+++ b/web/app/view/CustomNumberField.js
@@ -0,0 +1,50 @@
+/*
+ * 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.CustomNumberField', {
+ extend: 'Ext.form.field.Number',
+ xtype: 'customNumberField',
+
+ beforeEl: '<div style="width:100%;display:inline-table;">',
+ unitEl: '<div style="display:table-cell;padding-left:10px;vertical-align:middle;">',
+
+ constructor: function (config) {
+ var unit;
+ if (config.convert === 'speed') {
+ unit = Traccar.app.getPreference('speedUnit', 'kn');
+ config.beforeSubTpl = this.beforeEl;
+ config.afterSubTpl = this.unitEl + Ext.getStore('SpeedUnits').findRecord('key', unit).get('name') + '</div></div>';
+ 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.convert === 'distance') {
+ config.beforeSubTpl = this.beforeEl;
+ unit = Traccar.app.getPreference('distanceUnit', 'km');
+ config.afterSubTpl = this.unitEl + Ext.getStore('DistanceUnits').findRecord('key', unit).get('name') + '</div></div>';
+ 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'));
+ };
+ }
+ this.callParent(arguments);
+ }
+});