Compare commits
	
		
			No commits in common. "c003b5818314f8ac10f1ce311ba80b047caeb14b" and "3dc108656a0c1e806a38b4968eaae00bad2fcd10" have entirely different histories.
		
	
	
		
			c003b58183
			...
			3dc108656a
		
	
		|  | @ -16,7 +16,7 @@ | ||||||
|           map-options |           map-options | ||||||
|           clearable |           clearable | ||||||
|           :disable="templates.length == 0" |           :disable="templates.length == 0" | ||||||
|           @update:model-value="fromTemplate" |           @update:modelValue="fromTemplate" | ||||||
|           @clear="reset()" |           @clear="reset()" | ||||||
|         /> |         /> | ||||||
|         <q-input |         <q-input | ||||||
|  | @ -60,7 +60,7 @@ | ||||||
|           filled |           filled | ||||||
|         /> |         /> | ||||||
|       </q-card-section> |       </q-card-section> | ||||||
|       <q-card-section v-if="event.is_template !== true && modelValue === undefined"> |       <q-card-section v-if="event.template_id === undefined && modelValue === undefined"> | ||||||
|         <q-btn-toggle |         <q-btn-toggle | ||||||
|           v-model="recurrent" |           v-model="recurrent" | ||||||
|           spread |           spread | ||||||
|  | @ -117,11 +117,6 @@ export default defineComponent({ | ||||||
|       default: () => undefined, |       default: () => undefined, | ||||||
|       type: Object as PropType<FG.Event | undefined>, |       type: Object as PropType<FG.Event | undefined>, | ||||||
|     }, |     }, | ||||||
|     date: { |  | ||||||
|       required: false, |  | ||||||
|       default: '', |  | ||||||
|       type: String |  | ||||||
|     } |  | ||||||
|   }, |   }, | ||||||
|   emits: { |   emits: { | ||||||
|     done: (val: boolean) => typeof val === 'boolean', |     done: (val: boolean) => typeof val === 'boolean', | ||||||
|  | @ -131,8 +126,8 @@ export default defineComponent({ | ||||||
| 
 | 
 | ||||||
|     const emptyJob = { |     const emptyJob = { | ||||||
|       id: NaN, |       id: NaN, | ||||||
|       start: date.adjustDate(new Date(props.date), {hours: (new Date()).getHours()}), |       start: new Date(), | ||||||
|       end: date.addToDate(date.adjustDate(new Date(props.date), {hours: (new Date()).getHours()}), {hours: 1}), |       end: date.addToDate(new Date(), { hours: 1 }), | ||||||
|       services: [], |       services: [], | ||||||
|       required_services: 2, |       required_services: 2, | ||||||
|       type: store.jobTypes[0], |       type: store.jobTypes[0], | ||||||
|  | @ -140,7 +135,7 @@ export default defineComponent({ | ||||||
| 
 | 
 | ||||||
|     const emptyEvent = { |     const emptyEvent = { | ||||||
|       id: NaN, |       id: NaN, | ||||||
|       start: new Date(props.date), |       start: new Date(), | ||||||
|       jobs: [Object.assign({}, emptyJob)], |       jobs: [Object.assign({}, emptyJob)], | ||||||
|       type: store.eventTypes[0], |       type: store.eventTypes[0], | ||||||
|       is_template: false, |       is_template: false, | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
|           <div class="text-h6">Editere {{title}} {{ actualType.name }}</div> |           <div class="text-h6">Editere {{title}} {{ actualType.name }}</div> | ||||||
|         </q-card-section> |         </q-card-section> | ||||||
|         <q-card-section> |         <q-card-section> | ||||||
|           <q-input ref="dialogInput" v-model="actualType.name" :rules="rules" dense label="name" filled /> |           <q-input v-model="actualType.name" :rules="rules" ref="dialogInput" dense label="name" filled /> | ||||||
|         </q-card-section> |         </q-card-section> | ||||||
|         <q-card-actions> |         <q-card-actions> | ||||||
|           <q-btn flat color="danger" label="Abbrechen" @click="discardChanges()" /> |           <q-btn flat color="danger" label="Abbrechen" @click="discardChanges()" /> | ||||||
|  | @ -20,8 +20,8 @@ | ||||||
|         <q-table :title="title" :rows="rows" row-key="id" :columns="columns"> |         <q-table :title="title" :rows="rows" row-key="id" :columns="columns"> | ||||||
|           <template #top-right> |           <template #top-right> | ||||||
|             <q-input |             <q-input | ||||||
|               ref="input" |  | ||||||
|               v-model="actualType.name" |               v-model="actualType.name" | ||||||
|  |               ref="input" | ||||||
|               :rules="rules" |               :rules="rules" | ||||||
|               dense |               dense | ||||||
|               placeholder="Neuer Typ" |               placeholder="Neuer Typ" | ||||||
|  | @ -62,21 +62,22 @@ export default defineComponent({ | ||||||
|   }, |   }, | ||||||
|   setup(props) { |   setup(props) { | ||||||
|     const store = useScheduleStore(); |     const store = useScheduleStore(); | ||||||
|  |     const newType = ref(''); | ||||||
|     const dialogOpen = ref(false); |     const dialogOpen = ref(false); | ||||||
|     const emptyType = { id: -1, name: '' }; |     const emptyType = { id: -1, name: '' }; | ||||||
|     const actualType = ref(emptyType); |     const actualType = ref(emptyType); | ||||||
|     const input = ref<QInput>(); |     const input = ref<QInput>(null); | ||||||
|     const dialogInput = ref<QInput>(); |     const dialogInput = ref<QInput>(null); | ||||||
|     const storeName = computed(() => props.type == 'EventType' ? 'eventTypes' : 'jobTypes') |     const storeName = computed(() => props.type.charAt(0).toLowerCase() + props.type.slice(1) + 's') | ||||||
| 
 | 
 | ||||||
|     onBeforeMount(async () => await store[`get${props.type}s`]()); |     onBeforeMount(async () => await store[`get${props.type}s`]()); | ||||||
| 
 | 
 | ||||||
|     const rows = computed(() => <(FG.EventType|FG.JobType)[]>store[storeName.value]); |     const rows = computed(() => store[storeName.value]); | ||||||
| 
 | 
 | ||||||
|     const rules = [ |     const rules = [ | ||||||
|       (s: unknown) => !!s || 'Darf nicht leer sein!', |       (s: any) => !!s || 'Darf nicht leer sein!', | ||||||
|       (s: string) => |       (s: string) => | ||||||
|         rows.value.find((e) => e.name === s) === undefined || |         store[storeName.value].find((e) => e.name === s) === undefined || | ||||||
|         'Der Name wird bereits verwendet', |         'Der Name wird bereits verwendet', | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|  | @ -97,7 +98,7 @@ export default defineComponent({ | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|     function addType() { |     function addType() { | ||||||
|       if (input.value === undefined || input.value.validate()) |       if (input.value === null || input.value.validate()) | ||||||
|         store |         store | ||||||
|           [`add${props.type}`](actualType.value.name) |           [`add${props.type}`](actualType.value.name) | ||||||
|           .then(() => { |           .then(() => { | ||||||
|  | @ -123,8 +124,8 @@ export default defineComponent({ | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function saveChanges() { |     function saveChanges() { | ||||||
|       if (dialogInput.value === undefined || dialogInput.value.validate()) |       if (dialogInput.value === null || dialogInput.value.validate()) | ||||||
|         void store[`rename${props.type}`](actualType.value.id, actualType.value.name).then(() => discardChanges()); |         store[`rename${props.type}`](actualType.value.id, actualType.value.name).then(() => discardChanges()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function discardChanges() { |     function discardChanges() { | ||||||
|  |  | ||||||
|  | @ -38,7 +38,7 @@ | ||||||
|                       label="OK" |                       label="OK" | ||||||
|                       color="primary" |                       color="primary" | ||||||
|                       flat |                       flat | ||||||
|                       @click="saveNewSelectedDate" |                       @click="saveNewSelectedDate(proxyDate)" | ||||||
|                     /> |                     /> | ||||||
|                   </div> |                   </div> | ||||||
|                 </q-date> |                 </q-date> | ||||||
|  | @ -68,24 +68,14 @@ | ||||||
|           locale="de-de" |           locale="de-de" | ||||||
|           style="height: 100%; min-height: 400px" |           style="height: 100%; min-height: 400px" | ||||||
|         > |         > | ||||||
|           <template #head-day-label="{scope: {timestamp}}"> |  | ||||||
|             {{timestamp.day}} |  | ||||||
|             <q-menu> |  | ||||||
|               <q-list style="min-width: 100px"> |  | ||||||
|                 <q-item exact :to="{name: 'new-event', query: {date: timestamp.date}}"> |  | ||||||
|                   <q-item-section>Neue Veranstaltung</q-item-section> |  | ||||||
|                 </q-item> |  | ||||||
|               </q-list> |  | ||||||
|             </q-menu> |  | ||||||
|           </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 | ||||||
|                 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]" | ||||||
|                 @remove-event="remove" |                 @removeEvent="remove" | ||||||
|                 @edit-event="edit" |                 @editEvent="edit" | ||||||
|               /> |               /> | ||||||
|             </div> |             </div> | ||||||
|           </template> |           </template> | ||||||
|  | @ -102,7 +92,7 @@ import Eventslot from './slots/EventSlot.vue'; | ||||||
| import { date } 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', | ||||||
|  | @ -118,7 +108,7 @@ export default defineComponent({ | ||||||
|     const calendarRealView = computed(() => (calendarDays.value != 7 ? 'day' : 'week')); |     const calendarRealView = computed(() => (calendarDays.value != 7 ? 'day' : 'week')); | ||||||
|     const calendarDays = computed(() => |     const calendarDays = computed(() => | ||||||
|       // <= 1023 is the breakpoint for sm to md |       // <= 1023 is the breakpoint for sm to md | ||||||
|       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<FG.Event | undefined>(undefined); | ||||||
|  |  | ||||||
|  | @ -32,7 +32,7 @@ | ||||||
|         animated |         animated | ||||||
|       > |       > | ||||||
|         <q-tab-panel name="create"> |         <q-tab-panel name="create"> | ||||||
|           <EditEvent :date="date" /> |           <EditEvent /> | ||||||
|         </q-tab-panel> |         </q-tab-panel> | ||||||
|         <q-tab-panel name="eventtypes"> |         <q-tab-panel name="eventtypes"> | ||||||
|           <ManageTypes title="Veranstaltungstyp" type="EventType" /> |           <ManageTypes title="Veranstaltungstyp" type="EventType" /> | ||||||
|  | @ -56,13 +56,6 @@ import { Screen } from 'quasar'; | ||||||
| export default defineComponent({ | export default defineComponent({ | ||||||
|   name: 'EventManagement', |   name: 'EventManagement', | ||||||
|   components: { EditEvent, ManageTypes }, |   components: { EditEvent, ManageTypes }, | ||||||
|   props: { |  | ||||||
|     date: { |  | ||||||
|       type: String, |  | ||||||
|       required: false, |  | ||||||
|       default: undefined |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   setup() { |   setup() { | ||||||
|     const tabs = computed(() => [ |     const tabs = computed(() => [ | ||||||
|       { name: 'create', label: 'Veranstaltungen' }, |       { name: 'create', label: 'Veranstaltungen' }, | ||||||
|  | @ -71,7 +64,6 @@ export default defineComponent({ | ||||||
|     ]); |     ]); | ||||||
| 
 | 
 | ||||||
|     const drawer = ref<boolean>(false); |     const drawer = ref<boolean>(false); | ||||||
|     const tab = ref<string>('create'); |  | ||||||
| 
 | 
 | ||||||
|     const showDrawer = computed({ |     const showDrawer = computed({ | ||||||
|       get: () => { |       get: () => { | ||||||
|  | @ -82,6 +74,7 @@ export default defineComponent({ | ||||||
|       }, |       }, | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     const tab = ref<string>('create'); | ||||||
| 
 | 
 | ||||||
|     return { |     return { | ||||||
|       showDrawer, |       showDrawer, | ||||||
|  |  | ||||||
|  | @ -31,7 +31,6 @@ export const innerRoutes: FG_Plugin.MenuRoute[] = [ | ||||||
|           path: 'schedule-management', |           path: 'schedule-management', | ||||||
|           name: 'schedule-management', |           name: 'schedule-management', | ||||||
|           component: () => import('../pages/Management.vue'), |           component: () => import('../pages/Management.vue'), | ||||||
|           props: (route) => ({date: route.query.date}), |  | ||||||
|         }, |         }, | ||||||
|       }, |       }, | ||||||
|       { |       { | ||||||
|  | @ -49,11 +48,6 @@ export const innerRoutes: FG_Plugin.MenuRoute[] = [ | ||||||
| ]; | ]; | ||||||
| 
 | 
 | ||||||
| export const privateRoutes: FG_Plugin.NamedRouteRecordRaw[] = [ | export const privateRoutes: FG_Plugin.NamedRouteRecordRaw[] = [ | ||||||
|   { |  | ||||||
|     name: 'new-event', |  | ||||||
|     path: 'new-event', |  | ||||||
|     redirect: {name: 'schedule-management'} |  | ||||||
|   }, |  | ||||||
|   { |   { | ||||||
|     name: 'events-edit', |     name: 'events-edit', | ||||||
|     path: 'schedule/:id/edit', |     path: 'schedule/:id/edit', | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue