diff options
Diffstat (limited to 'web/app/view')
-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 |
5 files changed, 46 insertions, 32 deletions
diff --git a/web/app/view/AttributesAliases.js b/web/app/view/AttributeAliases.js index 8fcf10bb..182a9cdd 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 8f406c42..6135994e 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 691bf65b..391db56f 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 b01e4f81..ceef8aba 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 c0f5b9a1..8a194940 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); |