diff --git a/ui/public/less/lesslib/layout.less b/ui/public/less/lesslib/layout.less index ab1e143..d0bd78a 100644 --- a/ui/public/less/lesslib/layout.less +++ b/ui/public/less/lesslib/layout.less @@ -91,6 +91,29 @@ main { form { @formLabelWidth: 10rem; @formItemWidth: 40rem; + nav.menu { + width: @formItemWidth + @formLabelWidth + 4rem; + border-color: @mainColor; + border-bottom-style: solid; + margin: 1rem auto; + span { + border-color: @mainColor; + border-style: solid solid none; + padding: 0.5rem; + display: inline-block; + font-weight: bolder; + margin-right: 1rem; + &:first-child { + margin-left: 1.5rem; + } + &:hover { + background-color: darken(@mainColorLight,10%,relativ); + } + &.active { + background-color: darken(@mainColorLight,20%,relativ); + } + } + } fieldset { width: @formItemWidth + @formLabelWidth + 2rem; margin: 1rem auto; diff --git a/ui/src/routes/WorkingHours/Formular.svelte b/ui/src/routes/WorkingHours/Formular.svelte index cd78af2..a775e12 100644 --- a/ui/src/routes/WorkingHours/Formular.svelte +++ b/ui/src/routes/WorkingHours/Formular.svelte @@ -3,39 +3,102 @@ import IconifyIcon from '@iconify/svelte' import checkIcon from '@iconify-icons/oi/check' import xIcon from '@iconify-icons/oi/x' - import {TimekeepingDate} from "../../components/TimekeepingDate.svelte" + import EditByDay from "./Formular/EditByDay.svelte"; + import EditByWeek from "./Formular/EditByWeek.svelte"; + import {TimekeepingDate} from "../../components/TimekeepingDate.svelte"; + + const DAILY_EDIT = 0 + const WEEKLY_EDIT = 1 - export let activeRecord = null const Controller = { 'saveRecord': () => { - WorkingHoursRepository.addOrUpdate(activeRecord.workingDay, activeRecord).then(() => { - Controller.nextDay() - }); - }, - 'nextDay': async () => { - let actDate = new TimekeepingDate(activeRecord.workingDay) - let nextDay = actDate.getNextDay() - activeRecord = await WorkingHoursRepository.readOrNew(nextDay.getDateString()) + activeRecordList.forEach((actualRecord) => { + if (actualRecord.workingTime === '00:00:00') { + return + } + WorkingHoursRepository.addOrUpdate(actualRecord.workingDay, actualRecord); + }) + activeDate = nextDate + makeTimekeepingList() }, 'cancelActiveRecord': () => { - activeRecord = null; + activeRecordList = [] + activeRecord = null } } + const WeekController = { + 'makeTimekeepingList': () => { + let actualDay = WeekController.getMondayFromWeek( + activeDate === null ? new TimekeepingDate() : new TimekeepingDate(activeDate) + ) + activeRecordList = [] + activeDate = actualDay.getDateString() + for (const daysDiff in [0, 1, 2, 3, 4, 5, 6]) { + activeRecordList.push({workingTime: '00:00:00', workingDay: actualDay.getDateString()}) + actualDay = actualDay.getNextDay() + } + nextDate = actualDay.getDateString() + WorkingHoursRepository.browse(activeRecordList[0].workingDay, activeRecordList[6].workingDay).then(data => { + data.forEach(item => { + let actualDay = new TimekeepingDate(item.workingDay) + activeRecordList[actualDay.getDay()-1].workingTime = item.workingTime + }) + }) + }, + 'getMondayFromWeek': actualDayObject => { + if (actualDayObject.getDate() === 0) { + actualDayObject.setDate(actualDayObject.getDate() - 7) + } + if (actualDayObject.getDate() !== 1) { + actualDayObject.setDate(actualDayObject.getDate() - (actualDayObject.getDay() - 1)) + } + return actualDayObject + } + } + const DayController = { + 'makeTimekeepingList': () => { + let actualDay = activeDate === null ? new TimekeepingDate() : new TimekeepingDate(activeDate) + WorkingHoursRepository.readOrNew(actualDay.getDateString()).then(data => { + activeRecordList = [ data ] + activeDate = actualDay.getDateString() + nextDate = actualDay.getNextDay().getDateString() + }) + } + } + const MenuController = { + 'dailyEdit': () => { + period_of_edit = DAILY_EDIT + makeTimekeepingList = DayController.makeTimekeepingList + makeTimekeepingList() + }, + 'weeklyEdit': () => { + period_of_edit = WEEKLY_EDIT + makeTimekeepingList = WeekController.makeTimekeepingList + makeTimekeepingList() + } + } + + let activeDate = null + let nextDate = null + let activeRecordList = [] + export let activeRecord = null + let period_of_edit + let makeTimekeepingList + + MenuController.dailyEdit()