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.
- package/fesm2022/cloud-ide-core-workflow-registry-list.component-B453QJwg.mjs +323 -0
- package/fesm2022/cloud-ide-core-workflow-registry-list.component-B453QJwg.mjs.map +1 -0
- package/fesm2022/cloud-ide-core.mjs +157 -9
- package/fesm2022/cloud-ide-core.mjs.map +1 -1
- package/index.d.ts +8 -2
- package/package.json +1 -1
|
@@ -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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"}
|