{"version":3,"file":"entity-VBrusOHG.js","sources":["../../../app/frontend/entrypoints/utils/entity.ts","../../../app/frontend/entrypoints/utils/erp.ts","../../../app/frontend/entrypoints/utils/timetrack.ts","../../../app/frontend/entrypoints/utils/wms.ts","../../../app/frontend/entrypoints/utils/licenses.ts","../../../app/frontend/entrypoints/utils/index.ts"],"sourcesContent":["import UtilsEntityView from \"./entityView\";\nimport Utils from \"./index\";\n\nexport default class UtilsEntity {\n static get view() {\n return UtilsEntityView\n }\n\n static async getAll(entity: string, parent_entity: any = null, filter = {}, params = {}) {\n await Utils.showLoader();\n let url = `/api/v1/${entity}/`\n if (parent_entity) {\n url = `/api/v1/${parent_entity}/${entity}/`\n }\n const r = await UtilsEntity.request(Utils.appendParamsToUrl(url, filter), 'GET')\n await Utils.hideLoader();\n return r;\n }\n\n static async getMultiple(ids: any[], entity: string) {\n let url = `/api/v1/${entity}/multiple`\n const r = await UtilsEntity.request(url, 'POST', {\n ids\n })\n return r;\n }\n\n static async find(entity: string, params = {}) {\n let url = `/api/v1/${entity}/find`\n const r = await UtilsEntity.request(url, 'POST', params)\n return r;\n }\n\n static async get(id: any, entity: string, parent_id = null, parent_entity = null, hide_loader = false) {\n if (!hide_loader) {\n await Utils.showLoader();\n }\n let url = `/api/v1/${entity}/${id}`\n if (parent_entity) {\n url = `/api/v1/${parent_entity}/${parent_id}/${entity}/${id}`\n }\n const r = await UtilsEntity.request(url, 'GET')\n if (!hide_loader) {\n await Utils.hideLoader();\n }\n return r;\n }\n\n static async destroy(id: any, entity: string, parent_id = null, parent_entity = null) {\n\n await Utils.showLoader();\n let url = `/api/v1/${entity}/${id}`\n if (parent_entity) {\n url = `/api/v1/${parent_entity}/${parent_id}/${entity}/${id}`\n }\n const r = await UtilsEntity.request(url, 'DELETE')\n await Utils.hideLoader();\n return r\n }\n\n static async destroyAll(ids: any, entity: string, parent_id = null, parent_entity = null) {\n\n await Utils.showLoader();\n let url = `/api/v1/${entity}/destroy_all`\n if (parent_entity) {\n url = `/api/v1/${parent_entity}/${parent_id}/${entity}/destroy_all`\n }\n const r = await UtilsEntity.request(url, 'POST', {ids})\n await Utils.hideLoader();\n return r\n }\n\n static async upsert(data: any, entity: string, parent_id = null, parent_entity = null) {\n let url = `/api/v1/${entity}`\n let method = 'POST'\n if (parent_entity) {\n url = `/api/v1/${parent_entity}/${parent_id}/${entity}`\n }\n if (data.uuid) {\n if (data.uuid instanceof Array) {\n url = `${url}/multiple`\n method = 'POST'\n } else {\n url = `${url}/${data.uuid}`\n method = 'PATCH'\n }\n }\n let body = {}\n if (data instanceof FormData) {\n body = data\n } else {\n //@ts-ignore\n body[entity] = data\n }\n return await UtilsEntity.request(url, method, body, data instanceof FormData)\n }\n\n\n static async request(url: string, method: string, body = {}, plaintext = false) {\n const init = {\n method: method,\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n }\n if (method !== \"GET\" && method !== \"DELETE\") {\n if (!plaintext) {\n // @ts-ignore\n init.body = JSON.stringify(body)\n } else {\n // @ts-ignore\n init.body = body\n }\n }\n console.log(\"init.body\", init.body)\n const r = await fetch(url, init)\n return await r.json()\n }\n}","import UtilsEntityView from \"./entityView\";\nimport Utils from \"./index\";\n\nexport default class UtilsErp {\n\n static async multiMove(productId: string, elements: any, warehouseId: string, warehouseLocationId: string, warehousePalletId: string, customerId: string) {\n\n let url = `/api/v1/erp/actions/multi_move_products`\n const r = await UtilsErp.request(url, \"POST\", {\n productId, elements, warehouseId, warehouseLocationId, warehousePalletId, customerId\n }, false, false)\n return r\n }\n\n static async generateDocument(html: string) {\n let url = `/erp/documents/generate_document`\n const r = await UtilsErp.request(url, \"POST\", {\n html\n }, false, false)\n return r\n }\n\n static async generateDocumentWarehouse(itemConfig: any) {\n let url = `/api/v1/erp/actions/warehouse_by_document_config`\n const r = await UtilsErp.request(url, \"POST\", {\n item_config: itemConfig\n })\n return r\n }\n\n static async checkSerial(customerId: string, productId: string, serial: string) {\n let url = `/api/v1/erp/actions/check_serial`\n const r = await UtilsErp.request(url, \"POST\", {\n customerId, productId, serial\n })\n return r\n }\n\n\n static async productMappingsBySerial(customerId: string, productId: string, serial: string) {\n let url = `/api/v1/erp/actions/product_mappings_by_serial`\n const r = await UtilsErp.request(url, \"POST\", {\n productId, serial, customerId\n })\n return r\n }\n static async productMappingsFull() {\n let url = `/api/v1/erp/actions/full_stock`\n const r = await UtilsErp.request(url, \"POST\", {})\n return r\n }\n\n static async productMappingsByWarehouse(customerId: string, productId: string, warehouseId: string, warehouseLocationId: string, warehouseLocationPalletId: string) {\n let url = `/api/v1/erp/actions/product_mappings_by_warehouse`\n const r = await UtilsErp.request(url, \"POST\", {\n productId, warehouseId, warehouseLocationId, warehouseLocationPalletId, customerId\n })\n return r\n }\n\n static async stockInfo(productId: string) {\n let url = `/api/v1/erp/actions/stock_info`\n const r = await UtilsErp.request(url, \"POST\", {\n productId\n })\n return r\n }\n static async productMapById(productId: string, warehouseLocationId: string, warehouseLocationPalletId: string = \"\", customerId: string = \"\") {\n let url = `/api/v1/erp/actions/product_map_by_id`\n const r = await UtilsErp.request(url, \"POST\", {\n productId, customerId, warehouseLocationId, warehouseLocationPalletId\n })\n return r\n }\n static async addProducts(data: any) {\n let url = `/api/v1/erp/actions/add_products`\n const r = await UtilsErp.request(url, \"POST\", {\n ...data\n })\n return r\n }\n static async moveProducts(data: any) {\n let url = `/api/v1/erp/actions/products_move`\n const r = await UtilsErp.request(url, \"POST\", {\n ...data\n })\n return r\n }\n static async outputProducts(data: any) {\n let url = `/api/v1/erp/actions/products_output`\n const r = await UtilsErp.request(url, \"POST\", {\n ...data\n })\n return r\n }\n static async inputProducts(data: any) {\n let url = `/api/v1/erp/actions/products_input`\n const r = await UtilsErp.request(url, \"POST\", {\n ...data\n })\n return r\n }\n\n static async movePallet(palletId: any, warehouseId: any, warehouseLocationId: any) {\n let url = `/api/v1/erp/actions/move_pallet`\n const r = await UtilsErp.request(url, \"POST\", {\n palletId, warehouseId, warehouseLocationId\n })\n }\n static async productStock(customerId: string, productId: string) {\n let url = `/api/v1/erp/actions/product_stock?customer_id=${customerId}&product_id=${productId}`\n const r = await UtilsErp.request(url, \"GET\")\n return r;\n }\n static async initOrder() {\n let url = `/api/v1/erp/actions/order_init`\n const r = await UtilsErp.request(url, \"POST\")\n return r;\n }\n\n static async saveOrder(token: any) {\n let url = `/api/v1/erp/actions/order_save`\n const r = await UtilsErp.request(url, \"POST\", {\n token: token\n })\n return r;\n }\n\n static async customerOrder(customerId: any, addressId: any, token: any) {\n let url = `/api/v1/erp/actions/order_customer`\n const r = await UtilsErp.request(url, \"POST\", {\n customerId: customerId,\n addressId: addressId,\n token: token\n })\n }\n\n static async addPalletOrder(data: any, orderId = null) {\n let url = `/api/v1/erp/actions/order_add_pallet`\n const r = await UtilsErp.request(url, \"POST\", {\n warehouse_pallet_id: data,\n order_id: orderId\n })\n return r;\n }\n static async addLineItemOrder(data: any, customerId: any, token: any) {\n let url = `/api/v1/erp/actions/order_add_line_item`\n const r = await UtilsErp.request(url, \"POST\", {\n lineItem: data,\n token: token,\n customerId\n })\n return r;\n }\n static async removeLineItemOrder(data: any, token: any) {\n let url = `/api/v1/erp/actions/order_remove_line_item`\n const r = await UtilsErp.request(url, \"POST\", {\n lineItem: data,\n token: token\n })\n return r;\n }\n\n static async downloadLabel(id: any, entity: string) {\n await Utils.showLoader();\n let url = `/api/v1/erp/actions/create_labels`\n const r = await UtilsErp.request(url, 'POST', {\n entity: entity,\n ids: [id]\n })\n await Utils.hideLoader();\n return r;\n }\n\n static async saveSignature(id: string, documentUrl: string, image: string) {\n await Utils.showLoader();\n let url = `/api/v1/erp/actions/save_signature`\n const r = await UtilsErp.request(url, 'POST', {\n documentId: id,\n documentUrl,\n image\n })\n await Utils.hideLoader();\n return r;\n }\n\n\n static async request(url: string, method: string, body = {}, plaintext = false, json = true) {\n const init = {\n method: method,\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n if (json) {\n // @ts-ignore\n init.headers['Accept'] = 'application/json';\n }\n if (method !== \"GET\" && method !== \"DELETE\") {\n if (!plaintext) {\n // @ts-ignore\n init.body = JSON.stringify(body)\n } else {\n // @ts-ignore\n init.body = body\n }\n }\n const r = await fetch(url, init)\n if (json) {\n return await r.json()\n } else {\n return await r.text()\n }\n }\n}","import Utils from \"./index\";\n\nexport default class UtilsTimeTrack {\n\n static updateLiveEdit(element: HTMLElement, data: any) {\n const parent = ((element.closest(\"ul\") as HTMLUListElement).closest(\"div\") as HTMLElement);\n (document.querySelector(\"#time_entry_committed_messages .backend_errors\") as HTMLElement).innerHTML = '';\n if (data.failed) {\n let failedHtml = '';\n for(const message of data.messages) {\n failedHtml += `
${message}
`\n }\n (document.querySelector(\"#time_entry_committed_messages .backend_errors\") as HTMLElement).innerHTML += failedHtml;\n\n ((parent.closest(\"form\") as HTMLFormElement).querySelectorAll(\"button[data-mode]\") as NodeListOf).forEach((button: HTMLButtonElement) => {\n button.setAttribute(\"disabled\", \"disabled\")\n })\n } else {\n element.querySelectorAll(\"li\").forEach((li, i: number) => {\n const calc_time = li.querySelector(\"p.text-muted.text-nowrap span\") as HTMLElement\n if (data.config[i].time) {\n calc_time.innerHTML = data.config[i].time\n }\n })\n const overview = parent.querySelector(\".timeline-overview\") as HTMLElement;\n overview.innerHTML = UtilsTimeTrack.generateOverview(data.working, data.planned, data.pause, data.absences, data.trips);\n ((parent.closest(\"form\") as HTMLFormElement).querySelectorAll(\"button[data-mode]\") as NodeListOf).forEach((button: HTMLButtonElement) => {\n button.removeAttribute(\"disabled\")\n })\n }\n ((parent.closest(\"form\") as HTMLFormElement).querySelector(\"input[data-entity-field='config']\") as HTMLInputElement).value = JSON.stringify(data.config)\n }\n\n static liveEdit(element: HTMLElement, date: Date) {\n element.querySelectorAll(\"li\").forEach((li) => {\n const elem = (li.querySelector(\"h6.mb-0\") as HTMLElement)\n const time = elem.innerHTML\n elem.innerHTML = `
`;\n (elem.querySelector(\"input\") as HTMLInputElement).addEventListener(\"keyup\", (e: any) => {\n Utils.timeTrack.buildConfig(element, date);\n });\n (elem.querySelector(\"button\") as HTMLInputElement).addEventListener(\"click\", (e: any) => {\n e.preventDefault();\n const target = e.target as HTMLButtonElement;\n (target.closest(\"li\") as HTMLLIElement).remove();\n Utils.timeTrack.buildConfig(element, date);\n })\n })\n }\n\n static async buildConfig(element: HTMLElement, date: Date) {\n let config: { at: string; mode: string | null; }[] = []\n element.querySelectorAll(\"li\").forEach((li) => {\n const elem = (li.querySelector(\"h6.mb-0\") as HTMLElement)\n const mode = (li.querySelector(\".timeline-header\") as HTMLElement).getAttribute(\"data-mode\")\n let value = elem.innerHTML;\n if (elem.querySelector(\"input\")) {\n value = (elem.querySelector(\"input\") as HTMLInputElement).value\n }\n config.push({at: value, mode})\n });\n const calculated = await Utils.entity.request('/api/v1/time_entries/calculate', 'POST', {\n date: date,\n config: config,\n time_zone: Intl.DateTimeFormat().resolvedOptions().timeZone\n });\n Utils.timeTrack.updateLiveEdit(element, calculated)\n }\n\n static generateOverview(full_working: string, full_planned: string, full_pause: string, absences: any, trips: any) {\n let diffPlanWorking = parseInt(full_working) - parseInt(full_planned)\n let chevron = 'ti-minus'\n if (diffPlanWorking > 0) {\n chevron = 'ti-chevron-up text-success'\n } else if (diffPlanWorking < 0) {\n chevron = 'ti-chevron-down text-danger'\n }\n let html = `
  • \n
    \n \n
    \n
    \n
    \n
    ${Utils.translate(\"timetrack.work_time\")}
    \n ${Utils.secondsToHhMm(parseInt(full_working || \"\"))} / ${Utils.secondsToHhMm(parseInt(full_planned || \"\"))}\n
    \n
    \n
    \n \n ${Utils.secondsToHhMm(diffPlanWorking || 0)}\n
    \n
    \n
    \n
  • \n
  • \n
    \n \n
    \n
    \n
    \n
    ${Utils.translate(\"timetrack.pause_time\")}
    \n ${Utils.secondsToHhMm(parseInt(full_pause || \"\"))}\n
    \n
    \n
  • `;\n if (absences && absences.length > 0) {\n absences.forEach((absence: any) => {\n console.log(\"absence\", absence)\n html += `
  • \n
    \n \n
    \n
    \n
    \n
    ${absence[\"name\"]}
    \n
    \n
    \n
    \n 0 ? 'ti-chevron-up text-success' : 'ti-chevron-down text-danger'}\">\n ${Utils.secondsToHhMm(absence[\"added_time\"])}\n
    \n
    \n
    \n
  • `\n })\n }\n if (trips && trips.length > 0) {\n trips.forEach((trip: any) => {\n console.log(\"trip\", trip)\n html += `
  • \n
    \n \n
    \n
    \n
    \n
    ${trip[\"distance\"]}km @ ${trip[\"transportation\"]}
    \n
    \n
    \n
    \n 0 ? 'ti-chevron-up text-success' : 'ti-chevron-down text-danger'}\">\n ${Utils.secondsToHhMm(trip[\"added_time\"])}\n
    \n
    \n
    \n
  • `\n })\n }\n return html;\n }\n\n static generateList(data: any) {\n let ulHtml = '';\n if (data) {\n data.forEach((d: any, i: number) => {\n let html = `
  • `;\n let bsClass = ''\n let bsIcon = ''\n let title = ''\n let timestamp = new Date(Date.parse(d.at)).toLocaleTimeString()\n let type = ''\n if (d.mode === \"IN\") {\n bsClass = 'success';\n bsIcon = 'ti-player-play-filled'\n title = Utils.translate(\"timetrack.states.start\")\n } else if(d.mode === \"OUT\") {\n bsClass = 'danger';\n bsIcon = 'ti-player-stop-filled'\n title = Utils.translate(\"timetrack.states.end\")\n } else if(d.mode === \"P_IN\") {\n bsClass = 'warning';\n bsIcon = 'ti-player-pause-filled'\n title = Utils.translate(\"timetrack.states.pause\")\n } else if(d.mode === \"P_OUT\") {\n bsClass = 'success';\n bsIcon = 'ti-player-play-filled'\n title = Utils.translate(\"timetrack.states.pause_end\")\n }\n\n if (d.type === 'work_time') {\n type = \"Arbeitszeit\"\n }else if (d.type === \"pause\") {\n type = \"Pausenzeit\"\n }\n\n html += `\n \n \n
    \n
    \n ${title} ${d.generated ? \"Generiert \" : \"\"}\n
    \n
    ${timestamp}
    \n

    \n ${d.time ? `+${d.time} ${type}` : \"\"}\n

    \n\n
    `\n html += '
  • '\n ulHtml += html;\n })\n }\n return ulHtml\n }\n}","import UtilsErp from \"./erp\";\n\nexport default class UtilsWMS {\n\n static async startPicking(pickList: IWMSPickList, warehouseUuid: string) {\n let url = `/api/v1/wms/actions/start`\n return await UtilsErp.request(url, \"POST\", {\n items: pickList,\n warehouse_uuid: warehouseUuid\n })\n }\n static async generatePackages(map: IWMSOrderMap) {\n let url = `/api/v1/wms/actions/generate_packages`\n return await UtilsErp.request(url, \"POST\", {\n map\n })\n }\n}","import UtilsEntityView from \"./entityView\";\nimport Utils from \"./index\";\n\nexport default class UtilsLicense {\n static async buy(productId: string, users: number) {\n await Utils.showLoader();\n let url = `/api/v1/actions/buy`\n const r = await UtilsLicense.request(url, 'POST', {\n product_id: productId,\n users\n })\n await Utils.hideLoader();\n return r;\n }\n\n\n static async request(url: string, method: string, body = {}, plaintext = false, json = true) {\n const init = {\n method: method,\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n if (json) {\n // @ts-ignore\n init.headers['Accept'] = 'application/json';\n }\n if (method !== \"GET\" && method !== \"DELETE\") {\n if (!plaintext) {\n // @ts-ignore\n init.body = JSON.stringify(body)\n } else {\n // @ts-ignore\n init.body = body\n }\n }\n const r = await fetch(url, init)\n if (json) {\n return await r.json()\n } else {\n return await r.text()\n }\n }\n}","\nimport UtilsEntity from \"./entity\";\nimport UtilsErp from \"./erp\";\nimport UtilsTimeTrack from \"./timetrack\";\nimport UtilsWMS from \"./wms\";\nimport UtilsLicense from \"./licenses\";\n\nexport default class Utils {\n static get entity() {\n return UtilsEntity\n }\n\n static get erp() {\n return UtilsErp\n }\n\n static get wms() {\n return UtilsWMS\n }\n\n static get timeTrack() {\n return UtilsTimeTrack\n }\n\n static get license() {\n return UtilsLicense\n }\n\n static getDaysArray = function(s: Date, e: Date) {const a=[];for(const d=new Date(s);d<=new Date(e);d.setDate(d.getDate()+1)){ a.push(new Date(d));}return a;};\n\n static toLocalISOString(date: any) {\n const localDate = new Date(date - date.getTimezoneOffset() * 60000); //offset in milliseconds. Credit https://stackoverflow.com/questions/10830357/javascript-toisostring-ignores-timezone-offset\n\n // Optionally remove second/millisecond if needed\n localDate.setSeconds(null);\n localDate.setMilliseconds(null);\n return localDate.toISOString().slice(0, -1);\n }\n\n static fixSerials(serials: any) {\n if (serials.indexOf(\" \") !== -1) {\n serials = serials.split(\" \")\n } else if (serials.indexOf(\";\") !== -1) {\n serials = serials.split(\";\")\n } else if (serials.indexOf(\",\") !== -1) {\n serials = serials.split(\",\")\n } else if (serials.indexOf(\"\\n\") !== -1) {\n serials = serials.split(\"\\n\")\n }\n serials = typeof serials === 'object' ? serials : [serials]\n return serials.filter((n: any) => n)\n }\n\n static base64ToArrayBuffer(base64: string) {\n const binaryString = window.atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n return bytes.map((byte, i) => binaryString.charCodeAt(i));\n }\n\n static arrayMove(arr: any, fromIndex: number, toIndex: number) {\n let element = arr[fromIndex];\n arr.splice(fromIndex, 1);\n arr.splice(toIndex, 0, element);\n return arr;\n }\n static async download(content: any, filename: any) {\n const a = document.createElement('a');\n document.body.appendChild(a);\n const url = window.URL.createObjectURL(content);\n a.href = url;\n a.download = filename;\n a.click();\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n document.body.removeChild(a);\n }, 0)\n }\n static createAndDownloadBlobFile(body: any, filename: string, extension = 'pdf') {\n const blob = new Blob([body]);\n const fileName = `${filename}.${extension}`;\n const link = document.createElement('a');\n if (link.download !== undefined) {\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', fileName);\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n\n static async getBase64(file: any) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = reject;\n })\n }\n\n static async createSelects(data: any, onFilterRequest = (elem: any) => {return {}}, onFilterResults = (data: any, entity: any, element: any) => {return data}, onCreateNewElement = (data: any, entity: any) => {return {}}, selector = \".content-wrapper .select2\") {\n document.querySelectorAll(selector).forEach((element) => {\n const entity = element.getAttribute(\"data-entity\")\n\n let parent = document.body;\n const offcanvasParent: any = element.closest(\".offcanvas-body\");\n const modalParent: any = element.closest(\".modal-body\");\n const cardParent: any = element.closest(\".card-body\");\n if (modalParent) {\n parent = modalParent\n } else if (offcanvasParent) {\n parent = offcanvasParent\n } else if (cardParent) {\n parent = cardParent\n }\n\n if (entity) {\n let allow_create = false;\n let allow_empty = false;\n let selected_key = null;\n let selected_value = null;\n\n let name_path: string | null = null;\n let id_path: string | null = null;\n if (element.getAttribute(\"data-allow-create\")) {\n allow_create = !!element.getAttribute(\"data-allow-create\")\n }\n if (element.getAttribute(\"data-allow-empty\")) {\n allow_empty = !!element.getAttribute(\"data-allow-empty\")\n }\n if (element.getAttribute(\"data-selected-key\")) {\n selected_key = Utils.getValueByPath(data, element.getAttribute(\"data-selected-key\"))\n }\n if (element.getAttribute(\"data-selected-value\")) {\n selected_value = Utils.getValueByPath(data, element.getAttribute(\"data-selected-value\"))\n }\n if (element.getAttribute(\"data-name-path\")) {\n name_path = element.getAttribute(\"data-name-path\")\n }\n if (element.getAttribute(\"data-id-path\")) {\n id_path = element.getAttribute(\"data-id-path\")\n }\n if (element.getAttribute(\"data-selected-key-plain\")) {\n selected_key = element.getAttribute(\"data-selected-key-plain\")\n }\n if (element.getAttribute(\"data-selected-value-plain\")) {\n selected_value = element.getAttribute(\"data-selected-value-plain\")\n }\n if (selected_key && selected_value) {\n element.innerHTML = ``\n }\n // @ts-ignore\n jQuery(element).wrap('
    ').select2({\n dropdownParent: parent,\n placeholder: \"Choose option..\",\n allowClear: allow_empty,\n tags: allow_create,\n ajax: {\n url: `/api/v1/${entity}`,\n data: (params: any) => {\n return {\n search: params.term,\n ...onFilterRequest(element)\n }\n },\n complete: (xhr, status) => {\n jQuery(element).trigger(\"select2:ajax_done\", [xhr.responseJSON])\n },\n processResults: (data: any) => {\n let r = onFilterResults(data.data, entity, element).map((d: any) => {\n return {text: name_path ? Utils.getValueByPath(d, name_path): d.name, id: id_path ? Utils.getValueByPath(d, id_path): d.uuid, data: d}\n });\n console.log(\"RRR\", r)\n return {\n results: r\n };\n }\n },\n createTag: (params) => {\n if (!allow_create) {\n return null;\n } else {\n return {\n id: params.term,\n text: `[Neu]${params.term}`,\n isNew : true\n };\n }\n }\n });\n //@ts-ignore\n jQuery(element).on(\"select2:select\", async (e) => {\n console.log(\"eh\", e.params.data)\n //@ts-ignore\n if (e.params.data.isNew) {\n const r = await UtilsEntity.upsert({\n //@ts-ignore\n name: e.params.data.id,\n ...onCreateNewElement({name: e.params.data.id}, entity)\n }, entity);\n jQuery(element).find('[value=\"' + e.params.data.id + '\"]').replaceWith('');\n\n }\n });\n } else {\n jQuery(element).wrap('
    ').select2({\n dropdownParent: parent,\n placeholder: \"Choose option..\",\n });\n }\n })\n }\n\n static getValueByPath(data: any, path: any) {\n const s = path.split(\".\");\n let currentValue = data;\n for (const part of s) {\n if(currentValue[part]) {\n currentValue = currentValue[part]\n } else {\n return null;\n }\n }\n return currentValue;\n }\n\n static async updateElements(data: any, prefix = '', parent: any = document) {\n if (!Array.isArray(data) && data) {\n Object.keys(data).forEach((column) => {\n const fullName = `${prefix}${column}`\n const value = data[column];\n if (typeof value === \"object\") {\n if (Array.isArray(value)) {\n value.forEach((v: any, i: number) => {\n Utils.updateElements(v, `${fullName}[${i}].`)\n })\n } else {\n Utils.updateElements(value, `${fullName}.`)\n }\n Utils.setElement(fullName, value, parent)\n } else {\n Utils.setElement(fullName, value, parent)\n }\n })\n }\n }\n static setElement(key: string, value:string, parent: any = document) {\n //@ts-ignore\n parent.querySelectorAll(`*[data-entity-field='${key}']`).forEach((element) => {\n const applyForValue = element.getAttribute(\"data-entity-value\");\n const pattern = element.getAttribute(\"data-entity-pattern\");\n const target = element.getAttribute(\"data-entity-target\");\n const formatter = element.getAttribute(\"data-entity-formatter\");\n if (applyForValue) {\n if (applyForValue === value || applyForValue === `${value}`) {\n element.classList.remove(\"d-none\");\n } else {\n element.classList.add(\"d-none\");\n }\n } else if(pattern && target) {\n element.setAttribute(target, pattern.replace(\"$VAL\", value))\n } else {\n if (element.nodeName === \"INPUT\") {\n const inputType = element.getAttribute(\"type\");\n if (inputType === \"checkbox\") {\n if (value) {\n element.setAttribute(\"checked\", \"checked\")\n } else {\n element.removeAttribute(\"checked\")\n }\n } else if(inputType === \"date\") {\n const s = value.split(\".\")\n const newVal = `${s[2]}-${s[1]}-${s[0]}`\n // @ts-ignore\n element.value = formatter ? Utils[formatter](newVal) : newVal;\n } else {\n // @ts-ignore\n element.value = formatter ? Utils[formatter](value) : value;\n }\n } else if(element.nodeName === \"SELECT\" || element.nodeName === \"TEXTAREA\") {\n // @ts-ignore\n element.value = formatter ? Utils[formatter](value) : value;\n } else {\n // @ts-ignore\n element.innerHTML = formatter ? Utils[formatter](value) : value;\n }\n }\n })\n }\n\n static formatDate(d: any) {\n return new Date(Date.parse(d)).toLocaleString(\"de-DE\", {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit'\n })\n }\n\n static translate(str: string) {\n const parts = str.split(\".\")\n // @ts-ignore\n let o = window.I18n\n parts.forEach((part) => {\n // @ts-ignore\n if (o[part]) {\n // @ts-ignore\n o = o[part]\n } else {\n console.warn(`Translation not found: ${str}`)\n return `Translation not found: ${str}`;\n }\n })\n if (typeof(o) === \"string\") {\n return o;\n } else {\n return \"\";\n }\n }\n static msToHMS( ms: number ) {\n let seconds: any = ms / 1000;\n let hours: any = parseInt( String(seconds / 3600) ); // 3,600 seconds in 1 hour\n seconds = seconds % 3600; // seconds remaining after extracting hours\n let minutes: any = parseInt( String(seconds / 60) ); // 60 seconds in 1 minute\n seconds = parseInt(String(seconds % 60));\n if (hours <= 9) {\n hours = `0${hours}`\n }\n if (minutes <= 9) {\n minutes = `0${minutes}`\n }\n if (seconds <= 9) {\n seconds = `0${seconds}`\n }\n return hours+\":\"+minutes+\":\"+seconds;\n }\n\n static async hideLoader() {\n const loader = document.querySelector(\"#loading-bg\");\n document.body.classList.remove(\"is-loading\");\n if(loader) {\n loader.classList.add(\"d-none\");\n }\n }\n static async showLoader() {\n const loader = document.querySelector(\"#loading-bg\");\n document.body.classList.add(\"is-loading\");\n if(loader) {\n loader.classList.remove(\"d-none\");\n }\n }\n static genRandomColor() {\n return Math.floor(Math.random()*16777215).toString(16);\n }\n\n static genCalendarColor(n: number) {\n const colors: any[] = [\n '049CE5',\n 'E77C73',\n '7CB342',\n 'D71A60',\n '616161',\n '8E25AA',\n 'E4C442',\n 'B39DDB',\n '0A8043'\n ];\n\n return colors[n] ? colors[n] : Utils.genRandomColor();\n }\n\n static makeId(length = 7) {\n let result = '';\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n }\n\n static secondsToHhMm(seconds: number) {\n try {\n return new Date(Math.abs(seconds) * 1000).toISOString().slice(11, 16);\n } catch (error) {\n return \"00:00\"\n }\n }\n static secondsToHhMmSs(seconds: number) {\n try {\n return new Date(Math.abs(seconds) * 1000).toISOString().slice(11, 19);\n } catch (error) {\n return \"00:00:00\"\n }\n }\n\n static appendParamsToUrl(basePath: string, params: { [s: string]: unknown; } | ArrayLike) {\n if (!params || typeof params !== 'object') {\n throw new Error('Params müssen ein Objekt sein.');\n }\n const [path, queryString] = basePath.split('?');\n const urlParams = new URLSearchParams(queryString || '');\n\n for (let [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) {\n if (typeof value === \"string\") {\n urlParams.append(key, value);\n }\n }\n }\n const newQueryString = urlParams.toString();\n return newQueryString ? `${path}?${newQueryString}` : path;\n }\n\n static escapeRegex(text: string) {\n return text.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n };\n}"],"names":["data"],"mappings":"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"}