{"version":3,"file":"list-YXG-jvPP.js","sources":["../../../app/frontend/entrypoints/controllers/ticket/overview/list.ts"],"sourcesContent":["import jQuery from 'jquery/dist/jquery';\n\nimport Swal from 'sweetalert2';\nimport {German} from \"flatpickr/dist/l10n/de.js\"\n\nimport * as bootstrap from 'bootstrap'\nimport Utils from '../../../utils'\nimport DefaultController from \"../../defaultController\";\nimport TicketEntity from '../entity';\nimport TicketFilterEntity from \"../../ticket_filter/entity\";\nimport flatpickr from \"flatpickr\";\nimport UtilsEntity from \"../../../utils/entity\";\n\nexport default class TicketOverviewList extends DefaultController {\n tableElem: any;\n datatable: any;\n filterModal: any;\n\n async init() {\n this.entity = \"ticket\";\n this.tableElem = jQuery('.datatables-users')\n this.createTable();\n await super.init();\n }\n\n getEntityData(elem: any) {\n return TicketEntity.getEntityData(elem)\n }\n\n bindListeners() {\n this.filterModal = new bootstrap.Modal((document.querySelector(\"#newTicketFilterModal\") as HTMLElement));\n (document.querySelectorAll(\"button.ticket_filter\") as NodeListOf).forEach((ticketFilterButton: any) => {\n ticketFilterButton.addEventListener(\"click\", (e) => {\n e.preventDefault();\n const savedFilters = JSON.parse(ticketFilterButton.getAttribute(\"data-filter\") as string);\n this.datatable.columns().every((col: number) => {\n const column = this.datatable.column(col);\n const header = column.header();\n const filterElem = header.querySelector(\"select\")\n if (filterElem) {\n if (savedFilters && savedFilters[`col-${col}`]) {\n const values = savedFilters[`col-${col}`].split(\"|\")\n jQuery(filterElem).val(values);\n jQuery(filterElem).trigger('change');\n if (col === 6 && values.indexOf(\"Ja\") !== -1) {\n column.search('^((?!Nein).)*$', true, false).draw()\n } else if (col === 5 && values.indexOf('Nicht zugewiesen') !== -1) {\n column.search('', true, false).draw()\n } else {\n column.search(values.join(\"|\").length > 0 ? '^' + values.join(\"|\") + '$' : '', true, false).draw();\n }\n }\n }\n })\n })\n });\n\n (document.querySelector(\"#ticket_save_filter\") as HTMLButtonElement).addEventListener(\"click\", (e: any) => {\n e.preventDefault();\n this.filterModal.show();\n let savedFilters = localStorage.getItem(\"fltools_tickets_filter\") as string\n (document.querySelector(\"#newTicketFilterForm #ticket_filter_filter\") as HTMLInputElement).value = savedFilters;\n });\n (document.querySelector(\"#newTicketFilterForm\") as HTMLFormElement).addEventListener(\"submit\", async (e: any) => {\n e.preventDefault();\n const elem = (document.querySelector(\"#newTicketFilterForm\") as HTMLFormElement);\n const entityData = TicketFilterEntity.getEntityData(elem)\n console.log(\"entityData\", entityData)\n await Utils.showLoader()\n const r = await Utils.entity.upsert(entityData, 'ticket_filters')\n if (r && r.status === 200) {\n const newBtn = r.data[0]\n document.location.reload();\n await Utils.hideLoader()\n }\n });\n\n this.tableElem.delegate(\".delete-record\", \"click\", async (e: any) => {\n const confirm = await Swal.fire({\n title: 'Are you sure?',\n text: \"You won't be able to revert this!\",\n icon: 'warning',\n showCancelButton: true,\n confirmButtonText: 'Yes, delete it!',\n customClass: {\n confirmButton: 'btn btn-primary me-3',\n cancelButton: 'btn btn-label-secondary'\n },\n buttonsStyling: false\n })\n if (confirm.value === true) {\n const id = e.currentTarget.getAttribute(\"data-id\");\n const r = await Utils.entity.destroy(id, this.entity);\n if (r.status === 200) {\n this.toastr.success(`${Utils.translate('ticket.name')} ${Utils.translate('generic.deleted')}`, `${Utils.translate('generic.success')}`)\n } else {\n this.toastr.error(`${Utils.translate('ticket.name')} ${Utils.translate('generic.messages.not_deleted')}`, `${Utils.translate('generic.error')}`)\n }\n this.datatable.ajax.reload();\n }\n });\n }\n\n createTable() {\n let queueId = null;\n if (document.querySelector(\"div[data-queue-id]\")) {\n queueId = (document.querySelector(\"div[data-queue-id]\") as HTMLElement).getAttribute(\"data-queue-id\")\n }\n const action = document.body.getAttribute(\"data-current-action\")\n let url = queueId ? `/api/v1/tickets?queue_id=${queueId}` : `/api/v1/tickets?childs=false`\n if (action === \"archive\") {\n url = `/api/v1/tickets?archive=true&childs=false`\n }\n let initComplete = false\n this.datatable = new DataTable(\".datatables-users\", {\n ajax: {\n url: url,\n dataType: 'json',\n beforeSend: () => {\n this.tableElem.closest(\".card\").find(\".card-datatable\").addClass(\"d-none\")\n this.tableElem.closest(\".card\").find(\".loading-body\").removeClass(\"d-none\")\n },\n\n complete: () => {\n if (initComplete) {\n this.tableElem.closest(\".card\").find(\".loading-body\").addClass(\"d-none\")\n this.tableElem.closest(\".card\").find(\".card-datatable\").removeClass(\"d-none\")\n }\n },\n // @ts-ignore\n data: (params: { length: any; start: any; draw: any; order: any; search: any; columns: any; }) => {\n return {\n length: params.length,\n draw: params.draw,\n start: params.start,\n search: params.search ? params.search.value : null,\n sort: params.order ? params.order[0] : [],\n columns: params.columns\n };\n },\n // @ts-ignore\n dataSrc: (data: any, params: any) => {\n if (data.status === 200) {\n data[\"recordsTotal\"] = data.meta.total;\n data[\"recordsFiltered\"] = data.meta.total;\n data[\"draw\"] = data.meta.draw;\n }\n return data.data;\n },\n cache: true\n },\n pagingType: 'full_numbers',\n layout: {\n bottomEnd: {\n paging: {\n numbers: true\n }\n }\n },\n order: [[0, 'desc']],\n ordering: false,\n serverSide: true,\n pageLength: 25,\n columns: [\n {data: 'number'},\n {data: 'uuid'},\n {data: 'title'},\n {data: 'uuid'},\n {data: 'uuid'},\n {data: 'uuid'},\n {data: 'uuid'},\n {data: 'uuid'},\n {data: 'uuid'},\n {data: 'uuid'},\n {data: 'uuid'}\n ],\n columnDefs: [\n {\n targets: 0,\n render: (data: any, type: any, full: any, meta: any) => {\n return `window).currentLocale}/ticket/tasks/${full.uuid}\">${data}`;\n },\n },\n {\n targets: 1,\n render: (data: any, type: any, full: any, meta: any) => {\n return full.ticket_category ? full.ticket_category.name : \"\";\n },\n },\n {\n targets: 2,\n render: (data: any, type: any, full: any, meta: any) => {\n if (full.children && full.children.length > 0) {\n const doneTickets = full.children.filter((t: { is_done: any; }) => t.is_done);\n const progress = doneTickets.length / full.children.length * 100;\n return `
${data}
\n
\n
\n
${doneTickets.length} / ${full.children.length} Tickets \n
\n\n
\n
`;\n } else {\n return `${data}`;\n }\n },\n },\n {\n targets: 3,\n render: (data: any, type: any, full: any, meta: any) => {\n if (full.customer) {\n return `window).currentLocale}/customer/customers/${full.customer.uuid}\">${full.customer.name}`;\n } else {\n return \"\";\n }\n },\n },\n {\n targets: 4,\n render: (data: any, type: any, full: any, meta: any) => {\n return full.customer_reference;\n },\n },\n {\n targets: 5,\n render: (data: any, type: any, full: any, meta: any) => {\n if (full.project) {\n return `${full.project.name}`;\n } else {\n return \"\";\n }\n },\n },\n {\n targets: 6,\n render: (data: any, type: any, full: any, meta: any) => {\n if (full.assignee) {\n return `${full.assignee.name}`;\n } else {\n return \"\";\n }\n },\n },\n {\n targets: 7,\n render: (data: any, type: any, full: any, meta: any) => {\n let str = \"\";\n if (full.calendar_appointments.length === 0) {\n str = \"Nein\";\n } else {\n full.calendar_appointments.forEach((calendar_appointment: any) => {\n str += ` ${(new Date(calendar_appointment.from)).toLocaleString(\"de-DE\", {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit'\n })}
`\n })\n }\n\n return str;\n },\n },\n {\n targets: 8,\n render: (data: any, type: any, full: any, meta: any) => {\n if (full.status) {\n return `${full.status.name}`;\n } else {\n return \"\";\n }\n },\n },\n {\n targets: 9,\n render: (data: any, type: any, full: any, meta: any) => {\n if (full.priority) {\n return `${full.priority.name}`;\n } else {\n return \"\";\n }\n },\n },\n {\n targets: 10,\n searchable: false,\n orderable: false,\n render: (data: any, type: any, full: any, meta: any) => {\n if ((window).userPermissions.Ticket.can_update) {\n return ``\n } else {\n return ''\n }\n },\n }\n ],\n processing: true,\n language: {\n sLengthMenu: '_MENU_',\n search: '',\n searchPlaceholder: `${Utils.translate('generic.search')}...`,\n \"zeroRecords\": `${Utils.translate('generic.datatable.no_results')}`,\n \"emptyTable\": `${Utils.translate('generic.datatable.no_results')}`,\n \"paginate\": {\n \"first\": `${Utils.translate('generic.datatable.pagination.first')}`,\n \"last\": `${Utils.translate('generic.datatable.pagination.last')}`,\n \"next\": `${Utils.translate('generic.datatable.pagination.next')}`,\n \"previous\": `${Utils.translate('generic.datatable.pagination.previous')}`\n },\n \"info\": `${Utils.translate('generic.datatable.info.info')}`,\n \"infoEmpty\": `${Utils.translate('generic.datatable.info.empty')}`,\n \"infoFiltered\": `${Utils.translate('generic.datatable.info.filtered')}`,\n },\n buttons: (window).userPermissions.Ticket.can_create ? [\n {\n text: `${Utils.translate('generic.add')}`,\n className: 'dt-button add-new btn btn-primary m-2',\n action: () => {\n document.location.href = `/${(window as any).currentLocale}/ticket/tasks/new`\n }\n }\n ] : []\n });\n\n setTimeout(() => {\n initComplete = true\n console.log(\"this.datatable\", this.datatable)\n //if (action !== \"archive\") {\n this.datatable.columns().every(async (col: any) => {\n if (col !== 0 && col !== 10) {\n const column = this.datatable.column(col);\n const header = column.header();\n let filterElem: any = null\n if (col === 7) {\n filterElem = document.createElement(\"input\")\n filterElem.classList.add(\"form-control\")\n flatpickr(filterElem, {\n mode: 'range',\n onChange: (selectedDates: any, dateStr: any, instance: any) => {\n let from = new Date(selectedDates[0]);\n let to = new Date(selectedDates[1]);\n let values = []\n if (!to) {\n to = new Date(Date.parse(\"2025-12-31\"))\n }\n for (let d = from; d <= to; d.setDate(d.getDate() + 1)) {\n values.push(new Date(d).toLocaleDateString(\"sv-SE\", {\n month: \"2-digit\",\n year: \"numeric\",\n day: \"2-digit\"\n }));\n }\n this.datatable.settings()[0].jqXHR.abort()\n column.search(values.join(\"|\").length > 0 ? '' + values.join(\"&\") + '$' : '', true, false).draw();\n },\n showMonths: 1\n });\n\n } else if ((col > 2 || col === 1) && col !== 4) {\n filterElem = document.createElement('select');\n filterElem.multiple = true;\n filterElem.classList.add(\"form-select\")\n header.appendChild(filterElem);\n } else {\n filterElem = document.createElement(\"input\")\n filterElem.classList.add(\"form-control\")\n let keyupTimeout: string | number | NodeJS.Timeout | null | undefined = null;\n filterElem.addEventListener('keyup', (e: { key: string; keyCode: number; }) => {\n /*if (keyupTimeout) {\n clearTimeout(keyupTimeout);\n }\n keyupTimeout = setTimeout(() => {*/\n //@ts-ignore\n if (e.key === 'Enter' || e.keyCode === 13) {\n //@ts-ignore\n const val = filterElem.value;\n let savedFilters = JSON.parse(localStorage.getItem(\"fltools_tickets_filter\") as string)\n if (!savedFilters) {\n savedFilters = {}\n }\n savedFilters[`col-${col}`] = val\n localStorage.setItem(\"fltools_tickets_filter\", JSON.stringify(savedFilters))\n this.datatable.settings()[0].jqXHR.abort()\n column.search(val).draw();\n }\n //}, 600);\n });\n }\n if (col !== 6) {\n filterElem.addEventListener(\"click\", (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n })\n }\n filterElem.style.marginTop = \"5px\"\n header.appendChild(filterElem);\n\n const options: any = {}\n if (col === 1) {\n options[col] = (await UtilsEntity.getAll(\"ticket_categories\")).data.map((d: any) => d.name);\n } else if (col === 3) {\n options[col] = (await UtilsEntity.getAll(\"customers\")).data.map((d: any) => d.name);\n } else if (col === 5) {\n options[col] = (await UtilsEntity.getAll(\"projects\")).data.map((d: any) => d.name);\n } else if (col === 8) {\n options[col] = (await UtilsEntity.getAll(\"statuses\")).data.map((d: any) => d.name);\n } else if (col === 6) {\n options[col] = (await UtilsEntity.getAll(\"assignees\")).data.map((d: any) => d.name);\n } else if (col === 9) {\n options[col] = (await UtilsEntity.getAll(\"priorities\")).data.map((d: any) => d.name);\n }\n this.datatable.data().unique().sort().each((d: any, j: any) => {\n if (col === 7) {\n if (!options[col]) {\n options[col] = []\n }\n options[col] = options[col].concat(d.calendar_appointments.map(c => c.from_iso));\n }\n });\n Object.keys(options).forEach((key: any) => {\n const v = options[key].filter((value: any, index: any, array: string | any[]) => array.indexOf(value) === index);\n console.log(\"vvv\", v)\n v.forEach((value: any) => {\n if (filterElem.add) {\n filterElem.add(new Option(value, value));\n }\n })\n })\n\n const savedFilters = JSON.parse(localStorage.getItem(\"fltools_tickets_filter\") as string)\n if (savedFilters && savedFilters[`col-${col}`]) {\n const values = savedFilters[`col-${col}`].split(\"|\")\n values.forEach((v: any) => {\n if (filterElem.nodeName === \"SELECT\") {\n if (filterElem.querySelector(`option[value='${v}']`)) {\n filterElem.querySelector(`option[value='${v}']`).setAttribute(\"selected\", \"true\")\n }\n } else {\n filterElem.value = savedFilters[`col-${col}`].replaceAll(\"\\\\.\", \".\").replaceAll(\"\\\\+\", \"+\")\n }\n })\n const ev = new Event(col === 1 ? \"keyup\" : \"change\")\n filterElem.dispatchEvent(ev)\n this.datatable.settings()[0].jqXHR.abort()\n column.search(values.join(\"|\").length > 0 ? '^' + values.join(\"|\") + '$' : '', true, false).draw();\n }\n console.log(filterElem.nodeName)\n if (filterElem.nodeName === \"SELECT\") {\n jQuery(filterElem).select2().on('select2:select select2:unselect', (e: any) => {\n //@ts-ignore\n const values = Array.from(filterElem.querySelectorAll(\"option:checked\")).map((e) => {\n return e.value;\n })\n console.log(values)\n let savedFilters = JSON.parse(localStorage.getItem(\"fltools_tickets_filter\") as string)\n if (!savedFilters) {\n savedFilters = {}\n }\n savedFilters[`col-${col}`] = values.join(\"|\")\n localStorage.setItem(\"fltools_tickets_filter\", JSON.stringify(savedFilters))\n this.datatable.settings()[0].jqXHR.abort()\n column.search(values.join(\"|\").length > 0 ? '^' + values.join(\"|\") + '$' : '', true, false).draw();\n });\n }\n }\n });\n //}\n console.log(\"tt\", this.tableElem)\n const paginationSelect = this.tableElem.closest(\".card\").find(\"div.dataTables_length\");\n if (paginationSelect) {\n paginationSelect.parent().append(\n ``)\n\n let config = {\n mode: 'range',\n onChange: async (selectedDates: any, dateStr: any, instance: any) => {\n let from = selectedDates[0];\n let to = selectedDates[1];\n console.log(from, to)\n if (!selectedDates[1]) {\n to = new Date();\n to.setYear(2040)\n\n }\n console.log(from, to)\n let currentUrl = this.datatable.ajax.url();\n if (currentUrl.indexOf(\"?\") !== -1) {\n currentUrl = currentUrl.split(\"?\")[0]\n }\n let newUrl = `${currentUrl}?from=${btoa(from)}&to=${btoa(to)}`\n this.tableElem.addClass(\"d-none\")\n await this.datatable.ajax.url(newUrl).load(() => {\n this.tableElem.removeClass(\"d-none\")\n })\n },\n showMonths: 1\n }\n if ((window as any).currentLocale === 'de') {\n // @ts-ignore\n config[\"locale\"] = German;\n }\n document.querySelector(\"#ticket_filter_range\")?.flatpickr(config);\n }\n }, 0)\n this.datatable.on('click', 'td .row-toggler', (e) => {\n const target = e.target;\n let tr = target.closest('tr');\n let row = this.datatable.row(tr);\n\n if (row.child.isShown()) {\n target.querySelector(\"i.ti\")?.classList.add(\"ti-caret-down\");\n target.querySelector(\"i.ti\")?.classList.remove(\"ti-caret-up\");\n row.child.hide();\n } else {\n target.querySelector(\"i.ti\")?.classList.remove(\"ti-caret-down\");\n target.querySelector(\"i.ti\")?.classList.add(\"ti-caret-up\");\n row.child(this.generateSubTickets(row.data())).show();\n }\n });\n }\n\n generateSubTickets(data: any) {\n let html = ``;\n console.log(\"DATA: \", data)\n data.children.forEach((child: any) => {\n html += `\n\n\n\n \n`\n })\n html += `
${child.number}window).currentLocale}/ticket/tasks/${child.uuid}\">${child.title}${child.status.name}${child.assignee ? child.assignee.name : \"\"}
`;\n return html;\n }\n}"],"names":["bootstrap.Modal","savedFilters","e","German"],"mappings":"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"}