{"version":3,"file":"reports-gEYC1s5Y.js","sources":["../../../app/frontend/entrypoints/controllers/ticket/overview/show/reports.ts"],"sourcesContent":["import jQuery from 'jquery/dist/jquery';\nimport * as bootstrap from 'bootstrap'\nimport Utils from '../../../../utils'\nimport ReportEntity from \"../../../report/entity\";\nimport Quill from 'quill'\n\n\nexport default class TicketShowReports {\n private parent: any;\n private toastr: any;\n private accord: HTMLElement;\n private commentEditor: any;\n\n constructor(parent: any) {\n this.parent = parent\n this.toastr = parent.toastr\n this.accord = document.querySelector(\"#ticketReportsAccordionChilds\") as HTMLElement;\n if (this.accord) {\n this.bindListeners();\n }\n }\n\n bindListeners() {\n this.commentEditor = new Quill('#report_description', {\n bounds: '#report_description',\n placeholder: Utils.translate(\"ticket.chat.placeholder\"),\n modules: {\n toolbar: '#snow-report-toolbar'\n },\n theme: 'snow'\n });\n this.accord.addEventListener(\"click\", async (e) => {\n const target = e.target as HTMLElement;\n if (target && target.classList.contains(\"ticketReportsAccordionEditEnable\")) {\n const uuid = (target.closest(\".accordion-collapse\") as HTMLElement).getAttribute(\"data-uuid\");\n await Utils.entity.destroy(uuid, 'reports');\n await this.parent.getEntity();\n }\n });\n\n (document.querySelector(\"#addNewTicketReport\") as HTMLFormElement).addEventListener(\"submit\", async (e) => {\n e.preventDefault();\n const form = document.querySelector(\"#addNewTicketReport\") as HTMLFormElement;\n if (form.checkValidity()) {\n const desc = this.commentEditor.root.innerHTML\n\n const arrivalFrom = (form.querySelector(\"#report_arrival_from\") as HTMLInputElement).value\n const arrivalTo = (form.querySelector(\"#report_arrival_to\") as HTMLInputElement).value\n\n const arrivalResourceId = (form.querySelector(\"#report_arrival_resource_id option:checked\") as HTMLInputElement) ? (form.querySelector(\"#report_arrival_resource_id option:checked\") as HTMLInputElement).value : null\n const arrivalDistance = (form.querySelector(\"#report_arrival_distance\") as HTMLInputElement).value\n\n const returnFrom = (form.querySelector(\"#report_return_from\") as HTMLInputElement).value\n const returnTo = (form.querySelector(\"#report_return_to\") as HTMLInputElement).value\n const returnResourceId = (form.querySelector(\"#report_return_resource_id option:checked\") as HTMLInputElement) ? (form.querySelector(\"#report_return_resource_id option:checked\") as HTMLInputElement).value : null\n const returnDistance = (form.querySelector(\"#report_return_distance\") as HTMLInputElement).value\n\n const spentFrom = (form.querySelector(\"#report_spent_from\") as HTMLInputElement).value\n const spentTo = (form.querySelector(\"#report_spent_to\") as HTMLInputElement).value\n\n\n const calendarAppointmentId = (form.querySelector(\"#report_calendar_appointment_id option:checked\") as HTMLInputElement).value\n const files = (form.querySelector(\"#report_attachments\") as HTMLInputElement).files\n const fileNames = []\n if (desc) {\n const fileData = []\n if (files) {\n for (let x = 0; x < files.length; x++) {\n fileData.push(await Utils.getBase64(files[x]))\n fileNames.push(files[x].name)\n }\n }\n const btn = (form.querySelector(\"button.btn-primary\")) as HTMLButtonElement;\n btn.setAttribute(\"disabled\", \"disabled\");\n const r = await Utils.entity.upsert({\n ticket_id: this.parent.id,\n calendar_appointment_id: calendarAppointmentId,\n description: desc,\n arrival_from: arrivalFrom,\n arrival_to: arrivalTo,\n arrival_resource_id: arrivalResourceId,\n arrival_distance: arrivalDistance,\n return_from: returnFrom,\n return_to: returnTo,\n return_resource_id: returnResourceId,\n return_distance: returnDistance,\n spent_from: spentFrom,\n spent_to: spentTo,\n files: fileData,\n file_names: fileNames\n }, 'reports')\n form.reset();\n await this.parent.getEntity();\n }\n }\n })\n\n //@ts-ignore\n jQuery(\"#report_calendar_appointment_id\").on(\"select2:select\", async (e: any) => {\n const target = (e.target as HTMLElement).querySelector(\"option:checked\") as HTMLOptionElement;\n //@ts-ignore\n const from = new Date(target.getAttribute(\"data-from\"));\n const fromValue = new Date(from.getTime() + new Date().getTimezoneOffset() * -60 * 1000).toISOString().slice(0, 19);\n\n //@ts-ignore\n const to = new Date(target.getAttribute(\"data-to\"));\n const toValue = new Date(to.getTime() + new Date().getTimezoneOffset() * -60 * 1000).toISOString().slice(0, 19);\n\n const d = new Date(from.getTime() + new Date().getTimezoneOffset() * -60 * 1000).toISOString().slice(0, 11);\n (document.querySelector(\"#report_arrival_from\") as HTMLInputElement).value= `${d}00:00:00`;\n (document.querySelector(\"#report_return_to\") as HTMLInputElement).value= `${d}00:00:00`;\n\n (document.querySelector(\"#report_spent_from\") as HTMLInputElement).value= fromValue;\n (document.querySelector(\"#report_arrival_to\") as HTMLInputElement).value= fromValue;\n (document.querySelector(\"#report_spent_to\") as HTMLInputElement).value= toValue;\n (document.querySelector(\"#report_return_from\") as HTMLInputElement).value= toValue;\n console.log(target, from, to)\n })\n }\n\n update(data: any) {\n const calendarAppointmentSelect = document.querySelector(\"#report_calendar_appointment_id\") as HTMLSelectElement;\n if (calendarAppointmentSelect) {\n calendarAppointmentSelect.innerHTML = \"\";\n\n data.calendar_appointments.forEach((calendarAppointment: any, i: number) => {\n const html = ``\n calendarAppointmentSelect.innerHTML = calendarAppointmentSelect.innerHTML + html;\n });\n }\n if (this.accord) {\n this.accord.innerHTML = \"\"\n //@ts-ignore\n data.reports.forEach((report: any, i: number) => {\n let attachmentHtml = 'No attachments available.'\n if (report.attachments.length > 0) {\n attachmentHtml = ''\n report.attachments.forEach((attachment: any) => {\n attachmentHtml += `${attachment.name}`\n });\n }\n // @ts-ignore\n const arrivalDiff = Math.abs(new Date(Date.parse(report.arrival_to)) - new Date(Date.parse(report.arrival_from)))\n // @ts-ignore\n const workDiff = Math.abs(new Date(Date.parse(report.spent_to)) - new Date(Date.parse(report.spent_from)))\n // @ts-ignore\n const returnDiff = Math.abs(new Date(Date.parse(report.return_to)) - new Date(Date.parse(report.return_from)))\n const html = `
\n

\n \n

\n
\n \n
\n
\n
\n

Description

\n ${report.description}\n
\n
\n

Attachments

\n ${attachmentHtml}\n
\n
\n
\n
\n

Appointment

\n ${report.calendar_appointment ? `${report.calendar_appointment.from}` : 'Not bound to an appointment.'}\n
\n
\n

Arrival

\n ${Utils.formatDate(report.arrival_from)} - ${Utils.formatDate(report.arrival_to)} (${Math.floor((arrivalDiff/1000)/60)}min)
${report.arrival_resource ? `${report.arrival_resource.name}, ` : ``}${report.arrival_distance ? `${report.arrival_distance}km` : ``}\n
\n
\n

Work

\n ${Utils.formatDate(report.spent_from)} - ${Utils.formatDate(report.spent_to)} (${Math.floor((workDiff/1000)/60)}min)\n
\n
\n

Return

\n ${Utils.formatDate(report.return_from)} - ${Utils.formatDate(report.return_to)} (${Math.floor((returnDiff/1000)/60)}min)
${report.return_resource ? `${report.return_resource.name}, ` : ``}${report.return_distance ? `${report.return_distance}km` : ``}\n
\n
\n
\n
\n \n
\n
\n
\n
\n
`\n this.accord.innerHTML = html + this.accord.innerHTML;\n })\n }\n }\n}"],"names":[],"mappings":"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"}