cloud-ide-core 2.0.79 → 2.0.84

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.
@@ -0,0 +1,323 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Injectable, DestroyRef, signal, computed, Component } from '@angular/core';
3
+ import * as i1 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import { Router } from '@angular/router';
6
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
+ import { CideEleDataGridComponent, CideEleButtonComponent, CideIconComponent, CideEleDropdownComponent } from 'cloud-ide-element';
8
+ import { RightsService } from 'cloud-ide-layout';
9
+ import { HttpClient } from '@angular/common/http';
10
+ import { cidePath, hostManagerRoutesUrl, coreRoutesUrl, generateStringFromObject } from 'cloud-ide-lms-model';
11
+
12
+ class CideCoreWorkflowRegistryService {
13
+ http = inject(HttpClient);
14
+ /**
15
+ * Create workflow registry
16
+ */
17
+ createRegistry(data) {
18
+ const url = cidePath.join([
19
+ hostManagerRoutesUrl.cideSuiteHost,
20
+ coreRoutesUrl.module,
21
+ coreRoutesUrl.workflowRegistry
22
+ ]);
23
+ return this.http.post(url, data);
24
+ }
25
+ /**
26
+ * Get workflow registry list
27
+ */
28
+ getRegistryList(query) {
29
+ const queryString = query ? generateStringFromObject(query) : '';
30
+ const url = cidePath.join([
31
+ hostManagerRoutesUrl.cideSuiteHost,
32
+ coreRoutesUrl.module,
33
+ coreRoutesUrl.workflowRegistry,
34
+ queryString
35
+ ]);
36
+ return this.http.get(url);
37
+ }
38
+ /**
39
+ * Get workflow registry by ID
40
+ */
41
+ getRegistryById(id) {
42
+ const url = cidePath.join([
43
+ hostManagerRoutesUrl.cideSuiteHost,
44
+ coreRoutesUrl.module,
45
+ coreRoutesUrl.workflowRegistry,
46
+ id
47
+ ]);
48
+ return this.http.get(url);
49
+ }
50
+ /**
51
+ * Update workflow registry
52
+ */
53
+ updateRegistry(data) {
54
+ if (!data.wfrg_id) {
55
+ throw new Error('Workflow registry ID is required for update');
56
+ }
57
+ const url = cidePath.join([
58
+ hostManagerRoutesUrl.cideSuiteHost,
59
+ coreRoutesUrl.module,
60
+ coreRoutesUrl.workflowRegistry,
61
+ data.wfrg_id
62
+ ]);
63
+ return this.http.put(url, data);
64
+ }
65
+ /**
66
+ * Delete workflow registry
67
+ */
68
+ deleteRegistry(id) {
69
+ const url = cidePath.join([
70
+ hostManagerRoutesUrl.cideSuiteHost,
71
+ coreRoutesUrl.module,
72
+ coreRoutesUrl.workflowRegistry,
73
+ id
74
+ ]);
75
+ return this.http.delete(url);
76
+ }
77
+ /**
78
+ * Get workflow registry by page ID
79
+ */
80
+ getRegistryByPage(pageId) {
81
+ const url = cidePath.join([
82
+ hostManagerRoutesUrl.cideSuiteHost,
83
+ coreRoutesUrl.module,
84
+ coreRoutesUrl.workflowRegistry,
85
+ 'by-page',
86
+ pageId
87
+ ]);
88
+ return this.http.get(url);
89
+ }
90
+ /**
91
+ * Get workflow registry by menu ID
92
+ */
93
+ getRegistryByMenu(menuId) {
94
+ const url = cidePath.join([
95
+ hostManagerRoutesUrl.cideSuiteHost,
96
+ coreRoutesUrl.module,
97
+ coreRoutesUrl.workflowRegistry,
98
+ 'by-menu',
99
+ menuId
100
+ ]);
101
+ return this.http.get(url);
102
+ }
103
+ /**
104
+ * Get workflow registry by category ID
105
+ */
106
+ getRegistryByCategory(categoryId) {
107
+ const url = cidePath.join([
108
+ hostManagerRoutesUrl.cideSuiteHost,
109
+ coreRoutesUrl.module,
110
+ coreRoutesUrl.workflowRegistry,
111
+ 'by-category',
112
+ categoryId
113
+ ]);
114
+ return this.http.get(url);
115
+ }
116
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideCoreWorkflowRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
117
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideCoreWorkflowRegistryService, providedIn: 'root' });
118
+ }
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideCoreWorkflowRegistryService, decorators: [{
120
+ type: Injectable,
121
+ args: [{
122
+ providedIn: 'root'
123
+ }]
124
+ }] });
125
+
126
+ class CideCoreWorkflowRegistryListComponent {
127
+ destroyRef = inject(DestroyRef);
128
+ workflowService = inject(CideCoreWorkflowRegistryService);
129
+ router = inject(Router);
130
+ rightsService = inject(RightsService);
131
+ workflows = signal([], ...(ngDevMode ? [{ debugName: "workflows" }] : []));
132
+ loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
133
+ error = signal(null, ...(ngDevMode ? [{ debugName: "error" }] : []));
134
+ canCreate = computed(() => this.rightsService.hasRight('CREATE'), ...(ngDevMode ? [{ debugName: "canCreate" }] : []));
135
+ canEdit = computed(() => this.rightsService.hasRight('EDIT'), ...(ngDevMode ? [{ debugName: "canEdit" }] : []));
136
+ canDelete = computed(() => this.rightsService.hasRight('DELETE'), ...(ngDevMode ? [{ debugName: "canDelete" }] : []));
137
+ gridConfig = signal({
138
+ id: 'workflow-registry-grid',
139
+ columns: [
140
+ { key: 'details', header: 'Workflow Details', type: 'custom', width: 'auto', renderer: 'workflowDetailsRenderer' },
141
+ { key: 'wfrg_component_selector', header: 'Component Selector', type: 'text', width: '200px' },
142
+ { key: 'status', header: 'Status', type: 'custom', width: '100px', renderer: 'statusRenderer' },
143
+ { key: 'actions', header: '', type: 'custom', width: '120px', renderer: 'actionsRenderer' }
144
+ ],
145
+ data: [],
146
+ pagination: {
147
+ enabled: true,
148
+ pageSize: 10,
149
+ pageSizeOptions: [10, 25, 50, 100],
150
+ showQuickJump: true,
151
+ showPageInfo: true,
152
+ showRefresh: true
153
+ },
154
+ search: {
155
+ enabled: true,
156
+ placeholder: 'Search workflows...',
157
+ searchableColumns: [],
158
+ debounceMs: 300
159
+ },
160
+ loading: {
161
+ useDefer: true,
162
+ skeletonRows: 5,
163
+ showOverlay: false
164
+ },
165
+ responsive: true
166
+ }, ...(ngDevMode ? [{ debugName: "gridConfig" }] : []));
167
+ ngOnInit() {
168
+ this.loadWorkflows();
169
+ }
170
+ loadWorkflows() {
171
+ this.loading.set(true);
172
+ this.workflowService.getRegistryList()
173
+ .pipe(takeUntilDestroyed(this.destroyRef))
174
+ .subscribe({
175
+ next: (response) => {
176
+ if (response.success) {
177
+ const workflowsData = Array.isArray(response.data) ? response.data : [];
178
+ this.workflows.set(workflowsData);
179
+ // Update grid config with new data
180
+ this.gridConfig.update(config => ({
181
+ ...config,
182
+ data: workflowsData,
183
+ loading: {
184
+ ...config.loading,
185
+ useDefer: true,
186
+ skeletonRows: 5,
187
+ showOverlay: false
188
+ }
189
+ }));
190
+ }
191
+ else {
192
+ this.error.set(response.message || 'Failed to load workflows');
193
+ }
194
+ this.loading.set(false);
195
+ },
196
+ error: (err) => {
197
+ this.error.set('Failed to load workflows');
198
+ this.loading.set(false);
199
+ }
200
+ });
201
+ }
202
+ createNew() {
203
+ this.router.navigate(['/core/workflow-registry/create']);
204
+ }
205
+ editWorkflow(workflow) {
206
+ this.router.navigate(['/core/workflow-registry/edit', workflow.wfrg_id]);
207
+ }
208
+ deleteWorkflow(workflow) {
209
+ if (confirm('Are you sure you want to delete this workflow?')) {
210
+ this.workflowService.deleteRegistry(workflow.wfrg_id)
211
+ .pipe(takeUntilDestroyed(this.destroyRef))
212
+ .subscribe({
213
+ next: (response) => {
214
+ if (response.success) {
215
+ this.loadWorkflows();
216
+ }
217
+ }
218
+ });
219
+ }
220
+ }
221
+ getActionItems(workflow) {
222
+ const items = [];
223
+ if (this.canEdit()) {
224
+ items.push({ label: 'Edit', action: () => this.editWorkflow(workflow) });
225
+ }
226
+ if (this.canDelete()) {
227
+ items.push({ label: 'Delete', action: () => this.deleteWorkflow(workflow) });
228
+ }
229
+ return items;
230
+ }
231
+ onGridEvent(event) {
232
+ // Handle grid events
233
+ }
234
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideCoreWorkflowRegistryListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
235
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.7", type: CideCoreWorkflowRegistryListComponent, isStandalone: true, selector: "cide-core-workflow-registry-list", ngImport: i0, template: `
236
+ <div class="workflow-registry-list-container">
237
+ <div class="header-actions">
238
+ <cide-ele-button
239
+ *ngIf="canCreate()"
240
+ (click)="createNew()"
241
+ [variant]="'primary'">
242
+ <cide-ele-icon>plus</cide-ele-icon>
243
+ New Workflow Registry
244
+ </cide-ele-button>
245
+ </div>
246
+
247
+ <cide-ele-data-grid
248
+ [config]="gridConfig()"
249
+ (gridEvent)="onGridEvent($event)">
250
+
251
+ <ng-template #workflowDetailsRenderer let-data>
252
+ <div class="workflow-details">
253
+ <div class="workflow-name">{{ data.wfrg_category_id_sygms || 'N/A' }}</div>
254
+ <div class="workflow-meta">
255
+ <span *ngIf="data.wfrg_page_id_sypg">Page: {{ data.wfrg_page_id_sypg }}</span>
256
+ <span *ngIf="data.wfrg_menu_id_symu">Menu: {{ data.wfrg_menu_id_symu }}</span>
257
+ </div>
258
+ </div>
259
+ </ng-template>
260
+
261
+ <ng-template #statusRenderer let-data>
262
+ <span [class]="data.wfrg_is_active ? 'status-active' : 'status-inactive'">
263
+ {{ data.wfrg_is_active ? 'Active' : 'Inactive' }}
264
+ </span>
265
+ </ng-template>
266
+
267
+ <ng-template #actionsRenderer let-data>
268
+ <cide-ele-dropdown [items]="getActionItems(data)"></cide-ele-dropdown>
269
+ </ng-template>
270
+ </cide-ele-data-grid>
271
+ </div>
272
+ `, isInline: true, styles: [".workflow-registry-list-container{padding:1rem;height:100%;display:flex;flex-direction:column}.header-actions{margin-bottom:1rem}.workflow-details{display:flex;flex-direction:column;gap:.25rem}.workflow-name{font-weight:500}.workflow-meta{font-size:.875rem;color:#666;display:flex;gap:1rem}.status-active{color:green}.status-inactive{color:gray}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CideEleDataGridComponent, selector: "cide-ele-data-grid", inputs: ["config", "templateRenderers", "customFormatters", "actionHandlers", "serverSidePagination", "totalServerItems", "currentServerPage", "currentServerPageSize", "dragDropEnabled"], outputs: ["gridEvent"] }, { kind: "component", type: CideEleButtonComponent, selector: "button[cideEleButton], a[cideEleButton], cide-ele-button", inputs: ["label", "variant", "size", "type", "shape", "elevation", "disabled", "id", "loading", "fullWidth", "leftIcon", "rightIcon", "customClass", "tooltip", "ariaLabel", "testId", "routerLink", "routerExtras", "preventDoubleClick", "animated"], outputs: ["btnClick", "doubleClick"] }, { kind: "component", type: CideIconComponent, selector: "cide-ele-icon", inputs: ["size", "type", "toolTip"] }, { kind: "component", type: CideEleDropdownComponent, selector: "cide-ele-dropdown", inputs: ["items", "config", "triggerTemplate", "menuTemplate"], outputs: ["itemClick", "dropdownToggle"] }] });
273
+ }
274
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideCoreWorkflowRegistryListComponent, decorators: [{
275
+ type: Component,
276
+ args: [{ selector: 'cide-core-workflow-registry-list', standalone: true, imports: [
277
+ CommonModule,
278
+ CideEleDataGridComponent,
279
+ CideEleButtonComponent,
280
+ CideIconComponent,
281
+ CideEleDropdownComponent
282
+ ], template: `
283
+ <div class="workflow-registry-list-container">
284
+ <div class="header-actions">
285
+ <cide-ele-button
286
+ *ngIf="canCreate()"
287
+ (click)="createNew()"
288
+ [variant]="'primary'">
289
+ <cide-ele-icon>plus</cide-ele-icon>
290
+ New Workflow Registry
291
+ </cide-ele-button>
292
+ </div>
293
+
294
+ <cide-ele-data-grid
295
+ [config]="gridConfig()"
296
+ (gridEvent)="onGridEvent($event)">
297
+
298
+ <ng-template #workflowDetailsRenderer let-data>
299
+ <div class="workflow-details">
300
+ <div class="workflow-name">{{ data.wfrg_category_id_sygms || 'N/A' }}</div>
301
+ <div class="workflow-meta">
302
+ <span *ngIf="data.wfrg_page_id_sypg">Page: {{ data.wfrg_page_id_sypg }}</span>
303
+ <span *ngIf="data.wfrg_menu_id_symu">Menu: {{ data.wfrg_menu_id_symu }}</span>
304
+ </div>
305
+ </div>
306
+ </ng-template>
307
+
308
+ <ng-template #statusRenderer let-data>
309
+ <span [class]="data.wfrg_is_active ? 'status-active' : 'status-inactive'">
310
+ {{ data.wfrg_is_active ? 'Active' : 'Inactive' }}
311
+ </span>
312
+ </ng-template>
313
+
314
+ <ng-template #actionsRenderer let-data>
315
+ <cide-ele-dropdown [items]="getActionItems(data)"></cide-ele-dropdown>
316
+ </ng-template>
317
+ </cide-ele-data-grid>
318
+ </div>
319
+ `, styles: [".workflow-registry-list-container{padding:1rem;height:100%;display:flex;flex-direction:column}.header-actions{margin-bottom:1rem}.workflow-details{display:flex;flex-direction:column;gap:.25rem}.workflow-name{font-weight:500}.workflow-meta{font-size:.875rem;color:#666;display:flex;gap:1rem}.status-active{color:green}.status-inactive{color:gray}\n"] }]
320
+ }] });
321
+
322
+ export { CideCoreWorkflowRegistryListComponent };
323
+ //# sourceMappingURL=cloud-ide-core-workflow-registry-list.component-B453QJwg.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-ide-core-workflow-registry-list.component-B453QJwg.mjs","sources":["../../../projects/cloud-ide-core/src/lib/core/workflow-management/services/workflow-registry.service.ts","../../../projects/cloud-ide-core/src/lib/core/workflow-management/components/workflow-registry-list/workflow-registry-list.component.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { cidePath, coreRoutesUrl, hostManagerRoutesUrl, generateStringFromObject } from 'cloud-ide-lms-model';\r\n\r\nexport interface CreateWorkflowRegistryDto {\r\n wfrg_entity_id_syen?: string;\r\n wfrg_page_id_sypg?: string;\r\n wfrg_menu_id_symu?: string;\r\n wfrg_category_id_sygms?: string;\r\n wfrg_component_selector?: string;\r\n wfrg_component_path?: string;\r\n wfrg_component_query?: string;\r\n wfrg_view_mode_id_sygms?: string;\r\n wfrg_trigger_type_id_sygms?: string;\r\n wfrg_trigger_condition?: string;\r\n wfrg_auto_initialize?: boolean;\r\n wfrg_reinitialize_on_edit?: boolean;\r\n wfrg_notify_approvers_on_final_status?: boolean;\r\n wfrg_show_approver_names?: boolean;\r\n wfrg_mask_approver_info?: boolean;\r\n wfrg_valid_from_date?: Date;\r\n wfrg_valid_to_date?: Date;\r\n wfrg_is_active?: boolean;\r\n}\r\n\r\nexport interface UpdateWorkflowRegistryDto extends CreateWorkflowRegistryDto {\r\n wfrg_id?: string;\r\n}\r\n\r\nexport interface WorkflowRegistryResponse {\r\n success: boolean;\r\n message?: string;\r\n data?: any;\r\n total?: number;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CideCoreWorkflowRegistryService {\r\n private http = inject(HttpClient);\r\n\r\n /**\r\n * Create workflow registry\r\n */\r\n createRegistry(data: CreateWorkflowRegistryDto): Observable<WorkflowRegistryResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.workflowRegistry\r\n ]);\r\n return this.http.post<WorkflowRegistryResponse>(url, data);\r\n }\r\n\r\n /**\r\n * Get workflow registry list\r\n */\r\n getRegistryList(query?: any): Observable<WorkflowRegistryResponse> {\r\n const queryString = query ? generateStringFromObject(query) : '';\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.workflowRegistry,\r\n queryString\r\n ]);\r\n return this.http.get<WorkflowRegistryResponse>(url);\r\n }\r\n\r\n /**\r\n * Get workflow registry by ID\r\n */\r\n getRegistryById(id: string): Observable<WorkflowRegistryResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.workflowRegistry,\r\n id\r\n ]);\r\n return this.http.get<WorkflowRegistryResponse>(url);\r\n }\r\n\r\n /**\r\n * Update workflow registry\r\n */\r\n updateRegistry(data: UpdateWorkflowRegistryDto): Observable<WorkflowRegistryResponse> {\r\n if (!data.wfrg_id) {\r\n throw new Error('Workflow registry ID is required for update');\r\n }\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.workflowRegistry,\r\n data.wfrg_id\r\n ]);\r\n return this.http.put<WorkflowRegistryResponse>(url, data);\r\n }\r\n\r\n /**\r\n * Delete workflow registry\r\n */\r\n deleteRegistry(id: string): Observable<WorkflowRegistryResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.workflowRegistry,\r\n id\r\n ]);\r\n return this.http.delete<WorkflowRegistryResponse>(url);\r\n }\r\n\r\n /**\r\n * Get workflow registry by page ID\r\n */\r\n getRegistryByPage(pageId: string): Observable<WorkflowRegistryResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.workflowRegistry,\r\n 'by-page',\r\n pageId\r\n ]);\r\n return this.http.get<WorkflowRegistryResponse>(url);\r\n }\r\n\r\n /**\r\n * Get workflow registry by menu ID\r\n */\r\n getRegistryByMenu(menuId: string): Observable<WorkflowRegistryResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.workflowRegistry,\r\n 'by-menu',\r\n menuId\r\n ]);\r\n return this.http.get<WorkflowRegistryResponse>(url);\r\n }\r\n\r\n /**\r\n * Get workflow registry by category ID\r\n */\r\n getRegistryByCategory(categoryId: string): Observable<WorkflowRegistryResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.workflowRegistry,\r\n 'by-category',\r\n categoryId\r\n ]);\r\n return this.http.get<WorkflowRegistryResponse>(url);\r\n }\r\n}\r\n\r\n","import { Component, signal, viewChild, TemplateRef, DestroyRef, inject, computed, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Router } from '@angular/router';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CideEleDataGridComponent, CideEleButtonComponent, CideIconComponent, CideEleDropdownComponent, GridConfiguration, TemplateContext } from 'cloud-ide-element';\r\nimport { AppStateHelperService, RightsService } from 'cloud-ide-layout';\r\nimport { CideCoreWorkflowRegistryService } from '../../services/workflow-registry.service';\r\n\r\n@Component({\r\n selector: 'cide-core-workflow-registry-list',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n CideEleDataGridComponent,\r\n CideEleButtonComponent,\r\n CideIconComponent,\r\n CideEleDropdownComponent\r\n ],\r\n template: `\r\n <div class=\"workflow-registry-list-container\">\r\n <div class=\"header-actions\">\r\n <cide-ele-button \r\n *ngIf=\"canCreate()\"\r\n (click)=\"createNew()\"\r\n [variant]=\"'primary'\">\r\n <cide-ele-icon>plus</cide-ele-icon>\r\n New Workflow Registry\r\n </cide-ele-button>\r\n </div>\r\n \r\n <cide-ele-data-grid\r\n [config]=\"gridConfig()\"\r\n (gridEvent)=\"onGridEvent($event)\">\r\n \r\n <ng-template #workflowDetailsRenderer let-data>\r\n <div class=\"workflow-details\">\r\n <div class=\"workflow-name\">{{ data.wfrg_category_id_sygms || 'N/A' }}</div>\r\n <div class=\"workflow-meta\">\r\n <span *ngIf=\"data.wfrg_page_id_sypg\">Page: {{ data.wfrg_page_id_sypg }}</span>\r\n <span *ngIf=\"data.wfrg_menu_id_symu\">Menu: {{ data.wfrg_menu_id_symu }}</span>\r\n </div>\r\n </div>\r\n </ng-template>\r\n \r\n <ng-template #statusRenderer let-data>\r\n <span [class]=\"data.wfrg_is_active ? 'status-active' : 'status-inactive'\">\r\n {{ data.wfrg_is_active ? 'Active' : 'Inactive' }}\r\n </span>\r\n </ng-template>\r\n \r\n <ng-template #actionsRenderer let-data>\r\n <cide-ele-dropdown [items]=\"getActionItems(data)\"></cide-ele-dropdown>\r\n </ng-template>\r\n </cide-ele-data-grid>\r\n </div>\r\n `,\r\n styles: [`\r\n .workflow-registry-list-container {\r\n padding: 1rem;\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n .header-actions {\r\n margin-bottom: 1rem;\r\n }\r\n .workflow-details {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 0.25rem;\r\n }\r\n .workflow-name {\r\n font-weight: 500;\r\n }\r\n .workflow-meta {\r\n font-size: 0.875rem;\r\n color: #666;\r\n display: flex;\r\n gap: 1rem;\r\n }\r\n .status-active {\r\n color: green;\r\n }\r\n .status-inactive {\r\n color: gray;\r\n }\r\n `]\r\n})\r\nexport class CideCoreWorkflowRegistryListComponent implements OnInit {\r\n private destroyRef = inject(DestroyRef);\r\n private workflowService = inject(CideCoreWorkflowRegistryService);\r\n private router = inject(Router);\r\n private rightsService = inject(RightsService);\r\n\r\n workflows = signal<any[]>([]);\r\n loading = signal(false);\r\n error = signal<string | null>(null);\r\n \r\n canCreate = computed(() => this.rightsService.hasRight('CREATE'));\r\n canEdit = computed(() => this.rightsService.hasRight('EDIT'));\r\n canDelete = computed(() => this.rightsService.hasRight('DELETE'));\r\n\r\n gridConfig = signal<GridConfiguration<any>>({\r\n id: 'workflow-registry-grid',\r\n columns: [\r\n { key: 'details', header: 'Workflow Details', type: 'custom', width: 'auto', renderer: 'workflowDetailsRenderer' },\r\n { key: 'wfrg_component_selector', header: 'Component Selector', type: 'text', width: '200px' },\r\n { key: 'status', header: 'Status', type: 'custom', width: '100px', renderer: 'statusRenderer' },\r\n { key: 'actions', header: '', type: 'custom', width: '120px', renderer: 'actionsRenderer' }\r\n ],\r\n data: [],\r\n pagination: {\r\n enabled: true,\r\n pageSize: 10,\r\n pageSizeOptions: [10, 25, 50, 100],\r\n showQuickJump: true,\r\n showPageInfo: true,\r\n showRefresh: true\r\n },\r\n search: {\r\n enabled: true,\r\n placeholder: 'Search workflows...',\r\n searchableColumns: [],\r\n debounceMs: 300\r\n },\r\n loading: {\r\n useDefer: true,\r\n skeletonRows: 5,\r\n showOverlay: false\r\n },\r\n responsive: true\r\n });\r\n\r\n ngOnInit(): void {\r\n this.loadWorkflows();\r\n }\r\n\r\n loadWorkflows(): void {\r\n this.loading.set(true);\r\n this.workflowService.getRegistryList()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response.success) {\r\n const workflowsData = Array.isArray(response.data) ? response.data : [];\r\n this.workflows.set(workflowsData);\r\n // Update grid config with new data\r\n this.gridConfig.update(config => ({\r\n ...config,\r\n data: workflowsData,\r\n loading: {\r\n ...config.loading,\r\n useDefer: true,\r\n skeletonRows: 5,\r\n showOverlay: false\r\n }\r\n }));\r\n } else {\r\n this.error.set(response.message || 'Failed to load workflows');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (err) => {\r\n this.error.set('Failed to load workflows');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n\r\n createNew(): void {\r\n this.router.navigate(['/core/workflow-registry/create']);\r\n }\r\n\r\n editWorkflow(workflow: any): void {\r\n this.router.navigate(['/core/workflow-registry/edit', workflow.wfrg_id]);\r\n }\r\n\r\n deleteWorkflow(workflow: any): void {\r\n if (confirm('Are you sure you want to delete this workflow?')) {\r\n this.workflowService.deleteRegistry(workflow.wfrg_id)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response.success) {\r\n this.loadWorkflows();\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n getActionItems(workflow: any): any[] {\r\n const items: any[] = [];\r\n if (this.canEdit()) {\r\n items.push({ label: 'Edit', action: () => this.editWorkflow(workflow) });\r\n }\r\n if (this.canDelete()) {\r\n items.push({ label: 'Delete', action: () => this.deleteWorkflow(workflow) });\r\n }\r\n return items;\r\n }\r\n\r\n onGridEvent(event: any): void {\r\n // Handle grid events\r\n }\r\n}\r\n\r\n"],"names":[],"mappings":"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"}