tablesorter/dist/js/widgets/widget-output.min.js
Rob Garrison 72b45976d8 v2.28.8
2017-04-18 19:50:08 -05:00

2 lines
6.1 KiB
JavaScript

/*! Widget: output - updated 4/2/2017 (v2.28.6) */
!function(a){"use strict";var b=a.tablesorter,c=b.output={event:"outputTable",noDblClick:600,lastEvent:0,busy:!1,regexQuote:/([\n\t\x09\x0d\x0a]|<[^<]+>)/,regexBR:/(<br([\s\/])?>|\n)/g,regexIMG:/<img[^>]+alt\s*=\s*['"]([^'"]+)['"][^>]*>/i,regexHTML:/<[^<]+>/g,replaceCR:"\r\n",replaceTab:"\t",popupTitle:"Output",popupStyle:"width:100%;height:100%;margin:0;resize:none;",message:"Your device does not support downloading. Please try again in desktop browser.",init:function(a){a.$table.off(c.event).on(c.event,function(b){b.stopPropagation(),!c.busy&&b.timeStamp-c.lastEvent>c.noDblClick&&(c.lastEvent=b.timeStamp,c.busy=!0,c.process(a,a.widgetOptions))})},processRow:function(d,e,f,g){var h,i,j,k,l,m,n,o,p,q,r=d.widgetOptions,s=[],t=r.output_duplicateSpans,u=f&&g&&r.output_headerRows&&a.isFunction(r.output_callbackJSON),v=0,w=e.length;for(k=0;k<w;k++)for(s[k]||(s[k]=[]),v=0,i=e.eq(k).children(),j=i.length,n=0;n<j;n++){if(h=i.eq(n),h.filter("[rowspan]").length)for(o=parseInt(h.attr("rowspan"),10)-1,q=c.formatData(d,r,h,f),l=1;l<=o;l++)s[k+l]||(s[k+l]=[]),s[k+l][v]=f?q:t?q:"";if(h.filter("[colspan]").length)for(p=parseInt(h.attr("colspan"),10)-1,q=c.formatData(d,r,h,f),m=0;m<p;m++)if(h.filter("[rowspan]").length)for(o=parseInt(h.attr("rowspan"),10),l=0;l<o;l++)s[k+l]||(s[k+l]=[]),s[k+l][v+m]=u?r.output_callbackJSON(h,q,v+m)||q+"("+(v+m)+")":f?q:t?q:"";else s[k][v+m]=u?r.output_callbackJSON(h,q,v+m)||q+"("+(v+m)+")":f?q:t?q:"";for(;void 0!==s[k][v];)v++;s[k][v]=s[k][v]||c.formatData(d,r,h,f),v++}return b.output.removeColumns(d,r,s)},removeColumns:function(a,b,c){var d,e,f,g=[],h=c.length;for(d=0;d<h;d++)for(e=c[d],g[d]=[],f=0;f<a.columns;f++)b.output_hiddenColumnArray[f]||g[d].push(e[f]);return g},process:function(d,e){var f,g,h,i,j,k,l,m,n=window.JSON&&JSON.hasOwnProperty("stringify"),o=0,p=(e.output_separator||",").toLowerCase(),q="json"===p,r="array"===p,s=q||r?",":e.output_separator,t=e.output_saveRows,u=d.$table;for(e.output_regex=new RegExp("("+(/\\/.test(s)?"\\":"")+s+")"),e.output_hiddenColumnArray=[],o=0;o<d.columns;o++)e.output_hiddenColumnArray[o]=a.inArray(o,e.output_ignoreColumns)>-1||!e.output_hiddenColumns&&"none"===d.$headerIndexed[o].css("display")&&!d.$headerIndexed[o].hasClass("tablesorter-scroller-hidden-column");if(g=u.children("thead").children("tr").not("."+(b.css.filterRow||"tablesorter-filter-row")).filter(function(){return e.output_hiddenColumns||"none"!==a(this).css("display")}),i=c.processRow(d,g,!0,q),h=u.children("tbody").children("tr").not(d.selectorRemove),h="function"==typeof t?h.filter(t):/^f/.test(t)?h.not("."+(e.filter_filteredRow||"filtered")):/^v/.test(t)?h.filter(":visible"):/^[.#:\[]/.test(t)?h.filter(t):h,j=c.processRow(d,h),e.output_includeFooter&&(j=j.concat(c.processRow(d,u.children("tfoot").children("tr:visible")))),k=i.length,q){for(p=[],l=j.length,o=0;o<l;o++)m=i[k>1&&e.output_headerRows?o%k:k-1],p.push(c.row2Hash(m,j[o]));f=n?JSON.stringify(p):p}else e.output_includeHeader?(m=[i[k>1&&e.output_headerRows?o%k:k-1]],p=c.row2CSV(e,e.output_headerRows?i:m,r).concat(c.row2CSV(e,j,r))):p=c.row2CSV(e,j,r),f=r&&n?JSON.stringify(p):p.join("\n");if(a.isFunction(e.output_callback)){if(!1===(m=e.output_callback(d,f,d.pager&&d.pager.ajaxObject.url||null)))return;"string"==typeof m&&(f=m)}/p/i.test(e.output_delivery||"")?c.popup(f,e.output_popupStyle,q||r):c.download(d,e,f),c.busy=!1},row2CSV:function(a,b,c){var d,e,f=[],g=b.length;for(e=0;e<g;e++)d=(b[e]||[]).join("").replace(/\"/g,""),(b[e]||[]).length>0&&""!==d&&(f[f.length]=c?b[e]:b[e].join(a.output_separator));return f},row2Hash:function(a,b){var c,d={},e=b.length;for(c=0;c<e;c++)c<a.length&&(d[a[c]]=b[c]);return d},formatData:function(b,d,e,f){var g=e.attr(d.output_dataAttrib),h=void 0!==g?g:e.html(),i=(d.output_separator||",").toLowerCase(),j="json"===i||"array"===i,k=h.replace(/\"/g,d.output_replaceQuote||"“");return k=d.output_trimSpaces?k.replace(c.regexBR,""):k.replace(c.regexBR,c.replaceCR).replace(/\t/g,c.replaceTab),h=k.match(c.regexIMG),d.output_includeHTML||null===h||(k=h[1]),k=d.output_includeHTML&&!f?k:k.replace(c.regexHTML,""),k=d.output_trimSpaces||f?a.trim(k):k,i=!j&&(d.output_wrapQuotes||d.output_regex.test(k)||c.regexQuote.test(k)),k=i?'"'+k+'"':k,"function"==typeof d.output_formatContent?d.output_formatContent(b,d,{isHeader:f,$cell:e,content:k}):k},popup:function(a,b,d){var e=window.open("",c.popupTitle,b);try{e.document.write("<html><head><title>"+c.popupTitle+'</title></head><body><textarea wrap="'+(d?"on":"off")+'" style="'+c.popupStyle+'">'+a+"\n</textarea></body></html>"),e.document.close(),e.focus()}catch(f){return e.close(),c.popup(a,b,d)}return!0},download:function(a,b,d){if("function"==typeof b.output_savePlugin)return b.output_savePlugin(a,b,d);var e,f,g,h,i=window.navigator,j=document.createElement("a");if(/(iP)/g.test(i.userAgent))return alert(c.message),!1;try{g=!!new Blob}catch(a){g=!1}return g?(window.URL=window.URL||window.webkitURL,h=/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(b.output_encoding)?["\ufeff",d]:[d],f=new Blob(h,{type:b.output_encoding}),i.msSaveBlob?i.msSaveBlob(f,b.output_saveFileName):(j.href=window.URL.createObjectURL(f),j.download=b.output_saveFileName,document.createEvent&&(e=document.createEvent("MouseEvents"),e.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),j.dispatchEvent(e))),!1):(window.open(b.output_encoding+encodeURIComponent(d)+"?download","_self"),!0)},remove:function(a){a.$table.off(c.event)}};b.addWidget({id:"output",options:{output_separator:",",output_ignoreColumns:[],output_hiddenColumns:!1,output_includeFooter:!1,output_includeHeader:!0,output_headerRows:!1,output_dataAttrib:"data-name",output_delivery:"popup",output_saveRows:"filtered",output_duplicateSpans:!0,output_replaceQuote:"“;",output_includeHTML:!1,output_trimSpaces:!0,output_wrapQuotes:!1,output_popupStyle:"width=500,height=300",output_saveFileName:"mytable.csv",output_formatContent:null,output_callback:function(a,b){return!0},output_callbackJSON:function(a,b,c){return b+"("+c+")"},output_encoding:"data:application/octet-stream;charset=utf8,",output_savePlugin:null},init:function(a,b,d){c.init(d)},remove:function(a,b){c.remove(b)}})}(jQuery);