Compare commits

..

No commits in common. "511014d04380fec911ce13f11f665e2fb7f8e5c3" and "a8953bbae610fc8f1650a74bc447c4d62e8a6cda" have entirely different histories.

5 changed files with 32 additions and 25 deletions

View File

@ -78,7 +78,7 @@
</q-card-section> </q-card-section>
<q-card-section v-for="(job, index) in event.jobs" :key="index"> <q-card-section v-for="(job, index) in event.jobs" :key="index">
<q-card class="q-my-auto"> <q-card class="q-my-auto">
<edit-job-slot <job
v-model="event.jobs[index]" v-model="event.jobs[index]"
:job-can-delete="jobDeleteDisabled" :job-can-delete="jobDeleteDisabled"
@remove-job="removeJob(index)" @remove-job="removeJob(index)"
@ -105,12 +105,12 @@ import { date, ModifyDateOptions } from 'quasar';
import { useScheduleStore } from '../../store'; import { useScheduleStore } from '../../store';
import { notEmpty } from '@flaschengeist/api'; import { notEmpty } from '@flaschengeist/api';
import { IsoDateInput } from '@flaschengeist/api/components'; import { IsoDateInput } from '@flaschengeist/api/components';
import EditJobSlot from './EditJobSlot.vue'; import Job from './Job.vue';
import RecurrenceRule from './RecurrenceRule.vue'; import RecurrenceRule from './RecurrenceRule.vue';
export default defineComponent({ export default defineComponent({
name: 'EditEvent', name: 'EditEvent',
components: { IsoDateInput, EditJobSlot, RecurrenceRule }, components: { IsoDateInput, Job, RecurrenceRule },
props: { props: {
modelValue: { modelValue: {
required: false, required: false,

View File

@ -56,7 +56,7 @@ import { notEmpty } from '@flaschengeist/api';
import { useScheduleStore } from '../../store'; import { useScheduleStore } from '../../store';
export default defineComponent({ export default defineComponent({
name: 'JobSlot', name: 'Job',
components: { IsoDateInput }, components: { IsoDateInput },
props: { props: {
modelValue: { modelValue: {
@ -95,8 +95,8 @@ export default defineComponent({
emit('remove-job'); emit('remove-job');
} }
function isAfterDate(val: Date) { function isAfterDate(val: string) {
return props.modelValue.start < val || 'Ende muss hinter dem Start liegen'; return props.modelValue.start < new Date(val) || 'Ende muss hinter dem Start liegen';
} }
return { return {

View File

@ -49,7 +49,6 @@
</div> </div>
<div class="col-xs-12 col-sm-3 text-center"> <div class="col-xs-12 col-sm-3 text-center">
<q-btn-toggle <q-btn-toggle
v-if="$q.screen.gt.xs"
v-model="calendarView" v-model="calendarView"
flat flat
stretch stretch
@ -81,7 +80,7 @@
</template> </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">
<event-slot <eventslot
v-for="(agenda, index) in events[timestamp.weekday]" v-for="(agenda, index) in events[timestamp.weekday]"
:key="index" :key="index"
v-model="events[timestamp.weekday][index]" v-model="events[timestamp.weekday][index]"
@ -99,27 +98,27 @@
<script lang="ts"> <script lang="ts">
import { ComponentPublicInstance, computed, defineComponent, onBeforeMount, ref } from 'vue'; import { ComponentPublicInstance, computed, defineComponent, onBeforeMount, ref } from 'vue';
import { useScheduleStore } from '../../store'; import { useScheduleStore } from '../../store';
import EventSlot from './slots/EventSlot.vue'; import Eventslot from './slots/EventSlot.vue';
import { date, useQuasar } from 'quasar'; import { date } from 'quasar';
import { startOfWeek } from '@flaschengeist/api'; import { startOfWeek } from '@flaschengeist/api';
import EditEvent from '../management/EditEvent.vue'; import EditEvent from '../management/EditEvent.vue';
import { QCalendarAgenda } from '@quasar/quasar-ui-qcalendar'; import { QCalendarAgenda } from '@quasar/quasar-ui-qcalendar';
export default defineComponent({ export default defineComponent({
name: 'AgendaView', name: 'AgendaView',
components: { EventSlot, EditEvent, QCalendarAgenda: <ComponentPublicInstance>QCalendarAgenda }, components: { Eventslot, EditEvent, QCalendarAgenda: <ComponentPublicInstance>QCalendarAgenda },
setup() { setup() {
const store = useScheduleStore(); const store = useScheduleStore();
const quasar = useQuasar(); 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');
const calendarRealView = computed(() => (calendarDays.value != 7 ? 'day' : 'week')); const calendarRealView = computed(() => (calendarDays.value != 7 ? 'day' : 'week'));
const calendarDays = computed(() => const calendarDays = computed(() =>
(calendarView.value == 'day' || quasar.screen.xs) ? 1 : quasar.screen.sm ? 3 : 7 // <= 1023 is the breakpoint for sm to md
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<FG.Event | undefined>(undefined);
@ -129,6 +128,10 @@ export default defineComponent({
} }
onBeforeMount(async () => { onBeforeMount(async () => {
window.addEventListener('resize', () => {
windowWidth.value = window.innerWidth;
});
await loadAgendas(); await loadAgendas();
}); });

View File

@ -4,13 +4,13 @@
bordered bordered
> >
<q-card-section class="text-primary q-pa-xs"> <q-card-section class="text-primary q-pa-xs">
<div class="text-weight-bolder text-center"> <div class="text-weight-bolder text-center" style="font-size: 1.5vw">
{{ event.type.name }} {{ event.type.name }}
<template v-if="event.name" <template v-if="event.name"
>: <span>{{ event.name }}</span> >: <span style="font-size: 1.2vw">{{ event.name }}</span>
</template> </template>
</div> </div>
<div v-if="event.description" class="text-weight-medium"> <div v-if="event.description" class="text-weight-medium" style="font-size: 1vw">
{{ event.description }} {{ event.description }}
</div> </div>
</q-card-section> </q-card-section>
@ -53,7 +53,7 @@ import { PERMISSIONS } from '../../../permissions';
import JobSlot from './JobSlot.vue'; import JobSlot from './JobSlot.vue';
export default defineComponent({ export default defineComponent({
name: 'EventSlot', name: 'Eventslot',
components: { JobSlot }, components: { JobSlot },
props: { props: {
modelValue: { modelValue: {

View File

@ -34,7 +34,7 @@
<q-tab-panel name="agendaView"> <q-tab-panel name="agendaView">
<AgendaView /> <AgendaView />
</q-tab-panel> </q-tab-panel>
<q-tab-panel name="listView"> <q-tab-panel name="eventtypes">
</q-tab-panel> </q-tab-panel>
</q-tab-panels> </q-tab-panels>
</q-page> </q-page>
@ -44,23 +44,27 @@
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, ref } from 'vue'; import { computed, defineComponent, ref } from 'vue';
import AgendaView from '../components/overview/AgendaView.vue'; import AgendaView from '../components/overview/AgendaView.vue';
import { useQuasar } from 'quasar'; import { Screen } from 'quasar';
export default defineComponent({ export default defineComponent({
name: 'EventOverview', name: 'EventOverview',
components: { AgendaView }, components: { AgendaView },
setup() { setup() {
const quasar = useQuasar(); interface Tab {
name: string;
label: string;
}
const tabs = computed(() => ([ const tabs: Tab[] = [
{ name: 'listView', label: 'Liste' },
{ name: 'agendaView', label: 'Kalendar' } { name: 'agendaView', label: 'Kalendar' }
])); ];
const drawer = ref<boolean>(false); const drawer = ref<boolean>(false);
const showDrawer = computed({ const showDrawer = computed({
get: () => !quasar.screen.gt.sm && drawer.value, get: () => {
return !Screen.gt.sm && drawer.value;
},
set: (val: boolean) => { set: (val: boolean) => {
drawer.value = val; drawer.value = val;
}, },