{"version":3,"file":"list-wEF5vFok.js","sources":["../../../app/frontend/entrypoints/controllers/erp/product/overview/list.ts"],"sourcesContent":["import UtilsEntity from \"@/frontend/entrypoints/utils/entity\";\nimport flatpickr from \"flatpickr\";\nimport {German} from \"flatpickr/dist/l10n/de\";\nimport jQuery from 'jquery/dist/jquery';\nimport * as bootstrap from 'bootstrap'\n\nimport Swal from 'sweetalert2';\n\nimport Utils from '../../../../utils'\nimport DefaultController from \"../../../defaultController\";\nimport ErpProductEntity from '../entity';\n\nexport default class ErpProductList extends DefaultController {\n tableElem: any;\n datatable: any;\n\n async init() {\n this.entity = \"erp/products\"\n this.tableElem = jQuery('.datatables-users')\n this.createTable();\n await super.init();\n }\n\n getEntityData(elem: any) {\n return ErpProductEntity.getEntityData(elem)\n }\n\n bindListeners() {\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('erp.product.name')} ${Utils.translate('generic.deleted')}`, `${Utils.translate('generic.success')}`)\n } else {\n this.toastr.error(`${Utils.translate('erp.product.name')} ${Utils.translate('generic.messages.not_deleted')}`, `${Utils.translate('generic.error')}`)\n }\n this.datatable.ajax.reload();\n }\n });\n jQuery(\"body\").delegate(\".new_product\", \"click\", (e: any) => {\n const href = e.currentTarget.getAttribute(\"href\");\n document.location.href = href;\n })\n }\n\n createTable() {\n this.datatable = new DataTable('.datatables-users', {\n 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 responsive: true,\n layout: {\n topEnd: ['search', 'buttons']\n },\n pageLength: 25,\n serverSide: 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 ajax: {\n url: \"/api/v1/erp/products\",\n dataType: 'json',\n // @ts-ignore\n data: (params: { length: any; start: any; draw: any; order: any; search: any; columns: any; }) => {\n console.log(\"aaa\", params)\n return {\n limit: params.length,\n page: params.start / 25 + 1,\n draw: params.draw,\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 select: true,\n columns: [\n {data: 'number'},\n {data: 'uuid'},\n {data: 'name'},\n {data: 'stock'},\n {data: 'manufacturer'},\n {data: 'uuid'}\n ],\n columnDefs: [\n {\n targets: 0,\n render: (data: any, type: any, full: any, meta: any) => {\n return `window).currentLocale}/erp/products/${full.uuid}\">${data}`;\n },\n },\n {\n targets: 1,\n render: (data: any, type: any, full: any, meta: any) => {\n return full.category ? full.category.name : \"\";\n },\n },\n {\n targets: 2,\n render: (data: any, type: any, full: any, meta: any) => {\n return data;\n },\n },\n {\n targets: 3,\n render: (data: any, type: any, full: any, meta: any) => {\n return data;\n },\n },\n {\n targets: 4,\n render: (data: any, type: any, full: any, meta: any) => {\n return data ? data.name : \"\";\n },\n },\n {\n targets: 5,\n searchable: false,\n orderable: false,\n render: (data: any, type: any, full: any, meta: any) => {\n return `
`\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: [\n {\n text: `${Utils.translate('generic.add')}`,\n className: 'dt-button add-new btn btn-primary m-2 new_product',\n attr: {\n 'href': `/${(