97 lines
1.9 KiB
JavaScript
97 lines
1.9 KiB
JavaScript
import { defineStore } from 'pinia'
|
|
import { ref, computed, readonly } from 'vue'
|
|
|
|
export const useSearchStore = defineStore('search', () => {
|
|
// State for search form
|
|
const searchForm = ref({
|
|
product: '',
|
|
productUuid: '', // UUID for API
|
|
quantity: '',
|
|
unit: 'tons',
|
|
location: '',
|
|
locationUuid: '' // UUID for API
|
|
})
|
|
|
|
// State for created request
|
|
const currentRequest = ref(null)
|
|
|
|
// Getters
|
|
const isFormComplete = computed(() => {
|
|
return searchForm.value.product &&
|
|
searchForm.value.quantity &&
|
|
searchForm.value.location
|
|
})
|
|
|
|
const getSearchUrl = computed(() => {
|
|
if (!isFormComplete.value) return ''
|
|
const params = new URLSearchParams({
|
|
product: searchForm.value.product,
|
|
quantity: searchForm.value.quantity,
|
|
unit: searchForm.value.unit,
|
|
location: searchForm.value.location
|
|
})
|
|
return `/search?${params.toString()}`
|
|
})
|
|
|
|
// Actions
|
|
const setProduct = (product) => {
|
|
searchForm.value.product = product
|
|
}
|
|
|
|
const setProductUuid = (uuid) => {
|
|
searchForm.value.productUuid = uuid
|
|
}
|
|
|
|
const setLocation = (location) => {
|
|
searchForm.value.location = location
|
|
}
|
|
|
|
const setLocationUuid = (uuid) => {
|
|
searchForm.value.locationUuid = uuid
|
|
}
|
|
|
|
const setQuantity = (quantity) => {
|
|
searchForm.value.quantity = quantity
|
|
}
|
|
|
|
const setUnit = (unit) => {
|
|
searchForm.value.unit = unit
|
|
}
|
|
|
|
const setRequest = (request) => {
|
|
currentRequest.value = request
|
|
}
|
|
|
|
const resetForm = () => {
|
|
searchForm.value = {
|
|
product: '',
|
|
productUuid: '',
|
|
quantity: '',
|
|
unit: 'tons',
|
|
location: '',
|
|
locationUuid: ''
|
|
}
|
|
currentRequest.value = null
|
|
}
|
|
|
|
return {
|
|
// State
|
|
searchForm,
|
|
currentRequest,
|
|
|
|
// Getters
|
|
isFormComplete,
|
|
getSearchUrl,
|
|
|
|
// Actions
|
|
setProduct,
|
|
setProductUuid,
|
|
setLocation,
|
|
setLocationUuid,
|
|
setQuantity,
|
|
setUnit,
|
|
setRequest,
|
|
resetForm
|
|
}
|
|
})
|