2 lines
3.0 KiB
JavaScript
2 lines
3.0 KiB
JavaScript
!function(){"use strict";class e{constructor(){this.modalId="#xgpsr-csv-import-modal",this.importButtonId=x13gpsr_import_button,this.init()}init(){document.getElementById(this.importButtonId).addEventListener("click",(()=>{const e=document.querySelector(this.modalId);e&&$(e).modal("show")})),$(this.modalId).on("hidden.bs.modal",(()=>{document.querySelectorAll(".mapping-select").forEach((e=>{e.value=""})),document.getElementById("xgpsr-mapping-error-container").style.display="none"})),document.addEventListener("change",(e=>{"xgpsr-csv-file"===e.target.id&&this.uploadCsv(e.target.files[0])})),document.addEventListener("click",(e=>{"xgpsr-process-mapping"===e.target.id&&this.processMapping()}))}uploadCsv(e){const t=new FormData;t.append("xgpsr-csv-file",e),t.append("ajax",1),t.append("action","uploadCsv"),t.append("xgpsr-csv-delimeter",document.getElementById("xgpsr-csv-delimeter").value),fetch(this.getAjaxUrl(),{method:"POST",body:t}).then((e=>e.json())).then((e=>{if(e.error)return void alert(x13gpsrErrorLoadingModal);document.getElementById("xgpsr-mapping-container").innerHTML=e.modalContent,document.getElementById("xgpsr-temp-file-path").value=e.tempFilePath,document.getElementById("xgpsr-process-mapping").disabled=!1;const t=e.csvHeaders.map((e=>e.toLowerCase().replace(/[^a-z0-9_]/g,"_").replace(/_+$/,"")));document.querySelectorAll(".mapping-select").forEach((e=>{const r=e.dataset.field.toLowerCase(),n=t.indexOf(r);e.value=-1!==n?n:""}))})).catch((e=>{console.error("Error during CSV upload:",e),alert(x13gpsrErrorLoadingModal)}))}processMapping(){const e={},t=[];if(document.querySelectorAll(".mapping-select").forEach((r=>{const n=r.dataset.field,o=r.closest("tr")?.querySelector("span"),a=o?.textContent.includes("*")||!1;e[n]=r.value,!a||""!==r.value&&"skip"!==r.value||t.push(n)})),t.length>0){const e=document.getElementById("xgpsr-mapping-error-container");return e.innerHTML=`<div class="alert alert-danger">${x13gpsrRequiredFieldsError} (${t.join(", ")})</div>`,void(e.style.display="block")}const r=new FormData;r.append("mapping",JSON.stringify(e)),r.append("xgpsr-temp-file-path",document.getElementById("xgpsr-temp-file-path").value),r.append("xgpsr-csv-delimeter",document.getElementById("xgpsr-csv-delimeter").value),r.append("ajax",1),r.append("action","processImportCsv"),fetch(this.getAjaxUrl(),{method:"POST",body:r}).then((e=>e.json())).then((e=>{const t=document.querySelector(`${this.modalId} .modal-body`);e.error?t.innerHTML=`<div class="alert alert-danger">${e.error}</div>`:(t.innerHTML=`\n <div class="alert alert-success">${x13gpsrSuccessMessage}</div>\n <button class="btn btn-primary" onclick="location.reload();">${x13gpsrCloseButton}</button>\n `,document.querySelector(`${this.modalId} .modal-footer`).remove())})).catch((()=>{const e=document.getElementById("xgpsr-mapping-error-container");e.innerHTML='<div class="alert alert-danger">Error processing import.</div>',e.style.display="block"}))}getAjaxUrl(){return x13gpsr_ajax_url}}document.addEventListener("DOMContentLoaded",(()=>new e))}();
|