Initial commit from monorepo
This commit is contained in:
96
app/stores/search.js
Normal file
96
app/stores/search.js
Normal file
@@ -0,0 +1,96 @@
|
||||
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
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user