aboutsummaryrefslogtreecommitdiff
path: root/web/app/view/Devices.js
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2017-03-24 19:14:04 +1300
committerGitHub <noreply@github.com>2017-03-24 19:14:04 +1300
commit49eebb3a0d11e3c4d6f6951312e44bf65ce02906 (patch)
tree497060d92985b6dbfdcfa5401882c93e6b140a9e /web/app/view/Devices.js
parent0df9dc40451708f3f3904ba4c69a7e34ecc8e5be (diff)
parente5cda1b3e0a4735abd512652b5df30331ad6782e (diff)
downloadtrackermap-web-49eebb3a0d11e3c4d6f6951312e44bf65ce02906.tar.gz
trackermap-web-49eebb3a0d11e3c4d6f6951312e44bf65ce02906.tar.bz2
trackermap-web-49eebb3a0d11e3c4d6f6951312e44bf65ce02906.zip
Merge pull request #445 from Abyss777/filter_devices
Implement extended device filtering
Diffstat (limited to 'web/app/view/Devices.js')
-rw-r--r--web/app/view/Devices.js135
1 files changed, 53 insertions, 82 deletions
diff --git a/web/app/view/Devices.js b/web/app/view/Devices.js
index 645b8e7f..eee214ee 100644
--- a/web/app/view/Devices.js
+++ b/web/app/view/Devices.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 - 2016 Anton Tananaev (anton@traccar.org)
+ * Copyright 2015 - 2017 Anton Tananaev (anton@traccar.org)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -20,20 +20,19 @@ Ext.define('Traccar.view.Devices', {
xtype: 'devicesView',
requires: [
+ 'Ext.grid.filters.Filters',
'Traccar.view.DevicesController',
'Traccar.view.EditToolbar'
],
controller: 'devices',
- rootVisible: false,
- initComponent: function () {
- this.store = Ext.create('Ext.data.ChainedStore', {
- source: 'Devices',
- groupField: 'groupId'
- });
- this.callParent();
- },
+ plugins: 'gridfilters',
+
+ store: 'VisibleDevices',
+
+ stateful: true,
+ stateId: 'devices-grid',
tbar: {
componentCls: 'toolbar-header-style',
@@ -85,79 +84,25 @@ Ext.define('Traccar.view.Devices', {
}]
},
- bbar: [{
- xtype: 'tbtext',
- html: Strings.groupParent
- }, {
- xtype: 'combobox',
- store: 'Groups',
- queryMode: 'local',
- displayField: 'name',
- valueField: 'id',
- flex: 1,
- listeners: {
- change: function () {
- if (Ext.isNumber(this.getValue())) {
- this.up('grid').store.filter({
- id: 'groupFilter',
- filterFn: function (item) {
- var groupId, group, groupStore, filter = true;
- groupId = item.get('groupId');
- groupStore = Ext.getStore('Groups');
-
- while (groupId) {
- group = groupStore.getById(groupId);
- if (group) {
- if (group.get('id') === this.getValue()) {
- filter = false;
- break;
- }
- groupId = group.get('groupId');
- } else {
- groupId = 0;
- }
- }
-
- return !filter;
- },
- scope: this
- });
- } else {
- this.up('grid').store.removeFilter('groupFilter');
- }
- }
- }
- }, {
- xtype: 'tbtext',
- html: Strings.sharedSearch
- }, {
- xtype: 'textfield',
- flex: 1,
- listeners: {
- change: function () {
- this.up('grid').store.filter('name', this.getValue());
- }
- }
- }],
-
listeners: {
selectionchange: 'onSelectionChange'
},
columns: {
defaults: {
- flex: 1,
+ flex: 2,
minWidth: Traccar.Style.columnWidthNormal
},
items: [{
text: Strings.sharedName,
- dataIndex: 'name'
+ dataIndex: 'name',
+ filter: 'string'
}, {
text: Strings.deviceIdentifier,
dataIndex: 'uniqueId',
hidden: true
}, {
- text: Strings.devicePhone,
+ text: Strings.sharedPhone,
dataIndex: 'phone',
hidden: true
}, {
@@ -169,24 +114,50 @@ Ext.define('Traccar.view.Devices', {
dataIndex: 'contact',
hidden: true
}, {
+ text: Strings.groupDialog,
+ dataIndex: 'groupId',
+ hidden: true,
+ filter: {
+ type: 'list',
+ labelField: 'name',
+ store: 'Groups'
+ },
+ renderer: function (value) {
+ var group;
+ if (value !== 0) {
+ group = Ext.getStore('Groups').getById(value);
+ return group ? group.get('name') : value;
+ }
+ }
+ }, {
text: Strings.deviceLastUpdate,
dataIndex: 'lastUpdate',
- renderer: function (value, metaData, record) {
- switch (record.get('status')) {
- case 'online':
- metaData.tdCls = 'view-color-green';
- break;
- case 'offline':
- metaData.tdCls = 'view-color-red';
- break;
- default:
- metaData.tdCls = 'view-color-yellow';
- break;
+ renderer: function (value) {
+ if (value) {
+ if (Traccar.app.getPreference('twelveHourFormat', false)) {
+ return Ext.Date.format(value, Traccar.Style.dateTimeFormat12);
+ } else {
+ return Ext.Date.format(value, Traccar.Style.dateTimeFormat24);
+ }
}
- if (Traccar.app.getPreference('twelveHourFormat', false)) {
- return Ext.Date.format(value, Traccar.Style.dateTimeFormat12);
- } else {
- return Ext.Date.format(value, Traccar.Style.dateTimeFormat24);
+ }
+ }, {
+ text: Strings.deviceStatus,
+ dataIndex: 'status',
+ flex: 1,
+ filter: {
+ type: 'list',
+ labelField: 'name',
+ store: 'DeviceStatuses'
+ },
+ renderer: function (value, metaData) {
+ var status;
+ if (value) {
+ status = Ext.getStore('DeviceStatuses').getById(value);
+ if (status) {
+ metaData.tdCls = status.get('color');
+ return status.get('name');
+ }
}
}
}]