Commit fd3208cf827e22c185542abdc0dc7208b9089c5b

Authored by Dmitriymush
1 parent 65027b9c

2nd part of additions to fix after review

@@ -608,30 +608,30 @@ export default abstract class LeafletMap { @@ -608,30 +608,30 @@ export default abstract class LeafletMap {
608 return polygon; 608 return polygon;
609 } 609 }
610 610
611 - updatePoints(pointsData: FormattedData[][], getTooltip: (point: FormattedData[], setTooltip?: boolean) => string) {  
612 - for(let i = 0; i < pointsData.length; i++) {  
613 - let pointsList = pointsData[i];  
614 - if(i === 0) {  
615 - if (this.points) {  
616 - this.map.removeLayer(this.points);  
617 - }  
618 - this.points = new FeatureGroup(); 611 + updatePoints(pointsData: FormattedData[][], getTooltip: (point: FormattedData) => string) {
  612 + if(pointsData.length) {
  613 + if (this.points) {
  614 + this.map.removeLayer(this.points);
619 } 615 }
  616 + this.points = new FeatureGroup();
  617 + }
  618 + for(let i = 0; i < pointsData.length; i++) {
  619 + const pointsList = pointsData[i];
620 pointsList.filter(pdata => !!this.convertPosition(pdata)).forEach(data => { 620 pointsList.filter(pdata => !!this.convertPosition(pdata)).forEach(data => {
621 const point = L.circleMarker(this.convertPosition(data), { 621 const point = L.circleMarker(this.convertPosition(data), {
622 color: this.options.pointColor, 622 color: this.options.pointColor,
623 radius: this.options.pointSize 623 radius: this.options.pointSize
624 }); 624 });
625 if (!this.options.pointTooltipOnRightPanel) { 625 if (!this.options.pointTooltipOnRightPanel) {
626 - point.on('click', () => getTooltip([data])); 626 + point.on('click', () => getTooltip(data));
627 } else { 627 } else {
628 - createTooltip(point, this.options, data.$datasource, getTooltip([data], false)); 628 + createTooltip(point, this.options, data.$datasource, getTooltip(data));
629 } 629 }
630 this.points.addLayer(point); 630 this.points.addLayer(point);
631 }); 631 });
632 - if(i === (pointsData.length - 1)) {  
633 - this.map.addLayer(this.points);  
634 - } 632 + }
  633 + if(pointsData.length) {
  634 + this.map.addLayer(this.points);
635 } 635 }
636 } 636 }
637 637
@@ -166,8 +166,8 @@ export class TripAnimationComponent implements OnInit, AfterViewInit, OnDestroy @@ -166,8 +166,8 @@ export class TripAnimationComponent implements OnInit, AfterViewInit, OnDestroy
166 currentPosition[j] = this.calculateLastPoints(this.interpolatedTimeData[j], time); 166 currentPosition[j] = this.calculateLastPoints(this.interpolatedTimeData[j], time);
167 } 167 }
168 } 168 }
169 - this.calcLabel(currentPosition);  
170 - this.calcTooltip(currentPosition, true); 169 + this.calcLabel();
  170 + this.calcMainTooltip(currentPosition);
171 if (this.mapWidget && this.mapWidget.map && this.mapWidget.map.map) { 171 if (this.mapWidget && this.mapWidget.map && this.mapWidget.map.map) {
172 const formattedInterpolatedTimeData = this.interpolatedTimeData.map(ds => _.values(ds)); 172 const formattedInterpolatedTimeData = this.interpolatedTimeData.map(ds => _.values(ds));
173 this.mapWidget.map.updatePolylines(formattedInterpolatedTimeData, true); 173 this.mapWidget.map.updatePolylines(formattedInterpolatedTimeData, true);
@@ -221,33 +221,26 @@ export class TripAnimationComponent implements OnInit, AfterViewInit, OnDestroy @@ -221,33 +221,26 @@ export class TripAnimationComponent implements OnInit, AfterViewInit, OnDestroy
221 } 221 }
222 } 222 }
223 223
224 - calcTooltip = (points?: FormattedData[], isMainTooltip: boolean = false): string => {  
225 - let tooltipText;  
226 - if(isMainTooltip) {  
227 - this.mainTooltips = []  
228 - } 224 + calcTooltip = (point: FormattedData): string => {
  225 + const data = point ? point : this.activeTrip;
  226 + const tooltipPattern: string = this.settings.useTooltipFunction ?
  227 + safeExecute(this.settings.tooltipFunction, [data, this.historicalData, point.dsIndex]) : this.settings.tooltipPattern;
  228 + return parseWithTranslation.parseTemplate(tooltipPattern, data, true);
  229 + }
  230 +
  231 + private calcMainTooltip(points: FormattedData[]): void {
  232 + const tooltips = [];
229 for (let point of points) { 233 for (let point of points) {
230 - const data = point ? point : this.activeTrip;  
231 - const tooltipPattern: string = this.settings.useTooltipFunction ?  
232 - safeExecute(this.settings.tooltipFunction, [data, this.historicalData, point.dsIndex]) : this.settings.tooltipPattern;  
233 - tooltipText = parseWithTranslation.parseTemplate(tooltipPattern, data, true);  
234 - if(isMainTooltip) {  
235 - this.mainTooltips.push(this.sanitizer.sanitize(SecurityContext.HTML, tooltipText));  
236 - } 234 + tooltips.push(this.sanitizer.sanitize(SecurityContext.HTML, this.calcTooltip(point)));
237 } 235 }
238 - this.cd.detectChanges();  
239 - return tooltipText; 236 + this.mainTooltips = tooltips;
240 } 237 }
241 238
242 - calcLabel(formattedDataArr: FormattedData[]) {  
243 - let labelToSet = '';  
244 - for (let formattedData of formattedDataArr) {  
245 - const labelText: string = this.settings.useLabelFunction ?  
246 - safeExecute(this.settings.labelFunction, [formattedData, this.historicalData, formattedData.dsIndex]) : this.settings.label;  
247 - const label = (parseWithTranslation.parseTemplate(labelText, formattedData, true));  
248 - labelToSet = labelToSet.length ? labelToSet + ',' + label : label;  
249 - }  
250 - this.label = labelToSet; 239 + calcLabel() {
  240 + const data = this.activeTrip;
  241 + const labelText: string = this.settings.useLabelFunction ?
  242 + safeExecute(this.settings.labelFunction, [data, this.historicalData, data.dsIndex]) : this.settings.label;
  243 + this.label = (parseWithTranslation.parseTemplate(labelText, data, true));
251 } 244 }
252 245
253 interpolateArray(originData: FormattedData[]) { 246 interpolateArray(originData: FormattedData[]) {