2 * angular-datatables - v0.5.4
3 * https://github.com/l-lin/angular-datatables
6 if (typeof module !== "undefined" && typeof exports !== "undefined" && module.exports === exports) {
7 module.exports = 'datatables.light-columnfilter';
9 (function(window, document, $, angular) {
13 // See https://github.com/thansen-solire/datatables-light-columnfilter
14 angular.module('datatables.light-columnfilter', ['datatables'])
15 .config(dtLightColumnFilterConfig)
16 .run(initLightColumnFilterPlugin);
19 function dtLightColumnFilterConfig($provide) {
20 $provide.decorator('DTOptionsBuilder', dtOptionsBuilderDecorator);
22 function dtOptionsBuilderDecorator($delegate) {
23 var newOptions = $delegate.newOptions;
24 var fromSource = $delegate.fromSource;
25 var fromFnPromise = $delegate.fromFnPromise;
27 $delegate.newOptions = function() {
28 return _decorateOptions(newOptions);
30 $delegate.fromSource = function(ajax) {
31 return _decorateOptions(fromSource, ajax);
33 $delegate.fromFnPromise = function(fnPromise) {
34 return _decorateOptions(fromFnPromise, fnPromise);
39 function _decorateOptions(fn, params) {
40 var options = fn(params);
41 options.withLightColumnFilter = withLightColumnFilter;
45 * Add column filter support
46 * @param lightColumnFilterOptions the plugins options
47 * @returns {DTOptions} the options
49 function withLightColumnFilter(lightColumnFilterOptions) {
50 options.hasLightColumnFilter = true;
51 if (lightColumnFilterOptions) {
52 options.lightColumnFilterOptions = lightColumnFilterOptions;
58 dtOptionsBuilderDecorator.$inject = ['$delegate'];
60 dtLightColumnFilterConfig.$inject = ['$provide'];
63 function initLightColumnFilterPlugin(DTRendererService) {
64 var lightColumnFilterPlugin = {
65 postRender: postRender
67 DTRendererService.registerPlugin(lightColumnFilterPlugin);
69 function postRender(options, result) {
70 if (options && options.hasLightColumnFilter) {
71 new $.fn.dataTable.ColumnFilter(result.DataTable, options.lightColumnFilterOptions);
75 initLightColumnFilterPlugin.$inject = ['DTRendererService'];
78 })(window, document, jQuery, angular);