diff options
| author | George Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2023-03-13 02:35:32 +0200 |
|---|---|---|
| committer | George Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2023-03-13 02:35:32 +0200 |
| commit | 4eac9731fe77023488cdf3aa124a6aa1e5444a59 (patch) | |
| tree | 7c9510b23ea7a40a2280b39e87e55a1612309df1 /html/assets/js/dataTables/accent-neutralise.js | |
| parent | 33266244e8c75c29f31dd5dce756e55fb10a0b9b (diff) | |
| download | classroom-4eac9731fe77023488cdf3aa124a6aa1e5444a59.tar.gz classroom-4eac9731fe77023488cdf3aa124a6aa1e5444a59.tar.bz2 classroom-4eac9731fe77023488cdf3aa124a6aa1e5444a59.zip | |
setup needed libraries for browser-scripting
Diffstat (limited to 'html/assets/js/dataTables/accent-neutralise.js')
| -rw-r--r-- | html/assets/js/dataTables/accent-neutralise.js | 84 |
1 files changed, 84 insertions, 0 deletions
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 |
