diff --git a/pages/profiles/show/[id].vue b/pages/profiles/show/[id].vue index a23cc88..c01479d 100644 --- a/pages/profiles/show/[id].vue +++ b/pages/profiles/show/[id].vue @@ -5,6 +5,8 @@ import dayjs from "dayjs"; import customParseFormat from "dayjs/plugin/customParseFormat"; import isoWeek from "dayjs/plugin/isoWeek" import isBetween from "dayjs/plugin/isBetween" +import DocumentList from "~/components/DocumentList.vue"; +import DocumentUpload from "~/components/DocumentUpload.vue"; dayjs.extend(customParseFormat) dayjs.extend(isoWeek) dayjs.extend(isBetween) @@ -19,104 +21,17 @@ const itemInfo = ref({ weeklyRegularWorkingHours: {} }) const oldItemInfo = ref({}) -const setupPage = () => { - if(route.params.id) itemInfo.value = dataStore.getProfileById(route.params.id) + +const setupPage = async () => { + + if(route.params.id) { + itemInfo.value = await useSupabaseSelectSingle("profiles",route.params.id,"*, documents(*)") + } + if(itemInfo.value.id) oldItemInfo.value = JSON.parse(JSON.stringify(itemInfo.value)) } -const selectedPresetRange = ref("Dieser Monat") -const selectedStartDay = ref("") -const selectedEndDay = ref("") - -const changeRange = () => { - let selector = "w" - let subtract = 0 - - if(selectedPresetRange.value === "Diese Woche") { - selector = "isoWeek" - subtract = 0 - - } else if(selectedPresetRange.value === "Dieser Monat") { - selector = "M" - subtract = 0 - - } else if(selectedPresetRange.value === "Dieses Jahr") { - selector = "y" - subtract = 0 - } else if(selectedPresetRange.value === "Letzte Woche") { - selector = "isoWeek" - subtract = 1 - } else if(selectedPresetRange.value === "Letzter Monat") { - selector = "M" - subtract = 1 - } else if(selectedPresetRange.value === "Letztes Jahr") { - selector = "y" - subtract = 1 - } - - selectedStartDay.value = dayjs().subtract(subtract,selector === "isoWeek" ? "week" : selector).startOf(selector).format("YYYY-MM-DD") - selectedEndDay.value = dayjs().subtract(subtract,selector === "isoWeek" ? "week" : selector).endOf(selector).format("YYYY-MM-DD") - -} - - -const workingTimeInfo = computed(() => { - - let times = dataStore.getWorkingTimesByProfileId(itemInfo.value.id) - - times = times.filter(i => dayjs(i.date).isBetween(dayjs(selectedStartDay.value).subtract(1,"days"),selectedEndDay.value,'day') && i.end) - - - - let weekFactor = 4.33 - let monthlyWorkingHours = itemInfo.value.weeklyWorkingHours * weekFactor - - - //Eingreicht - let sumWorkingMinutesEingereicht = 0 - times.filter(i => !i.approved).forEach(time => { - const minutes = dayjs(time.end, "HH:mm:ss").diff(dayjs(time.start, "HH:mm:ss"),'minutes') - sumWorkingMinutesEingereicht = sumWorkingMinutesEingereicht + minutes - }) - - //Bestätigt - let sumWorkingMinutesApproved = 0 - times.filter(i => i.approved).forEach(time => { - const minutes = dayjs(time.end, "HH:mm:ss").diff(dayjs(time.start, "HH:mm:ss"),'minutes') - sumWorkingMinutesApproved = sumWorkingMinutesApproved + minutes - }) - //console.log(times.filter(i => i.approved).length) - //console.log(sumWorkingMinutesApproved) - - - //Saldo - let saldo = (sumWorkingMinutesApproved / 60).toFixed(2) - monthlyWorkingHours - let saldoInOfficial = ((sumWorkingMinutesApproved + sumWorkingMinutesEingereicht) / 60).toFixed(2) - monthlyWorkingHours - - return { - monthlyWorkingHours, - sumWorkingMinutesEingereicht, - sumWorkingMinutesApproved, - saldo, - saldoInOfficial - } -}) - -const getDuration = (time) => { - const minutes = Math.floor(dayjs(time.end, "HH:mm:ss").diff(dayjs(time.start, "HH:mm:ss"),'minutes',true)) - const hours = Math.floor(minutes/60) - return { - //dezimal: dez, - hours: hours, - minutes: minutes, - composed: `${hours}:${String(minutes % 60).padStart(2,"0")} h` - } -} - - - setupPage() -changeRange() const emailSignature = ref(dataStore.activeProfile.emailSignature) const tiptapLoaded = ref(false) @@ -205,6 +120,7 @@ const isLight = computed({ + Helligkeitseinstellung -
+
+ + + +