[events] Allow creating new events from AgendaView
This commit is contained in:
parent
5e19a437bd
commit
9e570b9746
|
@ -15,7 +15,7 @@
|
||||||
<q-btn round color="negative" icon="close" dense rounded @click="editDone(false)" />
|
<q-btn round color="negative" icon="close" dense rounded @click="editDone(false)" />
|
||||||
</div>
|
</div>
|
||||||
<div class="col" style="margin: 0; padding: 0; margin-top: -2.4em">
|
<div class="col" style="margin: 0; padding: 0; margin-top: -2.4em">
|
||||||
<edit-event v-model="editor" @done="editDone" />
|
<edit-event v-model="editor" :date="editor.start" @done="editDone" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</q-card>
|
</q-card>
|
||||||
|
@ -74,6 +74,27 @@
|
||||||
locale="de-de"
|
locale="de-de"
|
||||||
style="height: 100%; min-height: 400px"
|
style="height: 100%; min-height: 400px"
|
||||||
>
|
>
|
||||||
|
<template #head-day-button="{ scope: { dayLabel, timestamp, activeDate } }">
|
||||||
|
<q-btn
|
||||||
|
round
|
||||||
|
dense
|
||||||
|
size="sm"
|
||||||
|
class="q-mb-xs"
|
||||||
|
:label="dayLabel"
|
||||||
|
:color="formatDayColor(timestamp.current, activeDate)"
|
||||||
|
>
|
||||||
|
<q-menu>
|
||||||
|
<q-list style="min-width: 100px">
|
||||||
|
<q-item clickable @click="showDay(timestamp.date)">
|
||||||
|
<q-item-section>Anzeigen</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item clickable @click="newEvent(timestamp.date)">
|
||||||
|
<q-item-section>Neue Veranstaltung</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
</q-list>
|
||||||
|
</q-menu>
|
||||||
|
</q-btn>
|
||||||
|
</template>
|
||||||
<template #day="{ scope: { timestamp } }">
|
<template #day="{ scope: { timestamp } }">
|
||||||
<div itemref="" class="q-pb-sm" style="min-height: 200px">
|
<div itemref="" class="q-pb-sm" style="min-height: 200px">
|
||||||
<eventslot
|
<eventslot
|
||||||
|
@ -97,6 +118,7 @@ import { useScheduleStore } from '../../store';
|
||||||
import { date } from 'quasar';
|
import { date } from 'quasar';
|
||||||
import Eventslot from './slots/EventSlot.vue';
|
import Eventslot from './slots/EventSlot.vue';
|
||||||
import EditEvent from '../management/EditEvent.vue';
|
import EditEvent from '../management/EditEvent.vue';
|
||||||
|
import { EditableEvent, emptyEvent } from '../../store/models';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'AgendaView',
|
name: 'AgendaView',
|
||||||
|
@ -107,7 +129,7 @@ export default defineComponent({
|
||||||
const windowWidth = ref(window.innerWidth);
|
const windowWidth = ref(window.innerWidth);
|
||||||
const selectedDate = ref(date.formatDate(new Date(), 'YYYY-MM-DD'));
|
const selectedDate = ref(date.formatDate(new Date(), 'YYYY-MM-DD'));
|
||||||
const proxyDate = ref('');
|
const proxyDate = ref('');
|
||||||
const calendarView = ref('week');
|
const calendarView = ref<'week' | 'day'>('week');
|
||||||
|
|
||||||
const calendarRealView = computed(() => (calendarDays.value != 7 ? 'day' : 'week'));
|
const calendarRealView = computed(() => (calendarDays.value != 7 ? 'day' : 'week'));
|
||||||
const calendarDays = computed(() =>
|
const calendarDays = computed(() =>
|
||||||
|
@ -115,7 +137,7 @@ export default defineComponent({
|
||||||
calendarView.value == 'day' ? 1 : windowWidth.value <= 1023 ? 3 : 7
|
calendarView.value == 'day' ? 1 : windowWidth.value <= 1023 ? 3 : 7
|
||||||
);
|
);
|
||||||
const events = ref<Agendas>({});
|
const events = ref<Agendas>({});
|
||||||
const editor = ref<FG.Event | undefined>(undefined);
|
const editor = ref<EditableEvent | undefined>(undefined);
|
||||||
|
|
||||||
interface Agendas {
|
interface Agendas {
|
||||||
[index: number]: FG.Event[];
|
[index: number]: FG.Event[];
|
||||||
|
@ -195,6 +217,11 @@ export default defineComponent({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function showDay(date: string) {
|
||||||
|
calendarView.value = 'day';
|
||||||
|
selectedDate.value = date;
|
||||||
|
}
|
||||||
|
|
||||||
function updateProxy() {
|
function updateProxy() {
|
||||||
proxyDate.value = selectedDate.value;
|
proxyDate.value = selectedDate.value;
|
||||||
}
|
}
|
||||||
|
@ -228,6 +255,15 @@ export default defineComponent({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function formatDayColor(today: boolean, selected: boolean) {
|
||||||
|
if (today) return 'primary';
|
||||||
|
if (selected) return 'secondary';
|
||||||
|
}
|
||||||
|
|
||||||
|
function newEvent(start: Date | string | number) {
|
||||||
|
editor.value = Object.assign({}, emptyEvent, { start: start });
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
asYear,
|
asYear,
|
||||||
asMonth,
|
asMonth,
|
||||||
|
@ -241,10 +277,13 @@ export default defineComponent({
|
||||||
editor,
|
editor,
|
||||||
editDone,
|
editDone,
|
||||||
events,
|
events,
|
||||||
|
formatDayColor,
|
||||||
|
newEvent,
|
||||||
proxyDate,
|
proxyDate,
|
||||||
remove,
|
remove,
|
||||||
saveSelectedDate,
|
saveSelectedDate,
|
||||||
selectedDate,
|
selectedDate,
|
||||||
|
showDay,
|
||||||
updateProxy,
|
updateProxy,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue