parent
220faaf222
commit
a0a9c23c78
@ -0,0 +1,3 @@
|
||||
.notMatched td {
|
||||
opacity: 0.2;
|
||||
}
|
@ -0,0 +1,113 @@
|
||||
/*! SearchFade 0.0.1
|
||||
* 2018 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
/**
|
||||
* @summary SearchFade
|
||||
* @description Search and Fade unmatching rows in a DataTables
|
||||
* @version 0.0.1
|
||||
* @author SpryMedia Ltd (www.sprymedia.co.uk)
|
||||
* @copyright Copyright 2018 SpryMedia Ltd.
|
||||
*
|
||||
* This source file is free software, available under the following license:
|
||||
* MIT license - http://datatables.net/license/mit
|
||||
*
|
||||
* This source file is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
|
||||
*
|
||||
* For details please refer to: http://www.datatables.net
|
||||
*/
|
||||
(function(factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD
|
||||
define(['jquery', 'datatables.net'], function($) {
|
||||
return factory($, window, document);
|
||||
});
|
||||
} else if (typeof exports === 'object') {
|
||||
// CommonJS
|
||||
module.exports = function(root, $) {
|
||||
if (!root) {
|
||||
root = window;
|
||||
}
|
||||
|
||||
if (!$ || !$.fn.dataTable) {
|
||||
$ = require('datatables.net')(root, $).$;
|
||||
}
|
||||
|
||||
return factory($, root, root.document);
|
||||
};
|
||||
} else {
|
||||
// Browser
|
||||
factory(jQuery, window, document);
|
||||
}
|
||||
})(function($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
$.fn.dataTable.Api.register('searchFade()', function() {
|
||||
return this;
|
||||
});
|
||||
|
||||
$.fn.dataTable.Api.register('searchFade().node()', function() {
|
||||
return this.settings()[0].searchFadeNode;
|
||||
});
|
||||
|
||||
function _draw(table, searchFade) {
|
||||
searchFade.empty();
|
||||
searchFade.append('Search: ');
|
||||
|
||||
$('<input type="text" class="searchFadeInput' + table.settings()[0].sTableId + '">').appendTo(searchFade);
|
||||
}
|
||||
|
||||
$.fn.dataTable.SearchFade = function(settings) {
|
||||
var table = new $.fn.dataTable.Api(settings);
|
||||
var searchFade = $('<div class="searchFade"/>');
|
||||
|
||||
table.settings()[0].searchFadeNode = searchFade;
|
||||
|
||||
_draw(table, searchFade);
|
||||
|
||||
// Trigger a search
|
||||
searchFade.on('keyup redraw', 'input', function() {
|
||||
table.rows(':visible').every(function(rowIdx, tableLoop, rowLoop) {
|
||||
var present = true;
|
||||
if ($('.searchFadeInput' + table.settings()[0].sTableId).val().length) {
|
||||
present = table
|
||||
.row(rowIdx)
|
||||
.data()
|
||||
.some(function(v) {
|
||||
return v.match(new RegExp($('.searchFadeInput' + table.settings()[0].sTableId).val(), 'i')) != null;
|
||||
});
|
||||
}
|
||||
$(table.row(rowIdx).node()).toggleClass('notMatched', !present);
|
||||
});
|
||||
});
|
||||
|
||||
table.on('draw', function() {
|
||||
$('.searchFadeInput').trigger('redraw');
|
||||
});
|
||||
|
||||
// API method to get the searchFade container node
|
||||
this.node = function() {
|
||||
return searchFade;
|
||||
};
|
||||
};
|
||||
|
||||
$.fn.DataTable.SearchFade = $.fn.dataTable.SearchFade;
|
||||
|
||||
$.fn.dataTable.ext.feature.push({
|
||||
fnInit: function(settings) {
|
||||
var search = new $.fn.dataTable.SearchFade(settings);
|
||||
return search.node();
|
||||
},
|
||||
cFeature: 'F'
|
||||
});
|
||||
|
||||
$(document).on('init.dt', function(e, settings, json) {
|
||||
if (e.namespace === 'dt') {
|
||||
$.fn.dataTable.SearchFade(settings);
|
||||
}
|
||||
|
||||
return;
|
||||
});
|
||||
});
|
Loading…
Reference in new issue