@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.
- package/dist/AI/ai-dashboard.component.d.ts +54 -0
- package/dist/AI/ai-dashboard.component.d.ts.map +1 -0
- package/dist/AI/ai-dashboard.component.js +248 -0
- package/dist/AI/ai-dashboard.component.js.map +1 -0
- package/dist/AI/components/agents/agent-configuration.component.d.ts +41 -0
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -0
- package/dist/AI/components/agents/agent-configuration.component.js +325 -0
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -0
- package/dist/AI/components/agents/agent-editor.component.d.ts +77 -0
- package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -0
- package/dist/AI/components/agents/agent-editor.component.js +869 -0
- package/dist/AI/components/agents/agent-editor.component.js.map +1 -0
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts +33 -0
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +1 -0
- package/dist/AI/components/agents/agent-filter-panel.component.js +144 -0
- package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -0
- package/dist/AI/components/execution-monitoring.component.d.ts +13 -0
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -0
- package/dist/AI/components/execution-monitoring.component.js +30 -0
- package/dist/AI/components/execution-monitoring.component.js.map +1 -0
- package/dist/AI/components/models/model-management.component.d.ts +73 -0
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -0
- package/dist/AI/components/models/model-management.component.js +669 -0
- package/dist/AI/components/models/model-management.component.js.map +1 -0
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +49 -0
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +1 -0
- package/dist/AI/components/prompts/prompt-filter-panel.component.js +186 -0
- package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -0
- package/dist/AI/components/prompts/prompt-management.component.d.ts +113 -0
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -0
- package/dist/AI/components/prompts/prompt-management.component.js +1316 -0
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -0
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts +33 -0
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +1 -0
- package/dist/AI/components/system/system-config-filter-panel.component.js +146 -0
- package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -0
- package/dist/AI/components/system/system-configuration.component.d.ts +37 -0
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -0
- package/dist/AI/components/system/system-configuration.component.js +311 -0
- package/dist/AI/components/system/system-configuration.component.js.map +1 -0
- package/dist/Actions/actions-management-dashboard.component.d.ts +50 -0
- package/dist/Actions/actions-management-dashboard.component.d.ts.map +1 -0
- package/dist/Actions/actions-management-dashboard.component.js +282 -0
- package/dist/Actions/actions-management-dashboard.component.js.map +1 -0
- package/dist/Actions/components/actions-list-view.component.d.ts +52 -0
- package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -0
- package/dist/Actions/components/actions-list-view.component.js +366 -0
- package/dist/Actions/components/actions-list-view.component.js.map +1 -0
- package/dist/Actions/components/actions-overview.component.d.ts +71 -0
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -0
- package/dist/Actions/components/actions-overview.component.js +605 -0
- package/dist/Actions/components/actions-overview.component.js.map +1 -0
- package/dist/Actions/components/categories-list-view.component.d.ts +11 -0
- package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -0
- package/dist/Actions/components/categories-list-view.component.js +35 -0
- package/dist/Actions/components/categories-list-view.component.js.map +1 -0
- package/dist/Actions/components/code-management.component.d.ts +11 -0
- package/dist/Actions/components/code-management.component.d.ts.map +1 -0
- package/dist/Actions/components/code-management.component.js +35 -0
- package/dist/Actions/components/code-management.component.js.map +1 -0
- package/dist/Actions/components/entity-integration.component.d.ts +11 -0
- package/dist/Actions/components/entity-integration.component.d.ts.map +1 -0
- package/dist/Actions/components/entity-integration.component.js +35 -0
- package/dist/Actions/components/entity-integration.component.js.map +1 -0
- package/dist/Actions/components/execution-monitoring.component.d.ts +83 -0
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -0
- package/dist/Actions/components/execution-monitoring.component.js +629 -0
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -0
- package/dist/Actions/components/executions-list-view.component.d.ts +11 -0
- package/dist/Actions/components/executions-list-view.component.d.ts.map +1 -0
- package/dist/Actions/components/executions-list-view.component.js +35 -0
- package/dist/Actions/components/executions-list-view.component.js.map +1 -0
- package/dist/Actions/components/scheduled-actions.component.d.ts +11 -0
- package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -0
- package/dist/Actions/components/scheduled-actions.component.js +35 -0
- package/dist/Actions/components/scheduled-actions.component.js.map +1 -0
- package/dist/Actions/components/security-permissions.component.d.ts +11 -0
- package/dist/Actions/components/security-permissions.component.d.ts.map +1 -0
- package/dist/Actions/components/security-permissions.component.js +35 -0
- package/dist/Actions/components/security-permissions.component.js.map +1 -0
- package/dist/Actions/index.d.ts +11 -0
- package/dist/Actions/index.d.ts.map +1 -0
- package/dist/Actions/index.js +11 -0
- package/dist/Actions/index.js.map +1 -0
- package/dist/EntityAdmin/components/entity-details.component.d.ts +50 -0
- package/dist/EntityAdmin/components/entity-details.component.d.ts.map +1 -0
- package/dist/EntityAdmin/components/entity-details.component.js +684 -0
- package/dist/EntityAdmin/components/entity-details.component.js.map +1 -0
- package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts +31 -0
- package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts.map +1 -0
- package/dist/EntityAdmin/components/entity-filter-panel.component.js +162 -0
- package/dist/EntityAdmin/components/entity-filter-panel.component.js.map +1 -0
- package/dist/EntityAdmin/components/erd-composite.component.d.ts +73 -0
- package/dist/EntityAdmin/components/erd-composite.component.d.ts.map +1 -0
- package/dist/EntityAdmin/components/erd-composite.component.js +288 -0
- package/dist/EntityAdmin/components/erd-composite.component.js.map +1 -0
- package/dist/EntityAdmin/components/erd-diagram.component.d.ts +47 -0
- package/dist/EntityAdmin/components/erd-diagram.component.d.ts.map +1 -0
- package/dist/EntityAdmin/components/erd-diagram.component.js +618 -0
- package/dist/EntityAdmin/components/erd-diagram.component.js.map +1 -0
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +50 -0
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -0
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +190 -0
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -0
- package/dist/generic/base-dashboard.d.ts +65 -0
- package/dist/generic/base-dashboard.d.ts.map +1 -0
- package/dist/generic/base-dashboard.js +86 -0
- package/dist/generic/base-dashboard.js.map +1 -0
- package/dist/module.d.ts +43 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +141 -0
- package/dist/module.js.map +1 -0
- package/dist/public-api.d.ts +6 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +18 -0
- package/dist/public-api.js.map +1 -0
- 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"}
|