From 3caf5a0c13e9cde1ea83a5e7c08f31f6f577be96 Mon Sep 17 00:00:00 2001 From: Jonas Gerg Date: Fri, 21 Mar 2025 21:18:25 +0100 Subject: [PATCH] feat: enable updating gottesdienste --- public/src/components/Input.vue | 8 ++-- public/src/components/TablePlan.vue | 9 +++- .../dialog/CreateGottesdienstDialog.vue | 42 +++++++++++++------ public/src/services/api.ts | 16 +++++++ public/src/views/PlanView.vue | 25 +++++++---- 5 files changed, 73 insertions(+), 27 deletions(-) diff --git a/public/src/components/Input.vue b/public/src/components/Input.vue index 34e817e..878fb9b 100644 --- a/public/src/components/Input.vue +++ b/public/src/components/Input.vue @@ -7,7 +7,7 @@ const props = withDefaults(defineProps<{ label?: string, disabled?: boolean, type?: string, - dateFormat?: "string" | "number", + dateFormat?: "string" | "number" | "date", focus?: boolean }>(), { dateFormat: "string" @@ -45,10 +45,12 @@ function leading(val) { function getValue(){ if(props.type == "date" && props.dateFormat == "number") { - console.log(props.value) const date = new Date(props.value) return leading(date.getFullYear()) + "-" + zeros(date.getMonth() + 1) + "-" + zeros(date.getDate()) - }else{ + } if(props.type == "date" && props.dateFormat == "date") { + const date = new Date(props.value) + return leading(date.getFullYear()) + "-" + zeros(date.getMonth() + 1) + "-" + zeros(date.getDate()) + } else { return props.value } } diff --git a/public/src/components/TablePlan.vue b/public/src/components/TablePlan.vue index 345e86e..20ecf12 100644 --- a/public/src/components/TablePlan.vue +++ b/public/src/components/TablePlan.vue @@ -15,7 +15,7 @@ const props = defineProps<{ edit: boolean, smallMode: boolean }>() -const emit = defineEmits(["toggleMark", "added", "delete", "endEdit", "resetPassword", "deleteMinistrant", "createMinistrant", "editMinistrant"]) +const emit = defineEmits(["toggleMark", "added", "delete", "edit", "endEdit", "resetPassword", "deleteMinistrant", "createMinistrant", "editMinistrant"]) const openEditUser = ref(-1) const miniCopy = reactive<{ data?: SimplifiedMinistrant }>({}) const data = reactive({ @@ -131,7 +131,12 @@ function getAmount(mid: number, value: number): number { - delete + delete + + + + + edit diff --git a/public/src/components/dialog/CreateGottesdienstDialog.vue b/public/src/components/dialog/CreateGottesdienstDialog.vue index 3e61143..0adb327 100644 --- a/public/src/components/dialog/CreateGottesdienstDialog.vue +++ b/public/src/components/dialog/CreateGottesdienstDialog.vue @@ -7,8 +7,8 @@ import {onMounted, ref, toRaw} from "vue"; import type {Gottesdienst, GottesdienstGroup} from "@/models/models"; import {onKeyPress} from "@/composables/enter"; interface CreateGottesdienstDialogProps extends DialogControls { - onCreate: (Gottesdienst) => (Promise | undefined), - godi?: Gottesdienst, + onCreate: (arg0: Gottesdienst) => (Promise | undefined), + gottesdienst?: Gottesdienst, planId: number } @@ -16,19 +16,34 @@ onKeyPress("Enter", create) const props = defineProps() -const date = ref("") -const time = ref("") +const godi = ref(formatGottesdienst(props.gottesdienst)) -const godi = ref(props.godi ?? { - planId: props.planId, - date: "", - attendance: "", - name: "", - id: -1 -}) +const date = ref(props.gottesdienst ? formatDateString(props.gottesdienst.date) : "") +const time = ref(props.gottesdienst ? formatTimeString(props.gottesdienst.date) : "") let submitted = false +function formatGottesdienst(gottesdienst: Gottesdienst) { + return gottesdienst ? { + ...gottesdienst, + attendance: formatTimeString(gottesdienst.attendance) + } : { + planId: props.planId, + date: "", + attendance: "", + name: "", + id: -1 + } +} + +function formatDateString(date: Date) { + return (new Date(date)).toISOString().split('T')[0]; +} + +function formatTimeString(date: Date) { + return (new Date(date)).toTimeString().slice(0, 5); +} + async function create(){ if(submitted) return; @@ -44,6 +59,7 @@ async function create(){ submitted = false } +