{"version":3,"file":"header-VzBK1--9.js","sources":["../../../app/frontend/entrypoints/controllers/teams/timetrack/header.ts"],"sourcesContent":["import Utils from \"../../../utils\";\nimport Swal from 'sweetalert2';\nimport flatpickr from \"flatpickr\";\nimport {German} from \"flatpickr/dist/l10n/de.js\"\nimport AbsenceEntity from \"../../absence/entity\";\nimport TripEntity from \"../../trip/entity\";\nimport * as bootstrap from 'bootstrap'\nimport DefaultController from \"../../defaultController\";\nimport {en} from \"@fullcalendar/core/internal-common\";\n\n\nexport default class TeamsTimetrackHeader extends DefaultController {\n private datepicker: any;\n private absenceModal: any;\n private tripModal: any;\n private absenceTable: any\n private tableElem: any;\n\n private userId: any;\n\n async init() {\n this.entity = \"absences\"\n this.tableElem = jQuery(\".teams_header_absences_pending\")\n this.tableElem.delegate(\".delete-record\", \"click\", async (e: any) => {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('absence.name')} ${Utils.translate('generic.deleted')}`, `${Utils.translate('generic.success')}`)\n } else {\n this.toastr.error(`${Utils.translate('absence.name')} ${Utils.translate('generic.messages.not_deleted')}`, `${Utils.translate('generic.error')}`)\n }\n await this.request(\"\")\n console.log(\"this.absenceTable\", this.absenceTable)\n }\n });\n jQuery(\"#navbar-collapse\").delegate(\"button.btn[data-mode]\", \"click\", async (e) => {\n e.preventDefault();\n const btn = e.currentTarget;\n const mode = btn.getAttribute(\"data-mode\");\n await Utils.entity.request(`/api/v1/time_entries/scan`, 'POST', {mode})\n const p = document.querySelector(\".time_entry_mode_buttons\") as HTMLElement;\n let html = '';\n if (mode === \"IN\" || mode === \"P_OUT\") {\n html += ``\n html += ``\n } else if (mode === \"P_IN\") {\n html += ``\n } else if (mode === \"OUT\") {\n html += ``\n }\n p.innerHTML = html;\n });\n await Utils.createSelects({}, (elem: any) => {\n return {}\n }, (data: any, entity: any, element: any) => {\n if (element.id === \"absence_replacement_user_id\") {\n // @ts-ignore\n if(window.activeUser) {\n // @ts-ignore\n data = data.filter((u) => {return u.uuid !== window.activeUser.uuid})\n }\n }\n return data\n }, (data: any, entity: any) => {return {}},\n \"#navbarAbsenceNew .select2\");\n let config = {\n mode: 'range',\n onChange: (selectedDates: any, dateStr: any, instance: any) => {\n if (selectedDates && selectedDates[0]) {\n const fromElem = document.querySelector(\"#absence_from\") as HTMLInputElement;\n const toElem = document.querySelector(\"#absence_to\") as HTMLInputElement;\n const userTimezoneOffset = selectedDates[0].getTimezoneOffset() * 60000;\n if (selectedDates[0]) {\n fromElem.value = `${selectedDates[0].toISOString()}`\n }\n if (selectedDates[1]) {\n const d = selectedDates[1]\n d.setHours(23, 59, 59, 999)\n toElem.value = `${d.toISOString()}`\n }\n }\n },\n showMonths: 2,\n disable: window.activeUser.absenceDays\n }\n if ((window as any).currentLocale === 'de') {\n // @ts-ignore\n config[\"locale\"] = German;\n }\n // @ts-ignore\n this.datepicker = flatpickr((document.querySelector(\"#absence_daterange\") as HTMLElement), config);\n\n jQuery(\"#absence_user_id\").on(\"select2:select\", async (e: any) => {\n console.log(\"e\", e)\n const val = e.params.data.id;\n this.userId = val;\n await this.request(\"\");\n });\n\n (document.querySelector(\"#navbarAbsenceNew\") as HTMLFormElement).addEventListener(\"submit\", async (e) => {\n e.preventDefault();\n const form = e.target as HTMLFormElement;\n if (form.checkValidity()) {\n const data = AbsenceEntity.getEntityData(form)\n const reply = await Utils.entity.upsert(data, 'absences')\n if (this.absenceTable) {\n this.absenceTable.ajax.reload();\n }\n form.reset();\n if (this.datepicker) {\n this.datepicker.clear();\n }\n console.log(\"DISABLE\", reply.range, window.activeUser.absenceDays.concat(reply.data[0].range), this.datepicker)\n //@ts-ignore\n this.datepicker.set(\"disable\", window.activeUser.absenceDays.concat(reply.data[0].range));\n await this.request(\"\")\n //@ts-ignore\n const $opt = jQuery(\"\").val(activeUser.uuid).text(activeUser.name)\n jQuery(\"#navbarAbsenceNew #absence_user_id\").append($opt).trigger('change');\n\n this.toastr.success(`${Utils.translate('absence.name')} ${Utils.translate('generic.messages.created')}`, `${Utils.translate('generic.success')}`)\n\n }\n });\n (document.querySelector(\"#navbarTripNew\") as HTMLFormElement).addEventListener(\"submit\", async (e) => {\n e.preventDefault();\n const form = e.target as HTMLFormElement;\n if (form.checkValidity()) {\n const data = TripEntity.getEntityData(form)\n await Utils.entity.upsert(data, 'trips')\n form.reset();\n this.tripModal.hide()\n this.toastr.success(`${Utils.translate('trip.name')} ${Utils.translate('generic.messages.created')}`, `${Utils.translate('generic.success')}`)\n\n }\n })\n\n this.setupTimer();\n this.absenceModal = new bootstrap.Modal((document.querySelector(\"#navbarAbsenceNew\") as HTMLElement));\n this.tripModal = new bootstrap.Modal((document.querySelector(\"#navbarTripNew\") as HTMLElement));\n this.setupEventListeners();\n\n await this.setupDatatables();\n await this.request(\"\");\n this.bindListeners()\n setInterval(async () => {\n await this.setupTimer();\n }, 1000)\n }\n\n protected bindListeners() {\n }\n\n setupDatatables() {\n let columns = [\n {data: 'from'},\n {data: 'to'},\n {data: 'name'},\n {data: 'uuid'}\n ];\n let columnDefs = [\n {\n targets: 0,\n render: (data: any, type: any, full: any, meta: any) => {\n return `${data}${new Date(Date.parse(data)).toLocaleDateString()}`;\n },\n },\n {\n targets: 1,\n render: (data: any, type: any, full: any, meta: any) => {\n return `${data}${new Date(Date.parse(data)).toLocaleDateString()}`;\n },\n },\n {\n targets: 2,\n render: (data: any, type: any, full: any, meta: any) => {\n return full.absence_mode.name\n },\n },\n {\n targets: 3,\n searchable: false,\n orderable: false,\n render: (data: any, type: any, full: any, meta: any) => {\n if (full.status === \"NEW\" || (window.activeUser && window.activeUser.role === \"admin\")) {\n return `
\n \n \n \n
`\n } else {\n return Utils.translate(`absence.status.${full.status.toLowerCase()}`);\n }\n },\n }\n ]\n if (window.activeUser && window.activeUser.role === \"admin\") {\n columns = [\n {data: 'user.name'},\n {data: 'from'},\n {data: 'to'},\n {data: 'name'},\n {data: 'uuid'}\n ];\n columnDefs = [\n {\n targets: 1,\n render: (data: any, type: any, full: any, meta: any) => {\n return `${data}${new Date(Date.parse(data)).toLocaleDateString()}`;\n },\n },\n {\n targets: 2,\n render: (data: any, type: any, full: any, meta: any) => {\n return `${data}${new Date(Date.parse(data)).toLocaleDateString()}`;\n },\n },\n {\n targets: 3,\n render: (data: any, type: any, full: any, meta: any) => {\n return full.absence_mode.name\n },\n },\n {\n targets: 4,\n searchable: false,\n orderable: false,\n render: (data: any, type: any, full: any, meta: any) => {\n if (full.status === \"NEW\" || (window.activeUser && window.activeUser.role === \"admin\")) {\n return `
\n \n \n \n
`\n } else {\n return Utils.translate(`absence.status.${full.status.toLowerCase()}`);\n }\n },\n }\n ]\n }\n this.absenceTable = new DataTable(this.tableElem, {\n ajax: `/api/v1/absences`,\n columns: columns,\n order: [[0, 'desc']],\n columnDefs: columnDefs,\n processing: true,\n dom:\n '<\"row me-2 align-items-center\"' +\n '<\"col-md-2\"<\"me-3 m-3\"l>>' +\n '<\"col-md-10\"<\"dt-action-buttons text-xl-end text-lg-start text-md-end text-start d-flex align-items-center justify-content-end flex-md-row flex-column mb-3 mb-md-0\"fB>>' +\n '>t' +\n '<\"row mx-2 align-items-center justify-content-between\"' +\n '<\"col-6\"i>' +\n '<\"col-6 mt-3\"p>' +\n '>',\n\n language: {\n // @ts-ignore\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: [\n {\n text: `${Utils.translate('generic.download')}`,\n className: 'dt-button btn btn-primary m-2',\n action: async () => {\n let csv = '';\n const csvHeader: any = []\n this.absenceTable.columns().header().each((column: any, i: number) => {\n const visible = this.absenceTable.column(i).visible();\n if (visible) {\n let content = column.innerHTML\n if (content.indexOf(\"(.*)<\\/span> {\n console.log(data)\n let content = [new Date(Date.parse(data.from)).toLocaleDateString(),\n new Date(Date.parse(data.to)).toLocaleDateString(),\n data.absence_mode.name\n ]\n csv += content.join(\";\") + \"\\n\";\n })\n\n await Utils.download(new Blob([\"\\ufeff\", csv]), 'export.csv')\n }\n }\n ]\n });\n }\n\n async setupEventListeners() {\n // @ts-ignore\n const parent = this.absenceModal._element\n const prev = parent.querySelector(\"#teams_header_absence_prev\") as HTMLElement;\n const next = parent.querySelector(\"#teams_header_absence_next\") as HTMLElement;\n prev.addEventListener(\"click\", async (e: any) => {\n e.preventDefault();\n await this.request(\"minus\")\n });\n\n next.addEventListener(\"click\", async (e: any) => {\n e.preventDefault();\n await this.request(\"plus\")\n })\n\n }\n\n async request(mode: string) {\n // @ts-ignore\n const parent = this.absenceModal._element\n const table = parent.querySelector(\"#teams_header_absence_table\") as HTMLElement\n const userLine = parent.querySelector(\"#teams_header_absence_user\") as HTMLElement;\n const yearDisplay = (parent.querySelector(\"a[data-date]\") as HTMLButtonElement);\n // @ts-ignore\n const currentDate = parseInt(yearDisplay.getAttribute(\"data-date\"));\n let newDate = currentDate\n if (mode === \"minus\") {\n newDate = currentDate - 1\n }\n if (mode === \"plus\") {\n newDate = currentDate + 1\n }\n const r = await Utils.entity.request(`/api/v1/absences/info?year=${newDate}&user=${this.userId || \"\"}`, 'GET')\n if (r.status === 200) {\n if (r.data.acting_as) {\n userLine.innerHTML = `${Utils.translate('absence.acting_as')}: ${r.data.acting_as}`\n } else {\n userLine.innerHTML = \"\";\n }\n\n yearDisplay.innerHTML = `${newDate}`;\n yearDisplay.setAttribute(\"data-date\", `${newDate}`);\n table.innerHTML = `\n ${Utils.translate('absence.vacation_days')}\n ${r.data.allowance}\n \n \n ${Utils.translate('absence.pending_days')}\n ${r.data.pending}\n \n \n ${Utils.translate('absence.approved_days')}\n ${r.data.taken}\n \n \n ${Utils.translate('absence.left_days')}\n ${r.data.left}\n \n \n ${Utils.translate('absence.over_hours')}\n ${r.data.over_hours}\n `\n if (this.absenceTable) {\n this.absenceTable.clear();\n this.absenceTable.rows.add(r.data.absences);\n this.absenceTable.draw();\n }\n }\n }\n\n async setupTimer() {\n const timerWork = document.querySelector(\".time_entry_header_work_time\") as HTMLElement;\n const timerPause = document.querySelector(\".time_entry_header_pause_time\") as HTMLElement;\n const r = await Utils.entity.request(`/api/v1/time_entries/today`, 'GET')\n if (r.status === 200) {\n timerWork.innerHTML = `${Utils.translate(\"timetrack.today_worktime\")}: ${new Date(r.working * 1000).toISOString().slice(11, 19)}`\n timerPause.innerHTML = `${Utils.translate(\"timetrack.today_pausetime\")}: ${new Date(r.pause * 1000).toISOString().slice(11, 19)}`\n }\n }\n}"],"names":["German","bootstrap.Modal"],"mappings":"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"}