import { defineStore } from "pinia"; import { Characteristic } from "../types/common"; import { ref, shallowRef } from "vue"; import { joinPath } from "../helpers"; import { useConfigStore } from "./useConfigStore"; import useFetch from "../composables/useFetch"; const configStore = useConfigStore(); export const useCharacteristicsStore = defineStore("characteristics", () => { const isFetchingCharacteristics = ref(false); // Characteristics const ageOptions = shallowRef([]); const airbagOptions = shallowRef([]); const autoRadioOptions = shallowRef([]); const bodyTypeOptions = shallowRef([]); const buyerTypeOptions = shallowRef([]); const climateControlOptions = shallowRef([]); const colorOptions = shallowRef([]); const conditionOptions = shallowRef([]); const driveTypeOptions = shallowRef([]); const engineClassOptions = shallowRef([]); const engineTypeOptions = shallowRef([]); const fuelTypeOptions = shallowRef([]); const gearboxGearsOptions = shallowRef([]); const gearboxTypeOptions = shallowRef([]); const ownerOptions = shallowRef([]); const purchaseTypeOptions = shallowRef([]); const suspensionOptions = shallowRef([]); const tiresDiameterOptions = shallowRef([]); const tiresHeightOptions = shallowRef([]); const tiresWidthOptions = shallowRef([]); const warrantyOptions = shallowRef([]); const warrantyNewVehicleOptions = shallowRef([]); const fetchCharacteristics = async () => { isFetchingCharacteristics.value = true; const url = joinPath( configStore.apiBaseUrl, "v2/evaluations/frontend-options" ); const { data, error } = await useFetch<{ data: any }>(url).get().json(); if (error.value) { console.error(error.value); isFetchingCharacteristics.value = false; return; } ageOptions.value = data.value.age || []; airbagOptions.value = data.value.airbags || []; autoRadioOptions.value = data.value.auto_radio || []; bodyTypeOptions.value = data.value.body_type || []; buyerTypeOptions.value = data.value.buyer_type || []; climateControlOptions.value = data.value.climate_control || []; colorOptions.value = data.value.color || []; conditionOptions.value = data.value.condition || []; driveTypeOptions.value = data.value.drive_type || []; engineClassOptions.value = data.value.engine_class || []; engineTypeOptions.value = data.value.engine_type || []; fuelTypeOptions.value = data.value.fuel_type || []; gearboxGearsOptions.value = data.value.gearbox_gears || []; gearboxTypeOptions.value = data.value.gearbox_type || []; ownerOptions.value = data.value.owner || []; purchaseTypeOptions.value = data.value.purchase_type || []; suspensionOptions.value = data.value.suspension || []; tiresDiameterOptions.value = data.value.tires_diameter || []; tiresHeightOptions.value = data.value.tires_height || []; tiresWidthOptions.value = data.value.tires_width || []; warrantyOptions.value = data.value.warranty || []; warrantyNewVehicleOptions.value = data.value.warranty_nv || []; isFetchingCharacteristics.value = false; }; return { isFetchingCharacteristics, ageOptions, airbagOptions, autoRadioOptions, bodyTypeOptions, buyerTypeOptions, climateControlOptions, colorOptions, conditionOptions, driveTypeOptions, engineClassOptions, engineTypeOptions, fuelTypeOptions, gearboxGearsOptions, gearboxTypeOptions, ownerOptions, purchaseTypeOptions, suspensionOptions, tiresDiameterOptions, tiresHeightOptions, tiresWidthOptions, warrantyOptions, warrantyNewVehicleOptions, fetchCharacteristics, }; });