Skip to content

Commit 3b93425

Browse files
committed
feat: display line from poi deps #508
1 parent ee0f314 commit 3b93425

File tree

2 files changed

+32
-26
lines changed

2 files changed

+32
-26
lines changed

components/MainMap/MapFeatures.vue

+31-23
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,10 @@ function onClick(e: MapMouseEvent): void {
216216
}
217217
}
218218
219+
const selectedFeatureDepsIDs = ref<number[]>([])
219220
async function updateSelectedFeature(feature?: ApiPoi): Promise<void> {
221+
selectedFeatureDepsIDs.value = []
222+
220223
if (!feature) {
221224
await menuStore.fetchFeatures({
222225
vidoConfig: config!,
@@ -253,39 +256,47 @@ async function updateSelectedFeature(feature?: ApiPoi): Promise<void> {
253256
let waypointIndex = 1
254257
255258
data.value.features.forEach((f) => {
259+
const depID = 'metadata' in f.properties ? f.properties.metadata.id : f.properties.id
260+
selectedFeatureDepsIDs.value.push(depID)
261+
256262
f = {
257263
...f,
258264
properties: {
259265
...f.properties,
260266
vido_visible: true,
261267
},
262268
}
263-
if ('metadata' in f.properties && f.properties.metadata.id === id) {
269+
270+
if (id === depID) {
264271
poi = f as ApiPoi
265272
}
266-
else {
267-
if (f.properties['route:point:type']) {
268-
f = apiRouteWaypointToApiPoi(
269-
f as ApiRouteWaypoint,
270-
poi?.properties.display?.color_fill || '#76009E',
271-
poi?.properties.display?.color_line || '#76009E',
272-
f.properties['route:point:type'] === ApiRouteWaypointType.way_point
273-
? (waypointIndex++).toString()
274-
: undefined,
275-
)
276-
}
273+
274+
if (f.properties['route:point:type']) {
275+
f = apiRouteWaypointToApiPoi(
276+
f as ApiRouteWaypoint,
277+
poi?.properties.display?.color_fill || '#76009E',
278+
poi?.properties.display?.color_line || '#76009E',
279+
f.properties['route:point:type'] === ApiRouteWaypointType.way_point
280+
? (waypointIndex++).toString()
281+
: undefined,
282+
)
283+
}
284+
285+
if (f.geometry.type === 'Point') {
277286
deps.push(f as ApiPoi)
278287
}
279288
})
280289
290+
if (!poi)
291+
throw new Error(`Feature with ID: ${id} not found.`)
292+
281293
mapStore.setSelectedFeature(poi)
282-
if (poi) {
283-
// In case user click on vecto element, attach Pin Marker to POI Marker
284-
teritorioCluster.value?.setSelectedFeature(poi as unknown as MapGeoJSONFeature)
285294
286-
if (poi.properties.metadata.category_ids?.length)
287-
menuStore.filterByDeps(poi.properties.metadata.category_ids, deps, selectedFeature.value)
288-
}
295+
// In case user click on vecto element, attach Pin Marker to POI Marker
296+
teritorioCluster.value?.setSelectedFeature(poi as unknown as MapGeoJSONFeature)
297+
298+
if (poi.properties.metadata.category_ids?.length)
299+
menuStore.filterByDeps(poi.properties.metadata.category_ids, deps)
289300
}
290301
}
291302
catch (e) {
@@ -382,11 +393,8 @@ function showVectorSelectedFeature(): void {
382393
return
383394
}
384395
385-
if (
386-
selectedFeature.value
387-
&& (selectedFeature.value.properties?.metadata?.id || selectedFeature.value.id || selectedFeature.value.properties?.id)
388-
) {
389-
filterRouteByPoiIds(map.value, [selectedFeature.value.properties?.metadata?.id || selectedFeature.value.id || selectedFeature.value.properties?.id])
396+
if (selectedFeature.value) {
397+
filterRouteByPoiIds(map.value, selectedFeatureDepsIDs.value)
390398
}
391399
else {
392400
if (props.enableFilterRouteByFeatures) {

stores/menu.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -252,15 +252,13 @@ export const menuStore = defineStore('menu', {
252252

253253
// TODO: Maybe merge filterDeps with fetchFeatures
254254
// Check potential side-effects in components calling fetchFeatures
255-
filterByDeps(categoryIds: number[], deps: ApiPoi[], selectedFeature: ApiPoi | null) {
255+
filterByDeps(categoryIds: number[], deps: ApiPoi[]) {
256256
if (!deps.length)
257257
return
258258

259259
const filteredFeatures: { [key: number]: ApiPoi[] } = {}
260260
categoryIds.forEach((id) => {
261261
filteredFeatures[id] = deps
262-
if (selectedFeature?.properties.metadata.category_ids?.includes(id))
263-
filteredFeatures[id].push(selectedFeature)
264262
})
265263
this.features = filteredFeatures
266264
},

0 commit comments

Comments
 (0)