forked from clarketm/TableExport
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtableexport.min.js
More file actions
6 lines (6 loc) · 7.98 KB
/
Copy pathtableexport.min.js
File metadata and controls
6 lines (6 loc) · 7.98 KB
1
2
3
4
5
6
/*!
* TableExport.js 4.0.0-alpha.4 (https://www.travismclarke.com)
* Copyright 2016 Travis Clarke
* Licensed under the MIT license
*/
!function(t,e){"function"==typeof define&&define.amd?define(["exports","jquery","blobjs","file-saverjs","xlsx-js"],e):"object"==typeof exports&&"string"!=typeof exports.nodeName?e(exports,require("jquery"),require("blobjs"),require("file-saverjs"),require("xlsx-js")):e(t,t.jQuery,t.Blob,t.saveAs,t.XLSX)}(this,function(t,e,o,n,r){"use strict";function s(){for(var t=arguments,e=1;e<t.length;e++)for(var o in t[e])t[e].hasOwnProperty(o)&&(t[0][o]=t[e][o]);return t[0]}function i(t){return[].slice.call(t)}function a(t,e,o){for(var n=0;n<t.length;++n)t[n].addEventListener(e,o,!1)}function l(t,e){return t.classList?t.classList.contains(e):new RegExp("(^| )"+e+"( |$)","gi").test(t.cls)}var p=function(t,o,n){var f=this;f.settings=n?o:s({},p.prototype.defaults,o),f.selectors=i(t);var u,c,x,y=p.prototype.rowDel,m=f.settings.ignoreRows instanceof Array?f.settings.ignoreRows:[f.settings.ignoreRows],d=f.settings.ignoreCols instanceof Array?f.settings.ignoreCols:[f.settings.ignoreCols],g=f.settings.ignoreCSS instanceof Array?f.settings.ignoreCSS.join(", "):f.settings.ignoreCSS,h=f.settings.emptyCSS instanceof Array?f.settings.emptyCSS.join(", "):f.settings.emptyCSS;f.settings.bootstrap?(u=p.prototype.bootstrap[0]+" ",c=p.prototype.bootstrap[1]+" ",x=p.prototype.bootstrap[2]+" "):(u=p.prototype.defaultButton+" ",c=x=""),f.selectors.forEach(function(t){function o(e){var o=t.querySelectorAll("caption:not(.head)");o.length?o[0].appendChild(e):(o=document.createElement("caption"),o.className=x+f.settings.position,o.appendChild(e),t.insertBefore(o,t.firstChild))}function s(t,e,n){var r=document.createElement("button");r.setAttribute("data-fileblob",t),r.className=u+c+n,r.textContent=e,o(r)}var a=t.querySelectorAll("caption:not(.head)");n&&a.parentNode.removeChild(a);var b=i(t.querySelectorAll("tbody > tr")),b=f.settings.headings?i(t.querySelectorAll("thead > tr")).concat(b):b,b=f.settings.footers?i(t.querySelectorAll("tfoot > tr")).concat(b):b,v=f.settings.headings?t.querySelectorAll("thead > tr").length:0,S="id"===f.settings.fileName?t.getAttribute("id")?t.getAttribute("id"):p.prototype.defaultFileName:f.settings.fileName,C={xlsx:function(t,o){var n={},r=i(b).map(function(t,o){if(!~m.indexOf(o-v)&&!l(t,g)){var r=t.querySelectorAll("th, td");return i(r).map(function(t,r){if(!~d.indexOf(r)&&!l(t,g)){if(l(t,h))return" ";if(t.hasAttribute("colspan")&&(n[o]=n[o]||{},n[o][r+1]=t.getAttribute("colspan")-1),t.hasAttribute("rowspan"))for(var s=1;s<t.getAttribute("rowspan");s++)n[o+s]=n[o+s]||{},n[o+s][r]=1;if(n[o]){for(var i=r+1,a=0,p=0,s=0;s<=Math.max.apply(Math,Object.keys(n[o]))&&(n[o][s]?a=p>=r?a+n[o][s]:a:p++,p!==i);s++);return new Array(a).concat(e(t).text())}return t.textContent}})}}),a=p.prototype.escapeHtml(JSON.stringify({data:r,fileName:o,mimeType:p.prototype.xlsx.mimeType,fileExtension:p.prototype.xlsx.fileExtension})),f=p.prototype.xlsx.buttonContent,u=p.prototype.xlsx.defaultClass;s(a,f,u)},xlsm:function(t,o){var n={},r=i(b).map(function(t,o){if(!~m.indexOf(o-v)&&!l(t,g)){var r=t.querySelectorAll("th, td");return i(r).map(function(t,r){if(!~d.indexOf(r)&&!l(t,g)){if(l(t,h))return" ";if(t.hasAttribute("colspan")&&(n[o]=n[o]||{},n[o][r+1]=t.getAttribute("colspan")-1),t.hasAttribute("rowspan"))for(var s=1;s<t.getAttribute("rowspan");s++)n[o+s]=n[o+s]||{},n[o+s][r]=1;if(n[o]){for(var i=r+1,a=0,p=0,s=0;s<=Math.max.apply(Math,Object.keys(n[o]))&&(n[o][s]?a=p>=r?a+n[o][s]:a:p++,p!==i);s++);return new Array(a).concat(e(t).text())}return t.textContent}})}}),a=p.prototype.escapeHtml(JSON.stringify({data:r,fileName:o,mimeType:p.prototype.xls.mimeType,fileExtension:p.prototype.xls.fileExtension})),f=p.prototype.xls.buttonContent,u=p.prototype.xls.defaultClass;s(a,f,u)},xls:function(t,e){var o=p.prototype.xls.separator,n=i(b).map(function(t,e){if(!~m.indexOf(e-v)&&!l(t,g)){var n=t.querySelectorAll("th, td");return i(n).map(function(t,e){if(!~d.indexOf(e)&&!l(t,g))return l(t,h)?" ":t.textContent}).join(o)}}).join(t),r=p.prototype.escapeHtml(JSON.stringify({data:n,fileName:e,mimeType:p.prototype.xls.mimeType,fileExtension:p.prototype.xls.fileExtension})),a=p.prototype.xls.buttonContent,f=p.prototype.xls.defaultClass;s(r,a,f)},csv:function(t,e){var o=p.prototype.csv.separator,n=i(b).map(function(t,e){if(!~m.indexOf(e-v)&&!l(t,g)){var n=t.querySelectorAll("th, td");return i(n).map(function(t,e){if(!~d.indexOf(e)&&!l(t,g))return l(t,h)?" ":'"'+t.textContent.replace(/"/g,'""')+'"'}).join(o)}}).join(t),r=p.prototype.escapeHtml(JSON.stringify({data:n,fileName:e,mimeType:p.prototype.csv.mimeType,fileExtension:p.prototype.csv.fileExtension})),a=p.prototype.csv.buttonContent,f=p.prototype.csv.defaultClass;s(r,a,f)},txt:function(t,e){var o=p.prototype.txt.separator,n=i(b).map(function(t,e){if(!~m.indexOf(e-v)&&!l(t,g)){var n=t.querySelectorAll("th, td");return i(n).map(function(t,e){if(!~d.indexOf(e)&&!l(t,g))return l(t,h)?" ":t.textContent}).join(o)}}).join(t),r=p.prototype.escapeHtml(JSON.stringify({data:n,fileName:e,mimeType:p.prototype.txt.mimeType,fileExtension:p.prototype.txt.fileExtension})),a=p.prototype.txt.buttonContent,f=p.prototype.txt.defaultClass;s(r,a,f)}};f.settings.formats.forEach(function(t){!(!r||"xls"!==t)&&(t="xlsm"),!r&&"xlsx"===t&&(t=null),t&&C[t](y,S)})});var b=document.querySelectorAll("button[data-fileblob]");return a(b,"click",function(){var t=JSON.parse(this.getAttribute("data-fileblob")),e=t.data,o=t.fileName,n=t.mimeType,r=t.fileExtension;p.prototype.export2file(e,n,o,r)}),f};if(p.prototype={version:"4.0.0-alpha.4",defaults:{headings:!0,footers:!0,formats:["xls","csv","txt"],fileName:"id",bootstrap:!0,position:"bottom",ignoreRows:null,ignoreCols:null,ignoreCSS:".tableexport-ignore",emptyCSS:".tableexport-empty"},charset:"charset=utf-8",defaultFileName:"myDownload",defaultButton:"button-default",bootstrap:["btn","btn-default","btn-toolbar"],rowDel:"\r\n",entityMap:{"&":"&","<":"<",">":">","'":"'","/":"/"},xlsx:{defaultClass:"xlsx",buttonContent:"Export to xlsx",mimeType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",fileExtension:".xlsx"},xls:{defaultClass:"xls",buttonContent:"Export to xls",separator:"\t",mimeType:"application/vnd.ms-excel",fileExtension:".xls"},csv:{defaultClass:"csv",buttonContent:"Export to csv",separator:",",mimeType:"text/csv",fileExtension:".csv"},txt:{defaultClass:"txt",buttonContent:"Export to txt",separator:" ",mimeType:"text/plain",fileExtension:".txt"},escapeHtml:function(t){return String(t).replace(/[&<>'\/]/g,function(t){return p.prototype.entityMap[t]})},dateNum:function(t,e){e&&(t+=1462);var o=Date.parse(t);return(o-new Date(Date.UTC(1899,11,30)))/864e5},createSheet:function(t){for(var e={},o={s:{c:1e7,r:1e7},e:{c:0,r:0}},n=0;n!=t.length;++n)for(var s=0;s!=t[n].length;++s){o.s.r>n&&(o.s.r=n),o.s.c>s&&(o.s.c=s),o.e.r<n&&(o.e.r=n),o.e.c<s&&(o.e.c=s);var i={v:t[n][s]};if(null!=i.v){var a=r.utils.encode_cell({c:s,r:n});"number"==typeof i.v?i.t="n":"boolean"==typeof i.v?i.t="b":i.v instanceof Date?(i.t="n",i.z=r.SSF._table[14],i.v=this.dateNum(i.v)):i.t="s",e[a]=i}}return o.s.c<1e7&&(e["!ref"]=r.utils.encode_range(o)),e},Workbook:function(){this.SheetNames=[],this.Sheets={}},string2ArrayBuffer:function(t){for(var e=new ArrayBuffer(t.length),o=new Uint8Array(e),n=0;n!=t.length;++n)o[n]=255&t.charCodeAt(n);return e},export2file:function(t,e,s,i){if(r&&".xls"==i.substr(0,4)){var a=new this.Workbook,l=this.createSheet(t);a.SheetNames.push(s),a.Sheets[s]=l;var p={bookType:i.substr(1,3)+(i.substr(4)||"m"),bookSST:!1,type:"binary"},f=r.write(a,p);t=this.string2ArrayBuffer(f)}n(new o([t],{type:e+";"+this.charset}),s+i,!0)},update:function(t){return new p(this.selectors,s({},this.settings,t),(!0))},reset:function(){return new p(this.selectors,settings,(!0))},remove:function(){this.selectors.each(function(){var t=this.querySelectorAll("caption:not(.head)");t.parentNode.removeChild(t)})}},e){e.fn.tableExport=function(t,e){return new p(this,t,e)};for(var f in p.prototype)e.fn.tableExport[f]=p.prototype[f]}t["default"]=t.TableExport=p});