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