aboutsummaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2017-12-19 20:26:51 +1300
committerGitHub <noreply@github.com>2017-12-19 20:26:51 +1300
commit19768f9c88958207a20a81bdfe7ee630bf400973 (patch)
tree3d5e1b63c1fe379b8e578aff53e57244d716dda6 /web
parent23652dc720e1ca35099fab26208344f750b05e15 (diff)
parent86fc00eefa298670b47b4ee15f5d3237b0634efd (diff)
downloadtrackermap-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
Diffstat (limited to 'web')
-rw-r--r--web/app/Style.js1
-rw-r--r--web/app/view/ClearableComboBox.js31
-rw-r--r--web/app/view/dialog/Device.js29
-rw-r--r--web/app/view/dialog/Geofence.js4
-rw-r--r--web/app/view/dialog/Group.js30
-rw-r--r--web/app/view/dialog/Server.js11
-rw-r--r--web/app/view/dialog/User.js11
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',