Blame | Letzte Änderung | Log anzeigen | RSS feed
/*!* Print button for Buttons and DataTables.* 2015 SpryMedia Ltd - datatables.net/license*/(function($, DataTable) {"use strict";var _link = document.createElement( 'a' );/*** Convert a `link` tag's URL from a relative to an absolute address so it will* work correctly in the popup window which has no base URL.** @param {node} el Element to convert*/var _relToAbs = function( el ) {var url;var clone = $(el).clone()[0];var linkHost;if ( clone.nodeName.toLowerCase() === 'link' ) {_link.href = clone.href;linkHost = _link.host;// IE doesn't have a trailing slash on the host// Chrome has it on the pathnameif ( linkHost.indexOf('/') === -1 && _link.pathname.indexOf('/') !== 0) {linkHost += '/';}clone.href = _link.protocol+"//"+linkHost+_link.pathname+_link.search;}return clone.outerHTML;};DataTable.ext.buttons.print = {className: 'buttons-print',text: function ( dt ) {return dt.i18n( 'buttons.print', 'Print' );},action: function ( e, dt, button, config ) {var data = dt.buttons.exportData( config.exportOptions );var addRow = function ( d, tag ) {var str = '<tr>';for ( var i=0, ien=d.length ; i<ien ; i++ ) {str += '<'+tag+'>'+d[i]+'</'+tag+'>';}return str + '</tr>';};// Construct a table for printingvar html = '<table class="'+dt.table().node().className+'">';if ( config.header ) {html += '<thead>'+ addRow( data.header, 'th' ) +'</thead>';}html += '<tbody>';for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {html += addRow( data.body[i], 'td' );}html += '</tbody>';if ( config.footer ) {html += '<thead>'+ addRow( data.footer, 'th' ) +'</thead>';}// Open a new window for the printable tablevar win = window.open( '', '' );var title = config.title.replace( '*', $('title').text() );win.document.close();// Inject the title and also a copy of the style and link tags from this// document so the table can retain its base styling. Note that we have// to use string manipulation as IE won't allow elements to be created// in the host document and then appended to the new window.var head = '<title>'+title+'</title>';$('style, link').each( function () {head += _relToAbs( this );} );$(win.document.head).html( head );// Inject the table and other surrounding information$(win.document.body).html('<h1>'+title+'</h1>'+'<div>'+config.message+'</div>'+html);if ( config.customize ) {config.customize( win );}setTimeout( function () {if ( config.autoPrint ) {win.print(); // blocking - so close will notwin.close(); // execute until this is done}}, 250 );},title: '*',message: '',exportOptions: {},header: true,footer: false,autoPrint: true,customize: null};})(jQuery, jQuery.fn.dataTable);