From 2ce963de47d1818b8435602a19ec494bb1475fa4 Mon Sep 17 00:00:00 2001 From: NatureFreshMilk Date: Mon, 17 Jun 2019 07:41:48 +0200 Subject: [PATCH] train markers --- static/js/overlays/TrainOverlay.js | 79 +++++++++++++++--------------- 1 file changed, 40 insertions(+), 39 deletions(-) diff --git a/static/js/overlays/TrainOverlay.js b/static/js/overlays/TrainOverlay.js index ddd94aa..7022336 100644 --- a/static/js/overlays/TrainOverlay.js +++ b/static/js/overlays/TrainOverlay.js @@ -48,6 +48,24 @@ export default L.LayerGroup.extend({ }.bind(this)); }, + createPopup: function(train){ + var html = "Train
"; + + html += "Name: " + train.text_outside + "
"; + html += "Line: " + train.line + "
"; + html += "Velocity: "+ Math.floor(train.velocity*10)/10 + "
"; + + if (train.wagons){ + html += "Composition: "; + train.wagons.forEach(function(w){ + var iconUrl = getTrainImageUrlForType(w.type); + html += ""; + }); + } + + return html; + }, + createMarker: function(train){ //search for wagin in front (whatever "front" is...) @@ -71,22 +89,7 @@ export default L.LayerGroup.extend({ }); var marker = L.marker([train.pos.z, train.pos.x], {icon: Icon}); - - var html = "Train
"; - - html += "Name: " + train.text_outside + "
"; - html += "Line: " + train.line + "
"; - html += "Velocity: "+ Math.floor(train.velocity*10)/10 + "
"; - - if (train.wagons){ - html += "Composition: "; - train.wagons.forEach(function(w){ - var iconUrl = getTrainImageUrlForType(w.type); - html += ""; - }); - } - - marker.bindPopup(html); + marker.bindPopup(this.createPopup(train)); return marker; }, @@ -99,65 +102,63 @@ export default L.LayerGroup.extend({ onMinetestUpdate: function(/*info*/){ - var self = this; - - this.trains.forEach(function(train){ - var isInLayer = self.isTrainInCurrentLayer(train); + this.trains.forEach(train => { + var isInLayer = this.isTrainInCurrentLayer(train); if (!isInLayer){ - if (self.currentObjects[train.id]){ + if (this.currentObjects[train.id]){ //train is displayed and not on the layer anymore //Remove the marker and reference - self.currentObjects[train.id].remove(); - delete self.currentObjects[train.id]; + this.currentObjects[train.id].remove(); + delete this.currentObjects[train.id]; } return; } - if (self.currentObjects[train.id]){ + if (this.currentObjects[train.id]){ //marker exists - self.currentObjects[train.id].setLatLng([train.pos.z, train.pos.x]); - //setPopupContent + let marker = this.currentObjects[train.id]; + marker.setLatLng([train.pos.z, train.pos.x]); + marker.setPopupContent(this.createPopup(train)); } else { //marker does not exist - var marker = self.createMarker(train); - marker.addTo(self); + let marker = this.createMarker(train); + marker.addTo(this); - self.currentObjects[train.id] = marker; + this.currentObjects[train.id] = marker; } }); - Object.keys(self.currentObjects).forEach(function(existingId){ - var trainIsActive = self.trains.find(function(t){ + Object.keys(this.currentObjects).forEach(existingId => { + var trainIsActive = this.trains.find(function(t){ return t.id == existingId; }); if (!trainIsActive){ //train - self.currentObjects[existingId].remove(); - delete self.currentObjects[existingId]; + this.currentObjects[existingId].remove(); + delete this.currentObjects[existingId]; } }); }, reDraw: function(){ - var self = this; this.currentObjects = {}; this.clearLayers(); var mapLayer = this.layerMgr.getCurrentLayer(); - this.trains.forEach(function(train){ - if (!self.isTrainInCurrentLayer(train)){ + this.trains.forEach(train => { + if (!this.isTrainInCurrentLayer(train)){ //not in current layer return; } - var marker = self.createMarker(train); - marker.addTo(self); - self.currentObjects[train.id] = marker; + var marker = this.createMarker(train); + marker.addTo(this); + this.currentObjects[train.id] = marker; }); },