/*! © SpryMedia Ltd - datatables.net/license */ (function( factory ){ if ( typeof define === 'function' && define.amd ) { // AMD define( ['jquery', 'datatables.net'], function ( $ ) { return factory( $, window, document ); } ); } else if ( typeof exports === 'object' ) { // CommonJS var jq = require('jquery'); var cjsRequires = function (root, $) { if ( ! $.fn.dataTable ) { require('datatables.net')(root, $); } }; if (typeof window === 'undefined') { module.exports = function (root, $) { if ( ! root ) { // CommonJS environments without a window global must pass a // root. This will give an error otherwise root = window; } if ( ! $ ) { $ = jq( root ); } cjsRequires( root, $ ); return factory( $, root, root.document ); }; } else { cjsRequires( window, jq ); module.exports = factory( jq, window, window.document ); } } else { // Browser factory( jQuery, window, document ); } }(function( $, window, document, undefined ) { 'use strict'; var DataTable = $.fn.dataTable; /** * This data rendering helper method can be useful for cases where you have * potentially large data strings to be shown in a column that is restricted by * width. The data for the column is still fully searchable and sortable, but if * it is longer than a give number of characters, it will be truncated and * shown with ellipsis. A browser provided tooltip will show the full string * to the end user on mouse hover of the cell. * * This function should be used with the `dt-init columns.render` configuration * option of DataTables. * * It accepts three parameters: * * 1. `-type integer` - The number of characters to restrict the displayed data * to. * 2. `-type boolean` (optional - default `false`) - Indicate if the truncation * of the string should not occur in the middle of a word (`true`) or if it * can (`false`). This can allow the display of strings to look nicer, at the * expense of showing less characters. * 2. `-type boolean` (optional - default `false`) - Escape HTML entities * (`true`) or not (`false` - default). * * @name ellipsis * @summary Restrict output data to a particular length, showing anything * longer with ellipsis and a browser provided tooltip on hover. * @author [Allan Jardine](http://datatables.net) * @requires DataTables 1.10+ * * @returns {Number} Calculated average * * @example * // Restrict a column to 17 characters, don't split words * $('#example').DataTable( { * columnDefs: [ { * targets: 1, * render: DataTable.render.ellipsis( 17, true ) * } ] * } ); * * @example * // Restrict a column to 10 characters, do split words * $('#example').DataTable( { * columnDefs: [ { * targets: 2, * render: DataTable.render.ellipsis( 10 ) * } ] * } ); */ DataTable.render.ellipsis = function (cutoff, wordbreak, escapeHtml) { var esc = function (t) { return ('' + t) .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"'); }; return function (d, type, row) { // Order, search and type get the original data if (type !== 'display') { return d; } if (typeof d !== 'number' && typeof d !== 'string') { if (escapeHtml) { return esc(d); } return d; } d = d.toString(); // cast numbers if (d.length <= cutoff) { if (escapeHtml) { return esc(d); } return d; } var shortened = d.substr(0, cutoff - 1); // Find the last white space character in the string if (wordbreak) { shortened = shortened.replace(/\s([^\s]*)$/, ''); } // Protect against uncontrolled HTML input if (escapeHtml) { shortened = esc(shortened); } return ('' + shortened + '…'); }; }; return DataTable; }));