Showing
10 changed files
with
84 additions
and
70 deletions
@@ -1816,8 +1816,7 @@ | @@ -1816,8 +1816,7 @@ | ||
1816 | "@types/geojson": { | 1816 | "@types/geojson": { |
1817 | "version": "7946.0.7", | 1817 | "version": "7946.0.7", |
1818 | "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz", | 1818 | "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz", |
1819 | - "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==", | ||
1820 | - "dev": true | 1819 | + "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==" |
1821 | }, | 1820 | }, |
1822 | "@types/glob": { | 1821 | "@types/glob": { |
1823 | "version": "7.1.1", | 1822 | "version": "7.1.1", |
@@ -1881,11 +1880,18 @@ | @@ -1881,11 +1880,18 @@ | ||
1881 | "version": "1.5.12", | 1880 | "version": "1.5.12", |
1882 | "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.5.12.tgz", | 1881 | "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.5.12.tgz", |
1883 | "integrity": "sha512-61HRMIng+bWvnnAIqUWLBlrd/TQZc4gU+gN1JL4K47EDtwIrcMEhWgi7PdcpbG1YmpH4F0EfOimkvV82gJIl9w==", | 1882 | "integrity": "sha512-61HRMIng+bWvnnAIqUWLBlrd/TQZc4gU+gN1JL4K47EDtwIrcMEhWgi7PdcpbG1YmpH4F0EfOimkvV82gJIl9w==", |
1884 | - "dev": true, | ||
1885 | "requires": { | 1883 | "requires": { |
1886 | "@types/geojson": "*" | 1884 | "@types/geojson": "*" |
1887 | } | 1885 | } |
1888 | }, | 1886 | }, |
1887 | + "@types/leaflet-markercluster": { | ||
1888 | + "version": "1.0.3", | ||
1889 | + "resolved": "https://registry.npmjs.org/@types/leaflet-markercluster/-/leaflet-markercluster-1.0.3.tgz", | ||
1890 | + "integrity": "sha1-ZBUb5FP2SQ6HUVAEgt65YQZOeCw=", | ||
1891 | + "requires": { | ||
1892 | + "@types/leaflet": "*" | ||
1893 | + } | ||
1894 | + }, | ||
1889 | "@types/leaflet-polylinedecorator": { | 1895 | "@types/leaflet-polylinedecorator": { |
1890 | "version": "1.6.0", | 1896 | "version": "1.6.0", |
1891 | "resolved": "https://registry.npmjs.org/@types/leaflet-polylinedecorator/-/leaflet-polylinedecorator-1.6.0.tgz", | 1897 | "resolved": "https://registry.npmjs.org/@types/leaflet-polylinedecorator/-/leaflet-polylinedecorator-1.6.0.tgz", |
@@ -7670,9 +7676,9 @@ | @@ -7670,9 +7676,9 @@ | ||
7670 | "integrity": "sha1-RGf0n5jRv9VpWb2cZwUgPdJgEnc=" | 7676 | "integrity": "sha1-RGf0n5jRv9VpWb2cZwUgPdJgEnc=" |
7671 | }, | 7677 | }, |
7672 | "leaflet.gridlayer.googlemutant": { | 7678 | "leaflet.gridlayer.googlemutant": { |
7673 | - "version": "0.9.0", | ||
7674 | - "resolved": "https://registry.npmjs.org/leaflet.gridlayer.googlemutant/-/leaflet.gridlayer.googlemutant-0.9.0.tgz", | ||
7675 | - "integrity": "sha512-hkLEHLcdcCaq1OKgUla5ar6fCaUK6yBYIY9HyAclPcMwhnpJTnLmYYPbVJbq3Niz0YiO75gls4A6D6jkBJXpuw==" | 7679 | + "version": "0.8.0", |
7680 | + "resolved": "https://registry.npmjs.org/leaflet.gridlayer.googlemutant/-/leaflet.gridlayer.googlemutant-0.8.0.tgz", | ||
7681 | + "integrity": "sha512-Ain+jgDKRhlM6qNDDj2QFJa9vXUqV096N0PmpHO3DoNLS4I7EynTQCJXN+9qY4C51ZpV4Q4CI+apNv5XiP5aUA==" | ||
7676 | }, | 7682 | }, |
7677 | "leaflet.markercluster": { | 7683 | "leaflet.markercluster": { |
7678 | "version": "1.4.1", | 7684 | "version": "1.4.1", |
@@ -39,6 +39,7 @@ | @@ -39,6 +39,7 @@ | ||
39 | "@ngx-share/core": "^7.1.4", | 39 | "@ngx-share/core": "^7.1.4", |
40 | "@ngx-translate/core": "^12.1.2", | 40 | "@ngx-translate/core": "^12.1.2", |
41 | "@ngx-translate/http-loader": "^4.0.0", | 41 | "@ngx-translate/http-loader": "^4.0.0", |
42 | + "@types/leaflet-markercluster": "^1.0.3", | ||
42 | "ace-builds": "^1.4.11", | 43 | "ace-builds": "^1.4.11", |
43 | "angular-gridster2": "^9.1.0", | 44 | "angular-gridster2": "^9.1.0", |
44 | "angular2-hotkeys": "^2.2.0", | 45 | "angular2-hotkeys": "^2.2.0", |
@@ -62,7 +63,7 @@ | @@ -62,7 +63,7 @@ | ||
62 | "leaflet-geometryutil": "^0.9.3", | 63 | "leaflet-geometryutil": "^0.9.3", |
63 | "leaflet-polylinedecorator": "^1.6.0", | 64 | "leaflet-polylinedecorator": "^1.6.0", |
64 | "leaflet-providers": "^1.9.1", | 65 | "leaflet-providers": "^1.9.1", |
65 | - "leaflet.gridlayer.googlemutant": "^0.9.0", | 66 | + "leaflet.gridlayer.googlemutant": "0.8.0", |
66 | "leaflet.markercluster": "^1.4.1", | 67 | "leaflet.markercluster": "^1.4.1", |
67 | "material-design-icons": "^3.0.1", | 68 | "material-design-icons": "^3.0.1", |
68 | "messageformat": "^2.3.0", | 69 | "messageformat": "^2.3.0", |
@@ -525,7 +525,6 @@ export function parseFunction(source: any, params: string[] = ['def']): Function | @@ -525,7 +525,6 @@ export function parseFunction(source: any, params: string[] = ['def']): Function | ||
525 | 525 | ||
526 | export function parseTemplate(template: string, data: object, translateFn?: (key: string) => string) { | 526 | export function parseTemplate(template: string, data: object, translateFn?: (key: string) => string) { |
527 | let res = ''; | 527 | let res = ''; |
528 | - let variables = ''; | ||
529 | try { | 528 | try { |
530 | if (template.match(/<link-act/g)) { | 529 | if (template.match(/<link-act/g)) { |
531 | template = template.replace(/<link-act/g, '<a').replace(/link-act>/g, 'a>').replace(/name=(\'|")(.*?)(\'|")/g, `class='tb-custom-action' id='$2'`); | 530 | template = template.replace(/<link-act/g, '<a').replace(/link-act>/g, 'a>').replace(/name=(\'|")(.*?)(\'|")/g, `class='tb-custom-action' id='$2'`); |
@@ -536,27 +535,26 @@ export function parseTemplate(template: string, data: object, translateFn?: (key | @@ -536,27 +535,26 @@ export function parseTemplate(template: string, data: object, translateFn?: (key | ||
536 | template = template.replace(match, translateFn(match.match(translateRegexp)[1])); | 535 | template = template.replace(match, translateFn(match.match(translateRegexp)[1])); |
537 | }); | 536 | }); |
538 | } | 537 | } |
539 | - /* | ||
540 | - const expressions = template.match(/\{(.*?)\}/g); | ||
541 | - if (expressions) { | ||
542 | - const clearMatches = template.match(/\$\{([^}]*?)\}/g); | ||
543 | - for (const key in data) { | ||
544 | - if (!key.includes('|')) | ||
545 | - variables += `var ${key} = '${clearMatches[key] ? padValue(data[key], +clearMatches[key]) : data[key]}';`; | ||
546 | - } | ||
547 | - template = template.replace(/\:\d+\}/g, '}'); | ||
548 | - const interpolator = new Interpolator({delimeter: ['${', '}']}); | ||
549 | - interpolator.parse(template, data); | ||
550 | - res = safeExecute(parseFunction(variables + ' return' + '`' + template + '`')); | 538 | + const formatted = template.match(/\$\{([^}]*)\:\d*\}/g); |
539 | + if (formatted) | ||
540 | + formatted.forEach(value => { | ||
541 | + const [variable, digits] = value.replace('${', '').replace('}', '').split(':'); | ||
542 | + data[variable] = padValue(data[variable], +digits) | ||
543 | + template = template.replace(value, '${' + variable + '}'); | ||
544 | + }); | ||
545 | + const variables = template.match(/\$\{.*?\}/g); | ||
546 | + if (variables) { | ||
547 | + variables.forEach(variable => { | ||
548 | + variable = variable.replace('${', '').replace('}', ''); | ||
549 | + if (!data[variable]) | ||
550 | + data[variable] = ''; | ||
551 | + }) | ||
551 | } | 552 | } |
552 | - else res = template;*/ | ||
553 | - const compiled = _.template(template, { | ||
554 | - interpolate: /${([\s\S]+?)}/g | ||
555 | - }); | ||
556 | - res = compiled(data) | 553 | + const compiled = _.template(template); |
554 | + res = compiled(data); | ||
557 | } | 555 | } |
558 | catch (ex) { | 556 | catch (ex) { |
559 | - console.log(ex, variables, template) | 557 | + console.log(ex, template) |
560 | } | 558 | } |
561 | return res; | 559 | return res; |
562 | } | 560 | } |
@@ -14,12 +14,10 @@ | @@ -14,12 +14,10 @@ | ||
14 | /// limitations under the License. | 14 | /// limitations under the License. |
15 | /// | 15 | /// |
16 | 16 | ||
17 | -import L, { LatLngTuple, LatLngBounds, Point } from 'leaflet'; | 17 | +import L, { LatLngTuple, LatLngBounds, Point, MarkerClusterGroupOptions, markerClusterGroup} from 'leaflet'; |
18 | 18 | ||
19 | import 'leaflet-providers'; | 19 | import 'leaflet-providers'; |
20 | -import 'leaflet.markercluster/dist/MarkerCluster.css'; | ||
21 | -import 'leaflet.markercluster/dist/MarkerCluster.Default.css'; | ||
22 | -import LM from 'leaflet.markercluster/dist/leaflet.markercluster'; | 20 | +import 'leaflet.markercluster/dist/leaflet.markercluster'; |
23 | 21 | ||
24 | import { MapSettings, MarkerSettings, FormattedData, UnitedMapSettings, PolygonSettings, PolylineSettings } from './map-models'; | 22 | import { MapSettings, MarkerSettings, FormattedData, UnitedMapSettings, PolygonSettings, PolylineSettings } from './map-models'; |
25 | import { Marker } from './markers'; | 23 | import { Marker } from './markers'; |
@@ -43,7 +41,7 @@ export default abstract class LeafletMap { | @@ -43,7 +41,7 @@ export default abstract class LeafletMap { | ||
43 | bounds: L.LatLngBounds; | 41 | bounds: L.LatLngBounds; |
44 | newMarker: L.Marker; | 42 | newMarker: L.Marker; |
45 | datasources: FormattedData[]; | 43 | datasources: FormattedData[]; |
46 | - markersCluster: LM.markerClusterGroup; | 44 | + markersCluster; |
47 | 45 | ||
48 | constructor(public $container: HTMLElement, options: UnitedMapSettings) { | 46 | constructor(public $container: HTMLElement, options: UnitedMapSettings) { |
49 | this.options = options; | 47 | this.options = options; |
@@ -67,7 +65,7 @@ export default abstract class LeafletMap { | @@ -67,7 +65,7 @@ export default abstract class LeafletMap { | ||
67 | setTimeout(options.initCallback, 0); | 65 | setTimeout(options.initCallback, 0); |
68 | } | 66 | } |
69 | if (useClusterMarkers) { | 67 | if (useClusterMarkers) { |
70 | - const clusteringSettings: LM.MarkerClusterGroupOptions = { | 68 | + const clusteringSettings: MarkerClusterGroupOptions = { |
71 | zoomToBoundsOnClick: zoomOnClick, | 69 | zoomToBoundsOnClick: zoomOnClick, |
72 | showCoverageOnHover, | 70 | showCoverageOnHover, |
73 | removeOutsideVisibleBounds, | 71 | removeOutsideVisibleBounds, |
@@ -80,7 +78,7 @@ export default abstract class LeafletMap { | @@ -80,7 +78,7 @@ export default abstract class LeafletMap { | ||
80 | if (maxZoom && maxZoom >= 0 && maxZoom < 19) { | 78 | if (maxZoom && maxZoom >= 0 && maxZoom < 19) { |
81 | clusteringSettings.disableClusteringAtZoom = Math.floor(maxZoom); | 79 | clusteringSettings.disableClusteringAtZoom = Math.floor(maxZoom); |
82 | } | 80 | } |
83 | - this.markersCluster = LM.markerClusterGroup(clusteringSettings); | 81 | + this.markersCluster = markerClusterGroup(clusteringSettings); |
84 | this.ready$.subscribe(map => map.addLayer(this.markersCluster)); | 82 | this.ready$.subscribe(map => map.addLayer(this.markersCluster)); |
85 | } | 83 | } |
86 | } | 84 | } |
@@ -208,7 +206,7 @@ export default abstract class LeafletMap { | @@ -208,7 +206,7 @@ export default abstract class LeafletMap { | ||
208 | }); | 206 | }); |
209 | this.map.fitBounds(bounds, { padding: padding || [50, 50], animate: false }); | 207 | this.map.fitBounds(bounds, { padding: padding || [50, 50], animate: false }); |
210 | } | 208 | } |
211 | - this.bounds = this.bounds.extend(bounds); | 209 | + this.bounds = bounds; |
212 | } | 210 | } |
213 | } | 211 | } |
214 | 212 | ||
@@ -259,7 +257,9 @@ export default abstract class LeafletMap { | @@ -259,7 +257,9 @@ export default abstract class LeafletMap { | ||
259 | private createMarker(key: string, data: FormattedData, dataSources: FormattedData[], settings: MarkerSettings) { | 257 | private createMarker(key: string, data: FormattedData, dataSources: FormattedData[], settings: MarkerSettings) { |
260 | this.ready$.subscribe(() => { | 258 | this.ready$.subscribe(() => { |
261 | const newMarker = new Marker(this.convertPosition(data), settings, data, dataSources, this.dragMarker); | 259 | const newMarker = new Marker(this.convertPosition(data), settings, data, dataSources, this.dragMarker); |
262 | - this.fitBounds(this.bounds.extend(newMarker.leafletMarker.getLatLng()), settings.draggableMarker && this.markers.size > 2); | 260 | + console.log(this.bounds); |
261 | + | ||
262 | + this.fitBounds(this.bounds.extend(newMarker.leafletMarker.getLatLng()), settings.draggableMarker && this.markers.size < 2); | ||
263 | this.markers.set(key, newMarker); | 263 | this.markers.set(key, newMarker); |
264 | if (this.options.useClusterMarkers) { | 264 | if (this.options.useClusterMarkers) { |
265 | this.markersCluster.addLayer(newMarker.leafletMarker); | 265 | this.markersCluster.addLayer(newMarker.leafletMarker); |
@@ -48,6 +48,7 @@ import { UtilsService } from '@core/services/utils.service'; | @@ -48,6 +48,7 @@ import { UtilsService } from '@core/services/utils.service'; | ||
48 | export class MapWidgetController implements MapWidgetInterface { | 48 | export class MapWidgetController implements MapWidgetInterface { |
49 | 49 | ||
50 | constructor(public mapProvider: MapProviders, private drawRoutes: boolean, public ctx: WidgetContext, $element: HTMLElement) { | 50 | constructor(public mapProvider: MapProviders, private drawRoutes: boolean, public ctx: WidgetContext, $element: HTMLElement) { |
51 | + console.log("MapWidgetController -> constructor -> ctx", ctx) | ||
51 | if (this.map) { | 52 | if (this.map) { |
52 | this.map.map.remove(); | 53 | this.map.map.remove(); |
53 | delete this.map; | 54 | delete this.map; |
@@ -83,6 +84,7 @@ export class MapWidgetController implements MapWidgetInterface { | @@ -83,6 +84,7 @@ export class MapWidgetController implements MapWidgetInterface { | ||
83 | } | 84 | } |
84 | 85 | ||
85 | public static getProvidersSchema(mapProvider: MapProviders) { | 86 | public static getProvidersSchema(mapProvider: MapProviders) { |
87 | + console.log("MapWidgetController -> getProvidersSchema -> mapProvider", mapProvider) | ||
86 | mapProviderSchema.schema.properties.provider.default = mapProvider; | 88 | mapProviderSchema.schema.properties.provider.default = mapProvider; |
87 | return mergeSchemes([mapProviderSchema, | 89 | return mergeSchemes([mapProviderSchema, |
88 | ...Object.keys(providerSets)?.map( | 90 | ...Object.keys(providerSets)?.map( |
@@ -94,8 +96,10 @@ export class MapWidgetController implements MapWidgetInterface { | @@ -94,8 +96,10 @@ export class MapWidgetController implements MapWidgetInterface { | ||
94 | addToSchema(schema, this.getProvidersSchema(mapProvider)); | 96 | addToSchema(schema, this.getProvidersSchema(mapProvider)); |
95 | if (mapProvider !== 'image-map') { | 97 | if (mapProvider !== 'image-map') { |
96 | addGroupInfo(schema, 'Map Provider Settings'); | 98 | addGroupInfo(schema, 'Map Provider Settings'); |
97 | - addToSchema(schema, mergeSchemes([commonMapSettingsSchema, addCondition(mapPolygonSchema, 'model.showPolygon === true')])); | 99 | + addToSchema(schema, commonMapSettingsSchema); |
98 | addGroupInfo(schema, 'Common Map Settings'); | 100 | addGroupInfo(schema, 'Common Map Settings'); |
101 | + addToSchema(schema, addCondition(mapPolygonSchema, 'model.showPolygon === true')); | ||
102 | + addGroupInfo(schema, 'Polygon Settings'); | ||
99 | if (drawRoutes) { | 103 | if (drawRoutes) { |
100 | addToSchema(schema, routeMapSettingsSchema); | 104 | addToSchema(schema, routeMapSettingsSchema); |
101 | addGroupInfo(schema, 'Route Map Settings'); | 105 | addGroupInfo(schema, 'Route Map Settings'); |
@@ -127,8 +131,10 @@ export class MapWidgetController implements MapWidgetInterface { | @@ -127,8 +131,10 @@ export class MapWidgetController implements MapWidgetInterface { | ||
127 | } | 131 | } |
128 | 132 | ||
129 | translate = (key: string, defaultTranslation?: string): string => { | 133 | translate = (key: string, defaultTranslation?: string): string => { |
130 | - return (this.ctx.$injector.get(UtilsService).customTranslation(key, defaultTranslation || key) | ||
131 | - || this.ctx.$injector.get(TranslateService).instant(key)); | 134 | + if (key) |
135 | + return (this.ctx.$injector.get(UtilsService).customTranslation(key, defaultTranslation || key) | ||
136 | + || this.ctx.$injector.get(TranslateService).instant(key)); | ||
137 | + else return ''; | ||
132 | } | 138 | } |
133 | 139 | ||
134 | getDescriptors(name: string): { [name: string]: ($event: Event) => void } { | 140 | getDescriptors(name: string): { [name: string]: ($event: Event) => void } { |
@@ -156,24 +162,25 @@ export class MapWidgetController implements MapWidgetInterface { | @@ -156,24 +162,25 @@ export class MapWidgetController implements MapWidgetInterface { | ||
156 | } | 162 | } |
157 | 163 | ||
158 | setMarkerLocation = (e) => { | 164 | setMarkerLocation = (e) => { |
165 | + console.log("setMarkerLocation -> e", e) | ||
159 | const attributeService = this.ctx.$injector.get(AttributeService); | 166 | const attributeService = this.ctx.$injector.get(AttributeService); |
160 | - forkJoin( | ||
161 | - this.data.filter(data => !!e[data.dataKey.name]) | ||
162 | - .map(data => { | ||
163 | - const entityId: EntityId = { | ||
164 | - entityType: data.datasource.entityType, | ||
165 | - id: data.datasource.entityId | ||
166 | - }; | ||
167 | - return attributeService.saveEntityAttributes( | ||
168 | - entityId, | ||
169 | - AttributeScope.SHARED_SCOPE, | ||
170 | - [{ | ||
171 | - key: data.dataKey.name, | ||
172 | - value: e[data.dataKey.name] | ||
173 | - }] | ||
174 | - ); | ||
175 | - })).subscribe(res => { | ||
176 | - }); | 167 | + |
168 | + const entityId: EntityId = { | ||
169 | + entityType: e.$datasource.entityType, | ||
170 | + id: e.$datasource.entityId | ||
171 | + }; | ||
172 | + const keys = e.$datasource.dataKeys.map(key => { | ||
173 | + return { | ||
174 | + key: key.name, | ||
175 | + value: e[key.name] | ||
176 | + } | ||
177 | + }) | ||
178 | + return attributeService.saveEntityAttributes( | ||
179 | + entityId, | ||
180 | + AttributeScope.SHARED_SCOPE, | ||
181 | + keys | ||
182 | + ).subscribe(res => { | ||
183 | + }); | ||
177 | } | 184 | } |
178 | 185 | ||
179 | initSettings(settings: UnitedMapSettings): UnitedMapSettings { | 186 | initSettings(settings: UnitedMapSettings): UnitedMapSettings { |
@@ -214,8 +221,7 @@ export class MapWidgetController implements MapWidgetInterface { | @@ -214,8 +221,7 @@ export class MapWidgetController implements MapWidgetInterface { | ||
214 | if (this.settings.draggableMarker) { | 221 | if (this.settings.draggableMarker) { |
215 | this.map.setDataSources(parseData(this.data)); | 222 | this.map.setDataSources(parseData(this.data)); |
216 | } | 223 | } |
217 | - else | ||
218 | - this.map.updateMarkers(parseData(this.data)); | 224 | + this.map.updateMarkers(parseData(this.data)); |
219 | } | 225 | } |
220 | 226 | ||
221 | resize() { | 227 | resize() { |
@@ -17,7 +17,6 @@ | @@ -17,7 +17,6 @@ | ||
17 | import L from 'leaflet'; | 17 | import L from 'leaflet'; |
18 | import _ from 'lodash'; | 18 | import _ from 'lodash'; |
19 | import { MarkerSettings, PolylineSettings, PolygonSettings } from './map-models'; | 19 | import { MarkerSettings, PolylineSettings, PolygonSettings } from './map-models'; |
20 | -import { parseWithTranslation } from '@app/core/utils'; | ||
21 | 20 | ||
22 | export function createTooltip(target: L.Layer, | 21 | export function createTooltip(target: L.Layer, |
23 | settings: MarkerSettings | PolylineSettings | PolygonSettings, | 22 | settings: MarkerSettings | PolylineSettings | PolygonSettings, |
@@ -335,12 +335,7 @@ export const commonMapSettingsSchema = | @@ -335,12 +335,7 @@ export const commonMapSettingsSchema = | ||
335 | colorFunction: { | 335 | colorFunction: { |
336 | title: 'Color function: f(data, dsData, dsIndex)', | 336 | title: 'Color function: f(data, dsData, dsIndex)', |
337 | type: 'string' | 337 | type: 'string' |
338 | - }, | ||
339 | - showPolygon: { | ||
340 | - title: 'Show polygon', | ||
341 | - type: 'boolean', | ||
342 | - default: false | ||
343 | - }, | 338 | + }, |
344 | markerImage: { | 339 | markerImage: { |
345 | title: 'Custom marker image', | 340 | title: 'Custom marker image', |
346 | type: 'string' | 341 | type: 'string' |
@@ -439,8 +434,7 @@ export const commonMapSettingsSchema = | @@ -439,8 +434,7 @@ export const commonMapSettingsSchema = | ||
439 | type: 'image' | 434 | type: 'image' |
440 | } | 435 | } |
441 | ] | 436 | ] |
442 | - }, | ||
443 | - 'showPolygon', | 437 | + } |
444 | ] | 438 | ] |
445 | }; | 439 | }; |
446 | 440 | ||
@@ -450,6 +444,11 @@ export const mapPolygonSchema = | @@ -450,6 +444,11 @@ export const mapPolygonSchema = | ||
450 | title: 'Map Polygon Configuration', | 444 | title: 'Map Polygon Configuration', |
451 | type: 'object', | 445 | type: 'object', |
452 | properties: { | 446 | properties: { |
447 | + showPolygon: { | ||
448 | + title: 'Show polygon', | ||
449 | + type: 'boolean', | ||
450 | + default: false | ||
451 | + }, | ||
453 | polygonKeyName: { | 452 | polygonKeyName: { |
454 | title: 'Polygon key name', | 453 | title: 'Polygon key name', |
455 | type: 'string', | 454 | type: 'string', |
@@ -491,6 +490,7 @@ export const mapPolygonSchema = | @@ -491,6 +490,7 @@ export const mapPolygonSchema = | ||
491 | required: [] | 490 | required: [] |
492 | }, | 491 | }, |
493 | form: [ | 492 | form: [ |
493 | + 'showPolygon', | ||
494 | 'polygonKeyName', | 494 | 'polygonKeyName', |
495 | { | 495 | { |
496 | key: 'polygonColor', | 496 | key: 'polygonColor', |
@@ -17,7 +17,7 @@ | @@ -17,7 +17,7 @@ | ||
17 | --> | 17 | --> |
18 | <div class="trip-animation-widget"> | 18 | <div class="trip-animation-widget"> |
19 | <div class="trip-animation-label-container" *ngIf="settings.showLabel"> | 19 | <div class="trip-animation-label-container" *ngIf="settings.showLabel"> |
20 | - {{label }} | 20 | + {{label}} |
21 | </div> | 21 | </div> |
22 | <div class="trip-animation-container" fxLayout="column"> | 22 | <div class="trip-animation-container" fxLayout="column"> |
23 | <div class="map" #map></div> | 23 | <div class="map" #map></div> |
@@ -100,8 +100,8 @@ export class TripAnimationComponent implements OnInit, AfterViewInit { | @@ -100,8 +100,8 @@ export class TripAnimationComponent implements OnInit, AfterViewInit { | ||
100 | timeUpdated(time: number) { | 100 | timeUpdated(time: number) { |
101 | const currentPosition = this.interpolatedData.map(dataSource => dataSource[time]); | 101 | const currentPosition = this.interpolatedData.map(dataSource => dataSource[time]); |
102 | this.activeTrip = currentPosition[0]; | 102 | this.activeTrip = currentPosition[0]; |
103 | - this.minTime = moment(this.historicalData[0][this.historicalData.length - 1]?.time).format('YYYY-MM-DD HH:mm:ss') | ||
104 | - this.maxTime = moment(this.historicalData[0][0]?.time).format('YYYY-MM-DD HH:mm:ss') | 103 | + this.minTime = moment(this.intervals[this.intervals.length - 1]).format('YYYY-MM-DD HH:mm:ss') |
104 | + this.maxTime = moment(this.intervals[0]).format('YYYY-MM-DD HH:mm:ss') | ||
105 | this.calcLabel(); | 105 | this.calcLabel(); |
106 | this.calcTooltip(); | 106 | this.calcTooltip(); |
107 | if (this.mapWidget) { | 107 | if (this.mapWidget) { |
@@ -2,7 +2,11 @@ | @@ -2,7 +2,11 @@ | ||
2 | "extends": "../tsconfig.json", | 2 | "extends": "../tsconfig.json", |
3 | "compilerOptions": { | 3 | "compilerOptions": { |
4 | "outDir": "../out-tsc/app", | 4 | "outDir": "../out-tsc/app", |
5 | - "types": ["node", "jquery", "flot", "tooltipster", "tinycolor2", "js-beautify", "react", "react-dom", "jstree", "raphael", "canvas-gauges"] | 5 | + "typeRoots": [ |
6 | + "node_modules/@types" | ||
7 | + ], | ||
8 | + "types": ["node", "jquery", "flot", "tooltipster", "tinycolor2", "js-beautify", | ||
9 | + "react", "react-dom", "jstree", "raphael", "canvas-gauges", "leaflet", "leaflet-markercluster"] | ||
6 | }, | 10 | }, |
7 | "angularCompilerOptions": { | 11 | "angularCompilerOptions": { |
8 | "fullTemplateTypeCheck": true | 12 | "fullTemplateTypeCheck": true |