87 lines
2.4 KiB
JavaScript
87 lines
2.4 KiB
JavaScript
/*! semantic ui integration for DataTables' SearchBuilder
|
|
* © SpryMedia Ltd - datatables.net/license
|
|
*/
|
|
|
|
(function( factory ){
|
|
if ( typeof define === 'function' && define.amd ) {
|
|
// AMD
|
|
define( ['jquery', 'datatables.net-se', 'datatables.net-searchbuilder'], 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-se')(root, $);
|
|
}
|
|
|
|
if ( ! $.fn.dataTable.SearchBuilder ) {
|
|
require('datatables.net-searchbuilder')(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;
|
|
|
|
|
|
$.extend(true, DataTable.SearchBuilder.classes, {
|
|
clearAll: 'basic ui button dtsb-clearAll'
|
|
});
|
|
$.extend(true, DataTable.Group.classes, {
|
|
add: 'basic ui button dtsb-add',
|
|
clearGroup: 'basic ui button dtsb-clearGroup',
|
|
logic: 'basic ui button dtsb-logic'
|
|
});
|
|
$.extend(true, DataTable.Criteria.classes, {
|
|
condition: 'ui selection dropdown dtsb-condition',
|
|
data: 'ui selection dropdown dtsb-data',
|
|
"delete": 'basic ui button dtsb-delete',
|
|
left: 'basic ui button dtsb-left',
|
|
right: 'basic ui button dtsb-right',
|
|
value: 'basic ui selection dropdown dtsb-value'
|
|
});
|
|
DataTable.ext.buttons.searchBuilder.action = function (e, dt, node, config) {
|
|
e.stopPropagation();
|
|
this.popover(config._searchBuilder.getNode(), {
|
|
align: 'container',
|
|
span: 'container'
|
|
});
|
|
// Need to redraw the contents to calculate the correct positions for the elements
|
|
if (config._searchBuilder.s.topGroup !== undefined) {
|
|
config._searchBuilder.s.topGroup.dom.container.trigger('dtsb-redrawContents');
|
|
}
|
|
$('div.dtsb-searchBuilder').removeClass('ui basic vertical buttons');
|
|
};
|
|
|
|
|
|
return DataTable;
|
|
}));
|