From 6be73e2527927c584fd1fc0d8d76665eeb6bff36 Mon Sep 17 00:00:00 2001 From: stib Date: Tue, 14 May 2019 11:09:05 +1000 Subject: [PATCH] =?UTF-8?q?Added=20hysteresis=20to=20length,=20clickable?= =?UTF-8?q?=20"=E2=80=A6more"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dataRender/ellipsis.js | 88 ++++++++++++++++++++++++------------------ 1 file changed, 51 insertions(+), 37 deletions(-) diff --git a/dataRender/ellipsis.js b/dataRender/ellipsis.js index 186e9e5..7abfa0d 100644 --- a/dataRender/ellipsis.js +++ b/dataRender/ellipsis.js @@ -48,42 +48,56 @@ */ jQuery.fn.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' ) { - return d; - } - - d = d.toString(); // cast numbers - - if ( d.length <= cutoff ) { - 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]*)$/, ''); - } + 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' ) { + return d; + } + + d = d.toString(); // cast numbers + + if ( d.length <= cutoff * 1.5) { + 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 ); + } + var myID = row[0]; + return ''+ shortened + ' …more