exportdatafile
Version:
Export Data Excel Pdf and Txt
9 lines (8 loc) • 14.9 kB
JavaScript
var Y=["EXCEL","PDF","TXT","ALL"];function I(r){let i=new Date(r),g=i.getFullYear(),t=String(i.getMonth()+1).padStart(2,"0"),a=String(i.getDate()).padStart(2,"0"),b=String(i.getHours()).padStart(2,"0"),u=String(i.getMinutes()).padStart(2,"0"),m=String(i.getSeconds()).padStart(2,"0");return`${a}-${t}-${g} ${b}:${u}:${m}`}function K(r){return r.every(i=>Y.includes(i))}function A(r){let i=0;return r.forEach(g=>{g.child&&g.child.length>0?i+=A(g.child):i+=1}),i}var N=r=>{let i=[];return r.forEach(g=>{g.child&&g.child.length>0?i.push(...N(g.child)):i.push(g)}),i},_=r=>r.split("_").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ");import J from"exceljs";var V=async({columns:r,data:i,grouping:g,date:t,excelSetting:a,title:b,footerSetting:u})=>{let m=new J.Workbook;r=r.filter(o=>!o.options?.disabledColumn);let n=m.addWorksheet(b||a?.titleExcel),F=A(r),k=n.addRow([]);k.getCell(1).value=b||a?.titleExcel,k.getCell(1).alignment={horizontal:"center"};let D=n.getColumn(F).letter;if(n.mergeCells(`A${k.number}:${D}${k.number}`),k.eachCell(o=>{o.font={color:{argb:"000000"},bold:!0,size:12}}),t){let o=n.addRow([]);o.getCell(1).value=`${t.caption?t.caption:"Tanggal "} : ${t?.start_date} ${t?.end_date?`s/d ${t?.end_date}`:""}`,o.getCell(1).alignment={horizontal:"center"},n.mergeCells(`A${o.number}:${D}${o.number}`),o.eachCell(l=>{l.font={color:{argb:"00000"},bold:!0,size:12}})}let v=n.addRow([]);v.getCell(1).value=a?.additionalTextHeader||"",v.getCell(1).alignment={horizontal:"center"},n.mergeCells(`A${v.number}:${D}${v.number}`),v.eachCell(o=>{o.font={color:{argb:"000000"},bold:!0,size:12}});let L=r.some(o=>o.child&&o.child.length>0),R=n.addRow([]),x=L?n.addRow([]):null;r.forEach(o=>{if(o.child&&o.child.length>0){let l=R.actualCellCount+1,$=o.child.length;R.getCell(l).value=o.label,$>1&&n.mergeCells(R.number,l,R.number,l+$-1);for(let p=l;p<l+$;p++){let s=R.getCell(p);s.fill={type:"pattern",pattern:"solid",fgColor:{argb:a?.bgColor||"E8E5E5"}},s.font={color:{argb:a?.txtColor||"000000"},bold:!0},s.alignment={horizontal:"center",vertical:"middle"}}o.child.forEach((p,s)=>{if(x){let d=x.getCell(l+s);d.value=p.label,d.fill={type:"pattern",pattern:"solid",fgColor:{argb:a?.bgColor||"E8E5E5"}},d.font={color:{argb:a?.txtColor||"000000"},bold:!0};let C=p.options?.halign||(["RP","GR","NUMBER"].includes(p?.options?.format||"")?"right":"left"),c=p.options?.valign||"middle";d.alignment={horizontal:C,vertical:c}}})}else{let l=R.actualCellCount+1;R.getCell(l).value=o.label,R.getCell(l).fill={type:"pattern",pattern:"solid",fgColor:{argb:a?.bgColor||"E8E5E5"}},R.getCell(l).font={color:{argb:a?.txtColor||"000000"},bold:!0},R.getCell(l).alignment={horizontal:o.options?.halign||"center",vertical:o.options?.valign||"middle"},L&&x&&n.mergeCells(R.number,l,x.number,l)}});let h={};i.forEach(o=>{if(g.length>0){let l=A(r),$=g.map(c=>o[c]!==void 0?`${_(c)} : ${o[c]}`:"").filter(Boolean).join(" | "),p=n.addRow([$]);n.mergeCells(`A${p.number}:${String.fromCharCode(64+l)}${p.number}`),p.getCell(1).alignment={horizontal:"left"},p.getCell(1).font={bold:!0};let s={};o.detail.forEach(c=>{let T=N(r).map(f=>{let y=f?.options?.format==="DATETIME"?I(c[f.key]):c[f.key],P={horizontal:f?.options?.halign?f?.options?.halign:f?.options?.format==="RP"||f?.options?.format==="GR"||f?.options?.format==="NUMBER"?"right":"left"},M=f.key;return h[M]=(h[M]||0)+Number(y),s[M]=(s[M]||0)+Number(y),{value:y,alignment:P,numFmt:f?.options?.format==="RP"?"#,##0":f?.options?.format==="GR"?"#,##0.000":void 0}}),G=n.addRow(T.map(f=>f.value));T.forEach((f,y)=>{let P=G.getCell(y+1);P.alignment=f.alignment,f.numFmt&&(P.numFmt=f.numFmt)})});let d=N(r),C=n.addRow(r.map(()=>null));d.forEach((c,w)=>{if(c?.options?.format==="RP"||c?.options?.format==="GR"||c?.options?.format==="NUMBER"){let G=i.length+4-1,f=`SUM(${String.fromCharCode(65+w)}4:${String.fromCharCode(65+w)}${G})`,y=C.getCell(w+1),P=u?.subTotal?.enableCount&&g.length>0?" : "+o.detail.length:"",M=u?.subTotal?.captionItem?u?.subTotal?.captionItem:"";C.getCell(1).value=`${u?.subTotal?.caption||"SUB TOTAL"} ${P} ${M}`,C.getCell(1).alignment={horizontal:"center"},y.numFmt=c?.options?.format==="GR"?"#,##0.000":"#,##0",y.value={formula:f},C.getCell(w+1).value=c?.options.disabledFooter?"":s[c.key]}else C.getCell(w+1).value=""}),a?.grandTotalSetting?.colSpan&&n.mergeCells(`A${C.number}:${String.fromCharCode(64+Number(a?.grandTotalSetting?.colSpan))}${C.number}`),C.eachCell(c=>{c.fill={type:"pattern",pattern:"solid",fgColor:{argb:a?.bgColor||"#E8E5E5"},bgColor:{argb:a?.bgColor||"#E8E5E5"}},c.font={color:{argb:a?.txtColor},bold:!0}})}else{let $=N(r).map(s=>{let d=s?.options?.format==="DATETIME"?I(o[s.key]):o[s.key],C={vertical:"middle",horizontal:s?.options?.halign?s?.options?.halign:s?.options?.format==="RP"||s?.options?.format==="GR"||s?.options?.format==="NUMBER"?"right":"left"},c=s.key;return h[c]=(h[c]||0)+Number(d),{value:d,options:s?.options,alignment:C,numFmt:s?.options?.format==="RP"?"#,##0":s?.options?.format==="GR"?"#,##0.000":void 0}}),p=n.addRow($.map(s=>s.value));$.forEach((s,d)=>{let C=p.getCell(d+1),c=s.alignment.vertical?String(s.alignment.vertical||"bottom"):"bottom",w="";(c==="middle"||c==="bottom"||c==="justify"||c==="distributed"||c==="top")&&(w=c),C.alignment={horizontal:s.alignment.horizontal,vertical:w},s.numFmt&&(C.numFmt=s.numFmt)})}});let E=n.addRow(r.map(()=>null));N(r).forEach((o,l)=>{if(o?.options?.format==="RP"||o?.options?.format==="GR"||o?.options?.format==="NUMBER"){let p=i.length+4-1,s=`SUM(${String.fromCharCode(65+l)}4:${String.fromCharCode(65+l)}${p})`,d=E.getCell(l+1),C=u?.grandTotal?.enableCount?g.length>0?" : "+i.map(T=>T.detail.length).reduce((T,G)=>T+G,0):" : "+i.length:"",c=u?.grandTotal?.captionItem?u?.grandTotal?.captionItem:"",w=`${u?.grandTotal?.caption||"GRAND TOTAL"} ${C} ${c}`;E.getCell(1).value=w,E.getCell(1).alignment={horizontal:"center"},d.numFmt=o?.options?.format==="GR"?"#,##0.000":"#,##0",d.value={formula:s},E.getCell(l+1).value=o?.options.disabledFooter?"":h[o.key]}else E.getCell(l+1).value=""}),a?.grandTotalSetting?.colSpan&&n.mergeCells(`A${E.number}:${String.fromCharCode(64+Number(a?.grandTotalSetting?.colSpan))}${E.number}`),E.eachCell(o=>{o.fill={type:"pattern",pattern:"solid",fgColor:{argb:a?.bgColor||"#E8E5E5"},bgColor:{argb:a?.bgColor||"#E8E5E5"}},o.font={color:{argb:a?.txtColor},bold:!0}}),a?.customize&&a.customize(n);let j=await m.xlsx.writeBuffer(),O=new Blob([j],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),e=document.createElement("a");e.href=URL.createObjectURL(O),e.download=`${a?.titleExcel||b}.xlsx`,document.body.appendChild(e),e.click(),document.body.removeChild(e)},S=V;import q from"jspdf";import W from"jspdf-autotable";var Q=({columns:r,data:i,grouping:g,pdfSetting:t,date:a,title:b,footerSetting:u})=>{let m=new q(t?.orientation,t?.unit,[t?.width||297,t?.height||210]),n=[],F=a?30:20;r=r.filter(e=>!e.options?.disabledColumn),m.setFontSize(10);let k=m.internal.pageSize.getWidth(),D=m.splitTextToSize(t?.textHeaderLeft||"",110);m.text(D,15,18),m.text(`${b||t?.titlePdf}`,k-15,18,{align:"right"}),a&&m.text(`${a.caption?a.caption:"TANGGAL "} : ${a?.start_date} ${a?.end_date?`s/d ${a?.end_date}`:""}`,k-15,22,{align:"right"}),m.setProperties({title:b||t?.titlePdf}),t?.finalY&&(console.log(t.finalY),F=t.finalY);let v=[],L=[],R=r.some(e=>e.child&&e.child.length>0);r.forEach(e=>{let o={textColor:`#${t?.txtColor||"000"}`,fillColor:`#${t?.bgColor||"E8E5E5"}`,fontStyle:"bold",...e?.options?.valign?{valign:e.options.valign}:{},halign:e?.options?.halign??(["RP","GR","NUMBER"].includes(e?.options?.format||"")?"right":"left")};R?e.child&&e.child.length>0?(v.push({content:e.label,colSpan:e.child.length,styles:o}),e.child.forEach(l=>{L.push({content:l.label,key:l.key,options:l.options,styles:{...o,halign:l?.options?.halign??(["RP","GR","NUMBER"].includes(l?.options?.format||"")?"right":"left")}})})):v.push({content:e.label,rowSpan:2,key:e.key,options:e.options,styles:o}):v.push({content:e.label,key:e.key,options:e.options,styles:o})}),n.push(v),R&&L.length>0&&n.push(L);let x={};i.forEach(e=>{if(g.length>0){let o=A(r),$=[{content:g.map(T=>e[T]!==void 0?`${_(T)} : ${e[T]}`:"").filter(Boolean).join(" | "),colSpan:o,styles:{fontStyle:"bold",halign:"left"}}];n.push($);let p={},s=N(r);e.detail.forEach(T=>{let G=s.map(f=>{let y=T[f.key],P=f.key;return x[P]=(x[P]||0)+Number(y||0),p[P]=(p[P]||0)+Number(y||0),{content:(()=>{switch(f?.options?.format){case"RP":return y!==void 0?Number(y||0).toLocaleString("kr-ko"):"";case"GR":return y!==void 0?Number(y||0).toFixed(3):"";case"NUMBER":return y!==void 0?Number(y||0):"";case"DATETIME":return y!==void 0?I(y||new Date):"";default:return y!==void 0?y.toString():""}})(),styles:{halign:f?.options?.halign?f?.options?.halign:f?.options?.format==="RP"||f?.options?.format==="GR"||f?.options?.format==="NUMBER"||typeof y=="number"?"right":"left"}}});n.push(G)});let d=[];s.forEach(T=>{let G=p[T.key];T?.options?.format==="RP"||T?.options?.format==="GR"||T?.options?.format==="NUMBER"?d.push({content:T?.options?.disabledFooter?"":(()=>{switch(T?.options?.format){case"RP":return G.toLocaleString("kr-ko");case"GR":return G.toFixed(3);case"NUMBER":return G;default:return G.toString()}})(),styles:{halign:T?.options?.halign||"right",textColor:`#${t?.txtColor||"000"}`,fillColor:`#${t?.bgColor||"E8E5E5"}`,fontStyle:"bold"}}):d.push({content:"",styles:{textColor:`#${t?.txtColor||"000"}`,fillColor:`#${t?.bgColor||"E8E5E5"}`,fontStyle:"bold"}})});let C=t?.grandTotalSetting?.colSpan?Number(t?.grandTotalSetting?.colSpan||0)+1:0,c=u?.subTotal?.enableCount&&g.length>0?" : "+e.detail.length:"",w=u?.subTotal?.captionItem?u?.subTotal?.captionItem:"";d[0]={content:`${u?.subTotal?.caption||"SUB TOTAL"}${c} ${w}`,colSpan:C,styles:{textColor:`#${t?.txtColor||"000"}`,fillColor:`#${t?.bgColor||"E8E5E5"}`,fontStyle:"bold",halign:"center"}},t?.grandTotalSetting?.colSpan&&d.splice(1,t?.grandTotalSetting?.colSpan),n.push(d)}else{let o=(p,s)=>{let d=s[p.key],C=p.key;p.options?.disabledFooter||(x[C]=(x[C]||0)+Number(d||0));let c=(()=>{switch(p?.options?.format){case"RP":return d!==void 0?Number(d||0).toLocaleString("kr-ko"):"";case"GR":return d!==void 0?Number(d||0).toFixed(3):"";case"NUMBER":return d!==void 0?Number(d||0):"";case"DATETIME":return d!==void 0?I(d||new Date):"";default:return d!==void 0?d?.toString():""}})(),w=p?.options?.halign?p?.options?.halign:p?.options?.format==="RP"||p?.options?.format==="GR"||p?.options?.format==="NUMBER"||typeof d=="number"?"right":"left";return{options:p?.options,content:c,styles:{halign:w}}},$=N(r).map(p=>o(p,e));n.push($)}});let h=N(r),E=[];if(h.forEach(e=>{let o=x[e.key],l=["RP","GR","NUMBER"].includes(e?.options?.format||""),$=e?.options?.disabledFooter?"":(()=>{if(!l)return"";switch(e.options?.format){case"RP":return Number(o||0).toLocaleString("kr-KO");case"GR":return Number(o||0).toFixed(3);case"NUMBER":return Number(o||0);default:return(o||0).toString()}})();E.push({options:e?.options,content:$,styles:{halign:e?.options?.halign?e.options.halign:l?"right":"left",textColor:`#${t?.txtColor||"000"}`,fillColor:`#${t?.bgColor||"E8E5E5"}`,fontStyle:"bold"}})}),!t?.grandTotalSetting?.disableGrandTotal){let e=Number(t?.grandTotalSetting?.colSpan||0),o=Math.min(e+1,h.length),l=u?.grandTotal?.enableCount?g.length>0?i.reduce((s,d)=>s+d.detail.length,0):i.length:0,$=u?.grandTotal?.captionItem||"",p=`${u?.grandTotal?.caption||"GRAND TOTAL"}`+(l?` : ${l}`:"")+($?` ${$}`:"");for(E[0]={content:p,colSpan:o,styles:{textColor:`#${t?.txtColor||"000"}`,fillColor:`#${t?.bgColor||"E8E5E5"}`,fontStyle:"bold",halign:"center"}},E.splice(1,o-1);E.length<h.length;)E.push({content:"",styles:{textColor:`#${t?.txtColor||"000"}`,fillColor:`#${t?.bgColor||"E8E5E5"}`,fontStyle:"bold"}});n.push(E)}if(typeof t?.addRow=="function"&&t?.addRow(n),!t?.disablePrintDate){let e=A(r);n.push([{content:`Print Date : ${I(`${new Date}`)}`,colSpan:e,styles:{textColor:`#${t?.txtColor||"000"}`,fillColor:`#${t?.bgColor||"E8E5E5"}`,fontStyle:"italic"}}])}W(m,{head:[],body:n,startY:F,theme:t?.theme||"plain",rowPageBreak:"avoid",margin:{top:10},bodyStyles:{fontSize:t?.fontSIze||8},headStyles:{fontSize:t?.fontSIze||8,textColor:`#${t?.txtColor||"000"}`,fillColor:`#${t?.bgColor||"E8E5E5"}`},tableLineColor:[255,255,255]}),n=[],F=m.lastAutoTable.finalY;let z=m.internal.getNumberOfPages(),j=m.internal.pageSize.width,O=m.internal.pageSize.height;m.setFontSize(10);for(let e=1;e<z+1;e++){let o=j/2,l=O-10;m.setPage(e),m.text(`${e} of ${z}`,o,l,{align:"center"})}if(typeof t?.customize=="function"&&t.customize(m,F,W),t?.openNewTab){let e=m.output("bloburl");window.open(e)}else m.save(`${t?.titlePdf||b}.pdf`)},X=Q;var Z=r=>{let i=[],g=r.copy?2:1;for(let t=0;t<g;t++){let a=r.data.map(b=>{let u=r.template;for(;/\n!!LOOP\((.+)\)(\{\n(.*\n)+\})\n/gm.exec(u);)u=u.replace(/\n!!LOOP\((.+)\)(\{\n(.*\n)+\})\n/,(m,n,F)=>{let k=F.replace(/^\{/,"").replace(/\}$/,"");return(Array.isArray(b[n])?b[n]:[b[n]]).reduce((L,R)=>L+k.replace(/\{([a-z0-9_]+)\}/gm,x=>{let h=x.replace(/(\{|\})/g,"");if(h.match(/nama_barang/)){let E=h.match(/nama_barang/),z=h==="nama_barang2"?[20,40]:h==="nama_barang3"?[40,60]:[0,20];return R[E]?.slice(...z).trim()||""}if(h.match(/deskripsi_jual/)){let E=h.match(/deskripsi_jual/),z=h==="deskripsi_jual2"?[20,40]:h==="deskripsi_jual3"?[40,60]:[0,20];return R[E]?.slice(...z).trim()||""}if(h.match(/deskripsi/)){let E=h.match(/deskripsi/),z=h==="deskripsi2"?[20,40]:h==="deskripsi3"?[40,60]:[0,20];return R[E]?.slice(...z).trim()||""}return R[h]||""}),"").replace(/\n(\s)+\n/gm,`
`)});return u.replace(/\{([a-z0-9_]+)\}/gm,m=>{let n=m.replace(/(\{|\})/g,"");return n.match(/auto_cut/)?`
VA`:b[n]||""}).replace(/\n(\s)+\n/gm,`
`).replace(/~new_line~/gm,`
`).replace(/!!LOOP\(detail\)/g,"").replace(/[}{]/g,"")});for(let b in a)a[b]+=`
`;i.push(...a)}return i},tt=async(r,i)=>{let g=Z(r),t=new Blob([g?.join(`
`)||""],{type:"text/plain"}),a=document.createElement("a");a.href=URL.createObjectURL(t),a.download=i,document.body.appendChild(a),a.click(),document.body.removeChild(a)},H=tt;var $t=({columns:r,data:i,grouping:g,date:t,type:a,txtSetting:b,pdfSetting:u,excelSetting:m,title:n,footerSetting:F})=>{let k={data:[b?.dataTxt],template:b?.templateTxt,copy:b?.copy};if(i.length===0)throw new Error("Data is required");if(a.length===0)throw new Error("Type is required");if(!K(a))throw new Error('Type Export must use ["EXCEL", "PDF", "TXT", "ALL"]');a.forEach(D=>{D==="PDF"?X({pdfSetting:u,date:t,data:i,type:a,columns:r,grouping:g,title:n,footerSetting:F}):D==="TXT"?H(k,b?.titleTxt||""):D==="EXCEL"?S({date:t,data:i,type:a,columns:r,grouping:g,excelSetting:m,title:n,footerSetting:F}):(S({date:t,data:i,type:a,columns:r,grouping:g,excelSetting:m,title:n}),X({pdfSetting:u,date:t,data:i,type:a,columns:r,grouping:g,title:n}),H(k,b?.titleTxt||""))})};export{$t as ExportData};
//# sourceMappingURL=index.mjs.map