diff --git a/src/components/BikeFilters.vue b/src/components/BikeFilters.vue index 3acc796..6c97629 100644 --- a/src/components/BikeFilters.vue +++ b/src/components/BikeFilters.vue @@ -4,7 +4,7 @@ import { storeToRefs } from 'pinia' import Checkbox from './forms/Checkbox.vue' import ParkingSpaceRange from './filters/ParkingSpaceRange.vue'; -const { filterCovered, filterUncovered, filterKorrigo } = storeToRefs(useMap()) +const { filterCovered, filterUncovered, filterKorrigo, filterCargoOnly, filterStdOnly } = storeToRefs(useMap()) defineProps<{ nbUncovered?: number @@ -30,6 +30,18 @@ defineProps<{ + +
+ + Équipements + + +
+ Cargos + STD +
+
diff --git a/src/components/BikeMarker.vue b/src/components/BikeMarker.vue index abfb355..10a428b 100644 --- a/src/components/BikeMarker.vue +++ b/src/components/BikeMarker.vue @@ -7,7 +7,7 @@ import type { PointTuple } from 'leaflet'; import { computed, ref } from 'vue'; import { UNCOVERED_KEY, COVERED_KEY, BOXED_KEY, KORRIGO_KEY } from '@/utils/const'; import { storeToRefs } from 'pinia'; -import { useMap } from '@/stores/map'; +import { SPOTS_MAX, useMap } from '@/stores/map'; const props = defineProps<{ park: BikeParking @@ -20,15 +20,29 @@ const iconSize = ref(normalIconSize) const iconAnchor = computed(() => [iconSize.value[0] / 2, iconSize.value[1]]) const popupOffset = [0, iconSize.value[0] * -0.66] -const { spotsRange } = storeToRefs(useMap()) +const { spotsRange, filterCargoOnly, filterStdOnly } = storeToRefs(useMap()) -const isMarkerVisible = computed(() => { - return spotsRange.value[0] <= props.park.nb_total_place && props.park.nb_total_place <= spotsRange.value[1] +const isMarkerVisibleLayers = computed(() => { + const [min, max] = spotsRange.value + const spots = props.park.nb_total_place + + if (max >= SPOTS_MAX) return spots >= min + return spots >= min && spots <= max }) + +const isMarkerVisibleEquipments = computed(() => { + const checks = [ + [filterCargoOnly.value, (props.park.nb_support_cargo ?? 0) > 0], + [filterStdOnly.value, (props.park.nb_support_std ?? 0) > 0], + ] as const + + return checks.every(([active, passes]) => !active || passes) +}) + +const isMarkerVisible = computed(() => isMarkerVisibleLayers.value && isMarkerVisibleEquipments.value)