UNPKG

3.74 kBJavaScriptView Raw
1/**
2 * ngTable: Table + Angular JS
3 *
4 * @author Vitalii Savchuk <esvit666@gmail.com>
5 * @url https://github.com/esvit/ng-table/
6 * @license New BSD License <http://creativecommons.org/licenses/BSD/>
7 */
8import * as ng1 from 'angular';
9export var NgTableEventsChannel = (function () {
10 function NgTableEventsChannel($rootScope) {
11 this.$rootScope = $rootScope;
12 var events = this;
13 events = this.addTableParamsEvent('afterCreated', events);
14 events = this.addTableParamsEvent('afterReloadData', events);
15 events = this.addTableParamsEvent('datasetChanged', events);
16 events = this.addTableParamsEvent('pagesChanged', events);
17 events = this.addTableParamsEvent('afterDataFiltered', events);
18 events = this.addTableParamsEvent('afterDataSorted', events);
19 }
20 NgTableEventsChannel.prototype.addTableParamsEvent = function (eventName, target) {
21 var fnName = eventName.charAt(0).toUpperCase() + eventName.substring(1);
22 var event = (_a = {},
23 _a['on' + fnName] = this.createEventSubscriptionFn(eventName),
24 _a['publish' + fnName] = this.createPublishEventFn(eventName),
25 _a
26 );
27 return ng1.extend(target, event);
28 var _a;
29 };
30 NgTableEventsChannel.prototype.createPublishEventFn = function (eventName) {
31 var _this = this;
32 return function () {
33 var args = [];
34 for (var _i = 0; _i < arguments.length; _i++) {
35 args[_i - 0] = arguments[_i];
36 }
37 (_a = _this.$rootScope).$broadcast.apply(_a, ['ngTable:' + eventName].concat(args));
38 var _a;
39 };
40 };
41 NgTableEventsChannel.prototype.createEventSubscriptionFn = function (eventName) {
42 var _this = this;
43 return function (handler, eventSelectorOrScope, eventSelector) {
44 var actualEvtSelector;
45 var scope = _this.$rootScope;
46 if (isScopeLike(eventSelectorOrScope)) {
47 scope = eventSelectorOrScope;
48 actualEvtSelector = createEventSelectorFn(eventSelector);
49 }
50 else {
51 actualEvtSelector = createEventSelectorFn(eventSelectorOrScope);
52 }
53 return scope.$on('ngTable:' + eventName, function (event, params) {
54 var eventArgs = [];
55 for (var _i = 2; _i < arguments.length; _i++) {
56 eventArgs[_i - 2] = arguments[_i];
57 }
58 // don't send events published by the internal NgTableParams created by ngTableController
59 if (params.isNullInstance)
60 return;
61 var fnArgs = [params].concat(eventArgs);
62 if (actualEvtSelector.apply(this, fnArgs)) {
63 handler.apply(this, fnArgs);
64 }
65 });
66 };
67 function createEventSelectorFn(eventSelector) {
68 if (!eventSelector) {
69 return function (publisher) { return true; };
70 }
71 else if (isEventSelectorFunc(eventSelector)) {
72 return eventSelector;
73 }
74 else {
75 // shorthand for subscriber to only receive events from a specific publisher instance
76 return function (publisher) { return publisher === eventSelector; };
77 }
78 }
79 function isEventSelectorFunc(val) {
80 return typeof val === 'function';
81 }
82 function isScopeLike(val) {
83 return val && typeof val.$new === 'function';
84 }
85 };
86 NgTableEventsChannel.$inject = ['$rootScope'];
87 return NgTableEventsChannel;
88}());
89//# sourceMappingURL=ngTableEventsChannel.js.map
\No newline at end of file