5 lines
2.5 KiB
JavaScript
5 lines
2.5 KiB
JavaScript
/*!
|
|
* Print button for Buttons and DataTables.
|
|
* © SpryMedia Ltd - datatables.net/license
|
|
*/
|
|
import jQuery from"jquery";import DataTable from"datatables.net";import Buttons from"datatables.net-buttons";let $=jQuery;var _link=document.createElement("a"),_styleToAbs=function(t){t=$(t).clone()[0];return"link"===t.nodeName.toLowerCase()&&(t.href=_relToAbs(t.href)),t.outerHTML},_relToAbs=function(t){_link.href=t;t=_link.host;return-1===t.indexOf("/")&&0!==_link.pathname.indexOf("/")&&(t+="/"),_link.protocol+"//"+t+_link.pathname+_link.search};DataTable.ext.buttons.print={className:"buttons-print",text:function(t){return t.i18n("buttons.print","Print")},action:function(t,e,o,n,r){var i=e.buttons.exportData($.extend({decodeEntities:!1},n.exportOptions)),a=e.buttons.exportInfo(n),s=e.columns(n.exportOptions.columns).nodes().map(function(t){return t.className}).toArray(),l='<table class="'+e.table().node().className+'">';n.header&&(l+="<thead>"+i.headerStructure.map(function(t){return"<tr>"+t.map(function(t){return t?'<th colspan="'+t.colspan+'" rowspan="'+t.rowspan+'">'+t.title+"</th>":""}).join("")+"</tr>"}).join("")+"</thead>"),l+="<tbody>";for(var u=0,c=i.body.length;u<c;u++)l+=function(t,e){for(var o="<tr>",n=0,r=t.length;n<r;n++){var i=null===t[n]||void 0===t[n]?"":t[n];o+="<"+e+" "+(s[n]?'class="'+s[n]+'"':"")+">"+i+"</"+e+">"}return o+"</tr>"}(i.body[u],"td");l+="</tbody>",n.footer&&i.footer&&(l+="<tfoot>"+i.footerStructure.map(function(t){return"<tr>"+t.map(function(t){return t?'<th colspan="'+t.colspan+'" rowspan="'+t.rowspan+'">'+t.title+"</th>":""}).join("")+"</tr>"}).join("")+"</tfoot>"),l+="</table>";var p=window.open("","");if(p){p.document.close();var d="<title>"+a.title+"</title>";$("style, link").each(function(){d+=_styleToAbs(this)});try{p.document.head.innerHTML=d}catch(t){$(p.document.head).html(d)}p.document.body.innerHTML="<h1>"+a.title+"</h1><div>"+(a.messageTop||"")+"</div>"+l+"<div>"+(a.messageBottom||"")+"</div>",$(p.document.body).addClass("dt-print-view"),$("img",p.document.body).each(function(t,e){e.setAttribute("src",_relToAbs(e.getAttribute("src")))}),n.customize&&n.customize(p,n,e);p.setTimeout(function(){n.autoPrint&&(p.print(),p.close())},1e3),r()}else e.buttons.info(e.i18n("buttons.printErrorTitle","Unable to open print view"),e.i18n("buttons.printErrorMsg","Please allow popups in your browser for this site to be able to view the print view."),5e3)},async:100,title:"*",messageTop:"*",messageBottom:"*",exportOptions:{},header:!0,footer:!0,autoPrint:!0,customize:null};export default DataTable; |