aboutsummaryrefslogtreecommitdiff
path: root/web/app
diff options
context:
space:
mode:
Diffstat (limited to 'web/app')
-rw-r--r--web/app/Application.js1
-rw-r--r--web/app/store/DevicesTree.js100
-rw-r--r--web/app/view/Devices.js11
-rw-r--r--web/app/view/DevicesController.js49
4 files changed, 102 insertions, 59 deletions
diff --git a/web/app/Application.js b/web/app/Application.js
index 69ce8f891..3e3da0569 100644
--- a/web/app/Application.js
+++ b/web/app/Application.js
@@ -36,6 +36,7 @@ Ext.define('Traccar.Application', {
stores: [
'Groups',
'Devices',
+ 'DevicesTree',
'AllGroups',
'AllDevices',
'Positions',
diff --git a/web/app/store/DevicesTree.js b/web/app/store/DevicesTree.js
new file mode 100644
index 000000000..eaf451a3e
--- /dev/null
+++ b/web/app/store/DevicesTree.js
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+Ext.define('Traccar.store.DevicesTree', {
+ extend: 'Ext.data.TreeStore',
+
+ parentIdProperty: 'groupId',
+
+ proxy: {
+ type: 'memory',
+ reader: {
+ type: 'json'
+ }
+ },
+
+ constructor: function () {
+ this.callParent(arguments);
+
+ Ext.getStore('Groups').on({
+ scope: this,
+ load: this.onGroupLoad,
+ update: this.onGroupUpdate
+ });
+
+ Ext.getStore('Devices').on({
+ scope: this,
+ load: this.onDeviceLoad,
+ update: this.onDeviceUpdate
+ });
+ },
+
+ reloadData: function () {
+ var groupsStore, devicesStore, nodes = [];
+ groupsStore = Ext.getStore('Groups');
+ devicesStore = Ext.getStore('Devices');
+
+ groupsStore.each(function (record) {
+ var groupId, node = {
+ id: 'g' + record.get('id'),
+ original: record,
+ name: record.get('name'),
+ leaf: true
+ };
+ groupId = record.get('groupId');
+ if (groupId !== 0 && groupsStore.indexOfId(groupId) !== -1) {
+ node.groupId = 'g' + groupId;
+ }
+ nodes.push(node);
+ }, this);
+ devicesStore.each(function (record) {
+ var groupId, node = {
+ id: 'd' + record.get('id'),
+ original: record,
+ name: record.get('name'),
+ status: record.get('status'),
+ lastUpdate: record.get('lastUpdate'),
+ leaf: true
+ };
+ groupId = record.get('groupId');
+ if (groupId !== 0 && groupsStore.indexOfId(groupId) !== -1) {
+ node.groupId = 'g' + groupId;
+ }
+ nodes.push(node);
+ }, this);
+
+ this.getProxy().setData(nodes);
+ this.load();
+ },
+
+ onGroupLoad: function () {
+ console.log('onGroupLoad');
+ this.reloadData();
+ },
+
+ onDeviceLoad: function () {
+ console.log('onDeviceLoad');
+ this.reloadData();
+ },
+
+ onGroupUpdate: function () {
+ console.log('onGroupUpdate');
+ },
+
+ onDeviceUpdate: function () {
+ console.log('onDeviceUpdate');
+ }
+});
diff --git a/web/app/view/Devices.js b/web/app/view/Devices.js
index d1d799944..70e11aab5 100644
--- a/web/app/view/Devices.js
+++ b/web/app/view/Devices.js
@@ -26,16 +26,7 @@ Ext.define('Traccar.view.Devices', {
controller: 'devices',
rootVisible: false,
- store: {
- type: 'tree',
- parentIdProperty: 'groupId',
- proxy: {
- type: 'memory',
- reader: {
- type: 'json'
- }
- }
- },
+ store: 'DevicesTree',
title: Strings.deviceTitle,
selType: 'rowmodel',
diff --git a/web/app/view/DevicesController.js b/web/app/view/DevicesController.js
index d45fd50a8..864e3f2aa 100644
--- a/web/app/view/DevicesController.js
+++ b/web/app/view/DevicesController.js
@@ -30,59 +30,10 @@ Ext.define('Traccar.view.DevicesController', {
selectDevice: 'selectDevice',
selectReport: 'selectReport'
}
- },
- store: {
- '#Groups': {
- datachanged: 'storeUpdate',
- update: 'storeUpdate'
- },
- '#Devices': {
- datachanged: 'storeUpdate',
- update: 'storeUpdate'
- }
}
}
},
- storeUpdate: function () {
- var groupsStore, devicesStore, nodes = [];
- groupsStore = Ext.getStore('Groups');
- devicesStore = Ext.getStore('Devices');
-
- groupsStore.each(function (record) {
- var groupId, node = {
- id: 'g' + record.get('id'),
- original: record,
- name: record.get('name'),
- leaf: true
- };
- groupId = record.get('groupId');
- if (groupId !== 0 && groupsStore.indexOfId(groupId) !== -1) {
- node.groupId = 'g' + groupId;
- }
- nodes.push(node);
- }, this);
- devicesStore.each(function (record) {
- var groupId, node = {
- id: 'd' + record.get('id'),
- original: record,
- name: record.get('name'),
- status: record.get('status'),
- lastUpdate: record.get('lastUpdate'),
- leaf: true
- };
- groupId = record.get('groupId');
- if (groupId !== 0 && groupsStore.indexOfId(groupId) !== -1) {
- node.groupId = 'g' + groupId;
- }
- nodes.push(node);
- }, this);
-
- this.getView().getStore().getProxy().setData(nodes);
- this.getView().getStore().load();
- this.getView().expandAll();
- },
-
init: function () {
var readonly = Traccar.app.getServer().get('readonly') && !Traccar.app.getUser().get('admin');
this.lookupReference('toolbarAddButton').setVisible(!readonly);