cloud-ide-core 2.0.84 → 2.0.86

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.
@@ -232,43 +232,43 @@ class CideCoreWorkflowRegistryListComponent {
232
232
  // Handle grid events
233
233
  }
234
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>
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
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
273
  }
274
274
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideCoreWorkflowRegistryListComponent, decorators: [{
@@ -279,45 +279,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
279
279
  CideEleButtonComponent,
280
280
  CideIconComponent,
281
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>
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
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
320
  }] });
321
321
 
322
322
  export { CideCoreWorkflowRegistryListComponent };
323
- //# sourceMappingURL=cloud-ide-core-workflow-registry-list.component-B453QJwg.mjs.map
323
+ //# sourceMappingURL=cloud-ide-core-workflow-registry-list.component-HrnKDaiv.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-ide-core-workflow-registry-list.component-HrnKDaiv.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';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { cidePath, coreRoutesUrl, hostManagerRoutesUrl, generateStringFromObject } from 'cloud-ide-lms-model';\n\nexport interface CreateWorkflowRegistryDto {\n wfrg_entity_id_syen?: string;\n wfrg_page_id_sypg?: string;\n wfrg_menu_id_symu?: string;\n wfrg_category_id_sygms?: string;\n wfrg_component_selector?: string;\n wfrg_component_path?: string;\n wfrg_component_query?: string;\n wfrg_view_mode_id_sygms?: string;\n wfrg_trigger_type_id_sygms?: string;\n wfrg_trigger_condition?: string;\n wfrg_auto_initialize?: boolean;\n wfrg_reinitialize_on_edit?: boolean;\n wfrg_notify_approvers_on_final_status?: boolean;\n wfrg_show_approver_names?: boolean;\n wfrg_mask_approver_info?: boolean;\n wfrg_valid_from_date?: Date;\n wfrg_valid_to_date?: Date;\n wfrg_is_active?: boolean;\n}\n\nexport interface UpdateWorkflowRegistryDto extends CreateWorkflowRegistryDto {\n wfrg_id?: string;\n}\n\nexport interface WorkflowRegistryResponse {\n success: boolean;\n message?: string;\n data?: any;\n total?: number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CideCoreWorkflowRegistryService {\n private http = inject(HttpClient);\n\n /**\n * Create workflow registry\n */\n createRegistry(data: CreateWorkflowRegistryDto): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry\n ]);\n return this.http.post<WorkflowRegistryResponse>(url, data);\n }\n\n /**\n * Get workflow registry list\n */\n getRegistryList(query?: any): Observable<WorkflowRegistryResponse> {\n const queryString = query ? generateStringFromObject(query) : '';\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n queryString\n ]);\n return this.http.get<WorkflowRegistryResponse>(url);\n }\n\n /**\n * Get workflow registry by ID\n */\n getRegistryById(id: string): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n id\n ]);\n return this.http.get<WorkflowRegistryResponse>(url);\n }\n\n /**\n * Update workflow registry\n */\n updateRegistry(data: UpdateWorkflowRegistryDto): Observable<WorkflowRegistryResponse> {\n if (!data.wfrg_id) {\n throw new Error('Workflow registry ID is required for update');\n }\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n data.wfrg_id\n ]);\n return this.http.put<WorkflowRegistryResponse>(url, data);\n }\n\n /**\n * Delete workflow registry\n */\n deleteRegistry(id: string): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n id\n ]);\n return this.http.delete<WorkflowRegistryResponse>(url);\n }\n\n /**\n * Get workflow registry by page ID\n */\n getRegistryByPage(pageId: string): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n 'by-page',\n pageId\n ]);\n return this.http.get<WorkflowRegistryResponse>(url);\n }\n\n /**\n * Get workflow registry by menu ID\n */\n getRegistryByMenu(menuId: string): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n 'by-menu',\n menuId\n ]);\n return this.http.get<WorkflowRegistryResponse>(url);\n }\n\n /**\n * Get workflow registry by category ID\n */\n getRegistryByCategory(categoryId: string): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n 'by-category',\n categoryId\n ]);\n return this.http.get<WorkflowRegistryResponse>(url);\n }\n}\n\n","import { Component, signal, viewChild, TemplateRef, DestroyRef, inject, computed, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CideEleDataGridComponent, CideEleButtonComponent, CideIconComponent, CideEleDropdownComponent, GridConfiguration, TemplateContext } from 'cloud-ide-element';\nimport { AppStateHelperService, RightsService } from 'cloud-ide-layout';\nimport { CideCoreWorkflowRegistryService } from '../../services/workflow-registry.service';\n\n@Component({\n selector: 'cide-core-workflow-registry-list',\n standalone: true,\n imports: [\n CommonModule,\n CideEleDataGridComponent,\n CideEleButtonComponent,\n CideIconComponent,\n CideEleDropdownComponent\n ],\n template: `\n <div class=\"workflow-registry-list-container\">\n <div class=\"header-actions\">\n <cide-ele-button \n *ngIf=\"canCreate()\"\n (click)=\"createNew()\"\n [variant]=\"'primary'\">\n <cide-ele-icon>plus</cide-ele-icon>\n New Workflow Registry\n </cide-ele-button>\n </div>\n \n <cide-ele-data-grid\n [config]=\"gridConfig()\"\n (gridEvent)=\"onGridEvent($event)\">\n \n <ng-template #workflowDetailsRenderer let-data>\n <div class=\"workflow-details\">\n <div class=\"workflow-name\">{{ data.wfrg_category_id_sygms || 'N/A' }}</div>\n <div class=\"workflow-meta\">\n <span *ngIf=\"data.wfrg_page_id_sypg\">Page: {{ data.wfrg_page_id_sypg }}</span>\n <span *ngIf=\"data.wfrg_menu_id_symu\">Menu: {{ data.wfrg_menu_id_symu }}</span>\n </div>\n </div>\n </ng-template>\n \n <ng-template #statusRenderer let-data>\n <span [class]=\"data.wfrg_is_active ? 'status-active' : 'status-inactive'\">\n {{ data.wfrg_is_active ? 'Active' : 'Inactive' }}\n </span>\n </ng-template>\n \n <ng-template #actionsRenderer let-data>\n <cide-ele-dropdown [items]=\"getActionItems(data)\"></cide-ele-dropdown>\n </ng-template>\n </cide-ele-data-grid>\n </div>\n `,\n styles: [`\n .workflow-registry-list-container {\n padding: 1rem;\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n .header-actions {\n margin-bottom: 1rem;\n }\n .workflow-details {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n .workflow-name {\n font-weight: 500;\n }\n .workflow-meta {\n font-size: 0.875rem;\n color: #666;\n display: flex;\n gap: 1rem;\n }\n .status-active {\n color: green;\n }\n .status-inactive {\n color: gray;\n }\n `]\n})\nexport class CideCoreWorkflowRegistryListComponent implements OnInit {\n private destroyRef = inject(DestroyRef);\n private workflowService = inject(CideCoreWorkflowRegistryService);\n private router = inject(Router);\n private rightsService = inject(RightsService);\n\n workflows = signal<any[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n \n canCreate = computed(() => this.rightsService.hasRight('CREATE'));\n canEdit = computed(() => this.rightsService.hasRight('EDIT'));\n canDelete = computed(() => this.rightsService.hasRight('DELETE'));\n\n gridConfig = signal<GridConfiguration<any>>({\n id: 'workflow-registry-grid',\n columns: [\n { key: 'details', header: 'Workflow Details', type: 'custom', width: 'auto', renderer: 'workflowDetailsRenderer' },\n { key: 'wfrg_component_selector', header: 'Component Selector', type: 'text', width: '200px' },\n { key: 'status', header: 'Status', type: 'custom', width: '100px', renderer: 'statusRenderer' },\n { key: 'actions', header: '', type: 'custom', width: '120px', renderer: 'actionsRenderer' }\n ],\n data: [],\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search workflows...',\n searchableColumns: [],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n responsive: true\n });\n\n ngOnInit(): void {\n this.loadWorkflows();\n }\n\n loadWorkflows(): void {\n this.loading.set(true);\n this.workflowService.getRegistryList()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n const workflowsData = Array.isArray(response.data) ? response.data : [];\n this.workflows.set(workflowsData);\n // Update grid config with new data\n this.gridConfig.update(config => ({\n ...config,\n data: workflowsData,\n loading: {\n ...config.loading,\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n }\n }));\n } else {\n this.error.set(response.message || 'Failed to load workflows');\n }\n this.loading.set(false);\n },\n error: (err) => {\n this.error.set('Failed to load workflows');\n this.loading.set(false);\n }\n });\n }\n\n createNew(): void {\n this.router.navigate(['/core/workflow-registry/create']);\n }\n\n editWorkflow(workflow: any): void {\n this.router.navigate(['/core/workflow-registry/edit', workflow.wfrg_id]);\n }\n\n deleteWorkflow(workflow: any): void {\n if (confirm('Are you sure you want to delete this workflow?')) {\n this.workflowService.deleteRegistry(workflow.wfrg_id)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadWorkflows();\n }\n }\n });\n }\n }\n\n getActionItems(workflow: any): any[] {\n const items: any[] = [];\n if (this.canEdit()) {\n items.push({ label: 'Edit', action: () => this.editWorkflow(workflow) });\n }\n if (this.canDelete()) {\n items.push({ label: 'Delete', action: () => this.deleteWorkflow(workflow) });\n }\n return items;\n }\n\n onGridEvent(event: any): void {\n // Handle grid events\n }\n}\n\n"],"names":[],"mappings":"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"}