@universis/ngx-tables 0.8.5 → 15.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/esm2020/lib/actions/table.actions.mjs +27 -0
  2. package/esm2020/lib/advanced-aggregator.mjs +2 -0
  3. package/esm2020/lib/components/add-items/add-items.component.mjs +138 -0
  4. package/esm2020/lib/components/advanced-aggregator/advanced-aggregator.component.mjs +126 -0
  5. package/esm2020/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.mjs +53 -0
  6. package/esm2020/lib/components/advanced-list/advanced-list.component.mjs +184 -0
  7. package/esm2020/lib/components/advanced-row-action/advanced-row-action.component.mjs +178 -0
  8. package/esm2020/lib/components/advanced-search-form/advanced-search-form.component.mjs +154 -0
  9. package/esm2020/lib/components/advanced-select/advanced-select.component.mjs +42 -0
  10. package/esm2020/lib/components/advanced-select/advanced-select.service.mjs +38 -0
  11. package/esm2020/lib/components/advanced-table/advanced-filter-value-provider.service.mjs +31 -0
  12. package/esm2020/lib/components/advanced-table/advanced-table-resolvers.mjs +40 -0
  13. package/esm2020/lib/components/advanced-table/advanced-table-search-base.mjs +31 -0
  14. package/esm2020/lib/components/advanced-table/advanced-table-search.component.mjs +525 -0
  15. package/esm2020/lib/components/advanced-table/advanced-table-settings.component.mjs +108 -0
  16. package/esm2020/lib/components/advanced-table/advanced-table.component.mjs +1599 -0
  17. package/esm2020/lib/components/advanced-table/advanced-table.formatters.interface.mjs +17 -0
  18. package/esm2020/lib/components/advanced-table/advanced-table.formatters.mjs +429 -0
  19. package/esm2020/lib/components/advanced-table/advanced-table.interfaces.mjs +2 -0
  20. package/esm2020/lib/components/advanced-table-modal/advanced-table-modal-base.component.mjs +420 -0
  21. package/esm2020/lib/components/column-selector/column-selector.component.mjs +205 -0
  22. package/esm2020/lib/components/column-selector/column-selector.service.mjs +45 -0
  23. package/esm2020/lib/components/table-simple-header/table-simple-header.component.mjs +52 -0
  24. package/esm2020/lib/directives/advance-search-state.directive.mjs +111 -0
  25. package/esm2020/lib/directives/advance-table-state.directive.mjs +63 -0
  26. package/esm2020/lib/directives/advanced-search-router-state.directive.mjs +64 -0
  27. package/esm2020/lib/directives/advanced-table-editor.directive.mjs +154 -0
  28. package/esm2020/lib/directives/btnexp.directive.mjs +222 -0
  29. package/esm2020/lib/i18n/tables.el.mjs +129 -0
  30. package/esm2020/lib/i18n/tables.en.mjs +128 -0
  31. package/esm2020/lib/pipes/advanced-aggregator.pipe.mjs +38 -0
  32. package/esm2020/lib/pipes/advansed-aggregator-list-title-parse.pipe.mjs +45 -0
  33. package/esm2020/lib/reducers/index.mjs +37 -0
  34. package/esm2020/lib/services/advanced-aggregator/advanced-aggregator.service.mjs +119 -0
  35. package/esm2020/lib/tables.activated-table.service.mjs +46 -0
  36. package/esm2020/lib/tables.module.mjs +218 -0
  37. package/esm2020/public_api.mjs +37 -0
  38. package/esm2020/universis-ngx-tables.mjs +5 -0
  39. package/fesm2015/{universis-ngx-tables.js → universis-ngx-tables.mjs} +2927 -2729
  40. package/fesm2015/universis-ngx-tables.mjs.map +1 -0
  41. package/fesm2020/universis-ngx-tables.mjs +5609 -0
  42. package/fesm2020/universis-ngx-tables.mjs.map +1 -0
  43. package/index.d.ts +5 -0
  44. package/lib/actions/table.actions.d.ts +4 -4
  45. package/lib/components/add-items/add-items.component.d.ts +14 -21
  46. package/lib/components/advanced-aggregator/advanced-aggregator.component.d.ts +15 -9
  47. package/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.d.ts +4 -1
  48. package/lib/components/advanced-list/advanced-list.component.d.ts +17 -14
  49. package/lib/components/advanced-row-action/advanced-row-action.component.d.ts +20 -23
  50. package/lib/components/advanced-search-form/advanced-search-form.component.d.ts +7 -4
  51. package/lib/components/advanced-select/advanced-select.component.d.ts +3 -1
  52. package/lib/components/advanced-select/advanced-select.service.d.ts +3 -0
  53. package/lib/components/advanced-table/advanced-filter-value-provider.service.d.ts +3 -0
  54. package/lib/components/advanced-table/advanced-table-resolvers.d.ts +5 -0
  55. package/lib/components/advanced-table/advanced-table-search-base.d.ts +6 -2
  56. package/lib/components/advanced-table/advanced-table-search.component.d.ts +11 -7
  57. package/lib/components/advanced-table/advanced-table-settings.component.d.ts +8 -6
  58. package/lib/components/advanced-table/advanced-table.component.d.ts +33 -25
  59. package/lib/components/advanced-table/advanced-table.formatters.d.ts +11 -11
  60. package/lib/components/advanced-table-modal/advanced-table-modal-base.component.d.ts +15 -12
  61. package/lib/components/column-selector/column-selector.component.d.ts +9 -6
  62. package/lib/components/column-selector/column-selector.service.d.ts +3 -0
  63. package/lib/components/table-simple-header/table-simple-header.component.d.ts +8 -3
  64. package/lib/directives/advance-search-state.directive.d.ts +6 -3
  65. package/lib/directives/advance-table-state.directive.d.ts +4 -1
  66. package/lib/directives/advanced-search-router-state.directive.d.ts +9 -6
  67. package/lib/directives/advanced-table-editor.directive.d.ts +4 -1
  68. package/lib/directives/btnexp.directive.d.ts +12 -9
  69. package/lib/i18n/tables.el.d.ts +107 -107
  70. package/lib/i18n/tables.en.d.ts +106 -106
  71. package/lib/pipes/advanced-aggregator.pipe.d.ts +7 -4
  72. package/lib/pipes/advansed-aggregator-list-title-parse.pipe.d.ts +9 -6
  73. package/lib/reducers/index.d.ts +5 -3
  74. package/lib/services/advanced-aggregator/advanced-aggregator.service.d.ts +11 -8
  75. package/lib/tables.activated-table.service.d.ts +10 -6
  76. package/lib/tables.module.d.ts +36 -0
  77. package/package.json +44 -36
  78. package/public_api.d.ts +3 -0
  79. package/bundles/universis-ngx-tables.umd.js +0 -6101
  80. package/bundles/universis-ngx-tables.umd.js.map +0 -1
  81. package/bundles/universis-ngx-tables.umd.min.js +0 -2
  82. package/bundles/universis-ngx-tables.umd.min.js.map +0 -1
  83. package/esm2015/lib/actions/table.actions.js +0 -28
  84. package/esm2015/lib/advanced-aggregator.js +0 -2
  85. package/esm2015/lib/components/add-items/add-items.component.js +0 -142
  86. package/esm2015/lib/components/advanced-aggregator/advanced-aggregator.component.js +0 -120
  87. package/esm2015/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +0 -53
  88. package/esm2015/lib/components/advanced-list/advanced-list.component.js +0 -173
  89. package/esm2015/lib/components/advanced-row-action/advanced-row-action.component.js +0 -184
  90. package/esm2015/lib/components/advanced-search-form/advanced-search-form.component.js +0 -142
  91. package/esm2015/lib/components/advanced-select/advanced-select.component.js +0 -65
  92. package/esm2015/lib/components/advanced-select/advanced-select.service.js +0 -40
  93. package/esm2015/lib/components/advanced-table/advanced-filter-value-provider.service.js +0 -37
  94. package/esm2015/lib/components/advanced-table/advanced-table-resolvers.js +0 -44
  95. package/esm2015/lib/components/advanced-table/advanced-table-search-base.js +0 -28
  96. package/esm2015/lib/components/advanced-table/advanced-table-search.component.js +0 -526
  97. package/esm2015/lib/components/advanced-table/advanced-table-settings.component.js +0 -109
  98. package/esm2015/lib/components/advanced-table/advanced-table.component.js +0 -1523
  99. package/esm2015/lib/components/advanced-table/advanced-table.formatters.interface.js +0 -18
  100. package/esm2015/lib/components/advanced-table/advanced-table.formatters.js +0 -429
  101. package/esm2015/lib/components/advanced-table/advanced-table.interfaces.js +0 -2
  102. package/esm2015/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +0 -397
  103. package/esm2015/lib/components/column-selector/column-selector.component.js +0 -202
  104. package/esm2015/lib/components/column-selector/column-selector.service.js +0 -47
  105. package/esm2015/lib/components/table-simple-header/table-simple-header.component.js +0 -52
  106. package/esm2015/lib/directives/advance-search-state.directive.js +0 -108
  107. package/esm2015/lib/directives/advance-table-state.directive.js +0 -63
  108. package/esm2015/lib/directives/advanced-search-router-state.directive.js +0 -63
  109. package/esm2015/lib/directives/advanced-table-editor.directive.js +0 -156
  110. package/esm2015/lib/directives/btnexp.directive.js +0 -229
  111. package/esm2015/lib/i18n/tables.el.js +0 -130
  112. package/esm2015/lib/i18n/tables.en.js +0 -129
  113. package/esm2015/lib/pipes/advanced-aggregator.pipe.js +0 -35
  114. package/esm2015/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +0 -46
  115. package/esm2015/lib/reducers/index.js +0 -32
  116. package/esm2015/lib/services/advanced-aggregator/advanced-aggregator.service.js +0 -120
  117. package/esm2015/lib/tables.activated-table.service.js +0 -50
  118. package/esm2015/lib/tables.module.js +0 -149
  119. package/esm2015/public_api.js +0 -33
  120. package/esm2015/universis-ngx-tables.js +0 -9
  121. package/esm5/lib/actions/table.actions.js +0 -34
  122. package/esm5/lib/advanced-aggregator.js +0 -2
  123. package/esm5/lib/components/add-items/add-items.component.js +0 -153
  124. package/esm5/lib/components/advanced-aggregator/advanced-aggregator.component.js +0 -169
  125. package/esm5/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +0 -56
  126. package/esm5/lib/components/advanced-list/advanced-list.component.js +0 -185
  127. package/esm5/lib/components/advanced-row-action/advanced-row-action.component.js +0 -188
  128. package/esm5/lib/components/advanced-search-form/advanced-search-form.component.js +0 -145
  129. package/esm5/lib/components/advanced-select/advanced-select.component.js +0 -71
  130. package/esm5/lib/components/advanced-select/advanced-select.service.js +0 -43
  131. package/esm5/lib/components/advanced-table/advanced-filter-value-provider.service.js +0 -50
  132. package/esm5/lib/components/advanced-table/advanced-table-resolvers.js +0 -48
  133. package/esm5/lib/components/advanced-table/advanced-table-search-base.js +0 -34
  134. package/esm5/lib/components/advanced-table/advanced-table-search.component.js +0 -563
  135. package/esm5/lib/components/advanced-table/advanced-table-settings.component.js +0 -115
  136. package/esm5/lib/components/advanced-table/advanced-table.component.js +0 -1548
  137. package/esm5/lib/components/advanced-table/advanced-table.formatters.interface.js +0 -18
  138. package/esm5/lib/components/advanced-table/advanced-table.formatters.js +0 -480
  139. package/esm5/lib/components/advanced-table/advanced-table.interfaces.js +0 -2
  140. package/esm5/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +0 -314
  141. package/esm5/lib/components/column-selector/column-selector.component.js +0 -270
  142. package/esm5/lib/components/column-selector/column-selector.service.js +0 -50
  143. package/esm5/lib/components/table-simple-header/table-simple-header.component.js +0 -58
  144. package/esm5/lib/directives/advance-search-state.directive.js +0 -116
  145. package/esm5/lib/directives/advance-table-state.directive.js +0 -65
  146. package/esm5/lib/directives/advanced-search-router-state.directive.js +0 -71
  147. package/esm5/lib/directives/advanced-table-editor.directive.js +0 -196
  148. package/esm5/lib/directives/btnexp.directive.js +0 -257
  149. package/esm5/lib/i18n/tables.el.js +0 -130
  150. package/esm5/lib/i18n/tables.en.js +0 -129
  151. package/esm5/lib/pipes/advanced-aggregator.pipe.js +0 -39
  152. package/esm5/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +0 -49
  153. package/esm5/lib/reducers/index.js +0 -34
  154. package/esm5/lib/services/advanced-aggregator/advanced-aggregator.service.js +0 -134
  155. package/esm5/lib/tables.activated-table.service.js +0 -57
  156. package/esm5/lib/tables.module.js +0 -154
  157. package/esm5/public_api.js +0 -33
  158. package/esm5/universis-ngx-tables.js +0 -9
  159. package/fesm2015/universis-ngx-tables.js.map +0 -1
  160. package/fesm5/universis-ngx-tables.js +0 -5737
  161. package/fesm5/universis-ngx-tables.js.map +0 -1
  162. package/universis-ngx-tables.d.ts +0 -8
  163. package/universis-ngx-tables.metadata.json +0 -1
@@ -1,71 +0,0 @@
1
- import * as tslib_1 from "tslib";
2
- import { Directive, Optional } from "@angular/core";
3
- import { NavigationEnd, NavigationStart, Router } from "@angular/router";
4
- import { Store } from "@ngrx/store";
5
- import { filter } from "rxjs/operators";
6
- import { AdvancedTableSearchComponent } from "../components/advanced-table/advanced-table-search.component";
7
- import { AdvancedSearchState } from "./advance-search-state.directive";
8
- var AdvancedSearchRouterState = /** @class */ (function (_super) {
9
- tslib_1.__extends(AdvancedSearchRouterState, _super);
10
- function AdvancedSearchRouterState(search, store, _router) {
11
- var _this =
12
- // call super constructor
13
- _super.call(this, search, store) || this;
14
- _this.search = search;
15
- _this.store = store;
16
- _this._router = _router;
17
- _this._enteringState = true;
18
- _this._applyState = false;
19
- // set search state dynamically according to route
20
- _this._routerSubscription = _this._router.events
21
- .pipe(filter(function (event) {
22
- return event instanceof NavigationStart || event instanceof NavigationEnd;
23
- }))
24
- .subscribe(function (event) {
25
- // capture urls regarding tab changing while the component is active
26
- if (event instanceof NavigationStart && !_this._enteringState) {
27
- // set search state
28
- _this.searchState = event.url;
29
- // toogle applyState
30
- _this._applyState = true;
31
- }
32
- // capture url of the first activation of the component (e.g. coming from another route)
33
- if (event instanceof NavigationEnd && _this._enteringState) {
34
- // set search state
35
- _this.searchState = event.urlAfterRedirects;
36
- // toggle enteringState
37
- _this._enteringState = false;
38
- }
39
- if (_this._applyState) {
40
- // apply new table state
41
- _super.prototype.applyTableState.call(_this);
42
- _this._applyState = false;
43
- }
44
- });
45
- return _this;
46
- }
47
- AdvancedSearchRouterState.prototype.ngOnDestroy = function () {
48
- // destroy own subscriptions
49
- if (this._routerSubscription) {
50
- this._routerSubscription.unsubscribe();
51
- }
52
- // destroy parent subscriptions
53
- return _super.prototype.ngOnDestroy.call(this);
54
- };
55
- AdvancedSearchRouterState.decorators = [
56
- { type: Directive, args: [{
57
- // tslint:disable-next-line: directive-selector
58
- selector: "[routerSearchState]",
59
- },] }
60
- ];
61
- /** @nocollapse */
62
- AdvancedSearchRouterState.ctorParameters = function () { return [
63
- { type: AdvancedTableSearchComponent },
64
- { type: Store, decorators: [{ type: Optional }] },
65
- { type: Router }
66
- ]; };
67
- return AdvancedSearchRouterState;
68
- }(AdvancedSearchState));
69
- export { AdvancedSearchRouterState };
70
-
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtc2VhcmNoLXJvdXRlci1zdGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdW5pdmVyc2lzL25neC10YWJsZXMvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9hZHZhbmNlZC1zZWFyY2gtcm91dGVyLXN0YXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRTVHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXZFO0lBS1MscURBQW1CO0lBTzNCLG1DQUNXLE1BQW9DLEVBQ3hCLEtBQTRCLEVBQ2pDLE9BQWU7UUFIakM7UUFLQyx5QkFBeUI7UUFDekIsa0JBQU0sTUFBTSxFQUFFLEtBQUssQ0FBQyxTQThCcEI7UUFuQ1UsWUFBTSxHQUFOLE1BQU0sQ0FBOEI7UUFDeEIsV0FBSyxHQUFMLEtBQUssQ0FBdUI7UUFDakMsYUFBTyxHQUFQLE9BQU8sQ0FBUTtRQU56QixvQkFBYyxHQUFZLElBQUksQ0FBQztRQUMvQixpQkFBVyxHQUFZLEtBQUssQ0FBQztRQVNwQyxrREFBa0Q7UUFDbEQsS0FBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTthQUM1QyxJQUFJLENBQ0osTUFBTSxDQUNMLFVBQUMsS0FBSztZQUNMLE9BQUEsS0FBSyxZQUFZLGVBQWUsSUFBSSxLQUFLLFlBQVksYUFBYTtRQUFsRSxDQUFrRSxDQUNuRSxDQUNEO2FBQ0EsU0FBUyxDQUFDLFVBQUMsS0FBc0M7WUFDakQsb0VBQW9FO1lBQ3BFLElBQUksS0FBSyxZQUFZLGVBQWUsSUFBSSxDQUFDLEtBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQzdELG1CQUFtQjtnQkFDbkIsS0FBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUM3QixvQkFBb0I7Z0JBQ3BCLEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2FBQ3hCO1lBQ0Qsd0ZBQXdGO1lBQ3hGLElBQUksS0FBSyxZQUFZLGFBQWEsSUFBSSxLQUFJLENBQUMsY0FBYyxFQUFFO2dCQUMxRCxtQkFBbUI7Z0JBQ25CLEtBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO2dCQUMzQyx1QkFBdUI7Z0JBQ3ZCLEtBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2FBQzVCO1lBQ0QsSUFBSSxLQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNyQix3QkFBd0I7Z0JBQ3hCLGlCQUFNLGVBQWUsWUFBRSxDQUFDO2dCQUN4QixLQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQzthQUN6QjtRQUNGLENBQUMsQ0FBQyxDQUFDOztJQUNMLENBQUM7SUFFRCwrQ0FBVyxHQUFYO1FBQ0MsNEJBQTRCO1FBQzVCLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2QztRQUNELCtCQUErQjtRQUMvQixPQUFPLGlCQUFNLFdBQVcsV0FBRSxDQUFDO0lBQzVCLENBQUM7O2dCQXpERCxTQUFTLFNBQUM7b0JBQ1YsK0NBQStDO29CQUMvQyxRQUFRLEVBQUUscUJBQXFCO2lCQUMvQjs7OztnQkFQUSw0QkFBNEI7Z0JBSDVCLEtBQUssdUJBcUJYLFFBQVE7Z0JBdEI4QixNQUFNOztJQWtFL0MsZ0NBQUM7Q0FBQSxBQTFERCxDQUtTLG1CQUFtQixHQXFEM0I7U0F0RFkseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gXCJAbmdyeC9zdG9yZVwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgQWR2YW5jZWRUYWJsZVNlYXJjaENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRzL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLXRhYmxlLXNlYXJjaC5jb21wb25lbnRcIjtcbmltcG9ydCB7IE5neFRhYmxlc1N0YXRlIH0gZnJvbSBcIi4uL3JlZHVjZXJzXCI7XG5pbXBvcnQgeyBBZHZhbmNlZFNlYXJjaFN0YXRlIH0gZnJvbSBcIi4vYWR2YW5jZS1zZWFyY2gtc3RhdGUuZGlyZWN0aXZlXCI7XG5cbkBEaXJlY3RpdmUoe1xuXHQvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGRpcmVjdGl2ZS1zZWxlY3RvclxuXHRzZWxlY3RvcjogXCJbcm91dGVyU2VhcmNoU3RhdGVdXCIsXG59KVxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkU2VhcmNoUm91dGVyU3RhdGVcblx0ZXh0ZW5kcyBBZHZhbmNlZFNlYXJjaFN0YXRlXG5cdGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXRcbntcblx0cHJpdmF0ZSBfcm91dGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cdHByaXZhdGUgX2VudGVyaW5nU3RhdGU6IGJvb2xlYW4gPSB0cnVlO1xuXHRwcml2YXRlIF9hcHBseVN0YXRlOiBib29sZWFuID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJvdGVjdGVkIHNlYXJjaDogQWR2YW5jZWRUYWJsZVNlYXJjaENvbXBvbmVudCxcblx0XHRAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlPE5neFRhYmxlc1N0YXRlPixcblx0XHRwcml2YXRlIHJlYWRvbmx5IF9yb3V0ZXI6IFJvdXRlclxuXHQpIHtcblx0XHQvLyBjYWxsIHN1cGVyIGNvbnN0cnVjdG9yXG5cdFx0c3VwZXIoc2VhcmNoLCBzdG9yZSk7XG5cdFx0Ly8gc2V0IHNlYXJjaCBzdGF0ZSBkeW5hbWljYWxseSBhY2NvcmRpbmcgdG8gcm91dGVcblx0XHR0aGlzLl9yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLl9yb3V0ZXIuZXZlbnRzXG5cdFx0XHQucGlwZShcblx0XHRcdFx0ZmlsdGVyKFxuXHRcdFx0XHRcdChldmVudCkgPT5cblx0XHRcdFx0XHRcdGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0IHx8IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZFxuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0XHQuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvblN0YXJ0IHwgTmF2aWdhdGlvbkVuZCkgPT4ge1xuXHRcdFx0XHQvLyBjYXB0dXJlIHVybHMgcmVnYXJkaW5nIHRhYiBjaGFuZ2luZyB3aGlsZSB0aGUgY29tcG9uZW50IGlzIGFjdGl2ZVxuXHRcdFx0XHRpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQgJiYgIXRoaXMuX2VudGVyaW5nU3RhdGUpIHtcblx0XHRcdFx0XHQvLyBzZXQgc2VhcmNoIHN0YXRlXG5cdFx0XHRcdFx0dGhpcy5zZWFyY2hTdGF0ZSA9IGV2ZW50LnVybDtcblx0XHRcdFx0XHQvLyB0b29nbGUgYXBwbHlTdGF0ZVxuXHRcdFx0XHRcdHRoaXMuX2FwcGx5U3RhdGUgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIGNhcHR1cmUgdXJsIG9mIHRoZSBmaXJzdCBhY3RpdmF0aW9uIG9mIHRoZSBjb21wb25lbnQgKGUuZy4gY29taW5nIGZyb20gYW5vdGhlciByb3V0ZSlcblx0XHRcdFx0aWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCAmJiB0aGlzLl9lbnRlcmluZ1N0YXRlKSB7XG5cdFx0XHRcdFx0Ly8gc2V0IHNlYXJjaCBzdGF0ZVxuXHRcdFx0XHRcdHRoaXMuc2VhcmNoU3RhdGUgPSBldmVudC51cmxBZnRlclJlZGlyZWN0cztcblx0XHRcdFx0XHQvLyB0b2dnbGUgZW50ZXJpbmdTdGF0ZVxuXHRcdFx0XHRcdHRoaXMuX2VudGVyaW5nU3RhdGUgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy5fYXBwbHlTdGF0ZSkge1xuXHRcdFx0XHRcdC8vIGFwcGx5IG5ldyB0YWJsZSBzdGF0ZVxuXHRcdFx0XHRcdHN1cGVyLmFwcGx5VGFibGVTdGF0ZSgpO1xuXHRcdFx0XHRcdHRoaXMuX2FwcGx5U3RhdGUgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHQvLyBkZXN0cm95IG93biBzdWJzY3JpcHRpb25zXG5cdFx0aWYgKHRoaXMuX3JvdXRlclN1YnNjcmlwdGlvbikge1xuXHRcdFx0dGhpcy5fcm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHRcdC8vIGRlc3Ryb3kgcGFyZW50IHN1YnNjcmlwdGlvbnNcblx0XHRyZXR1cm4gc3VwZXIubmdPbkRlc3Ryb3koKTtcblx0fVxufVxuIl19
@@ -1,196 +0,0 @@
1
- import * as tslib_1 from "tslib";
2
- import { Directive, Output, EventEmitter, } from '@angular/core';
3
- import { AdvancedTableComponent } from '../components/advanced-table/advanced-table.component';
4
- var AdvancedTableNotNullError = /** @class */ (function (_super) {
5
- tslib_1.__extends(AdvancedTableNotNullError, _super);
6
- function AdvancedTableNotNullError() {
7
- return _super.call(this, 'Advanced table component cannot be empty at this context.') || this;
8
- }
9
- return AdvancedTableNotNullError;
10
- }(Error));
11
- export { AdvancedTableNotNullError };
12
- var AdvancedTableEditorDirective = /** @class */ (function () {
13
- function AdvancedTableEditorDirective(table) {
14
- this.table = table;
15
- this.dirty = false;
16
- this.dirtyChange = new EventEmitter(false);
17
- //
18
- }
19
- /**
20
- * Add rows to table and mark them as added rows
21
- */
22
- AdvancedTableEditorDirective.prototype.add = function () {
23
- var addItems = [];
24
- for (var _i = 0; _i < arguments.length; _i++) {
25
- addItems[_i] = arguments[_i];
26
- }
27
- var e_1, _a;
28
- if (this.table == null) {
29
- throw new AdvancedTableNotNullError();
30
- }
31
- // decorate items
32
- var key = this.table.config.columns[0].property || this.table.config.columns[0].name;
33
- try {
34
- for (var addItems_1 = tslib_1.__values(addItems), addItems_1_1 = addItems_1.next(); !addItems_1_1.done; addItems_1_1 = addItems_1.next()) {
35
- var element = addItems_1_1.value;
36
- var tr = this.table.dataTable.rows(':has(input[data-id="' + element[key] + '"])').nodes().to$();
37
- if (tr.hasClass('removed')) {
38
- tr.toggleClass('removed text-gray-400 text-decoration-line-through');
39
- }
40
- else {
41
- this.table.dataTable.rows.add([element]);
42
- tr = this.table.dataTable.rows(':has(input[data-id="' + element[key] + '"])').nodes().to$();
43
- tr.toggleClass('added font-weight-bold text-success');
44
- }
45
- }
46
- }
47
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
48
- finally {
49
- try {
50
- if (addItems_1_1 && !addItems_1_1.done && (_a = addItems_1.return)) _a.call(addItems_1);
51
- }
52
- finally { if (e_1) throw e_1.error; }
53
- }
54
- this.table.dataTable.draw();
55
- // find removed
56
- var removedLength = this.table.dataTable.rows('.removed')[0].length;
57
- // find added
58
- var addedLength = this.table.dataTable.rows('.added')[0].length;
59
- // and emit event
60
- var items = this.table.dataTable.rows().data();
61
- this.table.load.emit({
62
- data: items,
63
- recordsFiltered: items.length - removedLength,
64
- recordsTotal: items.length - removedLength,
65
- });
66
- this.dirty = (removedLength > 0 || addedLength > 0);
67
- this.dirtyChange.emit(this.dirty);
68
- };
69
- /**
70
- * Marks rows as removed rows
71
- */
72
- AdvancedTableEditorDirective.prototype.remove = function () {
73
- var removeItems = [];
74
- for (var _i = 0; _i < arguments.length; _i++) {
75
- removeItems[_i] = arguments[_i];
76
- }
77
- var e_2, _a;
78
- if (this.table == null) {
79
- throw new AdvancedTableNotNullError();
80
- }
81
- // get key
82
- var key = this.table.config.columns[0].property || this.table.config.columns[0].name;
83
- var _loop_1 = function (element) {
84
- var tr = this_1.table.dataTable.rows(':has(input[data-id="' + element[key] + '"])').nodes().to$();
85
- // if row is marked as added
86
- if (tr.hasClass('added')) {
87
- // remove this dirty row
88
- this_1.table.dataTable.rows(tr).remove();
89
- }
90
- else {
91
- // otherwise unmarked row
92
- tr.toggleClass('removed text-gray-400 text-decoration-line-through');
93
- }
94
- // check if item is selected
95
- var selectedIndex = this_1.table.selected.findIndex(function (item) {
96
- return item[key] === element[key];
97
- });
98
- // and remove it from selected collection
99
- if (selectedIndex >= 0) {
100
- this_1.table.selected.splice(selectedIndex, 1);
101
- }
102
- };
103
- var this_1 = this;
104
- try {
105
- // loop items
106
- for (var removeItems_1 = tslib_1.__values(removeItems), removeItems_1_1 = removeItems_1.next(); !removeItems_1_1.done; removeItems_1_1 = removeItems_1.next()) {
107
- var element = removeItems_1_1.value;
108
- _loop_1(element);
109
- }
110
- }
111
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
112
- finally {
113
- try {
114
- if (removeItems_1_1 && !removeItems_1_1.done && (_a = removeItems_1.return)) _a.call(removeItems_1);
115
- }
116
- finally { if (e_2) throw e_2.error; }
117
- }
118
- // re-draw table
119
- this.table.dataTable.draw();
120
- // get number of table items
121
- var items = this.table.dataTable.rows().data();
122
- // get number of removed items
123
- var removedLength = this.table.dataTable.rows('.removed')[0].length;
124
- // get number of added items
125
- var addedLength = this.table.dataTable.rows('.added')[0].length;
126
- // refresh
127
- this.table.load.emit({
128
- data: items,
129
- recordsFiltered: items.length - removedLength,
130
- recordsTotal: items.length - removedLength,
131
- });
132
- this.dirty = (removedLength > 0 || addedLength > 0);
133
- this.dirtyChange.emit(this.dirty);
134
- };
135
- AdvancedTableEditorDirective.prototype.set = function (items) {
136
- if (this.table == null) {
137
- throw new AdvancedTableNotNullError();
138
- }
139
- // clear rows
140
- this.table.selected = [];
141
- this.table.dataTable.clear();
142
- // set items
143
- this.table.dataTable.rows.add(items).draw();
144
- this.table.load.emit({
145
- data: items,
146
- recordsFiltered: items.length,
147
- recordsTotal: items.length,
148
- });
149
- };
150
- /**
151
- * Undo changes
152
- */
153
- AdvancedTableEditorDirective.prototype.undo = function () {
154
- if (this.table == null) {
155
- throw new AdvancedTableNotNullError();
156
- }
157
- // reset removed rows
158
- this.table.dataTable.rows('.removed').nodes().to$().toggleClass('removed text-gray-400 text-decoration-line-through');
159
- // remove added rows
160
- this.table.dataTable.rows('.added').remove();
161
- // clear selected items
162
- this.table.selected = [];
163
- var items = this.table.dataTable.rows().data();
164
- this.table.dataTable.draw();
165
- this.table.load.emit({
166
- data: items,
167
- recordsFiltered: items.length,
168
- recordsTotal: items.length,
169
- });
170
- this.dirty = false;
171
- this.dirtyChange.emit(this.dirty);
172
- };
173
- AdvancedTableEditorDirective.prototype.rows = function () {
174
- if (this.table == null) {
175
- throw new AdvancedTableNotNullError();
176
- }
177
- return Array.from(this.table.dataTable.rows(':not(.removed)').data());
178
- };
179
- AdvancedTableEditorDirective.decorators = [
180
- { type: Directive, args: [{
181
- // tslint:disable-next-line: directive-selector
182
- selector: '[tableEditor]',
183
- },] }
184
- ];
185
- /** @nocollapse */
186
- AdvancedTableEditorDirective.ctorParameters = function () { return [
187
- { type: AdvancedTableComponent }
188
- ]; };
189
- AdvancedTableEditorDirective.propDecorators = {
190
- dirtyChange: [{ type: Output }]
191
- };
192
- return AdvancedTableEditorDirective;
193
- }());
194
- export { AdvancedTableEditorDirective };
195
-
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdGFibGUtZWRpdG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bml2ZXJzaXMvbmd4LXRhYmxlcy8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmVzL2FkdmFuY2VkLXRhYmxlLWVkaXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksR0FDaEMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFFL0Y7SUFBK0MscURBQUs7SUFDbEQ7ZUFDRSxrQkFBTSwyREFBMkQsQ0FBQztJQUNwRSxDQUFDO0lBQ0gsZ0NBQUM7QUFBRCxDQUFDLEFBSkQsQ0FBK0MsS0FBSyxHQUluRDs7QUFFRDtJQVdFLHNDQUFvQixLQUE2QjtRQUE3QixVQUFLLEdBQUwsS0FBSyxDQUF3QjtRQUgxQyxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ0osZ0JBQVcsR0FBMEIsSUFBSSxZQUFZLENBQVUsS0FBSyxDQUFDLENBQUM7UUFHckYsRUFBRTtJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLDBDQUFHLEdBQVY7UUFBVyxrQkFBa0I7YUFBbEIsVUFBa0IsRUFBbEIscUJBQWtCLEVBQWxCLElBQWtCO1lBQWxCLDZCQUFrQjs7O1FBQzNCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDdEIsTUFBTSxJQUFJLHlCQUF5QixFQUFFLENBQUM7U0FDdkM7UUFDRCxpQkFBaUI7UUFDakIsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDOztZQUN2RixLQUFzQixJQUFBLGFBQUEsaUJB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QTlJRixTQUFTLFNBQ1Q7b0JBQ0UsK0NBQStDO29CQUMvQyxRQUFRLEVBQUUsZUFBZTtpQkFDMUI7Ozs7Z0JBWk8sc0JBQXNCOzs7OEJBaUI1QixNQUFNOztJQXVJVCxtQ0FBQztDQUFBLEFBaEpELElBZ0pDO1NBMUlZLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWR2YW5jZWRUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYWR2YW5jZWQtdGFibGUvYWR2YW5jZWQtdGFibGUuY29tcG9uZW50JztcblxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkVGFibGVOb3ROdWxsRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdBZHZhbmNlZCB0YWJsZSBjb21wb25lbnQgY2Fubm90IGJlIGVtcHR5IGF0IHRoaXMgY29udGV4dC4nKTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKFxuIHtcbiAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogZGlyZWN0aXZlLXNlbGVjdG9yXG4gICBzZWxlY3RvcjogJ1t0YWJsZUVkaXRvcl0nLFxuIH0sXG4pXG5leHBvcnQgY2xhc3MgQWR2YW5jZWRUYWJsZUVkaXRvckRpcmVjdGl2ZSB7XG5cbiAgcHVibGljIGRpcnR5ID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBwdWJsaWMgZGlydHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFibGU6IEFkdmFuY2VkVGFibGVDb21wb25lbnQpIHtcbiAgICAvL1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCByb3dzIHRvIHRhYmxlIGFuZCBtYXJrIHRoZW0gYXMgYWRkZWQgcm93c1xuICAgKi9cbiAgcHVibGljIGFkZCguLi5hZGRJdGVtczogYW55W10pIHtcbiAgICBpZiAodGhpcy50YWJsZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgQWR2YW5jZWRUYWJsZU5vdE51bGxFcnJvcigpO1xuICAgIH1cbiAgICAvLyBkZWNvcmF0ZSBpdGVtc1xuICAgIGNvbnN0IGtleSA9IHRoaXMudGFibGUuY29uZmlnLmNvbHVtbnNbMF0ucHJvcGVydHkgfHwgdGhpcy50YWJsZS5jb25maWcuY29sdW1uc1swXS5uYW1lO1xuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBhZGRJdGVtcykge1xuICAgICAgbGV0IHRyID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygnOmhhcyhpbnB1dFtkYXRhLWlkPVwiJyArIGVsZW1lbnRba2V5XSArICdcIl0pJykubm9kZXMoKS50byQoKTtcbiAgICAgIGlmICh0ci5oYXNDbGFzcygncmVtb3ZlZCcpKSB7XG4gICAgICAgIHRyLnRvZ2dsZUNsYXNzKCdyZW1vdmVkIHRleHQtZ3JheS00MDAgdGV4dC1kZWNvcmF0aW9uLWxpbmUtdGhyb3VnaCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50YWJsZS5kYXRhVGFibGUucm93cy5hZGQoW2VsZW1lbnRdKTtcbiAgICAgICAgdHIgPSB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCc6aGFzKGlucHV0W2RhdGEtaWQ9XCInICsgZWxlbWVudFtrZXldICsgJ1wiXSknKS5ub2RlcygpLnRvJCgpO1xuICAgICAgICB0ci50b2dnbGVDbGFzcygnYWRkZWQgZm9udC13ZWlnaHQtYm9sZCB0ZXh0LXN1Y2Nlc3MnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy50YWJsZS5kYXRhVGFibGUuZHJhdygpO1xuICAgIC8vIGZpbmQgcmVtb3ZlZFxuICAgIGNvbnN0IHJlbW92ZWRMZW5ndGggPSB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCcucmVtb3ZlZCcpWzBdLmxlbmd0aDtcbiAgICAvLyBmaW5kIGFkZGVkXG4gICAgY29uc3QgYWRkZWRMZW5ndGggPSB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCcuYWRkZWQnKVswXS5sZW5ndGg7XG4gICAgLy8gYW5kIGVtaXQgZXZlbnRcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoKS5kYXRhKCk7XG4gICAgdGhpcy50YWJsZS5sb2FkLmVtaXQoe1xuICAgICAgZGF0YTogaXRlbXMsXG4gICAgICByZWNvcmRzRmlsdGVyZWQ6IGl0ZW1zLmxlbmd0aCAtIHJlbW92ZWRMZW5ndGgsXG4gICAgICByZWNvcmRzVG90YWw6IGl0ZW1zLmxlbmd0aCAtIHJlbW92ZWRMZW5ndGgsXG4gICAgfSk7XG4gICAgdGhpcy5kaXJ0eSA9IChyZW1vdmVkTGVuZ3RoID4gMCB8fCBhZGRlZExlbmd0aCA+IDApO1xuICAgIHRoaXMuZGlydHlDaGFuZ2UuZW1pdCh0aGlzLmRpcnR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrcyByb3dzIGFzIHJlbW92ZWQgcm93c1xuICAgKi9cbiAgcHVibGljIHJlbW92ZSguLi5yZW1vdmVJdGVtczogYW55W10pIHtcbiAgICBpZiAodGhpcy50YWJsZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgQWR2YW5jZWRUYWJsZU5vdE51bGxFcnJvcigpO1xuICAgIH1cbiAgICAvLyBnZXQga2V5XG4gICAgY29uc3Qga2V5ID0gdGhpcy50YWJsZS5jb25maWcuY29sdW1uc1swXS5wcm9wZXJ0eSB8fCB0aGlzLnRhYmxlLmNvbmZpZy5jb2x1bW5zWzBdLm5hbWU7XG4gICAgLy8gbG9vcCBpdGVtc1xuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiByZW1vdmVJdGVtcykge1xuICAgICAgICBjb25zdCB0ciA9IHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoJzpoYXMoaW5wdXRbZGF0YS1pZD1cIicgKyBlbGVtZW50W2tleV0gKyAnXCJdKScpLm5vZGVzKCkudG8kKCk7XG4gICAgICAgIC8vIGlmIHJvdyBpcyBtYXJrZWQgYXMgYWRkZWRcbiAgICAgICAgaWYgKHRyLmhhc0NsYXNzKCdhZGRlZCcpKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRoaXMgZGlydHkgcm93XG4gICAgICAgICAgdGhpcy50YWJsZS5kYXRhVGFibGUucm93cyh0cikucmVtb3ZlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gb3RoZXJ3aXNlIHVubWFya2VkIHJvd1xuICAgICAgICAgIHRyLnRvZ2dsZUNsYXNzKCdyZW1vdmVkIHRleHQtZ3JheS00MDAgdGV4dC1kZWNvcmF0aW9uLWxpbmUtdGhyb3VnaCcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNoZWNrIGlmIGl0ZW0gaXMgc2VsZWN0ZWRcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMudGFibGUuc2VsZWN0ZWQuZmluZEluZGV4KChpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW1ba2V5XSA9PT0gZWxlbWVudFtrZXldO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gYW5kIHJlbW92ZSBpdCBmcm9tIHNlbGVjdGVkIGNvbGxlY3Rpb25cbiAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPj0gMCkge1xuICAgICAgICAgIHRoaXMudGFibGUuc2VsZWN0ZWQuc3BsaWNlKHNlbGVjdGVkSW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyByZS1kcmF3IHRhYmxlXG4gICAgdGhpcy50YWJsZS5kYXRhVGFibGUuZHJhdygpO1xuICAgICAgLy8gZ2V0IG51bWJlciBvZiB0YWJsZSBpdGVtc1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygpLmRhdGEoKTtcbiAgICAgIC8vIGdldCBudW1iZXIgb2YgcmVtb3ZlZCBpdGVtc1xuICAgIGNvbnN0IHJlbW92ZWRMZW5ndGggPSB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCcucmVtb3ZlZCcpWzBdLmxlbmd0aDtcbiAgICAgIC8vIGdldCBudW1iZXIgb2YgYWRkZWQgaXRlbXNcbiAgICBjb25zdCBhZGRlZExlbmd0aCA9IHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoJy5hZGRlZCcpWzBdLmxlbmd0aDtcbiAgICAgIC8vIHJlZnJlc2hcbiAgICB0aGlzLnRhYmxlLmxvYWQuZW1pdCh7XG4gICAgICAgIGRhdGE6IGl0ZW1zLFxuICAgICAgICByZWNvcmRzRmlsdGVyZWQ6IGl0ZW1zLmxlbmd0aCAtIHJlbW92ZWRMZW5ndGgsXG4gICAgICAgIHJlY29yZHNUb3RhbDogaXRlbXMubGVuZ3RoIC0gcmVtb3ZlZExlbmd0aCxcbiAgICAgIH0pO1xuICAgIHRoaXMuZGlydHkgPSAocmVtb3ZlZExlbmd0aCA+IDAgfHwgYWRkZWRMZW5ndGggPiAwKTtcbiAgICB0aGlzLmRpcnR5Q2hhbmdlLmVtaXQodGhpcy5kaXJ0eSk7XG4gIH1cblxuICBwdWJsaWMgc2V0KGl0ZW1zOiBhbnlbXSkge1xuICAgIGlmICh0aGlzLnRhYmxlID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBBZHZhbmNlZFRhYmxlTm90TnVsbEVycm9yKCk7XG4gICAgfVxuICAgIC8vIGNsZWFyIHJvd3NcbiAgICB0aGlzLnRhYmxlLnNlbGVjdGVkID0gW107XG4gICAgdGhpcy50YWJsZS5kYXRhVGFibGUuY2xlYXIoKTtcbiAgICAvLyBzZXQgaXRlbXNcbiAgICB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzLmFkZChpdGVtcykuZHJhdygpO1xuICAgIHRoaXMudGFibGUubG9hZC5lbWl0KHtcbiAgICAgIGRhdGE6IGl0ZW1zLFxuICAgICAgcmVjb3Jkc0ZpbHRlcmVkOiBpdGVtcy5sZW5ndGgsXG4gICAgICByZWNvcmRzVG90YWw6IGl0ZW1zLmxlbmd0aCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmRvIGNoYW5nZXNcbiAgICovXG4gIHB1YmxpYyB1bmRvKCkge1xuICAgIGlmICh0aGlzLnRhYmxlID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBBZHZhbmNlZFRhYmxlTm90TnVsbEVycm9yKCk7XG4gICAgfVxuICAgIC8vIHJlc2V0IHJlbW92ZWQgcm93c1xuICAgIHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoJy5yZW1vdmVkJykubm9kZXMoKS50byQoKS50b2dnbGVDbGFzcygncmVtb3ZlZCB0ZXh0LWdyYXktNDAwIHRleHQtZGVjb3JhdGlvbi1saW5lLXRocm91Z2gnKTtcbiAgICAvLyByZW1vdmUgYWRkZWQgcm93c1xuICAgIHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoJy5hZGRlZCcpLnJlbW92ZSgpO1xuICAgIC8vIGNsZWFyIHNlbGVjdGVkIGl0ZW1zXG4gICAgdGhpcy50YWJsZS5zZWxlY3RlZCA9IFtdO1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygpLmRhdGEoKTtcbiAgICB0aGlzLnRhYmxlLmRhdGFUYWJsZS5kcmF3KCk7XG4gICAgdGhpcy50YWJsZS5sb2FkLmVtaXQoe1xuICAgICAgZGF0YTogaXRlbXMsXG4gICAgICByZWNvcmRzRmlsdGVyZWQ6IGl0ZW1zLmxlbmd0aCxcbiAgICAgIHJlY29yZHNUb3RhbDogaXRlbXMubGVuZ3RoLFxuICAgIH0pO1xuICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcbiAgICB0aGlzLmRpcnR5Q2hhbmdlLmVtaXQodGhpcy5kaXJ0eSk7XG4gIH1cblxuICBwdWJsaWMgcm93cygpIHtcbiAgICBpZiAodGhpcy50YWJsZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgQWR2YW5jZWRUYWJsZU5vdE51bGxFcnJvcigpO1xuICAgIH1cbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCc6bm90KC5yZW1vdmVkKScpLmRhdGEoKSk7XG4gIH1cblxufVxuIl19
@@ -1,257 +0,0 @@
1
- import * as tslib_1 from "tslib";
2
- import { Directive, HostListener } from '@angular/core';
3
- import { ActivatedTableService } from '../tables.activated-table.service';
4
- import { AngularDataContext } from '@themost/angular';
5
- import { ConfigurationService, ErrorService, LoadingService } from '@universis/common';
6
- import { TranslateService } from '@ngx-translate/core';
7
- import { ResponseError } from '@themost/client';
8
- export var MAX_EXPORT_ITEMS = 500;
9
- var BtnExpDirective = /** @class */ (function () {
10
- function BtnExpDirective(_activatedTable, _context, _config, _translate, _loadingService, _errorService) {
11
- this._activatedTable = _activatedTable;
12
- this._context = _context;
13
- this._config = _config;
14
- this._translate = _translate;
15
- this._loadingService = _loadingService;
16
- this._errorService = _errorService;
17
- }
18
- BtnExpDirective.prototype.clickEvent = function (event) {
19
- return tslib_1.__awaiter(this, void 0, void 0, function () {
20
- return tslib_1.__generator(this, function (_a) {
21
- event.preventDefault();
22
- event.stopPropagation();
23
- if (this._activatedTable.activeTable) {
24
- return [2 /*return*/, this._activatedTable.activeTable.exportView()];
25
- /*
26
- const lastQuery = this._activatedTable.activeTable.lastQuery;
27
- const tableConfig = this._activatedTable.activeTable.config;
28
- const serviceHeaders = this._context.getService().getHeaders();
29
- const queryModel = lastQuery.getModel();
30
- let query = this._context.model(queryModel).asQueryable();
31
- const queryParams = lastQuery.getParams();
32
- query = this.constructQuery(query, queryParams, tableConfig, serviceHeaders);
33
- // get export settings
34
- const exportSettings = this._config.settings as ExportLimitConfiguration;
35
- // get export limit
36
- const maxExportItems = exportSettings && exportSettings.tables && exportSettings.tables.exportLimit;
37
- if (maxExportItems && typeof maxExportItems === 'number' && maxExportItems > 0) {
38
- query.skip(0).take(maxExportItems);
39
- } else {
40
- query.skip(0).take(MAX_EXPORT_ITEMS);
41
- }
42
- // This constructs the URI based on the way @themost does
43
- const url = this.constructURL(query);
44
- this.downloadFile(url, query.getService().getHeaders(), query.getModel()); */
45
- }
46
- return [2 /*return*/];
47
- });
48
- });
49
- };
50
- /**
51
- * Sets the parameters to the query based on
52
- * the active filters of the activated table
53
- * @param {ClientDataQueryable} query
54
- * @param params: The filters of the last query of the activated table
55
- * @return ClientDataQueryable
56
- */
57
- BtnExpDirective.prototype.setParams = function (query, params) {
58
- if (params && typeof params === 'object') {
59
- Object.keys(params).forEach(function (key) {
60
- query.setParam(key, params[key]);
61
- });
62
- }
63
- return query;
64
- };
65
- /**
66
- * Sets the headers to the query based on
67
- * the default headers of the DataContext
68
- * and appending the accept header to get
69
- * an xlsx file from the API
70
- * @param {ClientDataQueryable} query
71
- * @param {Headers} headers: The headers to append to the query
72
- * @return ClientDataQueryable
73
- */
74
- BtnExpDirective.prototype.setHeaders = function (query, headers) {
75
- Object.keys(headers).forEach(function (key) {
76
- if (headers.hasOwnProperty(key)) {
77
- query.getService().setHeader(key, headers[key]);
78
- }
79
- });
80
- // sets a header to accept xlsx files
81
- query.getService().setHeader('Accept', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
82
- return query;
83
- };
84
- /**
85
- * Constructs the select parameter of the
86
- * ClientDataQuery by replacing the target name
87
- * of the field based on the localized translation
88
- * of that property on the advanced tabled
89
- * @param {ClientDataQueryable} query
90
- * @param tableConfig: The configuration of the activated table
91
- * @return ClientDataQueryable
92
- */
93
- BtnExpDirective.prototype.constructQueryParam = function (query, tableConfig) {
94
- var _this = this;
95
- var selectQuery = query.getParams().$select;
96
- var selectQueryArray = selectQuery.split(',');
97
- selectQueryArray = selectQueryArray.map(function (select) {
98
- var e_1, _a, e_2, _b;
99
- var words = select.split(' ');
100
- if (words.length === 3) {
101
- if (tableConfig && tableConfig.columns) {
102
- try {
103
- for (var _c = tslib_1.__values(tableConfig.columns), _d = _c.next(); !_d.done; _d = _c.next()) {
104
- var column = _d.value;
105
- if (column.property === words[2] && column.title) {
106
- words[2] = "\"" + _this._translate.instant(column.title) + "\"";
107
- }
108
- else if (column.property === words[2]) {
109
- words[2] = "\"" + _this._translate.instant(words[2]) + "\"";
110
- }
111
- }
112
- }
113
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
114
- finally {
115
- try {
116
- if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
117
- }
118
- finally { if (e_1) throw e_1.error; }
119
- }
120
- }
121
- }
122
- if (words.length === 1) {
123
- if (tableConfig && tableConfig.columns) {
124
- try {
125
- for (var _e = tslib_1.__values(tableConfig.columns), _f = _e.next(); !_f.done; _f = _e.next()) {
126
- var column = _f.value;
127
- if (column.name === words[0] && column.title) {
128
- words[0] = words[0] + " as \"" + _this._translate.instant(column.title) + "\"";
129
- break;
130
- }
131
- else if (column.name === words[0] && column.property) {
132
- words[0] = words[0] + " as \"" + _this._translate.instant(column.property) + "\"";
133
- break;
134
- }
135
- else if (words[0] === column.name && words[0] === "id" && column.hidden) {
136
- break;
137
- }
138
- else if (words[0] == column.name || words[0] === column.property) {
139
- words[0] = words[0] + " as \"" + _this._translate.instant(words[0]) + "\"";
140
- }
141
- }
142
- }
143
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
144
- finally {
145
- try {
146
- if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
147
- }
148
- finally { if (e_2) throw e_2.error; }
149
- }
150
- }
151
- return words[0];
152
- }
153
- return words.join(' ');
154
- });
155
- selectQuery = selectQueryArray.join(',');
156
- query.setParam('$select', selectQuery);
157
- return query;
158
- };
159
- /**
160
- * Constructs the fetch URL based the query parameters
161
- * @param {ClientDataQueryable} query
162
- * @return String
163
- */
164
- BtnExpDirective.prototype.constructURL = function (query) {
165
- var baseURL = query.getService().getBase();
166
- var url = baseURL.endsWith('/') ? (baseURL + query.getModel() + '?') : (baseURL + '/' + query.getModel() + '?');
167
- Object.keys(query.getParams()).forEach(function (key, index) {
168
- if (index === 0) {
169
- url += key + '=' + query.getParams()[key];
170
- }
171
- else {
172
- url += '&' + key + '=' + query.getParams()[key];
173
- }
174
- });
175
- return url;
176
- };
177
- /**
178
- * Constructs the query by setting the parameters of the
179
- * advanced table's active filters, sets the necessary headers
180
- * and build the select parameter of the query
181
- * @param {ClientDataQueryable} query
182
- * @param params: The filters of the last query of the activated table
183
- * @param tableConfig: The configuration of the activated table
184
- * @param {Headers} headers: The headers to append to the query
185
- * @return ClientDataQueryable
186
- */
187
- BtnExpDirective.prototype.constructQuery = function (query, params, tableConfig, headers) {
188
- var _query = this.setParams(query, params);
189
- _query = this.setHeaders(_query, headers);
190
- _query = this.constructQueryParam(_query, tableConfig);
191
- return _query;
192
- };
193
- /**
194
- * Fetches and saves the xlsx file
195
- * @param {String} url
196
- * @param {Headers} serviceHeaders: The headers to append to the query
197
- * @param modelName: The model name of the advanced table
198
- */
199
- BtnExpDirective.prototype.downloadFile = function (url, serviceHeaders, modelName) {
200
- var _this = this;
201
- this._loadingService.showLoading();
202
- fetch(encodeURI(url), {
203
- headers: serviceHeaders,
204
- credentials: 'include'
205
- }).then(function (response) {
206
- if (response && !response.ok) {
207
- throw new ResponseError(response.statusText, response.status);
208
- }
209
- return response.blob();
210
- }).then(function (blob) {
211
- var objectUrl = window.URL.createObjectURL(blob);
212
- var a = document.createElement('a');
213
- document.body.appendChild(a);
214
- a.setAttribute('style', 'display: none');
215
- a.href = objectUrl;
216
- var downloadName = modelName + ".xlsx";
217
- a.download = downloadName;
218
- // this adds support for IE and MS Edge (up to version 44.19041)
219
- if (window.navigator && window.navigator.msSaveOrOpenBlob) {
220
- window.navigator.msSaveOrOpenBlob(blob, downloadName);
221
- }
222
- else {
223
- // for all other browsers
224
- a.click();
225
- }
226
- window.URL.revokeObjectURL(objectUrl);
227
- a.remove();
228
- _this._loadingService.hideLoading();
229
- }).catch(function (err) {
230
- _this._loadingService.hideLoading();
231
- _this._errorService.showError(err, {
232
- continueLink: '.'
233
- });
234
- });
235
- };
236
- BtnExpDirective.decorators = [
237
- { type: Directive, args: [{
238
- selector: '.universis-btn-export'
239
- },] }
240
- ];
241
- /** @nocollapse */
242
- BtnExpDirective.ctorParameters = function () { return [
243
- { type: ActivatedTableService },
244
- { type: AngularDataContext },
245
- { type: ConfigurationService },
246
- { type: TranslateService },
247
- { type: LoadingService },
248
- { type: ErrorService }
249
- ]; };
250
- BtnExpDirective.propDecorators = {
251
- clickEvent: [{ type: HostListener, args: ['click', ['$event'],] }]
252
- };
253
- return BtnExpDirective;
254
- }());
255
- export { BtnExpDirective };
256
-
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRuZXhwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bml2ZXJzaXMvbmd4LXRhYmxlcy8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmVzL2J0bmV4cC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDckYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFzQixhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUduRSxNQUFNLENBQUMsSUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7QUFRcEM7SUFJRSx5QkFBb0IsZUFBc0MsRUFDdEMsUUFBNEIsRUFDNUIsT0FBNkIsRUFDN0IsVUFBNEIsRUFDNUIsZUFBK0IsRUFDL0IsYUFBMkI7UUFMM0Isb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBQ3RDLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBQzVCLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzdCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBYztJQUMvQyxDQUFDO0lBR0ssb0NBQVUsR0FEaEIsVUFDaUIsS0FBSzs7O2dCQUNwQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRTtvQkFDcEMsc0JB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O1lBQzFCLGdFQUFnRTtZQUNoRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDekQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDdkQ7aUJBQU07Z0JBQ0wseUJBQXlCO2dCQUN6QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDWDtZQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNYLEtBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQUEsR0FBRztZQUNWLEtBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNoQyxZQUFZLEVBQUUsR0FBRzthQUNsQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2dCQTFNRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtpQkFDbEM7Ozs7Z0JBakJPLHFCQUFxQjtnQkFDckIsa0JBQWtCO2dCQUNsQixvQkFBb0I7Z0JBQ3BCLGdCQUFnQjtnQkFEb0IsY0FBYztnQkFBNUIsWUFBWTs7OzZCQXlCdkMsWUFBWSxTQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7SUFnTW5DLHNCQUFDO0NBQUEsQUE1TUQsSUE0TUM7U0F6TVksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBIb3N0TGlzdGVuZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRUYWJsZVNlcnZpY2V9IGZyb20gJy4uL3RhYmxlcy5hY3RpdmF0ZWQtdGFibGUuc2VydmljZSc7XG5pbXBvcnQge0FuZ3VsYXJEYXRhQ29udGV4dH0gZnJvbSAnQHRoZW1vc3QvYW5ndWxhcic7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBFcnJvclNlcnZpY2UsIExvYWRpbmdTZXJ2aWNlfSBmcm9tICdAdW5pdmVyc2lzL2NvbW1vbic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDbGllbnREYXRhUXVlcnlhYmxlLCBSZXNwb25zZUVycm9yfSBmcm9tICdAdGhlbW9zdC9jbGllbnQnO1xuaW1wb3J0IHsgVGFibGVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vY29tcG9uZW50cy9hZHZhbmNlZC10YWJsZS9hZHZhbmNlZC10YWJsZS5pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNvbnN0IE1BWF9FWFBPUlRfSVRFTVMgPSA1MDA7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBFeHBvcnRMaW1pdENvbmZpZ3VyYXRpb24ge1xuICB0YWJsZXM/OiB7XG4gICAgZXhwb3J0TGltaXQ/OiBudW1iZXJcbiAgfTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnLnVuaXZlcnNpcy1idG4tZXhwb3J0J1xufSlcbmV4cG9ydCBjbGFzcyBCdG5FeHBEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hY3RpdmF0ZWRUYWJsZTogQWN0aXZhdGVkVGFibGVTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9jb250ZXh0OiBBbmd1bGFyRGF0YUNvbnRleHQsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NvbmZpZzogQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9hZGluZ1NlcnZpY2U6IExvYWRpbmdTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9lcnJvclNlcnZpY2U6IEVycm9yU2VydmljZSkge1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBhc3luYyBjbGlja0V2ZW50KGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5fYWN0aXZhdGVkVGFibGUuYWN0aXZlVGFibGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9hY3RpdmF0ZWRUYWJsZS5hY3RpdmVUYWJsZS5leHBvcnRWaWV3KCk7XG4gICAgICAvKlxuICAgICAgY29uc3QgbGFzdFF1ZXJ5ID0gdGhpcy5fYWN0aXZhdGVkVGFibGUuYWN0aXZlVGFibGUubGFzdFF1ZXJ5O1xuICAgICAgY29uc3QgdGFibGVDb25maWcgPSB0aGlzLl9hY3RpdmF0ZWRUYWJsZS5hY3RpdmVUYWJsZS5jb25maWc7XG4gICAgICBjb25zdCBzZXJ2aWNlSGVhZGVycyA9IHRoaXMuX2NvbnRleHQuZ2V0U2VydmljZSgpLmdldEhlYWRlcnMoKTtcbiAgICAgIGNvbnN0IHF1ZXJ5TW9kZWwgPSBsYXN0UXVlcnkuZ2V0TW9kZWwoKTtcbiAgICAgIGxldCBxdWVyeSA9IHRoaXMuX2NvbnRleHQubW9kZWwocXVlcnlNb2RlbCkuYXNRdWVyeWFibGUoKTtcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbGFzdFF1ZXJ5LmdldFBhcmFtcygpO1xuICAgICAgcXVlcnkgPSB0aGlzLmNvbnN0cnVjdFF1ZXJ5KHF1ZXJ5LCBxdWVyeVBhcmFtcywgdGFibGVDb25maWcsIHNlcnZpY2VIZWFkZXJzKTtcbiAgICAgIC8vIGdldCBleHBvcnQgc2V0dGluZ3NcbiAgICAgIGNvbnN0IGV4cG9ydFNldHRpbmdzID0gdGhpcy5fY29uZmlnLnNldHRpbmdzIGFzIEV4cG9ydExpbWl0Q29uZmlndXJhdGlvbjtcbiAgICAgIC8vIGdldCBleHBvcnQgbGltaXRcbiAgICAgIGNvbnN0IG1heEV4cG9ydEl0ZW1zID0gZXhwb3J0U2V0dGluZ3MgJiYgZXhwb3J0U2V0dGluZ3MudGFibGVzICYmIGV4cG9ydFNldHRpbmdzLnRhYmxlcy5leHBvcnRMaW1pdDtcbiAgICAgIGlmIChtYXhFeHBvcnRJdGVtcyAmJiB0eXBlb2YgbWF4RXhwb3J0SXRlbXMgPT09ICdudW1iZXInICYmIG1heEV4cG9ydEl0ZW1zID4gMCkge1xuICAgICAgICBxdWVyeS5za2lwKDApLnRha2UobWF4RXhwb3J0SXRlbXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnkuc2tpcCgwKS50YWtlKE1BWF9FWFBPUlRfSVRFTVMpO1xuICAgICAgfVxuICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RzIHRoZSBVUkkgYmFzZWQgb24gdGhlIHdheSBAdGhlbW9zdCBkb2VzXG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmNvbnN0cnVjdFVSTChxdWVyeSk7XG4gICAgICB0aGlzLmRvd25sb2FkRmlsZSh1cmwsIHF1ZXJ5LmdldFNlcnZpY2UoKS5nZXRIZWFkZXJzKCksIHF1ZXJ5LmdldE1vZGVsKCkpOyAqL1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwYXJhbWV0ZXJzIHRvIHRoZSBxdWVyeSBiYXNlZCBvblxuICAgKiB0aGUgYWN0aXZlIGZpbHRlcnMgb2YgdGhlIGFjdGl2YXRlZCB0YWJsZVxuICAgKiBAcGFyYW0ge0NsaWVudERhdGFRdWVyeWFibGV9IHF1ZXJ5XG4gICAqIEBwYXJhbSBwYXJhbXM6IFRoZSBmaWx0ZXJzIG9mIHRoZSBsYXN0IHF1ZXJ5IG9mIHRoZSBhY3RpdmF0ZWQgdGFibGVcbiAgICogQHJldHVybiBDbGllbnREYXRhUXVlcnlhYmxlXG4gICAqL1xuICBzZXRQYXJhbXMocXVlcnk6IENsaWVudERhdGFRdWVyeWFibGUsIHBhcmFtcyk6IENsaWVudERhdGFRdWVyeWFibGUge1xuICAgIGlmIChwYXJhbXMgJiYgdHlwZW9mIHBhcmFtcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIHF1ZXJ5LnNldFBhcmFtKGtleSwgcGFyYW1zW2tleV0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBxdWVyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBoZWFkZXJzIHRvIHRoZSBxdWVyeSBiYXNlZCBvblxuICAgKiB0aGUgZGVmYXVsdCBoZWFkZXJzIG9mIHRoZSBEYXRhQ29udGV4dFxuICAgKiBhbmQgYXBwZW5kaW5nIHRoZSBhY2NlcHQgaGVhZGVyIHRvIGdldFxuICAgKiBhbiB4bHN4IGZpbGUgZnJvbSB0aGUgQVBJXG4gICAqIEBwYXJhbSB7Q2xpZW50RGF0YVF1ZXJ5YWJsZX0gcXVlcnlcbiAgICogQHBhcmFtIHtIZWFkZXJzfSBoZWFkZXJzOiBUaGUgaGVhZGVycyB0byBhcHBlbmQgdG8gdGhlIHF1ZXJ5XG4gICAqIEByZXR1cm4gQ2xpZW50RGF0YVF1ZXJ5YWJsZVxuICAgKi9cbiAgc2V0SGVhZGVycyhxdWVyeTogQ2xpZW50RGF0YVF1ZXJ5YWJsZSwgaGVhZGVyczogSGVhZGVycyk6IENsaWVudERhdGFRdWVyeWFibGUge1xuICAgIE9iamVjdC5rZXlzKGhlYWRlcnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGhlYWRlcnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBxdWVyeS5nZXRTZXJ2aWNlKCkuc2V0SGVhZGVyKGtleSwgaGVhZGVyc1trZXldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBzZXRzIGEgaGVhZGVyIHRvIGFjY2VwdCB4bHN4IGZpbGVzXG4gICAgcXVlcnkuZ2V0U2VydmljZSgpLnNldEhlYWRlcignQWNjZXB0JywgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Jyk7XG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgdGhlIHNlbGVjdCBwYXJhbWV0ZXIgb2YgdGhlXG4gICAqIENsaWVudERhdGFRdWVyeSBieSByZXBsYWNpbmcgdGhlIHRhcmdldCBuYW1lXG4gICAqIG9mIHRoZSBmaWVsZCBiYXNlZCBvbiB0aGUgbG9jYWxpemVkIHRyYW5zbGF0aW9uXG4gICAqIG9mIHRoYXQgcHJvcGVydHkgb24gdGhlIGFkdmFuY2VkIHRhYmxlZFxuICAgKiBAcGFyYW0ge0NsaWVudERhdGFRdWVyeWFibGV9IHF1ZXJ5XG4gICAqIEBwYXJhbSB0YWJsZUNvbmZpZzogVGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGFjdGl2YXRlZCB0YWJsZVxuICAgKiBAcmV0dXJuIENsaWVudERhdGFRdWVyeWFibGVcbiAgICovXG4gIGNvbnN0cnVjdFF1ZXJ5UGFyYW0ocXVlcnk6IENsaWVudERhdGFRdWVyeWFibGUsIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZ3VyYXRpb24pOiBDbGllbnREYXRhUXVlcnlhYmxlIHtcbiAgICBsZXQgc2VsZWN0UXVlcnkgPSBxdWVyeS5nZXRQYXJhbXMoKS4kc2VsZWN0O1xuICAgIGxldCBzZWxlY3RRdWVyeUFycmF5ID0gc2VsZWN0UXVlcnkuc3BsaXQoJywnKTtcbiAgICBzZWxlY3RRdWVyeUFycmF5ID0gc2VsZWN0UXVlcnlBcnJheS5tYXAoKHNlbGVjdCkgPT4ge1xuICAgICAgY29uc3Qgd29yZHMgPSBzZWxlY3Quc3BsaXQoJyAnKTtcbiAgICAgIGlmICh3b3Jkcy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgaWYgKHRhYmxlQ29uZmlnICYmIHRhYmxlQ29uZmlnLmNvbHVtbnMpIHtcbiAgICAgICAgICBmb3IoY29uc3QgY29sdW1uIG9mIHRhYmxlQ29uZmlnLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4ucHJvcGVydHkgPT09IHdvcmRzWzJdICYmIGNvbHVtbi50aXRsZSkge1xuICAgICAgICAgICAgICB3b3Jkc1syXSA9IGBcIiR7dGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoY29sdW1uLnRpdGxlKX1cImA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi5wcm9wZXJ0eSA9PT0gd29yZHNbMl0pIHtcbiAgICAgICAgICAgICAgd29yZHNbMl0gPSBgXCIke3RoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KHdvcmRzWzJdKX1cImBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh3b3Jkcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHRhYmxlQ29uZmlnICYmIHRhYmxlQ29uZmlnLmNvbHVtbnMpIHtcbiAgICAgICAgICBmb3IoY29uc3QgY29sdW1uIG9mIHRhYmxlQ29uZmlnLmNvbHVtbnMpe1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5uYW1lID09PSB3b3Jkc1swXSAmJiBjb2x1bW4udGl0bGUpIHtcbiAgICAgICAgICAgICAgd29yZHNbMF0gPSBgJHt3b3Jkc1swXX0gYXMgXCIke3RoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGNvbHVtbi50aXRsZSl9XCJgO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLm5hbWUgPT09IHdvcmRzWzBdICYmIGNvbHVtbi5wcm9wZXJ0eSkge1xuICAgICAgICAgICAgICB3b3Jkc1swXSA9IGAke3dvcmRzWzBdfSBhcyBcIiR7dGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoY29sdW1uLnByb3BlcnR5KX1cImA7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh3b3Jkc1swXSA9PT0gY29sdW1uLm5hbWUgJiYgd29yZHNbMF09PT0gXCJpZFwiICYmIGNvbHVtbi5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYod29yZHNbMF0gPT0gY29sdW1uLm5hbWUgfHwgd29yZHNbMF09PT0gY29sdW1uLnByb3BlcnR5KSB7XG4gICAgICAgICAgICAgIHdvcmRzWzBdID0gYCR7d29yZHNbMF19IGFzIFwiJHt0aGlzLl90cmFuc2xhdGUuaW5zdGFudCh3b3Jkc1swXSl9XCJgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gd29yZHNbMF07XG4gICAgICB9XG4gICAgICByZXR1cm4gd29yZHMuam9pbignICcpO1xuICAgIH0pO1xuICAgIHNlbGVjdFF1ZXJ5ID0gc2VsZWN0UXVlcnlBcnJheS5qb2luKCcsJyk7XG4gICAgcXVlcnkuc2V0UGFyYW0oJyRzZWxlY3QnLCBzZWxlY3RRdWVyeSApO1xuICAgIHJldHVybiBxdWVyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIHRoZSBmZXRjaCBVUkwgYmFzZWQgdGhlIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIHtDbGllbnREYXRhUXVlcnlhYmxlfSBxdWVyeVxuICAgKiBAcmV0dXJuIFN0cmluZ1xuICAgKi9cbiAgY29uc3RydWN0VVJMKHF1ZXJ5KTogU3RyaW5nIHtcbiAgICBjb25zdCBiYXNlVVJMID0gcXVlcnkuZ2V0U2VydmljZSgpLmdldEJhc2UoKTtcbiAgICBsZXQgdXJsID0gYmFzZVVSTC5lbmRzV2l0aCgnLycpID8gKGJhc2VVUkwgKyBxdWVyeS5nZXRNb2RlbCgpICsgJz8nKSA6IChiYXNlVVJMICsgJy8nICsgcXVlcnkuZ2V0TW9kZWwoKSArICc/Jyk7XG4gICAgT2JqZWN0LmtleXMocXVlcnkuZ2V0UGFyYW1zKCkpLmZvckVhY2goKGtleSwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICB1cmwgKz0ga2V5ICsgJz0nICsgcXVlcnkuZ2V0UGFyYW1zKClba2V5XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVybCArPSAnJicgKyBrZXkgKyAnPScgKyBxdWVyeS5nZXRQYXJhbXMoKVtrZXldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyB0aGUgcXVlcnkgYnkgc2V0dGluZyB0aGUgcGFyYW1ldGVycyBvZiB0aGVcbiAgICogYWR2YW5jZWQgdGFibGUncyBhY3RpdmUgZmlsdGVycywgc2V0cyB0aGUgbmVjZXNzYXJ5IGhlYWRlcnNcbiAgICogYW5kIGJ1aWxkIHRoZSBzZWxlY3QgcGFyYW1ldGVyIG9mIHRoZSBxdWVyeVxuICAgKiBAcGFyYW0ge0NsaWVudERhdGFRdWVyeWFibGV9IHF1ZXJ5XG4gICAqIEBwYXJhbSBwYXJhbXM6IFRoZSBmaWx0ZXJzIG9mIHRoZSBsYXN0IHF1ZXJ5IG9mIHRoZSBhY3RpdmF0ZWQgdGFibGVcbiAgICogQHBhcmFtIHRhYmxlQ29uZmlnOiBUaGUgY29uZmlndXJhdGlvbiBvZiB0aGUgYWN0aXZhdGVkIHRhYmxlXG4gICAqIEBwYXJhbSB7SGVhZGVyc30gaGVhZGVyczogVGhlIGhlYWRlcnMgdG8gYXBwZW5kIHRvIHRoZSBxdWVyeVxuICAgKiBAcmV0dXJuIENsaWVudERhdGFRdWVyeWFibGVcbiAgICovXG4gIGNvbnN0cnVjdFF1ZXJ5KHF1ZXJ5LCBwYXJhbXMsIHRhYmxlQ29uZmlnLCBoZWFkZXJzOiBIZWFkZXJzKSB7XG4gICAgbGV0IF9xdWVyeSA9IHRoaXMuc2V0UGFyYW1zKHF1ZXJ5LCBwYXJhbXMpO1xuICAgIF9xdWVyeSA9IHRoaXMuc2V0SGVhZGVycyhfcXVlcnksIGhlYWRlcnMpO1xuICAgIF9xdWVyeSA9IHRoaXMuY29uc3RydWN0UXVlcnlQYXJhbShfcXVlcnksIHRhYmxlQ29uZmlnKTtcbiAgICByZXR1cm4gX3F1ZXJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgYW5kIHNhdmVzIHRoZSB4bHN4IGZpbGVcbiAgICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge0hlYWRlcnN9IHNlcnZpY2VIZWFkZXJzOiBUaGUgaGVhZGVycyB0byBhcHBlbmQgdG8gdGhlIHF1ZXJ5XG4gICAqIEBwYXJhbSBtb2RlbE5hbWU6IFRoZSBtb2RlbCBuYW1lIG9mIHRoZSBhZHZhbmNlZCB0YWJsZVxuICAgKi9cbiAgZG93bmxvYWRGaWxlKHVybCwgc2VydmljZUhlYWRlcnM6IEhlYWRlcnMsIG1vZGVsTmFtZSkge1xuICAgIHRoaXMuX2xvYWRpbmdTZXJ2aWNlLnNob3dMb2FkaW5nKCk7XG4gICAgZmV0Y2goZW5jb2RlVVJJKHVybCksIHtcbiAgICAgIGhlYWRlcnM6IHNlcnZpY2VIZWFkZXJzLFxuICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJ1xuICAgIH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlICYmICFyZXNwb25zZS5vaykge1xuICAgICAgICB0aHJvdyBuZXcgUmVzcG9uc2VFcnJvcihyZXNwb25zZS5zdGF0dXNUZXh0LCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3BvbnNlLmJsb2IoKTtcbiAgICB9KS50aGVuKGJsb2IgPT4ge1xuICAgICAgY29uc3Qgb2JqZWN0VXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcbiAgICAgIGEuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBub25lJyk7XG4gICAgICBhLmhyZWYgPSBvYmplY3RVcmw7XG4gICAgICBjb25zdCBkb3dubG9hZE5hbWUgPSBgJHttb2RlbE5hbWV9Lnhsc3hgO1xuICAgICAgYS5kb3dubG9hZCA9IGRvd25sb2FkTmFtZTtcbiAgICAgIC8vIHRoaXMgYWRkcyBzdXBwb3J0IGZvciBJRSBhbmQgTVMgRWRnZSAodXAgdG8gdmVyc2lvbiA0NC4xOTA0MSlcbiAgICAgIGlmICh3aW5kb3cubmF2aWdhdG9yICYmIHdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYikge1xuICAgICAgICB3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IoYmxvYiwgZG93bmxvYWROYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGZvciBhbGwgb3RoZXIgYnJvd3NlcnNcbiAgICAgICAgYS5jbGljaygpO1xuICAgICAgfVxuICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VXJsKTtcbiAgICAgIGEucmVtb3ZlKCk7XG4gICAgICB0aGlzLl9sb2FkaW5nU2VydmljZS5oaWRlTG9hZGluZygpO1xuICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICB0aGlzLl9sb2FkaW5nU2VydmljZS5oaWRlTG9hZGluZygpO1xuICAgICAgdGhpcy5fZXJyb3JTZXJ2aWNlLnNob3dFcnJvcihlcnIsIHtcbiAgICAgICAgY29udGludWVMaW5rOiAnLidcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==