aboutsummaryrefslogtreecommitdiff
path: root/web/app/view
diff options
context:
space:
mode:
Diffstat (limited to 'web/app/view')
-rw-r--r--web/app/view/MapMarkerController.js52
-rw-r--r--web/app/view/ReportController.js57
2 files changed, 82 insertions, 27 deletions
diff --git a/web/app/view/MapMarkerController.js b/web/app/view/MapMarkerController.js
index 4ef55bbe..97e75925 100644
--- a/web/app/view/MapMarkerController.js
+++ b/web/app/view/MapMarkerController.js
@@ -45,6 +45,7 @@ Ext.define('Traccar.view.MapMarkerController', {
update: 'updateLatest'
},
'#ReportRoute': {
+ add: 'addReportMarkers',
load: 'loadReport',
clear: 'clearReport'
}
@@ -197,13 +198,18 @@ Ext.define('Traccar.view.MapMarkerController', {
},
loadReport: function (store, data) {
- var i, position, point, geometry, marker, style;
+ var i, position, point;
- this.clearReport(store);
+ this.addReportMarkers(store, data);
if (data.length > 0) {
this.reportRoute = [];
for (i = 0; i < data.length; i++) {
+ position = data[i];
+ point = ol.proj.fromLonLat([
+ position.get('longitude'),
+ position.get('latitude')
+ ]);
if (i === 0 || data[i].get('deviceId') !== data[i - 1].get('deviceId')) {
this.reportRoute.push(new ol.Feature({
geometry: new ol.geom.LineString([])
@@ -211,25 +217,6 @@ Ext.define('Traccar.view.MapMarkerController', {
this.reportRoute[this.reportRoute.length - 1].setStyle(this.getRouteStyle(data[i].get('deviceId')));
this.getView().getRouteSource().addFeature(this.reportRoute[this.reportRoute.length - 1]);
}
- position = data[i];
-
- point = ol.proj.fromLonLat([
- position.get('longitude'),
- position.get('latitude')
- ]);
- geometry = new ol.geom.Point(point);
-
- marker = new ol.Feature(geometry);
- marker.set('record', position);
- this.reportMarkers[position.get('id')] = marker;
- this.getView().getReportSource().addFeature(marker);
-
- style = this.getReportMarker(position.get('deviceId'), position.get('course'));
- /*style.getText().setText(
- Ext.Date.format(position.get('fixTime'), Traccar.Style.dateTimeFormat24));*/
-
- marker.setStyle(style);
-
this.reportRoute[this.reportRoute.length - 1].getGeometry().appendCoordinate(point);
}
@@ -237,7 +224,28 @@ Ext.define('Traccar.view.MapMarkerController', {
}
},
- clearReport: function (store) {
+ addReportMarkers: function (store, data) {
+ var i, position, point, geometry, marker, style;
+ this.clearReport();
+ for (i = 0; i < data.length; i++) {
+ position = data[i];
+ point = ol.proj.fromLonLat([
+ position.get('longitude'),
+ position.get('latitude')
+ ]);
+ geometry = new ol.geom.Point(point);
+ marker = new ol.Feature(geometry);
+ marker.set('record', position);
+ style = this.getReportMarker(position.get('deviceId'), position.get('course'));
+ /*style.getText().setText(
+ Ext.Date.format(position.get('fixTime'), Traccar.Style.dateTimeFormat24));*/
+ marker.setStyle(style);
+ this.reportMarkers[position.get('id')] = marker;
+ this.getView().getReportSource().addFeature(marker);
+ }
+ },
+
+ clearReport: function () {
var key, i;
if (this.reportRoute) {
diff --git a/web/app/view/ReportController.js b/web/app/view/ReportController.js
index 8f8cf741..f8a01bc6 100644
--- a/web/app/view/ReportController.js
+++ b/web/app/view/ReportController.js
@@ -37,6 +37,11 @@ Ext.define('Traccar.view.ReportController', {
'map': {
selectreport: 'selectReport'
}
+ },
+ store: {
+ '#ReportEvents': {
+ load: 'loadEvents'
+ }
}
}
},
@@ -126,7 +131,7 @@ Ext.define('Traccar.view.ReportController', {
clearReport: function (reportType) {
this.getView().getStore().removeAll();
- if (reportType === 'trips') {
+ if (reportType === 'trips' || reportType === 'events') {
Ext.getStore('ReportRoute').removeAll();
}
},
@@ -139,6 +144,9 @@ Ext.define('Traccar.view.ReportController', {
if (report instanceof Traccar.model.ReportTrip) {
this.selectTrip(report);
}
+ if (report instanceof Traccar.model.Event) {
+ this.selectEvent(report);
+ }
}
},
@@ -149,10 +157,16 @@ Ext.define('Traccar.view.ReportController', {
},
selectReport: function (object, center) {
- var reportType = this.lookupReference('reportTypeField').getValue();
- if (object instanceof Traccar.model.Position && reportType === 'route') {
- this.getView().getSelectionModel().select([object], false, true);
- this.getView().getView().focusRow(object);
+ var positionEvent, reportType = this.lookupReference('reportTypeField').getValue();
+ if (object instanceof Traccar.model.Position) {
+ if (reportType === 'route') {
+ this.getView().getSelectionModel().select([object], false, true);
+ this.getView().getView().focusRow(object);
+ } else if (reportType === 'events') {
+ positionEvent = this.getView().getStore().findRecord('positionId', object.get('id'), 0, false, true, true);
+ this.getView().getSelectionModel().select([positionEvent], false, true);
+ this.getView().getView().focusRow(positionEvent);
+ }
}
},
@@ -170,6 +184,39 @@ Ext.define('Traccar.view.ReportController', {
});
},
+ selectEvent: function (event) {
+ var position;
+ if (event.get('positionId')) {
+ position = Ext.getStore('ReportRoute').getById(event.get('positionId'));
+ if (position) {
+ this.fireEvent('selectreport', position, true);
+ }
+ }
+ },
+
+ loadEvents: function (store, data) {
+ var i, eventObject, positionIds = [];
+ Ext.getStore('ReportRoute').removeAll();
+ for (i = 0; i < data.length; i++) {
+ eventObject = data[i];
+ if (eventObject.get('positionId')) {
+ positionIds.push(eventObject.get('positionId'));
+ }
+ }
+ if (positionIds.length > 0) {
+ Ext.getStore('Positions').load({
+ params: {
+ id: positionIds
+ },
+ callback: function (records, operation, success) {
+ if (success) {
+ Ext.getStore('ReportRoute').add(records);
+ }
+ }
+ });
+ }
+ },
+
downloadFile: function (requestUrl, requestParams) {
Ext.Ajax.request({
url: requestUrl,