@memberjunction/ng-dashboards 2.42.0

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 (117) hide show
  1. package/dist/AI/ai-dashboard.component.d.ts +54 -0
  2. package/dist/AI/ai-dashboard.component.d.ts.map +1 -0
  3. package/dist/AI/ai-dashboard.component.js +248 -0
  4. package/dist/AI/ai-dashboard.component.js.map +1 -0
  5. package/dist/AI/components/agents/agent-configuration.component.d.ts +41 -0
  6. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -0
  7. package/dist/AI/components/agents/agent-configuration.component.js +325 -0
  8. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -0
  9. package/dist/AI/components/agents/agent-editor.component.d.ts +77 -0
  10. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -0
  11. package/dist/AI/components/agents/agent-editor.component.js +869 -0
  12. package/dist/AI/components/agents/agent-editor.component.js.map +1 -0
  13. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +33 -0
  14. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +1 -0
  15. package/dist/AI/components/agents/agent-filter-panel.component.js +144 -0
  16. package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -0
  17. package/dist/AI/components/execution-monitoring.component.d.ts +13 -0
  18. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -0
  19. package/dist/AI/components/execution-monitoring.component.js +30 -0
  20. package/dist/AI/components/execution-monitoring.component.js.map +1 -0
  21. package/dist/AI/components/models/model-management.component.d.ts +73 -0
  22. package/dist/AI/components/models/model-management.component.d.ts.map +1 -0
  23. package/dist/AI/components/models/model-management.component.js +669 -0
  24. package/dist/AI/components/models/model-management.component.js.map +1 -0
  25. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +49 -0
  26. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +1 -0
  27. package/dist/AI/components/prompts/prompt-filter-panel.component.js +186 -0
  28. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -0
  29. package/dist/AI/components/prompts/prompt-management.component.d.ts +113 -0
  30. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -0
  31. package/dist/AI/components/prompts/prompt-management.component.js +1316 -0
  32. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -0
  33. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +33 -0
  34. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +1 -0
  35. package/dist/AI/components/system/system-config-filter-panel.component.js +146 -0
  36. package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -0
  37. package/dist/AI/components/system/system-configuration.component.d.ts +37 -0
  38. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -0
  39. package/dist/AI/components/system/system-configuration.component.js +311 -0
  40. package/dist/AI/components/system/system-configuration.component.js.map +1 -0
  41. package/dist/Actions/actions-management-dashboard.component.d.ts +50 -0
  42. package/dist/Actions/actions-management-dashboard.component.d.ts.map +1 -0
  43. package/dist/Actions/actions-management-dashboard.component.js +282 -0
  44. package/dist/Actions/actions-management-dashboard.component.js.map +1 -0
  45. package/dist/Actions/components/actions-list-view.component.d.ts +52 -0
  46. package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -0
  47. package/dist/Actions/components/actions-list-view.component.js +366 -0
  48. package/dist/Actions/components/actions-list-view.component.js.map +1 -0
  49. package/dist/Actions/components/actions-overview.component.d.ts +71 -0
  50. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -0
  51. package/dist/Actions/components/actions-overview.component.js +605 -0
  52. package/dist/Actions/components/actions-overview.component.js.map +1 -0
  53. package/dist/Actions/components/categories-list-view.component.d.ts +11 -0
  54. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -0
  55. package/dist/Actions/components/categories-list-view.component.js +35 -0
  56. package/dist/Actions/components/categories-list-view.component.js.map +1 -0
  57. package/dist/Actions/components/code-management.component.d.ts +11 -0
  58. package/dist/Actions/components/code-management.component.d.ts.map +1 -0
  59. package/dist/Actions/components/code-management.component.js +35 -0
  60. package/dist/Actions/components/code-management.component.js.map +1 -0
  61. package/dist/Actions/components/entity-integration.component.d.ts +11 -0
  62. package/dist/Actions/components/entity-integration.component.d.ts.map +1 -0
  63. package/dist/Actions/components/entity-integration.component.js +35 -0
  64. package/dist/Actions/components/entity-integration.component.js.map +1 -0
  65. package/dist/Actions/components/execution-monitoring.component.d.ts +83 -0
  66. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -0
  67. package/dist/Actions/components/execution-monitoring.component.js +629 -0
  68. package/dist/Actions/components/execution-monitoring.component.js.map +1 -0
  69. package/dist/Actions/components/executions-list-view.component.d.ts +11 -0
  70. package/dist/Actions/components/executions-list-view.component.d.ts.map +1 -0
  71. package/dist/Actions/components/executions-list-view.component.js +35 -0
  72. package/dist/Actions/components/executions-list-view.component.js.map +1 -0
  73. package/dist/Actions/components/scheduled-actions.component.d.ts +11 -0
  74. package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -0
  75. package/dist/Actions/components/scheduled-actions.component.js +35 -0
  76. package/dist/Actions/components/scheduled-actions.component.js.map +1 -0
  77. package/dist/Actions/components/security-permissions.component.d.ts +11 -0
  78. package/dist/Actions/components/security-permissions.component.d.ts.map +1 -0
  79. package/dist/Actions/components/security-permissions.component.js +35 -0
  80. package/dist/Actions/components/security-permissions.component.js.map +1 -0
  81. package/dist/Actions/index.d.ts +11 -0
  82. package/dist/Actions/index.d.ts.map +1 -0
  83. package/dist/Actions/index.js +11 -0
  84. package/dist/Actions/index.js.map +1 -0
  85. package/dist/EntityAdmin/components/entity-details.component.d.ts +50 -0
  86. package/dist/EntityAdmin/components/entity-details.component.d.ts.map +1 -0
  87. package/dist/EntityAdmin/components/entity-details.component.js +684 -0
  88. package/dist/EntityAdmin/components/entity-details.component.js.map +1 -0
  89. package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts +31 -0
  90. package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts.map +1 -0
  91. package/dist/EntityAdmin/components/entity-filter-panel.component.js +162 -0
  92. package/dist/EntityAdmin/components/entity-filter-panel.component.js.map +1 -0
  93. package/dist/EntityAdmin/components/erd-composite.component.d.ts +73 -0
  94. package/dist/EntityAdmin/components/erd-composite.component.d.ts.map +1 -0
  95. package/dist/EntityAdmin/components/erd-composite.component.js +288 -0
  96. package/dist/EntityAdmin/components/erd-composite.component.js.map +1 -0
  97. package/dist/EntityAdmin/components/erd-diagram.component.d.ts +47 -0
  98. package/dist/EntityAdmin/components/erd-diagram.component.d.ts.map +1 -0
  99. package/dist/EntityAdmin/components/erd-diagram.component.js +618 -0
  100. package/dist/EntityAdmin/components/erd-diagram.component.js.map +1 -0
  101. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +50 -0
  102. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -0
  103. package/dist/EntityAdmin/entity-admin-dashboard.component.js +190 -0
  104. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -0
  105. package/dist/generic/base-dashboard.d.ts +65 -0
  106. package/dist/generic/base-dashboard.d.ts.map +1 -0
  107. package/dist/generic/base-dashboard.js +86 -0
  108. package/dist/generic/base-dashboard.js.map +1 -0
  109. package/dist/module.d.ts +43 -0
  110. package/dist/module.d.ts.map +1 -0
  111. package/dist/module.js +141 -0
  112. package/dist/module.js.map +1 -0
  113. package/dist/public-api.d.ts +6 -0
  114. package/dist/public-api.d.ts.map +1 -0
  115. package/dist/public-api.js +18 -0
  116. package/dist/public-api.js.map +1 -0
  117. package/package.json +46 -0
@@ -0,0 +1,366 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Component, Output, EventEmitter } from '@angular/core';
11
+ import { RunView, LogError } from '@memberjunction/core';
12
+ import { Subject, BehaviorSubject, combineLatest } from 'rxjs';
13
+ import { debounceTime, takeUntil, distinctUntilChanged } from 'rxjs/operators';
14
+ import * as i0 from "@angular/core";
15
+ import * as i1 from "@progress/kendo-angular-indicators";
16
+ import * as i2 from "@progress/kendo-angular-dropdowns";
17
+ import * as i3 from "@progress/kendo-angular-inputs";
18
+ import * as i4 from "@memberjunction/ng-container-directives";
19
+ import * as i5 from "@progress/kendo-angular-buttons";
20
+ import * as i6 from "@angular/common";
21
+ const _forTrack0 = ($index, $item) => $item.ID;
22
+ function ActionsListViewComponent_ng_template_11_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵelement(0, "i", 14);
24
+ } }
25
+ function ActionsListViewComponent_Conditional_17_For_1_Conditional_10_Template(rf, ctx) { if (rf & 1) {
26
+ i0.ɵɵelementStart(0, "kendo-chip", 23);
27
+ i0.ɵɵelement(1, "i", 30);
28
+ i0.ɵɵtext(2, " AI Generated ");
29
+ i0.ɵɵelementEnd();
30
+ } if (rf & 2) {
31
+ i0.ɵɵproperty("size", "small");
32
+ } }
33
+ function ActionsListViewComponent_Conditional_17_For_1_Conditional_18_Template(rf, ctx) { if (rf & 1) {
34
+ i0.ɵɵelementStart(0, "div", 26);
35
+ i0.ɵɵelement(1, "i", 31);
36
+ i0.ɵɵelementStart(2, "span");
37
+ i0.ɵɵtext(3);
38
+ i0.ɵɵpipe(4, "date");
39
+ i0.ɵɵelementEnd()();
40
+ } if (rf & 2) {
41
+ const action_r2 = i0.ɵɵnextContext().$implicit;
42
+ i0.ɵɵadvance(3);
43
+ i0.ɵɵtextInterpolate1("Updated ", i0.ɵɵpipeBind2(4, 1, action_r2.__mj_UpdatedAt, "MMM d, yyyy"), "");
44
+ } }
45
+ function ActionsListViewComponent_Conditional_17_For_1_Conditional_19_Template(rf, ctx) { if (rf & 1) {
46
+ i0.ɵɵelementStart(0, "div", 26);
47
+ i0.ɵɵelement(1, "i", 32);
48
+ i0.ɵɵelementStart(2, "span");
49
+ i0.ɵɵtext(3);
50
+ i0.ɵɵelementEnd()();
51
+ } if (rf & 2) {
52
+ const action_r2 = i0.ɵɵnextContext().$implicit;
53
+ i0.ɵɵadvance(3);
54
+ i0.ɵɵtextInterpolate(action_r2.CodeApprovalStatus);
55
+ } }
56
+ function ActionsListViewComponent_Conditional_17_For_1_Template(rf, ctx) { if (rf & 1) {
57
+ const _r1 = i0.ɵɵgetCurrentView();
58
+ i0.ɵɵelementStart(0, "div", 16);
59
+ i0.ɵɵlistener("click", function ActionsListViewComponent_Conditional_17_For_1_Template_div_click_0_listener() { const action_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.openAction(action_r2)); });
60
+ i0.ɵɵelementStart(1, "div", 17);
61
+ i0.ɵɵelement(2, "i");
62
+ i0.ɵɵelementEnd();
63
+ i0.ɵɵelementStart(3, "div", 18)(4, "div", 19)(5, "h3", 20);
64
+ i0.ɵɵtext(6);
65
+ i0.ɵɵelementEnd();
66
+ i0.ɵɵelementStart(7, "div", 21)(8, "kendo-chip", 22);
67
+ i0.ɵɵtext(9);
68
+ i0.ɵɵelementEnd();
69
+ i0.ɵɵtemplate(10, ActionsListViewComponent_Conditional_17_For_1_Conditional_10_Template, 3, 1, "kendo-chip", 23);
70
+ i0.ɵɵelementEnd()();
71
+ i0.ɵɵelementStart(11, "div", 24);
72
+ i0.ɵɵtext(12);
73
+ i0.ɵɵelementEnd();
74
+ i0.ɵɵelementStart(13, "div", 25)(14, "div", 26);
75
+ i0.ɵɵelement(15, "i", 27);
76
+ i0.ɵɵelementStart(16, "span");
77
+ i0.ɵɵtext(17);
78
+ i0.ɵɵelementEnd()();
79
+ i0.ɵɵtemplate(18, ActionsListViewComponent_Conditional_17_For_1_Conditional_18_Template, 5, 4, "div", 26)(19, ActionsListViewComponent_Conditional_17_For_1_Conditional_19_Template, 4, 1, "div", 26);
80
+ i0.ɵɵelementEnd()();
81
+ i0.ɵɵelementStart(20, "div", 28)(21, "button", 29);
82
+ i0.ɵɵlistener("click", function ActionsListViewComponent_Conditional_17_For_1_Template_button_click_21_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
83
+ i0.ɵɵelementEnd()()();
84
+ } if (rf & 2) {
85
+ const action_r2 = ctx.$implicit;
86
+ const ctx_r2 = i0.ɵɵnextContext(2);
87
+ i0.ɵɵadvance(2);
88
+ i0.ɵɵclassMap(ctx_r2.getTypeIcon(action_r2.Type));
89
+ i0.ɵɵadvance(4);
90
+ i0.ɵɵtextInterpolate(action_r2.Name);
91
+ i0.ɵɵadvance(2);
92
+ i0.ɵɵproperty("themeColor", ctx_r2.getStatusColor(action_r2.Status))("size", "small");
93
+ i0.ɵɵadvance();
94
+ i0.ɵɵtextInterpolate1(" ", action_r2.Status, " ");
95
+ i0.ɵɵadvance();
96
+ i0.ɵɵconditional(action_r2.Type === "Generated" ? 10 : -1);
97
+ i0.ɵɵadvance(2);
98
+ i0.ɵɵtextInterpolate1(" ", action_r2.Description || "No description available", " ");
99
+ i0.ɵɵadvance(5);
100
+ i0.ɵɵtextInterpolate(ctx_r2.getCategoryName(action_r2.CategoryID));
101
+ i0.ɵɵadvance();
102
+ i0.ɵɵconditional(action_r2.__mj_UpdatedAt ? 18 : -1);
103
+ i0.ɵɵadvance();
104
+ i0.ɵɵconditional(action_r2.CodeApprovalStatus && action_r2.Type === "Generated" ? 19 : -1);
105
+ i0.ɵɵadvance(2);
106
+ i0.ɵɵproperty("fillMode", "flat")("icon", "more-vertical");
107
+ } }
108
+ function ActionsListViewComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
109
+ i0.ɵɵrepeaterCreate(0, ActionsListViewComponent_Conditional_17_For_1_Template, 22, 13, "div", 15, _forTrack0);
110
+ } if (rf & 2) {
111
+ const ctx_r2 = i0.ɵɵnextContext();
112
+ i0.ɵɵrepeater(ctx_r2.filteredActions);
113
+ } }
114
+ function ActionsListViewComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
115
+ i0.ɵɵelementStart(0, "div", 12);
116
+ i0.ɵɵelement(1, "i", 14);
117
+ i0.ɵɵelementStart(2, "h3");
118
+ i0.ɵɵtext(3, "No actions found");
119
+ i0.ɵɵelementEnd();
120
+ i0.ɵɵelementStart(4, "p");
121
+ i0.ɵɵtext(5, "Try adjusting your search or filter criteria");
122
+ i0.ɵɵelementEnd()();
123
+ } }
124
+ function ActionsListViewComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
125
+ i0.ɵɵelementStart(0, "div", 13);
126
+ i0.ɵɵelement(1, "kendo-loader", 33);
127
+ i0.ɵɵelementEnd();
128
+ } if (rf & 2) {
129
+ i0.ɵɵadvance();
130
+ i0.ɵɵproperty("themeColor", "primary");
131
+ } }
132
+ export class ActionsListViewComponent {
133
+ constructor() {
134
+ this.openEntityRecord = new EventEmitter();
135
+ this.isLoading = true;
136
+ this.actions = [];
137
+ this.filteredActions = [];
138
+ this.categories = new Map();
139
+ this.searchTerm$ = new BehaviorSubject('');
140
+ this.selectedStatus$ = new BehaviorSubject('all');
141
+ this.selectedType$ = new BehaviorSubject('all');
142
+ this.selectedCategory$ = new BehaviorSubject('all');
143
+ this.statusOptions = [
144
+ { text: 'All Statuses', value: 'all' },
145
+ { text: 'Active', value: 'Active' },
146
+ { text: 'Pending', value: 'Pending' },
147
+ { text: 'Disabled', value: 'Disabled' }
148
+ ];
149
+ this.typeOptions = [
150
+ { text: 'All Types', value: 'all' },
151
+ { text: 'AI Generated', value: 'Generated' },
152
+ { text: 'Custom', value: 'Custom' }
153
+ ];
154
+ this.categoryOptions = [
155
+ { text: 'All Categories', value: 'all' }
156
+ ];
157
+ this.destroy$ = new Subject();
158
+ }
159
+ ngOnInit() {
160
+ this.setupFilters();
161
+ this.loadData();
162
+ }
163
+ ngOnDestroy() {
164
+ this.destroy$.next();
165
+ this.destroy$.complete();
166
+ }
167
+ setupFilters() {
168
+ combineLatest([
169
+ this.searchTerm$.pipe(debounceTime(300), distinctUntilChanged()),
170
+ this.selectedStatus$.pipe(distinctUntilChanged()),
171
+ this.selectedType$.pipe(distinctUntilChanged()),
172
+ this.selectedCategory$.pipe(distinctUntilChanged())
173
+ ]).pipe(takeUntil(this.destroy$)).subscribe(() => {
174
+ this.applyFilters();
175
+ });
176
+ }
177
+ loadData() {
178
+ return __awaiter(this, void 0, void 0, function* () {
179
+ try {
180
+ this.isLoading = true;
181
+ const [actions, categories] = yield Promise.all([
182
+ this.loadActions(),
183
+ this.loadCategories()
184
+ ]);
185
+ this.actions = actions;
186
+ this.populateCategoriesMap(categories);
187
+ this.buildCategoryOptions(categories);
188
+ this.applyFilters();
189
+ }
190
+ catch (error) {
191
+ LogError('Failed to load actions list data', undefined, error);
192
+ }
193
+ finally {
194
+ this.isLoading = false;
195
+ }
196
+ });
197
+ }
198
+ loadActions() {
199
+ return __awaiter(this, void 0, void 0, function* () {
200
+ const rv = new RunView();
201
+ const result = yield rv.RunView({
202
+ EntityName: 'Actions',
203
+ ExtraFilter: '',
204
+ OrderBy: 'Name',
205
+ UserSearchString: '',
206
+ IgnoreMaxRows: false,
207
+ MaxRows: 1000
208
+ });
209
+ if (result && result.Success && result.Results) {
210
+ return result.Results;
211
+ }
212
+ else {
213
+ throw new Error('Failed to load actions');
214
+ }
215
+ });
216
+ }
217
+ loadCategories() {
218
+ return __awaiter(this, void 0, void 0, function* () {
219
+ const rv = new RunView();
220
+ const result = yield rv.RunView({
221
+ EntityName: 'Action Categories',
222
+ ExtraFilter: '',
223
+ OrderBy: 'Name',
224
+ UserSearchString: '',
225
+ IgnoreMaxRows: false,
226
+ MaxRows: 1000
227
+ });
228
+ if (result && result.Success && result.Results) {
229
+ return result.Results;
230
+ }
231
+ else {
232
+ throw new Error('Failed to load action categories');
233
+ }
234
+ });
235
+ }
236
+ populateCategoriesMap(categories) {
237
+ this.categories.clear();
238
+ categories.forEach(category => {
239
+ this.categories.set(category.ID, category);
240
+ });
241
+ }
242
+ buildCategoryOptions(categories) {
243
+ this.categoryOptions = [
244
+ { text: 'All Categories', value: 'all' },
245
+ ...categories.map(category => ({
246
+ text: category.Name,
247
+ value: category.ID
248
+ }))
249
+ ];
250
+ }
251
+ applyFilters() {
252
+ let filtered = [...this.actions];
253
+ // Apply search filter
254
+ const searchTerm = this.searchTerm$.value.toLowerCase();
255
+ if (searchTerm) {
256
+ filtered = filtered.filter(action => action.Name.toLowerCase().includes(searchTerm) ||
257
+ (action.Description || '').toLowerCase().includes(searchTerm));
258
+ }
259
+ // Apply status filter
260
+ const status = this.selectedStatus$.value;
261
+ if (status !== 'all') {
262
+ filtered = filtered.filter(action => action.Status === status);
263
+ }
264
+ // Apply type filter
265
+ const type = this.selectedType$.value;
266
+ if (type !== 'all') {
267
+ filtered = filtered.filter(action => action.Type === type);
268
+ }
269
+ // Apply category filter
270
+ const categoryId = this.selectedCategory$.value;
271
+ if (categoryId !== 'all') {
272
+ filtered = filtered.filter(action => action.CategoryID === categoryId);
273
+ }
274
+ this.filteredActions = filtered;
275
+ }
276
+ onSearchChange(searchTerm) {
277
+ this.searchTerm$.next(searchTerm);
278
+ }
279
+ onStatusFilterChange(status) {
280
+ this.selectedStatus$.next(status);
281
+ }
282
+ onTypeFilterChange(type) {
283
+ this.selectedType$.next(type);
284
+ }
285
+ onCategoryFilterChange(categoryId) {
286
+ this.selectedCategory$.next(categoryId);
287
+ }
288
+ openAction(action) {
289
+ this.openEntityRecord.emit({
290
+ entityName: 'Actions',
291
+ recordId: action.ID
292
+ });
293
+ }
294
+ getCategoryName(categoryId) {
295
+ var _a;
296
+ if (!categoryId)
297
+ return 'No Category';
298
+ return ((_a = this.categories.get(categoryId)) === null || _a === void 0 ? void 0 : _a.Name) || 'Unknown Category';
299
+ }
300
+ getStatusColor(status) {
301
+ switch (status) {
302
+ case 'Active': return 'success';
303
+ case 'Pending': return 'warning';
304
+ case 'Disabled': return 'error';
305
+ default: return 'info';
306
+ }
307
+ }
308
+ getTypeIcon(type) {
309
+ switch (type) {
310
+ case 'Generated': return 'fa-solid fa-robot';
311
+ case 'Custom': return 'fa-solid fa-code';
312
+ default: return 'fa-solid fa-cog';
313
+ }
314
+ }
315
+ }
316
+ ActionsListViewComponent.ɵfac = function ActionsListViewComponent_Factory(t) { return new (t || ActionsListViewComponent)(); };
317
+ ActionsListViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActionsListViewComponent, selectors: [["mj-actions-list-view"]], outputs: { openEntityRecord: "openEntityRecord" }, decls: 20, vars: 11, consts: [["mjFillContainer", "", 1, "actions-list-view"], [1, "list-header"], [1, "header-title"], [1, "fa-solid", "fa-cogs"], [1, "results-count"], [1, "filters-row"], [1, "search-container"], ["placeholder", "Search actions...", 3, "valueChange", "value"], ["kendoTextBoxPrefixTemplate", ""], [1, "filter-group"], ["textField", "text", "valueField", "value", 3, "valueChange", "data", "value"], [1, "actions-list"], [1, "empty-state"], [1, "loading-overlay"], [1, "fa-solid", "fa-search"], [1, "action-card"], [1, "action-card", 3, "click"], [1, "action-icon"], [1, "action-main"], [1, "action-header"], [1, "action-name"], [1, "action-badges"], [3, "themeColor", "size"], ["themeColor", "info", 3, "size"], [1, "action-description"], [1, "action-details"], [1, "detail-item"], [1, "fa-solid", "fa-folder"], [1, "action-actions"], ["kendoButton", "", 3, "click", "fillMode", "icon"], [1, "fa-solid", "fa-robot"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-check-circle"], ["type", "converging-spinner", 3, "themeColor"]], template: function ActionsListViewComponent_Template(rf, ctx) { if (rf & 1) {
318
+ i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "h2");
319
+ i0.ɵɵelement(4, "i", 3);
320
+ i0.ɵɵtext(5, " Actions");
321
+ i0.ɵɵelementEnd();
322
+ i0.ɵɵelementStart(6, "div", 4);
323
+ i0.ɵɵtext(7);
324
+ i0.ɵɵelementEnd()();
325
+ i0.ɵɵelementStart(8, "div", 5)(9, "div", 6)(10, "kendo-textbox", 7);
326
+ i0.ɵɵlistener("valueChange", function ActionsListViewComponent_Template_kendo_textbox_valueChange_10_listener($event) { return ctx.onSearchChange($event); });
327
+ i0.ɵɵtemplate(11, ActionsListViewComponent_ng_template_11_Template, 1, 0, "ng-template", 8);
328
+ i0.ɵɵelementEnd()();
329
+ i0.ɵɵelementStart(12, "div", 9)(13, "kendo-dropdownlist", 10);
330
+ i0.ɵɵlistener("valueChange", function ActionsListViewComponent_Template_kendo_dropdownlist_valueChange_13_listener($event) { return ctx.onStatusFilterChange($event); });
331
+ i0.ɵɵelementEnd();
332
+ i0.ɵɵelementStart(14, "kendo-dropdownlist", 10);
333
+ i0.ɵɵlistener("valueChange", function ActionsListViewComponent_Template_kendo_dropdownlist_valueChange_14_listener($event) { return ctx.onTypeFilterChange($event); });
334
+ i0.ɵɵelementEnd();
335
+ i0.ɵɵelementStart(15, "kendo-dropdownlist", 10);
336
+ i0.ɵɵlistener("valueChange", function ActionsListViewComponent_Template_kendo_dropdownlist_valueChange_15_listener($event) { return ctx.onCategoryFilterChange($event); });
337
+ i0.ɵɵelementEnd()()()();
338
+ i0.ɵɵelementStart(16, "div", 11);
339
+ i0.ɵɵtemplate(17, ActionsListViewComponent_Conditional_17_Template, 2, 0)(18, ActionsListViewComponent_Conditional_18_Template, 6, 0, "div", 12);
340
+ i0.ɵɵelementEnd();
341
+ i0.ɵɵtemplate(19, ActionsListViewComponent_Conditional_19_Template, 2, 1, "div", 13);
342
+ i0.ɵɵelementEnd();
343
+ } if (rf & 2) {
344
+ i0.ɵɵadvance(7);
345
+ i0.ɵɵtextInterpolate2("", ctx.filteredActions.length, " of ", ctx.actions.length, " actions");
346
+ i0.ɵɵadvance(3);
347
+ i0.ɵɵproperty("value", ctx.searchTerm$.value);
348
+ i0.ɵɵadvance(3);
349
+ i0.ɵɵproperty("data", ctx.statusOptions)("value", ctx.selectedStatus$.value);
350
+ i0.ɵɵadvance();
351
+ i0.ɵɵproperty("data", ctx.typeOptions)("value", ctx.selectedType$.value);
352
+ i0.ɵɵadvance();
353
+ i0.ɵɵproperty("data", ctx.categoryOptions)("value", ctx.selectedCategory$.value);
354
+ i0.ɵɵadvance(2);
355
+ i0.ɵɵconditional(ctx.filteredActions.length > 0 ? 17 : !ctx.isLoading ? 18 : -1);
356
+ i0.ɵɵadvance(2);
357
+ i0.ɵɵconditional(ctx.isLoading ? 19 : -1);
358
+ } }, dependencies: [i1.LoaderComponent, i2.DropDownListComponent, i3.TextBoxComponent, i3.TextBoxPrefixTemplateDirective, i4.FillContainer, i5.ButtonComponent, i5.ChipComponent, i6.DatePipe], styles: [".actions-list-view[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--kendo-color-app-surface);\n\n .list-header {\n padding: 1.5rem;\n border-bottom: 1px solid var(--kendo-color-border);\n background: var(--kendo-color-surface);\n\n .header-title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1rem;\n\n h2 {\n margin: 0;\n font-size: 1.5rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n\n .results-count {\n font-size: 0.875rem;\n color: var(--kendo-color-subtle);\n font-weight: 600;\n }\n }\n\n .filters-row {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n\n .search-container {\n flex: 1;\n min-width: 200px;\n\n kendo-textbox {\n width: 100%;\n }\n }\n\n .filter-group {\n display: flex;\n gap: 0.75rem;\n \n kendo-dropdownlist {\n min-width: 140px;\n }\n }\n }\n }\n\n .actions-list {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 1.5rem;\n\n .action-card {\n display: flex;\n align-items: flex-start;\n gap: 1rem;\n padding: 1.5rem;\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.75rem;\n margin-bottom: 1rem;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n border-color: var(--kendo-color-primary);\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n }\n\n .action-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 3rem;\n height: 3rem;\n border-radius: 0.5rem;\n background: var(--kendo-color-primary-subtle);\n flex-shrink: 0;\n\n i {\n color: var(--kendo-color-primary);\n font-size: 1.25rem;\n }\n }\n\n .action-main {\n flex: 1;\n\n .action-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 0.75rem;\n\n .action-name {\n margin: 0;\n font-size: 1.125rem;\n font-weight: 600;\n color: var(--kendo-color-on-app-surface);\n }\n\n .action-badges {\n display: flex;\n gap: 0.5rem;\n flex-shrink: 0;\n\n kendo-chip {\n &:has(i) {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n }\n }\n }\n }\n\n .action-description {\n color: var(--kendo-color-subtle);\n line-height: 1.5;\n margin-bottom: 1rem;\n }\n\n .action-details {\n display: flex;\n gap: 1.5rem;\n flex-wrap: wrap;\n\n .detail-item {\n display: flex;\n align-items: center;\n gap: 0.375rem;\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n\n i {\n color: var(--kendo-color-primary);\n width: 0.75rem;\n }\n }\n }\n }\n\n .action-actions {\n flex-shrink: 0;\n\n button {\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n }\n\n &:hover .action-actions button {\n opacity: 1;\n }\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 3rem 2rem;\n text-align: center;\n color: var(--kendo-color-subtle);\n\n i {\n font-size: 3rem;\n margin-bottom: 1rem;\n opacity: 0.5;\n }\n\n h3 {\n margin: 0 0 0.5rem 0;\n font-size: 1.125rem;\n font-weight: 600;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n }\n\n .loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n }\n}\n\n//[_ngcontent-%COMP%] Responsive[_ngcontent-%COMP%] design\n@media[_ngcontent-%COMP%] (max-width[_ngcontent-%COMP%]: 768px)[_ngcontent-%COMP%] {\n .actions-list-view {\n .list-header {\n padding: 1rem;\n\n .header-title {\n flex-direction: column;\n align-items: stretch;\n gap: 0.5rem;\n }\n\n .filters-row {\n flex-direction: column;\n align-items: stretch;\n\n .search-container,\n .filter-group {\n min-width: unset;\n }\n\n .filter-group {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 0.5rem;\n }\n }\n }\n\n .actions-list {\n padding: 1rem;\n\n .action-card {\n padding: 1rem;\n\n .action-main .action-header {\n flex-direction: column;\n align-items: stretch;\n gap: 0.5rem;\n\n .action-badges {\n align-self: flex-start;\n }\n }\n\n .action-main .action-details {\n gap: 1rem;\n }\n }\n }\n }\n}"] });
359
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActionsListViewComponent, [{
360
+ type: Component,
361
+ args: [{ selector: 'mj-actions-list-view', template: "<div class=\"actions-list-view\" mjFillContainer>\n <!-- Header with filters -->\n <div class=\"list-header\">\n <div class=\"header-title\">\n <h2><i class=\"fa-solid fa-cogs\"></i> Actions</h2>\n <div class=\"results-count\">{{ filteredActions.length }} of {{ actions.length }} actions</div>\n </div>\n \n <div class=\"filters-row\">\n <div class=\"search-container\">\n <kendo-textbox \n placeholder=\"Search actions...\" \n [value]=\"searchTerm$.value\"\n (valueChange)=\"onSearchChange($event)\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fa-solid fa-search\"></i>\n </ng-template>\n </kendo-textbox>\n </div>\n \n <div class=\"filter-group\">\n <kendo-dropdownlist \n [data]=\"statusOptions\"\n textField=\"text\"\n valueField=\"value\"\n [value]=\"selectedStatus$.value\"\n (valueChange)=\"onStatusFilterChange($event)\">\n </kendo-dropdownlist>\n \n <kendo-dropdownlist \n [data]=\"typeOptions\"\n textField=\"text\"\n valueField=\"value\"\n [value]=\"selectedType$.value\"\n (valueChange)=\"onTypeFilterChange($event)\">\n </kendo-dropdownlist>\n \n <kendo-dropdownlist \n [data]=\"categoryOptions\"\n textField=\"text\"\n valueField=\"value\"\n [value]=\"selectedCategory$.value\"\n (valueChange)=\"onCategoryFilterChange($event)\">\n </kendo-dropdownlist>\n </div>\n </div>\n </div>\n\n <!-- Actions List -->\n <div class=\"actions-list\">\n @if (filteredActions.length > 0) {\n @for (action of filteredActions; track action.ID) {\n <div class=\"action-card\" (click)=\"openAction(action)\">\n <div class=\"action-icon\">\n <i [class]=\"getTypeIcon(action.Type)\"></i>\n </div>\n \n <div class=\"action-main\">\n <div class=\"action-header\">\n <h3 class=\"action-name\">{{ action.Name }}</h3>\n <div class=\"action-badges\">\n <kendo-chip \n [themeColor]=\"getStatusColor(action.Status)\"\n [size]=\"'small'\">\n {{ action.Status }}\n </kendo-chip>\n @if (action.Type === 'Generated') {\n <kendo-chip \n themeColor=\"info\"\n [size]=\"'small'\">\n <i class=\"fa-solid fa-robot\"></i> AI Generated\n </kendo-chip>\n }\n </div>\n </div>\n \n <div class=\"action-description\">\n {{ action.Description || 'No description available' }}\n </div>\n \n <div class=\"action-details\">\n <div class=\"detail-item\">\n <i class=\"fa-solid fa-folder\"></i>\n <span>{{ getCategoryName(action.CategoryID) }}</span>\n </div>\n @if (action.__mj_UpdatedAt) {\n <div class=\"detail-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <span>Updated {{ action.__mj_UpdatedAt | date:'MMM d, yyyy' }}</span>\n </div>\n }\n @if (action.CodeApprovalStatus && action.Type === 'Generated') {\n <div class=\"detail-item\">\n <i class=\"fa-solid fa-check-circle\"></i>\n <span>{{ action.CodeApprovalStatus }}</span>\n </div>\n }\n </div>\n </div>\n \n <div class=\"action-actions\">\n <button kendoButton \n [fillMode]=\"'flat'\" \n [icon]=\"'more-vertical'\"\n (click)=\"$event.stopPropagation()\">\n </button>\n </div>\n </div>\n }\n } @else if (!isLoading) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-search\"></i>\n <h3>No actions found</h3>\n <p>Try adjusting your search or filter criteria</p>\n </div>\n }\n </div>\n\n @if (isLoading) {\n <div class=\"loading-overlay\">\n <kendo-loader type=\"converging-spinner\" [themeColor]=\"'primary'\"></kendo-loader>\n </div>\n }\n</div>", styles: [".actions-list-view {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--kendo-color-app-surface);\n\n .list-header {\n padding: 1.5rem;\n border-bottom: 1px solid var(--kendo-color-border);\n background: var(--kendo-color-surface);\n\n .header-title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1rem;\n\n h2 {\n margin: 0;\n font-size: 1.5rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n\n .results-count {\n font-size: 0.875rem;\n color: var(--kendo-color-subtle);\n font-weight: 600;\n }\n }\n\n .filters-row {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n\n .search-container {\n flex: 1;\n min-width: 200px;\n\n kendo-textbox {\n width: 100%;\n }\n }\n\n .filter-group {\n display: flex;\n gap: 0.75rem;\n \n kendo-dropdownlist {\n min-width: 140px;\n }\n }\n }\n }\n\n .actions-list {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 1.5rem;\n\n .action-card {\n display: flex;\n align-items: flex-start;\n gap: 1rem;\n padding: 1.5rem;\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.75rem;\n margin-bottom: 1rem;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n border-color: var(--kendo-color-primary);\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n }\n\n .action-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 3rem;\n height: 3rem;\n border-radius: 0.5rem;\n background: var(--kendo-color-primary-subtle);\n flex-shrink: 0;\n\n i {\n color: var(--kendo-color-primary);\n font-size: 1.25rem;\n }\n }\n\n .action-main {\n flex: 1;\n\n .action-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 0.75rem;\n\n .action-name {\n margin: 0;\n font-size: 1.125rem;\n font-weight: 600;\n color: var(--kendo-color-on-app-surface);\n }\n\n .action-badges {\n display: flex;\n gap: 0.5rem;\n flex-shrink: 0;\n\n kendo-chip {\n &:has(i) {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n }\n }\n }\n }\n\n .action-description {\n color: var(--kendo-color-subtle);\n line-height: 1.5;\n margin-bottom: 1rem;\n }\n\n .action-details {\n display: flex;\n gap: 1.5rem;\n flex-wrap: wrap;\n\n .detail-item {\n display: flex;\n align-items: center;\n gap: 0.375rem;\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n\n i {\n color: var(--kendo-color-primary);\n width: 0.75rem;\n }\n }\n }\n }\n\n .action-actions {\n flex-shrink: 0;\n\n button {\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n }\n\n &:hover .action-actions button {\n opacity: 1;\n }\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 3rem 2rem;\n text-align: center;\n color: var(--kendo-color-subtle);\n\n i {\n font-size: 3rem;\n margin-bottom: 1rem;\n opacity: 0.5;\n }\n\n h3 {\n margin: 0 0 0.5rem 0;\n font-size: 1.125rem;\n font-weight: 600;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n }\n\n .loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n }\n}\n\n// Responsive design\n@media (max-width: 768px) {\n .actions-list-view {\n .list-header {\n padding: 1rem;\n\n .header-title {\n flex-direction: column;\n align-items: stretch;\n gap: 0.5rem;\n }\n\n .filters-row {\n flex-direction: column;\n align-items: stretch;\n\n .search-container,\n .filter-group {\n min-width: unset;\n }\n\n .filter-group {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 0.5rem;\n }\n }\n }\n\n .actions-list {\n padding: 1rem;\n\n .action-card {\n padding: 1rem;\n\n .action-main .action-header {\n flex-direction: column;\n align-items: stretch;\n gap: 0.5rem;\n\n .action-badges {\n align-self: flex-start;\n }\n }\n\n .action-main .action-details {\n gap: 1rem;\n }\n }\n }\n }\n}"] }]
362
+ }], () => [], { openEntityRecord: [{
363
+ type: Output
364
+ }] }); })();
365
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActionsListViewComponent, { className: "ActionsListViewComponent", filePath: "src/Actions/components/actions-list-view.component.ts", lineNumber: 12 }); })();
366
+ //# sourceMappingURL=actions-list-view.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions-list-view.component.js","sourceRoot":"","sources":["../../../src/Actions/components/actions-list-view.component.ts","../../../src/Actions/components/actions-list-view.component.html"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { OnInit, OnDestroy, EventEmitter } from '@angular/core';
2
+ import { ActionEntity, ActionCategoryEntity, ActionExecutionLogEntity } from '@memberjunction/core-entities';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ interface ActionMetrics {
6
+ totalActions: number;
7
+ activeActions: number;
8
+ pendingActions: number;
9
+ disabledActions: number;
10
+ totalExecutions: number;
11
+ recentExecutions: number;
12
+ successRate: number;
13
+ totalCategories: number;
14
+ aiGeneratedActions: number;
15
+ customActions: number;
16
+ }
17
+ interface CategoryStats {
18
+ categoryId: string;
19
+ categoryName: string;
20
+ actionCount: number;
21
+ executionCount: number;
22
+ successRate: number;
23
+ }
24
+ export declare class ActionsOverviewComponent implements OnInit, OnDestroy {
25
+ openEntityRecord: EventEmitter<{
26
+ entityName: string;
27
+ recordId: string;
28
+ }>;
29
+ showActionsListView: EventEmitter<void>;
30
+ showExecutionsListView: EventEmitter<void>;
31
+ showCategoriesListView: EventEmitter<void>;
32
+ isLoading: boolean;
33
+ metrics: ActionMetrics;
34
+ categoryStats: CategoryStats[];
35
+ recentActions: ActionEntity[];
36
+ recentExecutions: ActionExecutionLogEntity[];
37
+ topCategories: ActionCategoryEntity[];
38
+ searchTerm$: BehaviorSubject<string>;
39
+ selectedStatus$: BehaviorSubject<string>;
40
+ selectedType$: BehaviorSubject<string>;
41
+ private destroy$;
42
+ constructor();
43
+ ngOnInit(): void;
44
+ ngOnDestroy(): void;
45
+ private setupFilters;
46
+ private loadData;
47
+ private loadActions;
48
+ private loadCategories;
49
+ private loadExecutions;
50
+ private loadEntityActions;
51
+ private calculateMetrics;
52
+ private calculateSuccessRate;
53
+ private calculateCategoryStats;
54
+ private loadFilteredData;
55
+ onSearchChange(searchTerm: string): void;
56
+ onStatusFilterChange(status: string): void;
57
+ onTypeFilterChange(type: string): void;
58
+ openAction(action: ActionEntity): void;
59
+ openCategory(categoryId: string): void;
60
+ openExecution(execution: ActionExecutionLogEntity): void;
61
+ getStatusColor(status: string): 'success' | 'warning' | 'error' | 'info';
62
+ getTypeIcon(type: string): string;
63
+ onTotalActionsClick(): void;
64
+ onExecutionsClick(): void;
65
+ onCategoriesClick(): void;
66
+ onAIGeneratedClick(): void;
67
+ static ɵfac: i0.ɵɵFactoryDeclaration<ActionsOverviewComponent, never>;
68
+ static ɵcmp: i0.ɵɵComponentDeclaration<ActionsOverviewComponent, "mj-actions-overview", never, {}, { "openEntityRecord": "openEntityRecord"; "showActionsListView": "showActionsListView"; "showExecutionsListView": "showExecutionsListView"; "showCategoriesListView": "showCategoriesListView"; }, never, never, false, never>;
69
+ }
70
+ export {};
71
+ //# sourceMappingURL=actions-overview.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions-overview.component.d.ts","sourceRoot":"","sources":["../../../src/Actions/components/actions-overview.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAU,YAAY,EAAE,MAAM,eAAe,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,wBAAwB,EAAsB,MAAM,+BAA+B,CAAC;AACjI,OAAO,EAAW,eAAe,EAAiB,MAAM,MAAM,CAAC;;AAG/D,UAAU,aAAa;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAKa,wBAAyB,YAAW,MAAM,EAAE,SAAS;IACtD,gBAAgB;oBAAiC,MAAM;kBAAY,MAAM;OAAK;IAC9E,mBAAmB,qBAA4B;IAC/C,sBAAsB,qBAA4B;IAClD,sBAAsB,qBAA4B;IAErD,SAAS,UAAQ;IACjB,OAAO,EAAE,aAAa,CAW3B;IAEK,aAAa,EAAE,aAAa,EAAE,CAAM;IACpC,aAAa,EAAE,YAAY,EAAE,CAAM;IACnC,gBAAgB,EAAE,wBAAwB,EAAE,CAAM;IAClD,aAAa,EAAE,oBAAoB,EAAE,CAAM;IAE3C,WAAW,0BAAmC;IAC9C,eAAe,0BAAsC;IACrD,aAAa,0BAAsC;IAE1D,OAAO,CAAC,QAAQ,CAAuB;;IAIvC,QAAQ,IAAI,IAAI;IAKhB,WAAW,IAAI,IAAI;IAKnB,OAAO,CAAC,YAAY;YAYN,QAAQ;YAwBR,WAAW;YAkBX,cAAc;YAkBd,cAAc;YAkBd,iBAAiB;IAkB/B,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,sBAAsB;YAqBhB,gBAAgB;IAsCvB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIxC,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI1C,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAItC,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAOtC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAOtC,aAAa,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI;IAOxD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM;IASxE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IASjC,mBAAmB,IAAI,IAAI;IAI3B,iBAAiB,IAAI,IAAI;IAIzB,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,IAAI,IAAI;yCA9StB,wBAAwB;2CAAxB,wBAAwB;CAkTpC"}