From 85a9b2d81857121f937304907bbbaab141f2993b Mon Sep 17 00:00:00 2001 From: Ron Rise Date: Tue, 10 Jun 2025 21:28:17 -0400 Subject: [PATCH] happy monday _ bleh _ --- frontend/src/pages/loads/Add.vue | 93 +++++++++++++++++++++++++++++--- 1 file changed, 85 insertions(+), 8 deletions(-) diff --git a/frontend/src/pages/loads/Add.vue b/frontend/src/pages/loads/Add.vue index abc0a8d..d30b9fa 100644 --- a/frontend/src/pages/loads/Add.vue +++ b/frontend/src/pages/loads/Add.vue @@ -67,7 +67,7 @@ COL
- + COL Required @@ -75,15 +75,20 @@
- Picture Required +
+ picture +
@@ -161,6 +166,12 @@ const fileSelected = (e: FileUploadSelectEvent) => { file.value = e.files[0] } +const pictureUrl = ref(null) +const calcUrl = () => { + const cache = new Date().getMilliseconds() + pictureUrl.value = import.meta.env.VITE_API + `/load/${route.params.id}/photo?cache=${cache}` +} + const load = ref({ bullet: '', cartridge: '', @@ -243,7 +254,7 @@ const addCartridgeName = async () => { const add = async () => { v$.value.$touch() - if (v$.value.$invalid || !file.value) { + if (v$.value.$invalid || (!route.params.id && !file.value)) { toast.add({ severity: 'error', summary: 'Error', @@ -254,6 +265,12 @@ const add = async () => { return } + let id = "" + + if (route.params.id) { + id = "/" + route.params.id.toString() + } + const formData = new FormData() formData.append('bullet_id', load.value.bullet) formData.append('cartridge_id', load.value.cartridge) @@ -261,22 +278,43 @@ const add = async () => { formData.append('powder_gr', load.value.powderGrs.toString()) formData.append('primer_id', load.value.primer) formData.append('col', load.value.col) - formData.append('photo', file.value) + if (file.value) { + formData.append('photo', file.value) + } try { - const response = await axios.post>(`${import.meta.env.VITE_API}/load`, formData, { + const response = await axios.post>(`${import.meta.env.VITE_API}/load${id}`, formData, { headers: { 'Content-Type': 'multipart/form-data', }, }) + const message = route.params.id ? 'Load updated' : 'Load added' + toast.add({ severity: 'success', summary: 'Success', - detail: 'Load added', + detail: message, life: 3000, }) + if (route.params.id) { + load.value = { + bullet: '', + cartridge: '', + powder: '', + powderGrs: 0, + primer: '', + col: '', + } + file.value = null + + v$.value.$reset() + await fetchLoad() + + return + } + await router.push(`/loads/edit/${response.data.payload}`) } catch (error) { toast.add({ @@ -287,6 +325,31 @@ const add = async () => { }) } } +const deleteLoad = async () => { + if (!route.params.id) { + return + } + + try { + await axios.delete(`${import.meta.env.VITE_API}/load/${route.params.id}`) + + toast.add({ + severity: 'success', + summary: 'Success', + detail: 'Load deleted', + life: 3000, + }) + + await router.push('/loads/search') + } catch (error) { + toast.add({ + severity: 'error', + summary: 'Error', + detail: 'Error deleting load', + life: 3000, + }) + } +} const fetchLoad = async () => { if (!route.params.id) { @@ -302,6 +365,18 @@ const fetchLoad = async () => { load.value.powder = response.data.payload.powder.id load.value.powderGrs = response.data.payload.powder_gr load.value.primer = response.data.payload.primer.id + load.value.col = response.data.payload.col.toString() + + if (!load.value.col.includes('.')) { + load.value.col = `${load.value.col}.000` + } else { + const parts = load.value.col.split('.') + if (parts[1].length < 3) { + load.value.col = `${parts[0]}.${parts[1].padEnd(3, '0')}` + } + } + + calcUrl() } else { toast.add({ severity: 'error', @@ -324,7 +399,9 @@ onMounted(() => { fetchCartridges() if (route.params.id) { - fetchLoad() + setTimeout(() => { + fetchLoad() + }, 100) } })