Compare commits
	
		
			No commits in common. "511014d04380fec911ce13f11f665e2fb7f8e5c3" and "a8953bbae610fc8f1650a74bc447c4d62e8a6cda" have entirely different histories.
		
	
	
		
			511014d043
			...
			a8953bbae6
		
	
		|  | @ -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, | ||||||
|  |  | ||||||
|  | @ -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 { | ||||||
|  | @ -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(); | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -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: { | ||||||
|  |  | ||||||
|  | @ -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; | ||||||
|       }, |       }, | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue