aboutsummaryrefslogtreecommitdiff
path: root/web/app/store
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2016-04-07 17:05:08 +1200
committerAnton Tananaev <anton.tananaev@gmail.com>2016-04-07 17:05:08 +1200
commitff266d342ae3c6922005f043470ef659447882b5 (patch)
tree589e5a45d9e9e91f6a49dde924b4f1f595db6513 /web/app/store
parent03844562307a8ed156d60a9d06c239c4d3092ea2 (diff)
downloadtrackermap-server-ff266d342ae3c6922005f043470ef659447882b5.tar.gz
trackermap-server-ff266d342ae3c6922005f043470ef659447882b5.tar.bz2
trackermap-server-ff266d342ae3c6922005f043470ef659447882b5.zip
Create separate class for tree store
Diffstat (limited to 'web/app/store')
-rw-r--r--web/app/store/DevicesTree.js100
1 files changed, 100 insertions, 0 deletions
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');
+ }
+});