{"version":3,"file":"list-TKQF7F9x.js","sources":["../../../app/frontend/entrypoints/controllers/reporting/appointments/overview/list.ts"],"sourcesContent":["import jQuery from 'jquery/dist/jquery';\nimport Utils from '../../../../utils'\nimport DefaultController from \"../../../defaultController\";\nimport Calendar from '@event-calendar/core';\nimport DayGrid from '@event-calendar/day-grid';\nimport TimeGrid from '@event-calendar/time-grid';\n\nexport default class ReportingAppointmentList extends DefaultController {\n\n private ulUserList: any;\n private calendars: any = {}\n private calendarResources: any[] = [];\n\n protected calendarAppointmentList: any = {}\n\n async init() {\n this.ulUserList = jQuery('#ticket_service_user_list')\n\n await this.setup();\n await super.init()\n }\n\n async setup() {\n this.calendarResources = [];\n this.calendarAppointmentList = {};\n const users = await Utils.entity.getAll(\"users/capable_users\")\n users.data.forEach((u: any, i: number) => {\n this.calendarResources.push({\n id: i + 1,\n title: u.name,\n color: `#${Utils.genCalendarColor(i)}`,\n uuid: u.uuid\n })\n })\n\n this.ulUserList.html(\"\");\n for (const resource of this.calendarResources) {\n this.calendarAppointmentList[resource.uuid] = [];\n this.ulUserList.html(this.ulUserList.html() + `
  • ${resource.title}
     
  • `)\n const e = await Utils.entity.get(resource.uuid, \"users\")\n if (e.status === 200) {\n const userData = e.data[0]\n const appointments = userData.calendarAppointments;\n for (const appointment of appointments) {\n let title = appointment.title\n if (appointment.external) {\n title = `[EXTERN]${title}`\n }\n this.calendarAppointmentList[resource.uuid].push({\n id: appointment.uuid,\n start: appointment.from,\n end: appointment.to,\n resourceId: resource.id,\n title: title,\n color: resource.color,\n editable: !appointment.external,\n external: appointment.external\n })\n }\n }\n }\n\n if (document.querySelector(\"#ticket_service_calendar\")) {\n (document.querySelector(\"#ticket_service_calendar\") as HTMLElement).innerHTML = \"\";\n }\n }\n \n getEntityData(elem: any) {\n return {}\n }\n bindListeners() {\n this.ulUserList.delegate(\"li\", \"click\", (e: any) => {\n this.onUserClick(e);\n });\n (document.querySelector(\"#ticket_service_calendar_picker\") as HTMLButtonElement).addEventListener(\"change\", async (e) => {\n e.preventDefault();\n const calendarIds = Object.keys(this.calendars);\n calendarIds.forEach((calendarId: string) => {\n const calendar = this.calendars[calendarId];\n let oldDate = (document.querySelector(\"#ticket_service_calendar_picker\") as HTMLInputElement).valueAsDate;\n if (oldDate) {\n calendar.setOption('date', oldDate);\n const header = document.querySelector(\"#ticket_service_calendar_date\");\n if (header) {\n header.innerHTML = `

    ${oldDate.toLocaleDateString(\"de-DE\", {month: \"2-digit\", year: \"numeric\", day: \"2-digit\"})}

    `\n }\n }\n })\n });\n (document.querySelector(\"#ticket_service_calendar_arrows_prev\") as HTMLButtonElement).addEventListener(\"click\", async (e) => {\n e.preventDefault();\n const calendarIds = Object.keys(this.calendars);\n calendarIds.forEach((calendarId: string) => {\n const calendar = this.calendars[calendarId];\n let oldDate = calendar.getOption('date');\n oldDate.setDate(oldDate.getDate() - 1)\n calendar.setOption('date', oldDate);\n const header = document.querySelector(\"#ticket_service_calendar_date\");\n if (header) {\n header.innerHTML = `

    ${oldDate.toLocaleDateString(\"de-DE\", {month: \"2-digit\", year: \"numeric\", day: \"2-digit\"})}

    `\n }\n oldDate.setDate(oldDate.getDate() + 1);\n (document.querySelector(\"#ticket_service_calendar_picker\") as HTMLInputElement).value = oldDate.toISOString().substr(0, 10);\n })\n });\n (document.querySelector(\"#ticket_service_calendar_arrows_next\") as HTMLButtonElement).addEventListener(\"click\", async (e) => {\n e.preventDefault();\n const calendarIds = Object.keys(this.calendars);\n calendarIds.forEach((calendarId: string) => {\n const calendar = this.calendars[calendarId];\n let oldDate = calendar.getOption('date');\n oldDate.setDate(oldDate.getDate() + 1)\n calendar.setOption('date', oldDate);\n const header = document.querySelector(\"#ticket_service_calendar_date\");\n if (header) {\n header.innerHTML = `

    ${oldDate.toLocaleDateString(\"de-DE\", {month: \"2-digit\", year: \"numeric\", day: \"2-digit\"})}

    `\n }\n oldDate.setDate(oldDate.getDate() + 1);\n (document.querySelector(\"#ticket_service_calendar_picker\") as HTMLInputElement).value = oldDate.toISOString().substr(0, 10);\n })\n });\n }\n createUserCalendar(element: any, userUuid: string, userTitle: string, userColor: string) {\n const calendar = new Calendar({\n target: element,\n props: {\n plugins: [DayGrid, TimeGrid],\n options: {\n view: 'timeGridDay',\n views: {timeGridDay: {pointer: true}},\n resources: [{id: 0, title: userTitle, color: userColor, uuid: userUuid}],\n scrollTime: '09:00:00',\n allDaySlot: false,\n events: [],\n nowIndicator: true,\n selectable: true,\n selectBackgroundColor: userColor,\n firstDay: 1,\n headerToolbar: {\n start: \"\",\n center: ``,\n end: \"\"\n },\n eventDrop: async (info: any) => {\n },\n eventClick: (info: any) => {\n },\n eventResize: async (info: any) => {\n },\n select: async (info: any) => {\n\n }\n }\n }\n });\n\n const events = this.calendarAppointmentList[userUuid]\n if (events) {\n events.forEach((appointment: any) => {\n if (calendar) {\n let title = appointment.title\n if (appointment.external) {\n title = `[EXTERN]${title}`\n }\n calendar.addEvent({id: appointment.id, start: appointment.start, end: appointment.end, resourceId: 0, title: title, color: userColor, editable: appointment.editable, extendedProps: {external: appointment.external}})\n }\n })\n }\n this.calendars[userUuid] = calendar;\n\n\n const oldDate = new Date();\n const header = document.querySelector(\"#ticket_service_calendar_date\");\n if (header) {\n header.innerHTML = `

    ${oldDate.toLocaleDateString(\"de-DE\", {month: \"2-digit\", year: \"numeric\", day: \"2-digit\"})}

    `\n }\n }\n\n onUserClick(e: any) {\n const currentTarget = e.currentTarget;\n const resourceId = currentTarget.getAttribute(\"data-resource-id\") as string;\n const uuid = currentTarget.getAttribute(\"data-resource-uuid\") as string;\n const name = currentTarget.getAttribute(\"data-resource-name\") as string ;\n const color = currentTarget.getAttribute(\"data-color\") as string;\n const parent = document.querySelector(\"#ticket_service_calendars\") as HTMLElement;\n\n const currentIds = Object.keys(this.calendars)\n if (this.calendars[uuid]) {\n this.calendars[uuid].destroy();\n parent.removeChild((document.querySelector(`#column_${uuid}`) as HTMLElement));\n delete this.calendars[uuid];\n currentTarget.classList.remove(\"active\");\n } else if (currentIds.length <= 5) {\n const parentElem = document.createElement('div');\n parentElem.classList.add(\"col-2\");\n parentElem.id = `column_${uuid}`\n const row = document.createElement('div');\n row.classList.add(\"row\");\n row.innerHTML = `
    ${name}
    `;\n\n const rowCalendar = document.createElement('div');\n rowCalendar.classList.add(\"row\");\n this.createUserCalendar(rowCalendar, uuid, name, color)\n\n parentElem.appendChild(row);\n parentElem.appendChild(rowCalendar);\n\n parent.appendChild(parentElem);\n currentTarget.classList.add(\"active\");\n }\n console.log(\"this.calendars\", this.calendars);\n }\n}"],"names":["DayGrid","TimeGrid"],"mappings":"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"}