UNPKG

dvp-mongomodels

Version:
96 lines (82 loc) 3.74 kB
/*! * angular-datatables - v0.5.5 * https://github.com/l-lin/angular-datatables * License: MIT */ if (typeof module !== "undefined" && typeof exports !== "undefined" && module.exports === exports) { module.exports = 'datatables.buttons'; } (function(window, document, $, angular) { 'use strict'; // See https://datatables.net/extensions/buttons/ angular.module('datatables.buttons', ['datatables']) .config(dtButtonsConfig) .run(initButtonsPlugin); /* @ngInject */ function dtButtonsConfig($provide) { $provide.decorator('DTOptionsBuilder', dtOptionsBuilderDecorator); function dtOptionsBuilderDecorator($delegate) { var newOptions = $delegate.newOptions; var fromSource = $delegate.fromSource; var fromFnPromise = $delegate.fromFnPromise; $delegate.newOptions = function() { return _decorateOptions(newOptions); }; $delegate.fromSource = function(ajax) { return _decorateOptions(fromSource, ajax); }; $delegate.fromFnPromise = function(fnPromise) { return _decorateOptions(fromFnPromise, fnPromise); }; return $delegate; function _decorateOptions(fn, params) { var options = fn(params); options.withButtons = withButtons; return options; /** * Add buttons compatibility * @param buttonsOptions the options of the buttons extension (see https://datatables.net/reference/option/buttons#Examples) * @returns {DTOptions} the options */ function withButtons(buttonsOptions) { var buttonsPrefix = 'B'; options.dom = options.dom ? options.dom : $.fn.dataTable.defaults.sDom; if (options.dom.indexOf(buttonsPrefix) === -1) { options.dom = buttonsPrefix + options.dom; } if (angular.isUndefined(buttonsOptions)) { throw new Error('You must define the options for the button extension. See https://datatables.net/reference/option/buttons#Examples for some example'); } options.buttons = buttonsOptions; return options; } } } dtOptionsBuilderDecorator.$inject = ['$delegate']; } dtButtonsConfig.$inject = ['$provide']; /* @ngInject */ function initButtonsPlugin(DTRendererService) { var buttonsPlugin = { preRender: preRender, postRender: postRender }; DTRendererService.registerPlugin(buttonsPlugin); function preRender(options) { if (options && angular.isArray(options.buttons)) { // The extension buttons seems to clear the content of the options.buttons for some reasons... // So, we save it in a tmp variable so that we can restore it afterwards // See https://github.com/l-lin/angular-datatables/issues/502 options.buttonsTmp = options.buttons.slice(); } } function postRender(options) { if (options && angular.isDefined(options.buttonsTmp)) { // Restore the buttons options options.buttons = options.buttonsTmp; delete options.buttonsTmp; } } } initButtonsPlugin.$inject = ['DTRendererService']; })(window, document, jQuery, angular);