aboutsummaryrefslogtreecommitdiff
path: root/web/app/view
diff options
context:
space:
mode:
authorAshutosh Bishnoi <mail2bishnoi@gmail.com>2020-11-10 13:02:20 +0530
committerAshutosh Bishnoi <mail2bishnoi@gmail.com>2020-11-10 13:02:20 +0530
commita948981184f4f2884b7a35b67b2389ddcd1f52a8 (patch)
tree9187834b5246734da8549735f64d2e5546c60e1e /web/app/view
parent5a116350b3e402ef123a75451737c268a9ebddff (diff)
parent1af1545dc7ba3cfdf73a58031b37bea0ecff2e54 (diff)
downloadetbsa-traccar-web-a948981184f4f2884b7a35b67b2389ddcd1f52a8.tar.gz
etbsa-traccar-web-a948981184f4f2884b7a35b67b2389ddcd1f52a8.tar.bz2
etbsa-traccar-web-a948981184f4f2884b7a35b67b2389ddcd1f52a8.zip
Resolving conflicts with master
Diffstat (limited to 'web/app/view')
-rw-r--r--web/app/view/map/GeofenceMap.js20
-rw-r--r--web/app/view/map/GeofenceMapController.js26
2 files changed, 46 insertions, 0 deletions
diff --git a/web/app/view/map/GeofenceMap.js b/web/app/view/map/GeofenceMap.js
index 8cef574..18c3386 100644
--- a/web/app/view/map/GeofenceMap.js
+++ b/web/app/view/map/GeofenceMap.js
@@ -37,6 +37,26 @@ Ext.define('Traccar.view.map.GeofenceMap', {
listeners: {
select: 'onTypeSelect'
}
+ }, '-', {
+ xtype: 'tbtext',
+ html: Strings.sharedImport
+ }, {
+ xtype: 'filefield',
+ name: 'file',
+ buttonConfig: {
+ glyph: 'xf093@FontAwesome',
+ text: '',
+ tooltip: Strings.sharedSelectFile,
+ tooltipType: 'title'
+ },
+ listeners: {
+ change: 'onFileChange',
+ afterrender: function (fileField) {
+ fileField.fileInputEl.set({
+ accept: '.gpx'
+ });
+ }
+ }
}, {
xtype: 'tbfill'
}, {
diff --git a/web/app/view/map/GeofenceMapController.js b/web/app/view/map/GeofenceMapController.js
index f075ac9..31ab586 100644
--- a/web/app/view/map/GeofenceMapController.js
+++ b/web/app/view/map/GeofenceMapController.js
@@ -33,6 +33,32 @@ Ext.define('Traccar.view.map.GeofenceMapController', {
}
},
+ onFileChange: function (fileField) {
+ var reader, view = this.getView();
+ if (fileField.fileInputEl.dom.files.length > 0) {
+ reader = new FileReader();
+ reader.onload = function () {
+ var parser, xml, segment, projection, points = [];
+ parser = new DOMParser();
+ xml = parser.parseFromString(reader.result, 'text/xml');
+ segment = xml.getElementsByTagName('trkseg')[0];
+ projection = view.mapView.getProjection();
+ Array.from(segment.getElementsByTagName('trkpt')).forEach(function (point) {
+ var lat, lon;
+ lat = Number(point.getAttribute('lat'));
+ lon = Number(point.getAttribute('lon'));
+ points.push(ol.proj.transform([lon, lat], 'EPSG:4326', projection));
+ });
+ view.getFeatures().clear();
+ view.getFeatures().push(new ol.Feature(new ol.geom.LineString(points)));
+ };
+ reader.onerror = function (event) {
+ Traccar.app.showError(event.target.error);
+ };
+ reader.readAsText(fileField.fileInputEl.dom.files[0]);
+ }
+ },
+
onSaveClick: function (button) {
var geometry, projection;
if (this.getView().getFeatures().getLength() > 0) {