UNPKG

smart-webcomponents-react

Version:

[![Price](https://img.shields.io/badge/price-COMMERCIAL-00JS8f7.svg)](https://jqwidgets.com/license/)

6 lines (4 loc) 11.9 kB
/* Smart UI v23.0.8 (2025-05-13) Copyright (c) 2011-2024 jQWidgets. License: https://htmlelements.com/license/ */ // Smart.Utilities.Assign("Grid.Export",class{exportData(e,t,o){const a=this,l=new Smart.Utilities.DataExporter({exportHeader:a.dataExport.header}),r=[];l.expandChar=a.dataExport.expandChar,l.collapseChar=a.dataExport.collapseChar,l.pageOrientation=a.dataExport.pageOrientation,l.style=a.dataExport.style,l.filterBy=a.dataExport.filterBy,l.groupBy=a.dataExport.groupBy,l.addImageToCell=a.dataExport.addImageToCell,l.headerContent=a.dataExport.headerContent,l.footerContent=a.dataExport.footerContent,l.setRowHeight=a.dataExport.setRowHeight,l.cellFormatFunction=a.dataExport.cellFormatFunction,l.freezeHeader=a.dataExport.freezeHeader,l.exportAsTable=a.dataExport.exportAsTable,l.onlySelected=a.dataExport.onlySelected,l.autoConvertFormulas=a.dataExport.autoConvertFormulas;const n=a.columns.toArray().slice(0).filter((e=>!1!==e.allowExport));l.header={columns:n,columngroups:a.columnGroups.slice(0)};let i=a.dataExport.style;if(i&&(i=JSON.parse(JSON.stringify(i))),a.dataExport.style=null,!a.dataExport.style){const t=window.getComputedStyle(a),o=window.getComputedStyle(a.columns.length>0&&a.columns[0].element?a.columns[0].element:a.$.columnHeader),n=window.getComputedStyle(a.$.columnHeader),d=e=>{const t=e.fontSize,o=e.borderRightColor,a=e.backgroundColor,l=e.color,r=new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");function n(e){return(e=e.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/))?"#"+i(e[1])+i(e[2])+i(e[3]).toUpperCase():"#ffffff"}function i(e){return isNaN(e)?"00":r[(e-e%16)/16]+r[e%16]}return{borderColor:n(o),fontSize:t,fontFamily:"Calibri",color:n(l),backgroundColor:n(a)}};if(0!==a.offsetWidth&&0!==a.offsetHeight){const c=d(t),s=d(o),p=d(n),f={height:a.$.columnHeader.offsetHeight+"px",border:"1px solid "+c.borderColor,fontFamily:p.fontFamily,fontSize:p.fontSize,color:p.color,backgroundColor:s.backgroundColor,fontWeight:"400"},u={border:"1px solid "+c.borderColor,fontFamily:c.fontFamily,fontSize:c.fontSize},m={height:a.layout.rowMinHeight+"px",verticalAlign:"center"};for(let t=0;t<a.columns.length;t++){const o=a.columns[t];if(!o.allowExport)continue;if(!o.visible)continue;f[o.dataField]={textAlign:o.align,verticalAlign:"center",width:o.computedWidth+"px",format:o.cellsFormat||""};let l=o.cellsFormat||"";l||("date"===o.dataType?l="d":"dateTime"===o.dataType?l="D":"time"===o.dataType&&(l="t")),a.locale&&l&&l.indexOf("c")>=0&&"xlsx"===e&&""!==a.locale&&"en"!==a.locale&&(l=a._getCurrencyByLocale(a.locale)+"x"+l);const n={textAlign:o.cellsAlign,format:l};if(u[o.dataField]=n,-1!==["html","jpeg","pdf","png","xlsx"].indexOf(e)&&(o.template||o.formatFunction||o.cellsClassName)&&a.dataExport.exportStyles){const e=a.behavior.allowRenderCache;a.behavior.allowRenderCache=!1,a._recycle();for(let e=0;e<a.rows.length;e++){const t=a.rows[e];let l=a.rows[e]["column_"+o.dataField];if(a.dataExport.viewStart&&e<a.dataExport.viewStart||a.dataExport.viewEnd&&e>a.dataExport.viewEnd)continue;if(!l||t&&t.element&&t.element.classList.contains("smart-hidden")){const e=a._rowElements[0];if(!e)continue;if(t.element=e,t.grid=a,t.render(),l=t["column_"+o.dataField],!l)continue}const n={};l.borderColor&&(n.border=l.borderColor),l.background&&(n.backgroundColor=l.background),l.color&&(n.color=l.color);const c=new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"),s=e=>isNaN(e)?"00":c[(e-e%16)/16]+c[e%16],p=e=>e.startsWith("#")?e.length<6?e.toUpperCase()+e.substring(1):e.toUpperCase():(e=e.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/))?"#"+s(e[1])+s(e[2])+s(e[3]).toUpperCase():null;let f=l.value,u=l.value;if(l.className&&l.element){const e=d(window.getComputedStyle(l.element));n.backgroundColor=p(e.backgroundColor),n.color=p(e.color)}if(o.cellsClassName){let a=o.cellsClassName;if("function"==typeof o.cellsClassName&&(a=o.cellsClassName(e,o.dataField,f,t.data,t)),i&&i[a])i[a].color&&(n.color=i[a].color),i[a].backgroundColor&&(n.backgroundColor=i[a].backgroundColor),i[a].fontSize&&(n.fontSize=i[a].fontSize),i[a].fontStyle&&(n.fontStyle=i[a].fontStyle);else if(l.element){const e=d(window.getComputedStyle(l.element));n.backgroundColor=p(e.backgroundColor),n.color=p(e.color)}}else if(o.formatFunction){const e={id:t.id,row:t,column:o.dataField,value:l.value,cell:l};o.formatFunction(e),void 0!==e.value&&(u=e.value),e.cell.background&&(n.backgroundColor=p(e.cell.background)),e.cell.color&&(n.color=p(e.cell.color))}void 0!==a.dataExport.viewStart&&a.dataExport.viewStart,r[e]=Object.assign({},t.data),0!==Object.getOwnPropertyNames(n).length&&(m[e]||(m[e]={}),m[e][o.dataField]=n),l.element?r[e][o.dataField]=l.element.textContent:l.value!==u&&(r[e][o.dataField]=u)}a.behavior.allowRenderCache=e}}a.appearance.alternationCount>0&&(m.alternationCount=a.appearance.alternationCount,m.alternationStart=a.appearance.alternationStart,m.alternationEnd=a.appearance.alternationEnd,m.alternationIndex0Color=c.color,m.alternationIndex0BackgroundColor=c.backgroundColor,m.alternationIndex1Color=c.color,m.alternationIndex1BackgroundColor="#F5F5F5"),l.style={border:"1px solid "+c.borderColor,borderCollapse:"collapse",header:f,columns:u,rows:m}}}i&&(a.dataExport.style=i,l.style&&Object.assign(l.style,i));let d=!1;const c=!a.rowHierarchy||a.grouping.enabled?a.rows.toArray():a.rowHierarchy,s=a.dataExport.rowIds,p=null!==s;let f=[];if(a.dataExport.view)a._recyclingRows.forEach(((e,t)=>{if(a.dataExport.viewStart&&t<a.dataExport.viewStart||a.dataExport.viewEnd&&t>a.dataExport.viewEnd)return!0;r[t]?f.push(r[t]):f.push(e.data)}));else{for(let t=0;t<c.length;t++){const o=c[t];if(o.visible&&(!1!==o.filtered||void 0===o.filtered)){if(p&&-1===s.indexOf(o.id))continue;const t={};for(let l=0;l<a.columns.length;l++){const r=a.columns[l];if(!r.allowExport)continue;const n=r.dataField;let i=o.data[n];if("taskChecklist"===n)if(i){const e=i.map((e=>{let t=e.text;return e.completed?t="✓ "+t:t+="X "+t,t}));i=e.toString()}else i="";if("taskUserId"===n){const e=a.users.find((e=>e.id===parseInt(i)||parseInt(e.id)===parseInt(i)));e&&(i=e.name)}if("vote"===r.template){let e=[];a.users.forEach((t=>{i&&i.indexOf(t.id)>=0&&e.push(t.name)})),i=e.toString()}if(r.relationId&&!r.parentDataField){let e=r.editor.dataSource;r.relationId&&r.relationField&&r._isDirty&&(!r.editor.dataSource||r.editor.dataSource&&0===r.editor.dataSource.length)&&(e=a._getRelationData(r.relationId));const t=e[a.getCellValue(o.id,r.dataField)];if(t){const e=t[r.relationField];i=e}}if(r.parentDataField){const e=a.columnByDataField[r.parentDataField];if(e){let t=e.editor.dataSource;e.relationId&&e.relationField&&e._isDirty&&(!e.editor.dataSource||e.editor.dataSource&&0===e.editor.dataSource.length)&&(t=a._getRelationData(e.relationId));const l=t[a.getCellValue(o.id,r.parentDataField)];if(l){const e=l[r.cascadingDataField];i=e}}}if(void 0===i)if("createdBy"===r.template){const e=a.users.find((e=>e.id===o.createdBy));if(e){const o=e,a="string"==typeof o?o:o.name;t[n]=a}else t[n]=""}else if("createdTime"===r.template){const e=o.getCell(n).getFormattedValue(o.createdTime,"d")+" "+o.getCell(n).getFormattedValue(o.createdTime,"t");t[n]=e}else if("modifiedBy"===r.template){const e=a.users.find((e=>e.id===o.modifiedBy));if(e){const o=e,a="string"==typeof o?o:o.name;t[n]=a}else t[n]=""}else if("modifiedTime"===r.template){const e=o.getCell(n).getFormattedValue(o.modifiedTime,"d")+" "+o.getCell(n).getFormattedValue(o.modifiedTime,"t");t[n]=e}else t[n]="";else if(i&&i.indexOf&&(i.indexOf("{")>=0||"[]"===i)){const e=i.indexOf("{")>=0||"[]"===i?a.isJSON(i)?JSON.parse(i):[]:i.split(", "),o=[];for(let t=0;t<e.length;t++)if("string"==typeof e[t])o.push(e[t]);else{if("image"===r.template){d=!0,o.push(e[t].value);continue}o.push(e[t].label)}t[n]=o.join(",")}else if(i&&i.indexOf&&"image"===r.template){const e=i.indexOf("{")>=0||"[]"===i?a.isJSON(i)?JSON.parse(i):[]:i.split(","),o=[];d=!0;for(let t=0;t<e.length;t++)"string"==typeof e[t]?o.push(e[t]):(o.push(e[t].value),o.push(e[t].label));t[n]=o.join(",")}else if("csv"===e||"tsv"===e)if(r.cellsFormat){const e=o.getCell(n).getFormattedValue(i,r.cellsFormat);t[n]=e}else t[n]=i;else t[n]=i}f.push(t)}}c!==a.rowHierarchy||p||(f=a.dataSource.boundHierarchy,l.hierarchical=!0)}if(!a.dataExport.groupBy&&a.grouping.enabled&&a.dataSource&&a.dataSource.groupBy&&(l.groupBy=a.dataSource.groupBy&&a.dataSource.groupBy.toArray?a.dataSource.groupBy.toArray():null),a.dataExport.onlySelected&&a.selection.enabled)if(a.selection.allowCellSelection){const e=a.getSelectedCells(),t=[],o=[],r=[];for(let l=0;l<e.length;l++){const n=e[l],i=n[0],d=n[1],c=f[i][d];r[d]||o.push(a.columnByDataField[d]),r[d]=!0,t[i]||(t[i]={}),t[i][d]||(t[i][d]=c)}o.sort(((e,t)=>e<t?-1:e>t?1:0));for(let e in t){const a=t[e];for(let e=0;e<o.length;e++){const t=o[e];void 0===a[t.dataField]&&(a[t.dataField]="")}}l.header={columns:[...o]},f=Object.values(t)}else{const e=a.getSelectedRowIds(),t=[];for(let o=0;o<e.length;o++){const a=e[o];t.push(f[a])}f=t}if(a.checkLicense(!0),o){const t=o(f,l,e);t&&(f=t)}if(a.dataExport.cellFormatFunction)for(let e=0;e<f.length;e++){const t=f[e];for(let o=0;o<a.columns.length;o++){const l=a.columns[o];if(!l.allowExport)continue;const r=l.dataField;let n=t[r];const i=a.dataExport.cellFormatFunction(e,r,n);i&&(t[r]=i)}}if(!a.dataExport.addImageToCell&&d){const o=async e=>{const t=await fetch(e),o=await t.blob();return new Promise(((e,t)=>{const a=new FileReader;a.readAsDataURL(o),a.onloadend=()=>{const t=a.result;e(t)},a.onerror=t}))};let r=0,i=0;const d=()=>{l.addImageToCell=(e,t,o,l,r,n)=>{if("image"!==a.columnByDataField[t].template||!o)return;let i="jpeg";return o.indexOf("png")>=0&&(i="png"),{image:{id:"myImage"+e,base64:o,imageType:i,width:20,height:11,position:{offsetX:10+25*n,offsetY:5.5}},value:o}},l.exportData(f,e,a.dataExport.fileName,t),a.dataExport.view&&a._recycle(!1)};f.length;let c=!1;for(let e=0;e<f.length;e++){const t=f[e];for(let e=0;e<n.length;e++){const a=n[e];if("image"===a.template){let e=t[a.dataField],l=[];if(!e)continue;if(e.indexOf(",")>=0){l=e.split(",");let t=[];if(l[0].indexOf("data:image")>=0)for(let e=0;e<l.length;e+=2){const o=l[e]+","+l[e+1];t.push(o)}t.length&&(l=t)}else l=[e];t[a.dataField]=l,r+=l.length;for(let e=0;e<l.length;e++){const t=l[e];t.indexOf("data:image")>=0?i++:(c=!0,o(t).then((t=>{l[e]=t,i++,i===r&&d()})))}}}}return void(i===r&&!1===c&&d())}if(!f.length)return[];if(a.dataExport.getSpreadsheets){const t=a.dataExport.getSpreadsheets();if(t){l.spreadsheets=t;const o=l.style.header,r=l.style.columns;for(let l=0;l<t.length;l++){const n=t[l].columns;for(let t=0;t<n.length;t++){let l=n[t];if("string"==typeof l&&(l={label:l,dataField:l,allowExport:!0,visible:!0}),void 0!==l.allowExport&&!l.allowExport)continue;if(void 0!==l.visible&&!l.visible)continue;o[l.dataField]={textAlign:l.align||"left",verticalAlign:"center",width:l.computedWidth?l.computedWidth+"px":"100px",format:l.cellsFormat||""};let i=l.cellsFormat||"";i||("date"===l.dataType?i="d":"dateTime"===l.dataType?i="D":"time"===l.dataType&&(i="t")),a.locale&&i&&i.indexOf("c")>=0&&"xlsx"===e&&""!==a.locale&&"en"!==a.locale&&(i=a._getCurrencyByLocale(a.locale)+"x"+i);const d={textAlign:l.cellsAlign||"left",format:i};r[l.dataField]=d}}}}let u="";if(a.dataExport.formatData){const o=o=>{l.exportData(o,e,a.dataExport.fileName,t),a._recycle(!1)};a.dataExport.formatData([...f],n,a.getData(),o)}else u=l.exportData(f,e,a.dataExport.fileName,t);return a.dataExport.view&&a._recycle(!1),u}print(){const e=this,t=e.dataExport.fileName;e.dataExport.fileName=null;const o=e.exportData("html"),a=window.open("","","width=800,height=500"),l=a.document.open(),r='<!DOCTYPE html><html><head><meta charset="utf-8" /><title>'+t+"</title></head><body>"+o+"</body></html>";try{l.write(r),l.close(),a.onload=()=>{a.print(),a.close()}}catch(e){}e.dataExport.fileName=t}});