From d907f1ca013403fb4a940c9d6b5483104eb1c2f2 Mon Sep 17 00:00:00 2001 From: florianfederspiel Date: Fri, 14 Mar 2025 17:49:54 +0100 Subject: [PATCH] Added Modals for Adding, Editing, Showing --- components/EntityEdit.vue | 89 ++++++++++++++++++++++--- components/EntityModalButtons.vue | 82 +++++++++++++++++++++++ components/EntityShow.vue | 25 +++++++ components/StandardEntityModal.vue | 97 ++++++++++++++++++++++++++++ pages/createDocument/edit/[[id]].vue | 96 ++++++++++++++++++++------- stores/data.js | 16 +++-- 6 files changed, 368 insertions(+), 37 deletions(-) create mode 100644 components/EntityModalButtons.vue create mode 100644 components/StandardEntityModal.vue diff --git a/components/EntityEdit.vue b/components/EntityEdit.vue index 0659c89..c89d548 100644 --- a/components/EntityEdit.vue +++ b/components/EntityEdit.vue @@ -7,12 +7,20 @@ const props = defineProps({ required: true, type: String }, + createQuery: { + type: Object + }, item: { required: true, type: Object + }, + inModal: { + type: Boolean, } }) +const emit = defineEmits(["returnData"]) + const {type} = props @@ -38,6 +46,7 @@ const route = useRoute() const dataStore = useDataStore() const profileStore = useProfileStore() const supabase = useSupabaseClient() +const modal = useModal() const dataType = dataStore.dataTypes[type] const openTab = ref(0) @@ -73,17 +82,20 @@ const setupCreate = () => { setupCreate() const setupQuery = () => { - if(route.query) { - Object.keys(route.query).forEach(key => { + if(props.mode === "create" && (route.query || props.createQuery)) { + + let data = !props.inModal ? route.query : props.createQuery + + Object.keys(data).forEach(key => { if(dataType.templateColumns.find(i => i.key === key)) { if (["customer", "contract", "plant", "contact", "project"].includes(key)) { - item.value[key] = Number(route.query[key]) + item.value[key] = Number(data[key]) } else { - item.value[key] = route.query[key] + item.value[key] = data[key] } } else if(key === "resources") { - /*item.value[key] = route.query[key]*/ - JSON.parse(route.query[key]).forEach(async (i) => { + /*item.value[key] = data[key]*/ + JSON.parse(data[key]).forEach(async (i) => { console.log(i) let type = i.substring(0,1) let id = i.substring(2,i.length) @@ -180,10 +192,37 @@ const calcSaveAllowed = (item) => { watch(item.value, async (newItem, oldItem) => { calcSaveAllowed(newItem) }) + +const createItem = async () => { + let ret = null + + if(props.inModal) { + ret = await dataStore.createNewItem(type,item.value,true) + } else { + ret = dataStore.createNewItem(type,item.value) + } + + emit('returnData', ret) +} + +const updateItem = async () => { + let ret = null + + if(props.inModal) { + ret = await dataStore.updateItem(type,item.value, oldItem.value,true) + } else { + ret = await dataStore.updateItem(type,item.value, oldItem.value) + } + + emit('returnData', ret) +} + +