aboutsummaryrefslogtreecommitdiff
path: root/web/app
diff options
context:
space:
mode:
Diffstat (limited to 'web/app')
-rw-r--r--web/app/Application.js2
-rw-r--r--web/app/controller/Root.js2
-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.js6
-rw-r--r--web/app/view/SettingsMenuController.js10
-rw-r--r--web/app/view/StateController.js34
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);