From 788a499b346724d753798597fb18f8aef17e1588 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Thu, 18 May 2017 10:01:49 +0500 Subject: Implement known position attributes --- web/app/view/dialog/AttributeController.js | 12 ++++---- web/app/view/dialog/ComputedAttribute.js | 22 ++++++++++++--- web/app/view/dialog/ComputedAttributeController.js | 32 ++++++++++++++++++++++ 3 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 web/app/view/dialog/ComputedAttributeController.js (limited to 'web/app/view/dialog') diff --git a/web/app/view/dialog/AttributeController.js b/web/app/view/dialog/AttributeController.js index afa970ad..12e31e8e 100644 --- a/web/app/view/dialog/AttributeController.js +++ b/web/app/view/dialog/AttributeController.js @@ -53,26 +53,26 @@ Ext.define('Traccar.view.dialog.AttributeController', { }, onNameChange: function (combobox, newValue) { - var type, config, attribute, valueField = this.lookupReference('valueField'); + var valueType, config, attribute, valueField = this.lookupReference('valueField'); attribute = combobox.getStore().getById(newValue); if (attribute) { - type = attribute.get('type'); + valueType = attribute.get('valueType'); config = Ext.clone(this.defaultFieldConfig); - if (type === 'number') { + if (valueType === 'number') { config.xtype = 'customNumberField'; if (attribute.get('allowDecimals') !== undefined) { config.allowDecimals = attribute.get('allowDecimals'); } else { config.allowDecimals = true; } - config.convert = attribute.get('convert'); + config.dataType = attribute.get('dataType'); config.maxValue = attribute.get('maxValue'); config.minValue = attribute.get('minValue'); - } else if (type === 'boolean') { + } else if (valueType === 'boolean') { config.xtype = 'checkboxfield'; config.inputValue = true; config.uncheckedValue = false; - } else if (type === 'color') { + } else if (valueType === 'color') { config.xtype = 'customcolorpicker'; } else { config.xtype = 'textfield'; diff --git a/web/app/view/dialog/ComputedAttribute.js b/web/app/view/dialog/ComputedAttribute.js index df074919..90234b57 100644 --- a/web/app/view/dialog/ComputedAttribute.js +++ b/web/app/view/dialog/ComputedAttribute.js @@ -19,6 +19,11 @@ Ext.define('Traccar.view.dialog.ComputedAttribute', { extend: 'Traccar.view.dialog.BaseEdit', + requires: [ + 'Traccar.view.dialog.ComputedAttributeController' + ], + + controller: 'computedAttribute', title: Strings.sharedComputedAttribute, items: { @@ -28,20 +33,29 @@ Ext.define('Traccar.view.dialog.ComputedAttribute', { name: 'description', fieldLabel: Strings.sharedDescription }, { - xtype: 'textfield', + xtype: 'combobox', name: 'attribute', fieldLabel: Strings.sharedAttribute, - allowBlank: false + store: 'PositionAttributes', + displayField: 'name', + valueField: 'key', + listeners: { + change: 'onAttributeChange' + } }, { xtype: 'textareafield', name: 'expression', fieldLabel: Strings.sharedExpression, allowBlank: false }, { - xtype: 'textfield', + xtype: 'combobox', name: 'type', + reference: 'typeComboField', + store: 'AttributeValueTypes', fieldLabel: Strings.sharedType, - allowBlank: false + displayField: 'name', + valueField: 'id', + editable: false }] }, diff --git a/web/app/view/dialog/ComputedAttributeController.js b/web/app/view/dialog/ComputedAttributeController.js new file mode 100644 index 00000000..807653a6 --- /dev/null +++ b/web/app/view/dialog/ComputedAttributeController.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 . + */ + +Ext.define('Traccar.view.dialog.ComputedAttributeController', { + extend: 'Traccar.view.dialog.BaseEditController', + alias: 'controller.computedAttribute', + + onAttributeChange: function (combobox, newValue) { + var attribute = Ext.getStore('PositionAttributes').getById(newValue); + if (attribute) { + this.getView().lookupReference('typeComboField').setValue(attribute.get('valueType')); + this.getView().lookupReference('typeComboField').setReadOnly(true); + } else { + this.getView().lookupReference('typeComboField').setReadOnly(false); + } + } +}); -- cgit v1.2.3