diff options
Diffstat (limited to 'web/app')
-rw-r--r-- | web/app/Application.js | 2 | ||||
-rw-r--r-- | web/app/controller/Root.js | 2 | ||||
-rw-r--r-- | web/app/store/AttributeAliases.js (renamed from web/app/store/AllAttributeAliases.js) | 2 | ||||
-rw-r--r-- | web/app/view/AttributeAliases.js (renamed from web/app/view/AttributesAliases.js) | 9 | ||||
-rw-r--r-- | web/app/view/AttributeAliasesController.js (renamed from web/app/view/AttributesAliasesController.js) | 19 | ||||
-rw-r--r-- | web/app/view/SettingsMenu.js | 6 | ||||
-rw-r--r-- | web/app/view/SettingsMenuController.js | 10 | ||||
-rw-r--r-- | web/app/view/StateController.js | 34 |
8 files changed, 49 insertions, 35 deletions
diff --git a/web/app/Application.js b/web/app/Application.js index 0d6430d..aab9bc8 100644 --- a/web/app/Application.js +++ b/web/app/Application.js @@ -61,7 +61,7 @@ Ext.define('Traccar.Application', { 'Notifications', 'AllNotifications', 'GeofenceTypes', - 'AllAttributeAliases', + 'AttributeAliases', 'ReportRoute', 'ReportEvents', 'ReportTrips', diff --git a/web/app/controller/Root.js b/web/app/controller/Root.js index 0784aea..2807cab 100644 --- a/web/app/controller/Root.js +++ b/web/app/controller/Root.js @@ -78,7 +78,7 @@ Ext.define('Traccar.controller.Root', { var attribution; Ext.getStore('Groups').load(); Ext.getStore('Geofences').load(); - Ext.getStore('AllAttributeAliases').load(); + Ext.getStore('AttributeAliases').load(); Ext.getStore('Devices').load({ scope: this, callback: function () { diff --git a/web/app/store/AllAttributeAliases.js b/web/app/store/AttributeAliases.js index c351d0d..ebec8c8 100644 --- a/web/app/store/AllAttributeAliases.js +++ b/web/app/store/AttributeAliases.js @@ -16,7 +16,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -Ext.define('Traccar.store.AllAttributeAliases', { +Ext.define('Traccar.store.AttributeAliases', { extend: 'Ext.data.Store', model: 'Traccar.model.AttributeAlias', diff --git a/web/app/view/AttributesAliases.js b/web/app/view/AttributeAliases.js index 8fcf10b..182a9cd 100644 --- a/web/app/view/AttributesAliases.js +++ b/web/app/view/AttributeAliases.js @@ -16,17 +16,16 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -Ext.define('Traccar.view.AttributesAliases', { +Ext.define('Traccar.view.AttributeAliases', { extend: 'Ext.grid.Panel', - xtype: 'attributesAliasesView', + xtype: 'attributeAliasesView', requires: [ - 'Traccar.view.AttributesAliasesController', + 'Traccar.view.AttributeAliasesController', 'Traccar.view.EditToolbar' ], - controller: 'attributesAliases', - store: 'AllAttributeAliases', + controller: 'attributeAliases', selType: 'rowmodel', diff --git a/web/app/view/AttributesAliasesController.js b/web/app/view/AttributeAliasesController.js index 8f406c4..6135994 100644 --- a/web/app/view/AttributesAliasesController.js +++ b/web/app/view/AttributeAliasesController.js @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -Ext.define('Traccar.view.AttributesAliasesController', { +Ext.define('Traccar.view.AttributeAliasesController', { extend: 'Ext.app.ViewController', - alias: 'controller.attributesAliases', + alias: 'controller.attributeAliases', requires: [ 'Traccar.view.AttributeAliasDialog', @@ -31,13 +31,17 @@ Ext.define('Traccar.view.AttributesAliasesController', { this.lookupReference('toolbarAddButton').setDisabled(true); this.lookupReference('toolbarEditButton').setDisabled(true); this.lookupReference('toolbarRemoveButton').setDisabled(true); + this.getView().setStore(Ext.create('Ext.data.ChainedStore', { + storeId: 'EditorAttributeAliases', + source: 'AttributeAliases' + })); this.getView().getStore().filter('deviceId', 0); }, onAddClick: function () { var attributeAlias, dialog, deviceId; attributeAlias = Ext.create('Traccar.model.AttributeAlias'); - attributeAlias.store = this.getView().getStore(); + attributeAlias.store = Ext.getStore('AttributeAliases'); deviceId = this.lookupReference('deviceField').getValue(); attributeAlias.set('deviceId', deviceId); dialog = Ext.create('Traccar.view.AttributeAliasDialog'); @@ -48,6 +52,7 @@ Ext.define('Traccar.view.AttributesAliasesController', { onEditClick: function () { var attributeAlias, dialog; attributeAlias = this.getView().getSelectionModel().getSelection()[0]; + attributeAlias.store = Ext.getStore('AttributeAliases'); dialog = Ext.create('Traccar.view.AttributeAliasDialog'); dialog.down('form').loadRecord(attributeAlias); dialog.show(); @@ -65,7 +70,7 @@ Ext.define('Traccar.view.AttributesAliasesController', { }, scope: this, fn: function (btn) { - var store = this.getView().getStore(); + var store = Ext.getStore('AttributeAliases'); if (btn === 'yes') { store.remove(attributeAlias); store.sync(); @@ -88,8 +93,10 @@ Ext.define('Traccar.view.AttributesAliasesController', { if (newValue !== null) { this.getView().getStore().filter('deviceId', newValue); if (admin && this.getView().getStore().getCount() === 0) { - this.getView().getStore().getProxy().setExtraParam('deviceId', newValue); - this.getView().getStore().load(); + Ext.getStore('AttributeAliases').getProxy().setExtraParam('deviceId', newValue); + Ext.getStore('AttributeAliases').load({ + addRecords: true + }); } } else { this.getView().getStore().filter('deviceId', 0); diff --git a/web/app/view/SettingsMenu.js b/web/app/view/SettingsMenu.js index 691bf65..391db56 100644 --- a/web/app/view/SettingsMenu.js +++ b/web/app/view/SettingsMenu.js @@ -59,9 +59,9 @@ Ext.define('Traccar.view.SettingsMenu', { reference: 'settingsNotificationsButton' }, { hidden: true, - text: Strings.sharedAttributesAliases, - handler: 'onAttributesAliasesClick', - reference: 'settingsAttributesAliasesButton' + text: Strings.sharedAttributeAliases, + handler: 'onAttributeAliasesClick', + reference: 'settingsAttributeAliasesButton' }, { text: Strings.loginLogout, handler: 'onLogoutClick' diff --git a/web/app/view/SettingsMenuController.js b/web/app/view/SettingsMenuController.js index b01e4f8..ceef8ab 100644 --- a/web/app/view/SettingsMenuController.js +++ b/web/app/view/SettingsMenuController.js @@ -27,7 +27,7 @@ Ext.define('Traccar.view.SettingsMenuController', { 'Traccar.view.Groups', 'Traccar.view.Geofences', 'Traccar.view.Notifications', - 'Traccar.view.AttributesAliases', + 'Traccar.view.AttributeAliases', 'Traccar.view.BaseWindow' ], @@ -43,7 +43,7 @@ Ext.define('Traccar.view.SettingsMenuController', { this.lookupReference('settingsGroupsButton').setHidden(false); this.lookupReference('settingsGeofencesButton').setHidden(false); this.lookupReference('settingsNotificationsButton').setHidden(false); - this.lookupReference('settingsAttributesAliasesButton').setHidden(false); + this.lookupReference('settingsAttributeAliasesButton').setHidden(false); } }, @@ -101,12 +101,12 @@ Ext.define('Traccar.view.SettingsMenuController', { }).show(); }, - onAttributesAliasesClick: function () { + onAttributeAliasesClick: function () { Ext.create('Traccar.view.BaseWindow', { - title: Strings.sharedAttributesAliases, + title: Strings.sharedAttributeAliases, modal: false, items: { - xtype: 'attributesAliasesView' + xtype: 'attributeAliasesView' } }).show(); }, diff --git a/web/app/view/StateController.js b/web/app/view/StateController.js index c0f5b9a..8a19494 100644 --- a/web/app/view/StateController.js +++ b/web/app/view/StateController.js @@ -44,7 +44,7 @@ Ext.define('Traccar.view.StateController', { '#Positions': { clear: 'clearReport' }, - '#AllAttributeAliases': { + '#AttributeAliases': { add: 'updateAliases', update: 'updateAliases' } @@ -52,6 +52,10 @@ Ext.define('Traccar.view.StateController', { } }, + init: function () { + this.aliasesStore = Ext.getStore('AttributeAliases'); + }, + keys: (function () { var i, list, result; result = {}; @@ -88,8 +92,12 @@ Ext.define('Traccar.view.StateController', { } }, + findAttribute: function (record) { + return record.get('deviceId') === this.position.get('deviceId') && record.get('attribute') === this.lookupAttribute; + }, + updatePosition: function () { - var attributes, store, key, aliasesStore, attributeAlias, name; + var attributes, store, key, aliasIndex, name; store = Ext.getStore('Attributes'); store.removeAll(); @@ -103,16 +111,14 @@ Ext.define('Traccar.view.StateController', { } } - aliasesStore = Ext.getStore('AllAttributeAliases'); - aliasesStore.filter('deviceId', this.position.get('deviceId')); - attributes = this.position.get('attributes'); if (attributes instanceof Object) { for (key in attributes) { if (attributes.hasOwnProperty(key)) { - attributeAlias = aliasesStore.findRecord('attribute', key, 0, false, true, true); - if (attributeAlias !== null) { - name = attributeAlias.get('alias'); + this.lookupAttribute = key; + aliasIndex = this.aliasesStore.findBy(this.findAttribute, this); + if (aliasIndex !== -1) { + name = this.aliasesStore.getAt(aliasIndex).get('alias'); } else { name = key.replace(/^./, function (match) { return match.toUpperCase(); @@ -159,16 +165,18 @@ Ext.define('Traccar.view.StateController', { }, onAliasEditClick: function () { - var attribute, aliasesStore, attributeAlias, dialog; + var attribute, aliasIndex, attributeAlias, dialog; attribute = this.getView().getSelectionModel().getSelection()[0]; - aliasesStore = Ext.getStore('AllAttributeAliases'); - attributeAlias = aliasesStore.findRecord('attribute', attribute.get('attribute'), 0, false, true, true); - if (attributeAlias === null) { + this.lookupAttribute = attribute.get('attribute'); + aliasIndex = this.aliasesStore.findBy(this.findAttribute, this); + if (aliasIndex !== -1) { + attributeAlias = this.aliasesStore.getAt(aliasIndex); + } else { attributeAlias = Ext.create('Traccar.model.AttributeAlias', { deviceId: this.position.get('deviceId'), attribute: attribute.get('attribute') }); - attributeAlias.store = aliasesStore; + attributeAlias.store = this.aliasesStore; } dialog = Ext.create('Traccar.view.AttributeAliasDialog'); dialog.down('form').loadRecord(attributeAlias); |