diff --git a/src/components/scheduling/TimeBlockTemplateComponent.vue b/src/components/scheduling/TimeBlockTemplateComponent.vue index bd85c5a..82f23a2 100644 --- a/src/components/scheduling/TimeBlockTemplateComponent.vue +++ b/src/components/scheduling/TimeBlockTemplateComponent.vue @@ -1,72 +1,87 @@ diff --git a/src/pages/schedule/ManageCalendar.vue b/src/pages/schedule/ManageCalendar.vue index 3d706d8..1b2c267 100644 --- a/src/pages/schedule/ManageCalendar.vue +++ b/src/pages/schedule/ManageCalendar.vue @@ -19,6 +19,7 @@ :drag-leave-func="onDragLeave" :drop-func="onDrop" :day-min-height="50" + :cell-width="140" :day-height="0" > @@ -103,6 +101,12 @@ const { getTimeBlocks, fetchTimeBlocks, fetchTimeBlockTemplates } = const { boats } = storeToRefs(useBoatStore()); const { timeblockTemplates } = storeToRefs(useScheduleStore()); const calendar = ref(); +const blankTemplate: TimeBlockTemplate = { + $id: '', + name: 'NewTemplate', + timeTuples: [['00:00', '00:00']], +}; +const newTemplate = ref({ ...blankTemplate }); onMounted(async () => { await fetchBoats(); @@ -110,8 +114,12 @@ onMounted(async () => { await fetchTimeBlockTemplates(); }); -function addTemplate() { - timeblockTemplates.value.push({ name: 'New Template', timeTuples: [] }); +function cancelNewTemplate() { + newTemplate.value = { ...blankTemplate }; + console.log(newTemplate.value); +} +function createTemplate() { + newTemplate.value.$id = 'unsaved'; } function createTimeBlock(boat: Boat, templateId: string, date: string) { const timeBlock = timeblockTemplates.value.find((t) => t.$id === templateId); @@ -120,14 +128,6 @@ function createTimeBlock(boat: Boat, templateId: string, date: string) { ); } -function onDragStart(e: DragEvent, template: TimeBlockTemplate) { - if (e.dataTransfer) { - console.log('Drag start: ', e); - e.dataTransfer.dropEffect = 'copy'; - e.dataTransfer.effectAllowed = 'move'; - e.dataTransfer.setData('ID', template.$id || ''); - } -} function onDragEnter(e: DragEvent, type: string) { console.log('onDragEnter', e, type); if (type === 'day' || type === 'head-day') { diff --git a/src/stores/schedule.ts b/src/stores/schedule.ts index 61735d8..633d106 100644 --- a/src/stores/schedule.ts +++ b/src/stores/schedule.ts @@ -57,6 +57,18 @@ export function blocksOverlapped(blocks: TimeBlock[] | Interval[]): Interval[] { ); } +export function copyTimeTuples(tuples: TimeTuple[]): TimeTuple[] { + return tuples.map((t) => Object.assign([], t)); +} +export function copyTimeBlockTemplate( + template: TimeBlockTemplate +): TimeBlockTemplate { + return { + ...template, + timeTuples: copyTimeTuples(template.timeTuples), + }; +} + export function buildTimeBlock( resource: Boat, time: TimeTuple,