import FhcCalendar from "./Base.js"; import { useEventLoader } from '../../composables/EventLoader.js'; import { useRenderers } from '../../composables/Renderers.js'; import ModeList from '../Calendar/Mode/List.js'; export default { name: "CalendarWidget", components: { FhcCalendar }, props: { getPromiseFunc: { type: Function, required: true } }, data() { const timezone = FHC_JS_DATA_STORAGE_OBJECT.timezone; return { timezone, now: luxon.DateTime.now().setZone(timezone), modes: { list: Vue.markRaw(ModeList) }, modeOptions: { list: { length: 7 } } }; }, methods: { eventStyle(event) { const styles = {}; if (event.farbe) styles['--event-bg'] = '#' + event.farbe; else if (event.type == 'reservierung') styles['--event-bg'] = '#ffffff'; else styles['--event-bg'] = '#cccccc'; const eventEnd = luxon.DateTime.fromISO(event.isoend, { zone: this.timezone }); if (eventEnd < this.now) styles['opacity'] = .5; return styles; }, updateRange(rangeInterval) { this.rangeInterval = rangeInterval; } }, setup(props) { const rangeInterval = Vue.ref(null); const { events } = useEventLoader(rangeInterval, props.getPromiseFunc); const { renderers } = useRenderers(); return { rangeInterval, events, renderers }; }, template: /* html */` ` }