From 4eac9731fe77023488cdf3aa124a6aa1e5444a59 Mon Sep 17 00:00:00 2001 From: George Halkiadakis Date: Mon, 13 Mar 2023 02:35:32 +0200 Subject: setup needed libraries for browser-scripting --- html/assets/js/dataTables/accent-neutralise.js | 84 ++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 html/assets/js/dataTables/accent-neutralise.js (limited to 'html/assets/js/dataTables/accent-neutralise.js') diff --git a/html/assets/js/dataTables/accent-neutralise.js b/html/assets/js/dataTables/accent-neutralise.js new file mode 100644 index 0000000..e917dae --- /dev/null +++ b/html/assets/js/dataTables/accent-neutralise.js @@ -0,0 +1,84 @@ +/** + * When search a table with accented characters, it can be frustrating to have + * an input such as _Zurich_ not match _Zürich_ in the table (`u !== ü`). This + * type based search plug-in replaces the built-in string formatter in + * DataTables with a function that will remove replace the accented characters + * with their unaccented counterparts for fast and easy filtering. + * + * Note that with the accented characters being replaced, a search input using + * accented characters will no longer match. The second example below shows + * how the function can be used to remove accents from the search input as well, + * to mitigate this problem. + * + * @summary Replace accented characters with unaccented counterparts + * @name Accent neutralise + * @author Allan Jardine + * + * @example + * $(document).ready(function() { + * $('#example').dataTable(); + * } ); + * + * @example + * $(document).ready(function() { + * var table = $('#example').dataTable(); + * + * // Remove accented character from search input as well + * $('#myInput').keyup( function () { + * table + * .search( + * jQuery.fn.DataTable.ext.type.search.string( this.value ) + * ) + * .draw() + * } ); + * } ); + */ + +(function(){ + +function removeAccents ( data ) { + return data + .replace( /έ/g, 'ε' ) + .replace( /[ύϋΰ]/g, 'υ' ) + .replace( /ό/g, 'ο' ) + .replace( /ώ/g, 'ω' ) + .replace( /ά/g, 'α' ) + .replace( /[ίϊΐ]/g, 'ι' ) + .replace( /ή/g, 'η' ) + .replace( /\n/g, ' ' ) + .replace( /á/g, 'a' ) + .replace( /é/g, 'e' ) + .replace( /í/g, 'i' ) + .replace( /ó/g, 'o' ) + .replace( /ú/g, 'u' ) + .replace( /ê/g, 'e' ) + .replace( /î/g, 'i' ) + .replace( /ô/g, 'o' ) + .replace( /è/g, 'e' ) + .replace( /ï/g, 'i' ) + .replace( /ü/g, 'u' ) + .replace( /ã/g, 'a' ) + .replace( /õ/g, 'o' ) + .replace( /ç/g, 'c' ) + .replace( /ì/g, 'i' ); +} + +var searchType = jQuery.fn.DataTable.ext.type.search; + +searchType.string = function ( data ) { + return ! data ? + '' : + typeof data === 'string' ? + removeAccents( data ) : + data; +}; + +searchType.html = function ( data ) { + return ! data ? + '' : + typeof data === 'string' ? + removeAccents( data.replace( /<.*?>/g, '' ) ) : + data; +}; + +}()); \ No newline at end of file -- cgit v1.2.3