diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2017-12-19 20:26:51 +1300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-19 20:26:51 +1300 |
commit | 19768f9c88958207a20a81bdfe7ee630bf400973 (patch) | |
tree | 3d5e1b63c1fe379b8e578aff53e57244d716dda6 | |
parent | 23652dc720e1ca35099fab26208344f750b05e15 (diff) | |
parent | 86fc00eefa298670b47b4ee15f5d3237b0634efd (diff) | |
download | trackermap-web-19768f9c88958207a20a81bdfe7ee630bf400973.tar.gz trackermap-web-19768f9c88958207a20a81bdfe7ee630bf400973.tar.bz2 trackermap-web-19768f9c88958207a20a81bdfe7ee630bf400973.zip |
Merge pull request #630 from Abyss777/clear_combo
Implement custom combobox with clear button
-rw-r--r-- | web/app/Style.js | 1 | ||||
-rw-r--r-- | web/app/view/ClearableComboBox.js | 31 | ||||
-rw-r--r-- | web/app/view/dialog/Device.js | 29 | ||||
-rw-r--r-- | web/app/view/dialog/Geofence.js | 4 | ||||
-rw-r--r-- | web/app/view/dialog/Group.js | 30 | ||||
-rw-r--r-- | web/app/view/dialog/Server.js | 11 | ||||
-rw-r--r-- | web/app/view/dialog/User.js | 11 |
7 files changed, 63 insertions, 54 deletions
diff --git a/web/app/Style.js b/web/app/Style.js index 252bfbd4..27243531 100644 --- a/web/app/Style.js +++ b/web/app/Style.js @@ -27,7 +27,6 @@ Ext.define('Traccar.Style', { windowHeight: 600, formFieldWidth: 275, - formFieldWithButtonWidth: 170 - 3 - 32, dateTimeFormat24: 'Y-m-d H:i:s', dateTimeFormat12: 'Y-m-d g:i:s a', diff --git a/web/app/view/ClearableComboBox.js b/web/app/view/ClearableComboBox.js new file mode 100644 index 00000000..cf811d1d --- /dev/null +++ b/web/app/view/ClearableComboBox.js @@ -0,0 +1,31 @@ +/* + * 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.ClearableComboBox', { + extend: 'Ext.form.field.ComboBox', + xtype: 'clearableComboBox', + + editable: false, + triggers: { + clear: { + cls: 'iconCls: x-fa fa-times', + handler: function (button) { + button.clearValue(); + } + } + } +}); diff --git a/web/app/view/dialog/Device.js b/web/app/view/dialog/Device.js index 80b16390..c024bf3c 100644 --- a/web/app/view/dialog/Device.js +++ b/web/app/view/dialog/Device.js @@ -18,6 +18,10 @@ Ext.define('Traccar.view.dialog.Device', { extend: 'Traccar.view.dialog.BaseEdit', + requires: [ + 'Traccar.view.ClearableComboBox' + ], + title: Strings.sharedDevice, items: { @@ -42,26 +46,13 @@ Ext.define('Traccar.view.dialog.Device', { collapsible: true, collapsed: true, items: [{ - xtype: 'fieldcontainer', - layout: 'hbox', + xtype: 'clearableComboBox', + name: 'groupId', fieldLabel: Strings.groupParent, - items: [{ - xtype: 'combobox', - name: 'groupId', - store: 'Groups', - queryMode: 'local', - displayField: 'name', - valueField: 'id', - width: Traccar.Style.formFieldWithButtonWidth, - editable: false - }, { - xtype: 'button', - glyph: 'xf00d@FontAwesome', - margin: '0 0 0 3px', - handler: function (button) { - button.up().down().clearValue(); - } - }] + store: 'Groups', + queryMode: 'local', + displayField: 'name', + valueField: 'id' }, { xtype: 'textfield', name: 'phone', diff --git a/web/app/view/dialog/Geofence.js b/web/app/view/dialog/Geofence.js index 9d7a59a1..65c32c04 100644 --- a/web/app/view/dialog/Geofence.js +++ b/web/app/view/dialog/Geofence.js @@ -19,6 +19,7 @@ Ext.define('Traccar.view.dialog.Geofence', { extend: 'Traccar.view.dialog.BaseEdit', requires: [ + 'Traccar.view.ClearableComboBox', 'Traccar.view.dialog.GeofenceController' ], @@ -45,14 +46,13 @@ Ext.define('Traccar.view.dialog.Geofence', { name: 'description', fieldLabel: Strings.sharedDescription }, { - xtype: 'combobox', + xtype: 'clearableComboBox', reference: 'calendarCombo', name: 'calendarId', store: 'Calendars', queryMode: 'local', displayField: 'name', valueField: 'id', - editable: false, fieldLabel: Strings.sharedCalendar }, { xtype: 'hiddenfield', diff --git a/web/app/view/dialog/Group.js b/web/app/view/dialog/Group.js index 3a94202d..8ce6282d 100644 --- a/web/app/view/dialog/Group.js +++ b/web/app/view/dialog/Group.js @@ -18,6 +18,10 @@ Ext.define('Traccar.view.dialog.Group', { extend: 'Traccar.view.dialog.BaseEdit', + requires: [ + 'Traccar.view.ClearableComboBox' + ], + title: Strings.groupDialog, items: { @@ -37,26 +41,12 @@ Ext.define('Traccar.view.dialog.Group', { collapsible: true, collapsed: true, items: [{ - xtype: 'fieldcontainer', - layout: 'hbox', - fieldLabel: Strings.groupParent, - items: [{ - xtype: 'combobox', - name: 'groupId', - store: 'Groups', - queryMode: 'local', - displayField: 'name', - valueField: 'id', - width: Traccar.Style.formFieldWithButtonWidth, - editable: false - }, { - xtype: 'button', - glyph: 'xf00d@FontAwesome', - margin: '0 0 0 3px', - handler: function (button) { - button.up().down().clearValue(); - } - }] + xtype: 'clearableComboBox', + name: 'groupId', + store: 'Groups', + queryMode: 'local', + displayField: 'name', + valueField: 'id' }] }] } diff --git a/web/app/view/dialog/Server.js b/web/app/view/dialog/Server.js index 1fe2184c..a39408d5 100644 --- a/web/app/view/dialog/Server.js +++ b/web/app/view/dialog/Server.js @@ -19,6 +19,7 @@ Ext.define('Traccar.view.dialog.Server', { extend: 'Traccar.view.dialog.BaseEdit', requires: [ + 'Traccar.view.ClearableComboBox', 'Traccar.view.dialog.MapPickerController' ], @@ -31,13 +32,12 @@ Ext.define('Traccar.view.dialog.Server', { xtype: 'fieldset', title: Strings.sharedPreferences, items: [{ - xtype: 'combobox', + xtype: 'clearableComboBox', name: 'map', fieldLabel: Strings.mapLayer, store: 'MapTypes', displayField: 'name', - valueField: 'key', - editable: false + valueField: 'key' }, { xtype: 'textfield', name: 'bingKey', @@ -76,13 +76,12 @@ Ext.define('Traccar.view.dialog.Server', { name: 'forceSettings', fieldLabel: Strings.serverForceSettings }, { - xtype: 'combobox', + xtype: 'clearableComboBox', name: 'coordinateFormat', fieldLabel: Strings.settingsCoordinateFormat, store: 'CoordinateFormats', displayField: 'name', - valueField: 'key', - editable: false + valueField: 'key' }] }, { xtype: 'fieldset', diff --git a/web/app/view/dialog/User.js b/web/app/view/dialog/User.js index 36bccfeb..be27a51a 100644 --- a/web/app/view/dialog/User.js +++ b/web/app/view/dialog/User.js @@ -19,6 +19,7 @@ Ext.define('Traccar.view.dialog.User', { extend: 'Traccar.view.dialog.BaseEdit', requires: [ + 'Traccar.view.ClearableComboBox', 'Traccar.view.dialog.UserController' ], @@ -56,13 +57,12 @@ Ext.define('Traccar.view.dialog.User', { name: 'phone', fieldLabel: Strings.sharedPhone }, { - xtype: 'combobox', + xtype: 'clearableComboBox', name: 'map', fieldLabel: Strings.mapLayer, store: 'MapTypes', displayField: 'name', - valueField: 'key', - editable: false + valueField: 'key' }, { xtype: 'numberfield', reference: 'latitude', @@ -87,13 +87,12 @@ Ext.define('Traccar.view.dialog.User', { name: 'twelveHourFormat', fieldLabel: Strings.settingsTwelveHourFormat }, { - xtype: 'combobox', + xtype: 'clearableComboBox', name: 'coordinateFormat', fieldLabel: Strings.settingsCoordinateFormat, store: 'CoordinateFormats', displayField: 'name', - valueField: 'key', - editable: false + valueField: 'key' }] }, { xtype: 'fieldset', |