aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--web/app/view/MapController.js9
-rw-r--r--web/app/view/ReportController.js27
-rw-r--r--web/app/view/StateController.js9
3 files changed, 40 insertions, 5 deletions
diff --git a/web/app/view/MapController.js b/web/app/view/MapController.js
index ac2188ef..59fd285e 100644
--- a/web/app/view/MapController.js
+++ b/web/app/view/MapController.js
@@ -19,6 +19,11 @@ Ext.define('Traccar.view.MapController', {
extend: 'Ext.app.ViewController',
alias: 'controller.map',
+ requires: [
+ 'Traccar.model.Position',
+ 'Traccar.model.Device'
+ ],
+
config: {
listen: {
controller: {
@@ -294,7 +299,9 @@ Ext.define('Traccar.view.MapController', {
},
selectReport: function (position, center) {
- this.selectMarker(this.reportMarkers[position.get('id')], center);
+ if (position instanceof Traccar.model.Position) {
+ this.selectMarker(this.reportMarkers[position.get('id')], center);
+ }
},
selectFeature: function (feature) {
diff --git a/web/app/view/ReportController.js b/web/app/view/ReportController.js
index 8e1aa711..fefa88a8 100644
--- a/web/app/view/ReportController.js
+++ b/web/app/view/ReportController.js
@@ -22,6 +22,8 @@ Ext.define('Traccar.view.ReportController', {
requires: [
'Traccar.AttributeFormatter',
+ 'Traccar.model.Position',
+ 'Traccar.model.ReportTrip',
'Traccar.view.ReportConfigDialog',
'Traccar.store.ReportEventTypes'
],
@@ -112,7 +114,15 @@ Ext.define('Traccar.view.ReportController', {
},
onClearClick: function () {
+ var reportType = this.lookupReference('reportTypeField').getValue();
+ this.clearReport(reportType);
+ },
+
+ clearReport: function (reportType) {
this.getView().getStore().removeAll();
+ if (reportType === 'trips') {
+ Ext.getStore('ReportRoute').removeAll();
+ }
},
onSelectionChange: function (selected) {
@@ -130,9 +140,24 @@ Ext.define('Traccar.view.ReportController', {
selectReport: function (position, center) {
if (position instanceof Traccar.model.Position) {
this.getView().getSelectionModel().select([position], false, true);
+ } else if (position instanceof Traccar.model.ReportTrip) {
+ this.selectTrip(position);
}
},
+ selectTrip: function (trip) {
+ var from, to;
+ from = new Date(trip.get('startTime'));
+ to = new Date(trip.get('endTime'));
+ Ext.getStore('ReportRoute').load({
+ params: {
+ deviceId: trip.get('deviceId'),
+ from: from.toISOString(),
+ to: to.toISOString()
+ }
+ });
+ },
+
downloadCsv: function (requestUrl, requestParams) {
Ext.Ajax.request({
url: requestUrl,
@@ -170,7 +195,7 @@ Ext.define('Traccar.view.ReportController', {
onTypeChange: function (combobox, newValue, oldValue) {
if (oldValue !== null) {
- this.onClearClick();
+ this.clearReport(oldValue);
}
if (newValue === 'route') {
diff --git a/web/app/view/StateController.js b/web/app/view/StateController.js
index 8a194940..b0188081 100644
--- a/web/app/view/StateController.js
+++ b/web/app/view/StateController.js
@@ -23,6 +23,7 @@ Ext.define('Traccar.view.StateController', {
'Traccar.AttributeFormatter',
'Traccar.model.Attribute',
'Traccar.model.AttributeAlias',
+ 'Traccar.model.Position',
'Traccar.view.AttributeAliasDialog'
],
@@ -149,9 +150,11 @@ Ext.define('Traccar.view.StateController', {
},
selectReport: function (position) {
- this.deviceId = null;
- this.position = position;
- this.updatePosition();
+ if (position instanceof Traccar.model.Position) {
+ this.deviceId = null;
+ this.position = position;
+ this.updatePosition();
+ }
},
clearReport: function (store) {