From e4a0dae5b15f5d4f88738cbc35b94e480157dde0 Mon Sep 17 00:00:00 2001 From: jon Date: Wed, 14 May 2025 15:56:52 +0200 Subject: [PATCH] refactor: refs #7701 make FormModel only read from url and deleted useless code --- src/components/FormModel.vue | 39 +++++++------------ src/components/VnTable/VnTable.vue | 2 +- src/pages/Item/components/CreateGenusForm.vue | 4 -- .../Item/components/CreateSpecieForm.vue | 2 - .../customer/clientWebAccess.spec.js | 1 - 5 files changed, 14 insertions(+), 34 deletions(-) diff --git a/src/components/FormModel.vue b/src/components/FormModel.vue index c1187a0d7..4b4361b50 100644 --- a/src/components/FormModel.vue +++ b/src/components/FormModel.vue @@ -103,9 +103,9 @@ const $props = defineProps({ type: Boolean, default: false, }, - searchUrl: { + formUrl: { type: [String, Boolean], - default: 'form', + default: 'createForm', }, }); const emit = defineEmits(['onFetch', 'onDataSaved', 'submit']); @@ -118,7 +118,10 @@ const isLoading = ref(false); // Si elegimos observar los cambios del form significa que inicialmente las actions estaran deshabilitadas const isResetting = ref(false); const hasChanges = ref(!$props.observeFormChanges); -const originalData = computed(() => state.get(modelValue)); +let urlData = {}; +const originalData = computed(() => { + return { ...urlData, ...state.get(modelValue) }; +}); const formData = ref(); const defaultButtons = computed(() => ({ save: { @@ -146,13 +149,14 @@ const submitForm = async (evt) => { } }; +function getUrlData() { + urlData = $props.formUrl + ? JSON.parse(route?.query[$props.formUrl] ?? '{}') + : undefined; +} + onMounted(async () => { - const urlInitalData = - $props.searchUrl && JSON.parse(route?.query[$props.searchUrl] ?? '{}'); - // asignar de nuevo a originalData genera un warning por lo que fallarán todos los test de front que usen FormModel - // originalData.value = JSON.parse( - // JSON.stringify(urlInitalData ?? $props.formInitialData ?? {}), - // ); + getUrlData(); nextTick(() => (componentIsRendered.value = true)); // Podemos enviarle al form la estructura de data inicial sin necesidad de fetchearla @@ -201,23 +205,6 @@ watch( }, ); -// watch( -// () => formData.value, -// async (newData, oldData) => { -// if (!newData || !Object.keys(newData).length) return; -// if (!$props.searchUrl) return; -// const urlParams = JSON.stringify(newData); -// await nextTick(); -// router.replace({ -// query: { -// ...route.query, -// createForm: urlParams, -// }, -// }); -// }, -// { deep: true }, -// ); - onBeforeRouteLeave((to, from, next) => { if (hasChanges.value && $props.observeFormChanges) quasar.dialog({ diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue index a96c45cec..54a0a624d 100644 --- a/src/components/VnTable/VnTable.vue +++ b/src/components/VnTable/VnTable.vue @@ -227,7 +227,7 @@ onMounted(async () => { .map((c) => c.name), ...['tableActions'], ]; - createForm.value = $props.create; + if ($props.create && route?.query?.createForm) showForm.value = true; }); onUnmounted(async () => { diff --git a/src/pages/Item/components/CreateGenusForm.vue b/src/pages/Item/components/CreateGenusForm.vue index 9a80319a5..09d257efa 100644 --- a/src/pages/Item/components/CreateGenusForm.vue +++ b/src/pages/Item/components/CreateGenusForm.vue @@ -10,9 +10,6 @@ const { t } = useI18n(); const emit = defineEmits(['onDataSaved']); const genusInputRef = ref(null); -const genusFormData = reactive({ - name: 'test', -}); const onDataSaved = (formData, requestResponse) => { emit('onDataSaved', formData, requestResponse); @@ -29,7 +26,6 @@ onMounted(async () => { url-create="genera" model="itemGenus" :title="t('New genus')" - :form-initial-data="genusFormData" @on-data-saved="onDataSaved" >