verben-workflow-ui 0.5.63 → 0.5.64
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/esm2022/src/lib/components/workflow-designer/designer-canvas/designer-canvas.component.mjs +3 -3
- package/esm2022/src/lib/components/workflows/workflows.component.mjs +2 -16
- package/esm2022/src/lib/components/workflows/workflows.facade.mjs +10 -23
- package/esm2022/src/lib/components/workflows/workflows.service.mjs +2 -2
- package/esm2022/src/lib/components/workflows/workflows.state.mjs +2 -8
- package/fesm2022/verben-workflow-ui-src-lib-components-workflow-designer.mjs +2 -2
- package/fesm2022/verben-workflow-ui-src-lib-components-workflow-designer.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-workflows.mjs +11 -44
- package/fesm2022/verben-workflow-ui-src-lib-components-workflows.mjs.map +1 -1
- package/package.json +50 -50
- package/src/lib/components/workflows/workflows.facade.d.ts +1 -1
- package/src/lib/components/workflows/workflows.state.d.ts +1 -3
- package/styles/styles.css +5 -0
|
@@ -82,7 +82,7 @@ class WorkflowsService {
|
|
|
82
82
|
* @returns Promise containing the user access requests
|
|
83
83
|
*/
|
|
84
84
|
getWorkflows(skip, limit, sortParam, sortOrder) {
|
|
85
|
-
const url = `GetWorkflows/${skip}/${limit}`;
|
|
85
|
+
const url = `GetWorkflows/${skip}/${limit}/${sortParam}/${sortOrder}`;
|
|
86
86
|
return this.httpService.get(url);
|
|
87
87
|
}
|
|
88
88
|
/**
|
|
@@ -207,13 +207,7 @@ class WorkflowsState {
|
|
|
207
207
|
return this.requests$.asObservable();
|
|
208
208
|
}
|
|
209
209
|
setRequests(requests) {
|
|
210
|
-
|
|
211
|
-
if (!Array.isArray(requests)) {
|
|
212
|
-
console.error('Expected requests to be an array, but got:', requests);
|
|
213
|
-
}
|
|
214
|
-
else {
|
|
215
|
-
this.requests$.next(requests);
|
|
216
|
-
}
|
|
210
|
+
this.requests$.next(requests);
|
|
217
211
|
}
|
|
218
212
|
setOperations(operations) {
|
|
219
213
|
this.operations$.next(operations);
|
|
@@ -298,17 +292,6 @@ class WorkflowFacade {
|
|
|
298
292
|
this.isUpdating$().subscribe((loading) => {
|
|
299
293
|
this.utilService.sendBI(loading);
|
|
300
294
|
});
|
|
301
|
-
this.getFilterParams$().subscribe((params) => {
|
|
302
|
-
if (params.length) {
|
|
303
|
-
this.loadRequestsByFilterParams(params).catch((error) => {
|
|
304
|
-
console.error('Failed to load requests by filter params:', error);
|
|
305
|
-
this.utilService.showError('Failed to load requests by filter params');
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
else {
|
|
309
|
-
this.loadRequests();
|
|
310
|
-
}
|
|
311
|
-
});
|
|
312
295
|
}
|
|
313
296
|
destroy() {
|
|
314
297
|
this.destroy$.next();
|
|
@@ -366,18 +349,19 @@ class WorkflowFacade {
|
|
|
366
349
|
this.workflowState.setUpdating(true);
|
|
367
350
|
const currentParams = this.workflowState.getQueryParamsValue();
|
|
368
351
|
const searchTerm = this.workflowState.getSearchTermValue();
|
|
369
|
-
//
|
|
352
|
+
// Compute new skip but fetch using the current skip first
|
|
370
353
|
const newSkip = currentParams.skip + currentParams.limit;
|
|
371
|
-
|
|
372
|
-
// Load and append data
|
|
354
|
+
// Load and append data using the current (old) skip
|
|
373
355
|
const response = searchTerm
|
|
374
|
-
? await this.workflowService.getWorkflowWithParam(searchTerm,
|
|
375
|
-
: await this.workflowService.getWorkflows(
|
|
356
|
+
? await this.workflowService.getWorkflowWithParam(searchTerm, currentParams.skip, currentParams.limit, currentParams.sortParam || 'createdDate', currentParams.sortOrder)
|
|
357
|
+
: await this.workflowService.getWorkflows(currentParams.skip, currentParams.limit, currentParams.sortParam || 'createdDate', currentParams.sortOrder);
|
|
376
358
|
if (response instanceof ErrorResponse) {
|
|
377
359
|
this.utilService.showError(response.ErrorMsg);
|
|
378
360
|
return;
|
|
379
361
|
}
|
|
380
362
|
this.workflowState.appendRequests(response.Result);
|
|
363
|
+
// Update skip only after a successful fetch
|
|
364
|
+
this.workflowState.updateQueryParams({ skip: newSkip });
|
|
381
365
|
}
|
|
382
366
|
catch (error) {
|
|
383
367
|
console.error('Load more failed:', error);
|
|
@@ -387,8 +371,7 @@ class WorkflowFacade {
|
|
|
387
371
|
this.workflowState.setUpdating(false);
|
|
388
372
|
}
|
|
389
373
|
}
|
|
390
|
-
|
|
391
|
-
async loadDataForExport(skip, limit) {
|
|
374
|
+
async loadData(skip, limit) {
|
|
392
375
|
try {
|
|
393
376
|
this.workflowState.setUpdating(true);
|
|
394
377
|
const { sortParam, sortOrder } = this.workflowState.getQueryParamsValue();
|
|
@@ -492,13 +475,11 @@ class WorkflowFacade {
|
|
|
492
475
|
}
|
|
493
476
|
updateQueryParams(params) {
|
|
494
477
|
this.workflowState.updateQueryParams(params);
|
|
495
|
-
this.loadRequests();
|
|
496
478
|
}
|
|
497
479
|
async addRequest(request) {
|
|
498
480
|
try {
|
|
499
481
|
this.workflowState.setUpdating(true);
|
|
500
482
|
const newRequest = { ...request };
|
|
501
|
-
this.workflowState.addRequest(newRequest);
|
|
502
483
|
newRequest.Id = '';
|
|
503
484
|
newRequest.Code = '';
|
|
504
485
|
const response = await this.workflowService.saveWorkflows([newRequest]);
|
|
@@ -507,7 +488,7 @@ class WorkflowFacade {
|
|
|
507
488
|
return;
|
|
508
489
|
}
|
|
509
490
|
this.utilService.showSuccess('Workflows added successfully');
|
|
510
|
-
|
|
491
|
+
this.workflowState.resetPagination();
|
|
511
492
|
await this.loadRequests(); // Reload to get server-side changes
|
|
512
493
|
}
|
|
513
494
|
catch (error) {
|
|
@@ -741,20 +722,10 @@ class WorkflowsComponent extends BaseDataViewComponent {
|
|
|
741
722
|
return this.editForms.get(index)?.valid || false;
|
|
742
723
|
}
|
|
743
724
|
loadInitialData() {
|
|
744
|
-
// this.userService.getRequests().subscribe(
|
|
745
|
-
// tasks => this.data.set(tasks)
|
|
746
|
-
// );
|
|
747
|
-
// this.data.set(generateWorkflows(5));
|
|
748
|
-
super.loadInitialData();
|
|
749
|
-
// this.data = this.service.getMockUserRequests();
|
|
750
|
-
// this.userAccessRequestFacade.getRoles$().subscribe((data) => {
|
|
751
|
-
// this.roles.set(data);
|
|
752
|
-
// });
|
|
753
725
|
try {
|
|
754
726
|
this.facade.loadRequests().then(() => {
|
|
755
727
|
this.facade.loadOperations();
|
|
756
728
|
});
|
|
757
|
-
// this.userAccessRequestFacade.loadRoles();
|
|
758
729
|
}
|
|
759
730
|
catch (error) {
|
|
760
731
|
// Handle error
|
|
@@ -772,11 +743,9 @@ class WorkflowsComponent extends BaseDataViewComponent {
|
|
|
772
743
|
...data,
|
|
773
744
|
};
|
|
774
745
|
if (payload.DataState === ObjectState.New) {
|
|
775
|
-
console.log('Payload in new', payload);
|
|
776
746
|
await this.facade.addRequest(payload);
|
|
777
747
|
}
|
|
778
748
|
else {
|
|
779
|
-
console.log('Payload in update', payload);
|
|
780
749
|
await this.facade.updateRequest({
|
|
781
750
|
...payload,
|
|
782
751
|
DataState: ObjectState.Changed,
|
|
@@ -785,7 +754,6 @@ class WorkflowsComponent extends BaseDataViewComponent {
|
|
|
785
754
|
}
|
|
786
755
|
async commitRowChange(rowIndex, row, postCommit) {
|
|
787
756
|
const data = this.editForms.get(rowIndex)?.value;
|
|
788
|
-
console.log();
|
|
789
757
|
if (data) {
|
|
790
758
|
const datum = {
|
|
791
759
|
...row,
|
|
@@ -815,7 +783,6 @@ class WorkflowsComponent extends BaseDataViewComponent {
|
|
|
815
783
|
this.facade.search(event.value);
|
|
816
784
|
}
|
|
817
785
|
onStateChange(event) {
|
|
818
|
-
console.log(`State changed for ${event.key}:`, event.value);
|
|
819
786
|
switch (event.key) {
|
|
820
787
|
case 'create':
|
|
821
788
|
const timestamp = new Date();
|
|
@@ -845,7 +812,7 @@ class WorkflowsComponent extends BaseDataViewComponent {
|
|
|
845
812
|
}
|
|
846
813
|
}
|
|
847
814
|
async loadData(range) {
|
|
848
|
-
const data = await this.facade.
|
|
815
|
+
const data = await this.facade.loadData(range.skip, range.limit);
|
|
849
816
|
return data ?? [];
|
|
850
817
|
}
|
|
851
818
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WorkflowsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: WorkflowFacade }, { token: i1$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verben-workflow-ui-src-lib-components-workflows.mjs","sources":["../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.columns.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.helper.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.service.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.state.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.facade.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflow-form/workflow-form.component.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflow-form/workflow-form.component.html","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.component.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.component.html","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.module.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/verben-workflow-ui-src-lib-components-workflows.ts"],"sourcesContent":["import { ColumnDefinition } from 'verben-ng-ui';\nimport { Workflow } from 'verben-workflow-ui/src/lib/models';\n\nexport const columns: ColumnDefinition<Workflow>[] = [\n {\n id: 'name',\n header: 'Name',\n accessorKey: 'Name',\n },\n {\n id: 'description',\n header: 'Description',\n accessorKey: 'Description',\n },\n {\n id: 'assignment-type',\n header: 'Assignment Type',\n accessorKey: 'AssignmentType',\n },\n {\n id: 'operation',\n header: 'Operation',\n accessorKey: 'Operation',\n },\n {\n id: 'stage-entry-rule',\n header: 'StageEntryRule',\n accessorKey: 'StageEntryRule',\n },\n {\n id: 'status',\n header: 'Status',\n accessorKey: 'Status',\n },\n { id: 'actions', header: 'Actions', accessorKey: 'Code' },\n];\n","import { DataFilterType } from 'verben-ng-ui';\nimport { SearchPropertyValueType } from 'verben-workflow-ui/src/lib/models';\n\nexport function convertDataFilterTypeToSearchPropertyValueType(\n type: DataFilterType\n) {\n switch (type) {\n case DataFilterType.String:\n return SearchPropertyValueType.String;\n case DataFilterType.Integer:\n return SearchPropertyValueType.Int;\n case DataFilterType.Decimal:\n return SearchPropertyValueType.Decimal;\n case DataFilterType.Credit:\n return SearchPropertyValueType.Float;\n case DataFilterType.Date:\n return SearchPropertyValueType.Date;\n case DataFilterType.Bool:\n return SearchPropertyValueType.Bool;\n case DataFilterType.Number:\n return SearchPropertyValueType.Int;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ErrorResponse, FormEntity, Paged, SearchPropertyValue, Tag, Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { EnvironmentService, HttpWebRequestService } from 'verben-workflow-ui/src/lib/services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowsService {\n\n constructor(\n private httpService: HttpWebRequestService,\n private envSvc: EnvironmentService\n ) { }\n\n /**\n * Get user access requests with pagination and sorting\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the user access requests\n */\n getWorkflows(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Workflow> | ErrorResponse> {\n const url = `GetWorkflows/${skip}/${limit}`;\n return this.httpService.get(url) as Promise<Paged<Workflow> | ErrorResponse>;\n }\n\n /**\n * Get user access requests with additional parameter, pagination and sorting\n * @param param Search parameter\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the filtered user access requests\n */\n getWorkflowWithParam(\n param: string,\n skip: number = 0,\n limit: number = 1,\n sortParam: string = 'CreatedAt',\n sortOrder: string = 'Asc'\n ): Promise<Paged<Workflow> | ErrorResponse> {\n const url = `GetWorkflowsWithParam/${param}/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(url) as Promise<Paged<Workflow> | ErrorResponse>;\n }\n\n /**\n * Get user access requests with additional parameter, pagination and sorting\n * @param params Filter parameters\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the filtered user access requests\n */\n getWorkflowByFilterParams(\n params: SearchPropertyValue[],\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Workflow> | ErrorResponse> {\n const url = `SearchWorkflow/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.post(url, params) as Promise<Paged<Workflow> | ErrorResponse>;\n }\n\n /**\n * Save multiple user access requests\n * @param requests Array of user access requests to save\n * @returns Promise containing the save operation result\n */\n saveWorkflows(requests: Partial<Workflow>[]): Promise<any | ErrorResponse> {\n const url = `SaveWorkflows`;\n // const payload = requests.map((wf) => {\n // delete wf[\"Id\"];\n // wf.Actions = wf.Actions.map((ac) => {\n // delete ac[\"Id\"];\n // return ac;\n // })\n // return wf;\n // })\n return this.httpService.post(url, requests);\n }\n\n /**\n * Approve or reject multiple user access requests\n * @param requests Array of user access requests to save\n * @param isApproval True for approval, false for decline\n * @returns Promise containing the save operation result\n */\n processWorkflows(requests: Workflow[], isApproval: boolean): Promise<any | ErrorResponse> {\n const url = `WorkflowAction/${isApproval}`;\n return this.httpService.post(url, requests);\n }\n\n /**\n * Delete multiple user access requests\n * @param requestIds Array of request IDs to delete\n * @returns Observable containing the delete operation result\n */\n deleteWorkflows(requestIds: string[]): Observable<any | ErrorResponse> {\n const url = `DeleteWorkflows`;\n return this.httpService.delete(`${url}?data=${requestIds.join(',')}`);\n }\n\n /**\n * Get user access requests with pagination and sorting\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the user access requests\n */\n getForms(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<FormEntity> | ErrorResponse> {\n const url = `GetFormEntities/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(url) as Promise<Paged<FormEntity> | ErrorResponse>;\n }\n\n /**\n * Get user access requests with pagination and sorting\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the user access requests\n */\n getTags(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Tag> | ErrorResponse> {\n const url = `GetTags/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(\n url,\n this.envSvc.environment.AuthAPI\n ) as Promise<Paged<Tag> | ErrorResponse>;\n }\n\n getWorkflowOperations(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Tag> | ErrorResponse> {\n const url = `GetWorkflowOperations/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(url) as Promise<Paged<Tag> | ErrorResponse>;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IDataFilter } from 'verben-ng-ui';\nimport { Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { QueryParams } from 'verben-workflow-ui/src/lib/models';\nimport { SortDirection } from 'verben-workflow-ui/src/lib/models';\nimport { WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowsState {\n private updating$ = new BehaviorSubject<boolean>(false);\n private requests$ = new BehaviorSubject<Workflow[]>([]);\n private searchTerm$ = new BehaviorSubject<string>('');\n private queryParams$ = new BehaviorSubject<QueryParams<Workflow>>({\n skip: 0,\n limit: 20,\n sortParam: 'CreatedAt',\n sortOrder: SortDirection.Desc,\n });\n private filterParams$ = new BehaviorSubject<IDataFilter[]>([]);\n\n private operations$ = new BehaviorSubject<WorkflowOperation[]>([]);\n\n isUpdating$(): Observable<boolean> {\n return this.updating$.asObservable();\n }\n\n setUpdating(isUpdating: boolean): void {\n this.updating$.next(isUpdating);\n }\n\n getRequests$(): Observable<Workflow[]> {\n return this.requests$.asObservable();\n }\n\n setRequests(requests: Workflow[]): void {\n console.log('Setting requests:', requests);\n if (!Array.isArray(requests)) {\n console.error('Expected requests to be an array, but got:', requests);\n } else {\n this.requests$.next(requests);\n }\n }\n\n setOperations(operations: WorkflowOperation[]): void {\n this.operations$.next(operations);\n }\n\n getOperations$(): Observable<WorkflowOperation[]> {\n return this.operations$.asObservable();\n }\n\n getFilterParams$(): Observable<IDataFilter[]> {\n return this.filterParams$.asObservable();\n }\n\n setFilterParams(params: IDataFilter[]): void {\n this.filterParams$.next(params);\n }\n appendRequests(newRequests: Workflow[]): void {\n const currentRequests = this.requests$.getValue();\n this.requests$.next([...currentRequests, ...newRequests]);\n }\n\n getSearchTerm$(): Observable<string> {\n return this.searchTerm$.asObservable();\n }\n\n getSearchTermValue(): string {\n return this.searchTerm$.getValue();\n }\n\n setSearchTerm(term: string): void {\n this.searchTerm$.next(term);\n }\n\n getQueryParams$(): Observable<QueryParams<Workflow>> {\n return this.queryParams$.asObservable();\n }\n\n getQueryParamsValue(): QueryParams<Workflow> {\n return this.queryParams$.getValue();\n }\n\n updateQueryParams(params: Partial<QueryParams<Workflow>>): void {\n this.queryParams$.next({ ...this.queryParams$.getValue(), ...params });\n }\n\n resetPagination(): void {\n const currentParams = this.queryParams$.getValue();\n this.queryParams$.next({ ...currentParams, skip: 0 });\n }\n\n addRequest(request: Workflow): void {\n const currentValue = this.requests$.getValue();\n this.requests$.next([request, ...currentValue]);\n }\n\n updateRequest(updatedRequest: Workflow): void {\n const requests = this.requests$.getValue();\n const index = requests.findIndex((r) => r.Code === updatedRequest.Code);\n if (index !== -1) {\n requests[index] = updatedRequest;\n this.requests$.next([...requests]);\n }\n }\n\n removeRequest(requestId: string): void {\n const currentValue = this.requests$.getValue();\n this.requests$.next(currentValue.filter((r) => r.Code !== requestId));\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n Observable,\n Subject,\n debounceTime,\n distinctUntilChanged,\n lastValueFrom,\n takeUntil\n} from 'rxjs';\n\nimport { IDataFilter } from 'verben-ng-ui';\nimport { ErrorResponse, QueryParams, SearchOperator, SearchPropertySign, SortDirection, Workflow, WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\nimport { UtilService } from 'verben-workflow-ui/src/lib/services';\nimport { convertDataFilterTypeToSearchPropertyValueType } from './workflows.helper';\nimport { WorkflowsService } from './workflows.service';\nimport { WorkflowsState } from './workflows.state';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowFacade {\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n constructor(\n private workflowService: WorkflowsService,\n private workflowState: WorkflowsState,\n private utilService: UtilService\n ) {\n // Set up debounced search handling\n this.searchSubject\n .pipe(\n debounceTime(1000),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n )\n .subscribe((searchTerm) => {\n this.handleSearch(searchTerm);\n });\n\n this.isUpdating$().subscribe((loading) => {\n this.utilService.sendBI(loading);\n });\n\n this.getFilterParams$().subscribe((params) => {\n if (params.length) {\n this.loadRequestsByFilterParams(params).catch((error) => {\n console.error('Failed to load requests by filter params:', error);\n this.utilService.showError(\n 'Failed to load requests by filter params'\n );\n });\n } else {\n this.loadRequests();\n }\n });\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n isUpdating$(): Observable<boolean> {\n return this.workflowState.isUpdating$();\n }\n\n getRequests$(): Observable<Workflow[]> {\n return this.workflowState.getRequests$();\n }\n\n getOperations$(): Observable<WorkflowOperation[]> {\n return this.workflowState.getOperations$();\n }\n\n getFilterParams$(): Observable<IDataFilter[]> {\n return this.workflowState.getFilterParams$();\n }\n\n getQueryParams$(): Observable<QueryParams<Workflow>> {\n return this.workflowState.getQueryParams$();\n }\n\n getSearchTerm$(): Observable<string> {\n return this.workflowState.getSearchTerm$();\n }\n\n // Search handling\n search(term: string): void {\n this.searchSubject.next(term);\n }\n\n private async handleSearch(searchTerm: string): Promise<void> {\n this.workflowState.setSearchTerm(searchTerm);\n this.workflowState.resetPagination();\n\n try {\n this.workflowState.setUpdating(true);\n if (searchTerm.trim()) {\n await this.loadRequestsWithParam(searchTerm);\n } else {\n await this.loadRequests();\n }\n } catch (error) {\n console.error('Search failed:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async filter(filterParams: IDataFilter[]): Promise<void> {\n this.workflowState.resetPagination();\n this.workflowState.setFilterParams(filterParams);\n }\n\n // Load more handling\n async loadMore(): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const currentParams = this.workflowState.getQueryParamsValue();\n const searchTerm = this.workflowState.getSearchTermValue();\n\n // Update skip value\n const newSkip = currentParams.skip + currentParams.limit;\n this.workflowState.updateQueryParams({ skip: newSkip });\n\n // Load and append data\n const response = searchTerm\n ? await this.workflowService.getWorkflowWithParam(\n searchTerm,\n newSkip,\n currentParams.limit,\n currentParams.sortParam || 'createdDate',\n currentParams.sortOrder\n )\n : await this.workflowService.getWorkflows(\n newSkip,\n currentParams.limit,\n currentParams.sortParam || 'createdDate',\n currentParams.sortOrder\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.workflowState.appendRequests(response.Result);\n } catch (error) {\n console.error('Load more failed:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n // Load more handling\n async loadDataForExport(\n skip: number,\n limit: number\n ): Promise<Workflow[] | void> {\n try {\n this.workflowState.setUpdating(true);\n const { sortParam, sortOrder } = this.workflowState.getQueryParamsValue();\n const searchTerm = this.workflowState.getSearchTermValue();\n\n // Load and append data\n const response = searchTerm\n ? await this.workflowService.getWorkflowWithParam(\n searchTerm,\n skip,\n limit,\n sortParam || 'createdDate',\n sortOrder\n )\n : await this.workflowService.getWorkflows(\n skip,\n limit,\n sortParam || 'createdDate',\n sortOrder\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n return response.Result;\n } catch (error) {\n console.error('Load more failed:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async loadRequests(): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const params = this.workflowState.getQueryParamsValue();\n\n const requests = await this.workflowService.getWorkflows(\n params.skip,\n params.limit,\n params.sortParam || 'CreatedDate',\n params.sortOrder\n );\n\n if (requests instanceof ErrorResponse) {\n this.utilService.showError(requests.ErrorMsg);\n return;\n }\n\n this.workflowState.setRequests(requests.Result);\n } catch (error) {\n console.error('Failed to load requests:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async loadOperations(): Promise<void> {\n try {\n const response = await this.workflowService.getWorkflowOperations(\n 0,\n 0,\n 'CreatedDate',\n SortDirection.Desc\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.workflowState.setOperations(response.Result);\n } catch (error) {\n console.error('Failed to load requests:', error);\n throw error;\n } finally {\n }\n }\n\n async loadRequestsWithParam(param: string): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const params = this.workflowState.getQueryParamsValue();\n\n const requests = await this.workflowService.getWorkflowWithParam(\n param,\n params.skip,\n params.limit,\n params.sortParam || 'createdDate',\n params.sortOrder\n );\n\n if (requests instanceof ErrorResponse) {\n this.utilService.showError(requests.ErrorMsg);\n return;\n }\n\n this.workflowState.setRequests(requests.Result);\n } catch (error) {\n console.error('Failed to load requests with param:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async loadRequestsByFilterParams(filterParams: IDataFilter[]): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const params = this.workflowState.getQueryParamsValue();\n\n const requests = await this.workflowService.getWorkflowByFilterParams(\n filterParams.map((filter) => ({\n PropertyName: filter.name,\n EntityValue: filter.value,\n type: convertDataFilterTypeToSearchPropertyValueType(filter.type),\n Operator: SearchOperator.And,\n Sign: SearchPropertySign.EQ,\n })),\n params.skip,\n params.limit,\n params.sortParam || 'createdDate',\n params.sortOrder\n );\n\n if (requests instanceof ErrorResponse) {\n this.utilService.showError(requests.ErrorMsg);\n return;\n }\n\n this.workflowState.setRequests(requests.Result);\n } catch (error) {\n console.error('Failed to load requests with param:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n updateQueryParams(params: Partial<QueryParams<Workflow>>): void {\n this.workflowState.updateQueryParams(params);\n this.loadRequests();\n }\n\n async addRequest(request: Partial<Workflow>): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const newRequest = { ...request } as Workflow;\n this.workflowState.addRequest(newRequest);\n newRequest.Id = '';\n newRequest.Code = '';\n const response = await this.workflowService.saveWorkflows([newRequest]);\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.utilService.showSuccess('Workflows added successfully');\n // this.workflowState.updateRequest(newRequest);\n await this.loadRequests(); // Reload to get server-side changes\n } catch (error) {\n console.error('Failed to add request:', error);\n this.workflowState.removeRequest(request.Code!);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async updateRequest(request: Workflow): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const response = await this.workflowService.saveWorkflows([request]);\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.utilService.showSuccess('Workflows updated successfully');\n this.workflowState.updateRequest(request);\n } catch (error) {\n console.error('Failed to update request:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async deleteRequest(requestId: string): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n await lastValueFrom(this.workflowService.deleteWorkflows([requestId]));\n this.workflowState.removeRequest(requestId);\n } catch (error) {\n console.error('Failed to delete request:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async approveRequest(request: Workflow): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const response = await this.workflowService.processWorkflows(\n [request],\n true\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n // console.log(response);\n const data = (response as Workflow[])?.[0];\n if (data) {\n this.workflowState.updateRequest(data);\n }\n } catch (error) {\n console.error('Failed to update request:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n}\n\nenum DateFilterTypes {\n Before = SearchPropertySign.LT,\n On = SearchPropertySign.EQ,\n After = SearchPropertySign.GT,\n}\n","import { Component, EventEmitter, input, Input, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { CardData } from 'verben-ng-ui';\nimport { TaskAssignmentType } from 'verben-workflow-ui/src/lib/models';\nimport { Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\nimport { Status } from 'verben-workflow-ui/src/lib/models';\n\n@Component({\n selector: 'lib-workflow-form',\n templateUrl: './workflow-form.component.html',\n styleUrl: './workflow-form.component.css',\n})\nexport class WorkflowFormComponent {\n @Input() operations: WorkflowOperation[] = [];\n @Input()\n get currentData(): CardData | null {\n return this._currentData;\n }\n set currentData(value: CardData | null) {\n this._currentData = value;\n console.log(value?.data);\n if (value?.data) {\n this.form.patchValue({\n Name: value.data.Name || '',\n Description: value.data.Description || '',\n AssignmentType: value.data.AssignmentType || '',\n Service: value.data.Service || '',\n Operation: value.data.Operation || '',\n Status: value.data.Status || '',\n });\n } else {\n this.form.reset();\n }\n }\n private _currentData: CardData | null = null;\n designerUrl = input<string>('workflow');\n\n @Output() switchView = new EventEmitter<undefined>();\n @Output() onSave = new EventEmitter<Partial<Workflow>>();\n\n form: FormGroup;\n assignmentTypes = Object.values(TaskAssignmentType);\n statuses = Object.values(Status);\n\n // roles: WritableSignal<Role[]> = signal([]);\n\n constructor(private fb: FormBuilder) {\n this.form = this.fb.group({\n Name: ['', { validators: [Validators.required] }],\n Description: ['', { validators: [Validators.required] }],\n AssignmentType: ['', { validators: [Validators.required] }],\n Service: [''],\n Operation: [''],\n Status: ['', { validators: [Validators.required] }],\n });\n }\n\n ngOnInit(): void {\n // this.userAccessRequestFacade.getRoles$().subscribe((data) => {\n // this.roles.set(data);\n // });\n // try {\n // this.userAccessRequestFacade.loadRoles();\n // } catch (error) {\n // // Handle error\n // }\n console.log(this.currentData?.data);\n }\n\n handleSubmit(): void {\n if (this.form.valid) {\n // Emit save event with form value\n console.log('Form saved:', this.form.value);\n this.onSave.emit(this.form.value);\n }\n }\n\n onDelete(): void {\n // Emit delete event\n console.log('Delete requested');\n }\n\n disableProcessing(): boolean {\n return !this.form.valid;\n }\n}\n","<form\n [formGroup]=\"form\"\n class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n (ngSubmit)=\"handleSubmit()\"\n>\n <verbena-input\n name=\"Name\"\n label=\"Name\"\n formControlName=\"Name\"\n placeHolder=\"Enter Name\"\n />\n <verbena-input\n name=\"Description\"\n label=\"Description\"\n formControlName=\"Description\"\n placeHolder=\"Enter Description\"\n />\n\n <div class=\"space-y-1\">\n <label for=\"assignment\">Assignment</label>\n\n <verben-drop-down\n [showClear]=\"true\"\n label=\"Assignment\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"assignmentTypes\"\n id=\"assignment\"\n formControlName=\"AssignmentType\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <div class=\"space-y-1\">\n <label for=\"operation\">Operation</label>\n\n <verben-drop-down\n [showClear]=\"true\"\n label=\"Operation\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"operations\"\n optionLabel=\"Code\"\n optionValue=\"Code\"\n id=\"operation\"\n formControlName=\"Operation\"\n class=\"form-control\"\n [filter]=\"true\"\n [filterBy]=\"'Code'\"\n >\n </verben-drop-down>\n </div>\n\n <!-- <div class=\"space-y-1\">\n <label for=\"object\">Object</label>\n\n <verbena-input\n id=\"object\"\n formControlName=\"Operation\"\n placeHolder=\"Enter Object\"\n />\n </div> -->\n\n <div class=\"space-y-1\">\n <label for=\"status\">Status</label>\n\n <verben-drop-down\n label=\"Status\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [showClear]=\"true\"\n placeholder=\"Null\"\n [(options)]=\"statuses\"\n id=\"status\"\n formControlName=\"Status\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <!-- buttons -->\n <div class=\"flex justify-between gap-4 my-2\">\n <!-- <verbena-button\n width=\"114px\"\n height=\"39px\"\n text=\"Delete\"\n bgColor=\"#999999\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button> -->\n @if (currentData?.data?.Code) {\n <a [routerLink]=\"[designerUrl(), currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button text=\"Designer\" styleType=\"ylw-outline\"></verbena-button>\n </a>\n }\n <!-- <a [routerLink]=\"['/designer', currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Designer\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n </a> -->\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n class=\"ml-auto\"\n ></verbena-button>\n <verbena-button\n type=\"submit\"\n text=\"Save\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n </div>\n</form>\n","import {\n ChangeDetectorRef,\n Component,\n input,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { CardData, IDataFilter } from 'verben-ng-ui';\nimport { ObjectState, PermissionConfig, Status, TaskAssignmentType, Workflow, WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\nimport { BaseDataViewComponent, DataViewConfig } from 'verben-workflow-ui/src/lib/shared';\nimport { columns } from './workflows.columns';\nimport { WorkflowFacade } from './workflows.facade';\n\n@Component({\n selector: 'lib-workflows',\n templateUrl: './workflows.component.html',\n styleUrl: './workflows.component.css',\n})\nexport class WorkflowsComponent extends BaseDataViewComponent<Workflow> {\n designerUrl = input<string>('workflow');\n permissionConfig = input<PermissionConfig | null>(null);\n\n config: DataViewConfig<Workflow> = {\n dataSource: [],\n columns: columns,\n cardDataMapper: (task) => ({\n selected: false,\n title: task.Name,\n data: task,\n body: [\n { title: 'Name', value: task.Name },\n { title: 'Status', value: task.Status },\n { title: 'AssignmentType', value: task.AssignmentType },\n ],\n children: [],\n }),\n onDetailView: (task) => {\n // Custom detail view logic\n },\n };\n\n editForms: Map<number, FormGroup> = new Map();\n assignmentTypes = Object.values(TaskAssignmentType);\n statuses = Object.values(Status);\n operations: WritableSignal<WorkflowOperation[]> = signal([]);\n\n constructor(\n private cdr: ChangeDetectorRef,\n private facade: WorkflowFacade,\n private fb: FormBuilder\n ) {\n super();\n\n this.loadData = this.loadData.bind(this);\n\n this.facade.getRequests$().subscribe((data) => {\n this.data.set(data);\n });\n\n this.facade.getOperations$().subscribe((data) => {\n this.operations.set(data);\n });\n }\n\n generateFormGroup(data?: Partial<Workflow>) {\n console.log(data);\n const form = this.fb.group({\n // Name: [data?.Name ?? '', { validators: [Validators.required] }],\n Name: new FormControl(data?.Name ?? '', [Validators.required]),\n Description: new FormControl(data?.Description ?? '', [\n Validators.required,\n ]),\n AssignmentType: new FormControl(data?.AssignmentType ?? '', [\n Validators.required,\n ]),\n // Service: [data?.Service ?? ''],\n Operation: [data?.Operation ?? ''],\n Status: new FormControl(data?.Status ?? '', [Validators.required]),\n });\n // console.log(form.value);\n return form;\n }\n\n getFormControl(index: number, field: string) {\n const control = this.editForms.get(index)?.get(field) as FormControl<any>;\n // console.log(control);\n return control;\n }\n\n isRowValid(index: number): boolean {\n return this.editForms.get(index)?.valid || false;\n }\n\n override loadInitialData() {\n // this.userService.getRequests().subscribe(\n // tasks => this.data.set(tasks)\n // );\n // this.data.set(generateWorkflows(5));\n super.loadInitialData();\n // this.data = this.service.getMockUserRequests();\n\n // this.userAccessRequestFacade.getRoles$().subscribe((data) => {\n // this.roles.set(data);\n // });\n\n try {\n this.facade.loadRequests().then(() => {\n this.facade.loadOperations();\n });\n // this.userAccessRequestFacade.loadRoles();\n } catch (error) {\n // Handle error\n }\n }\n\n protected getCardDataByIdentifier(code: string): CardData | undefined {\n return this.cardData().find(({ data }) => data.data.Code === code);\n }\n\n loadMore() {\n this.facade.loadMore();\n }\n\n async onSave(data: Partial<Workflow>) {\n const payload = {\n ...this.currentData?.data,\n ...data,\n } as Workflow;\n if (payload.DataState === ObjectState.New) {\n console.log('Payload in new', payload);\n await this.facade.addRequest(payload);\n } else {\n console.log('Payload in update', payload);\n await this.facade.updateRequest({\n ...payload,\n DataState: ObjectState.Changed,\n });\n }\n }\n\n async commitRowChange(\n rowIndex: number,\n row: Workflow,\n postCommit?: () => void\n ) {\n const data = this.editForms.get(rowIndex)?.value as Partial<Workflow>;\n console.log();\n if (data) {\n const datum = {\n ...row,\n ...data,\n } as Workflow;\n if (datum.DataState === ObjectState.New) {\n this.facade.addRequest(datum).then(() => {\n postCommit?.();\n });\n } else {\n datum.DataState = ObjectState.Changed;\n this.facade.updateRequest(datum).then(() => {\n postCommit?.();\n });\n }\n }\n }\n\n onFilterSet(event: IDataFilter[]) {\n this.filterArray = event;\n this.config.filterOptions = event;\n this.facade.filter(event).then(() => {\n this.cdr.markForCheck();\n });\n }\n\n handleSearch(event: { key: string; value: string }) {\n this.facade.search(event.value);\n }\n\n override onStateChange(event: { key: string; value: boolean }): void {\n console.log(`State changed for ${event.key}:`, event.value);\n switch (event.key) {\n case 'create':\n const timestamp = new Date();\n var newForm: Workflow = {\n Name: '',\n Description: '',\n StageEntryRule: '',\n AssignmentType: TaskAssignmentType.AutoRoute,\n TenantId: '',\n ServiceName: '',\n id: crypto.randomUUID(),\n Id: '',\n CreatedAt: new Date(),\n UpdatedAt: new Date(),\n DataState: ObjectState.New,\n Code: '',\n Status: Status.Active,\n Actions: [],\n Lanes: [],\n Stages: [],\n };\n this.data.update((prev) => [newForm, ...prev]);\n // console.log(newForm);\n break;\n default:\n break;\n }\n }\n\n async loadData(range: { skip: number; limit: number }) {\n const data = await this.facade.loadDataForExport(range.skip, range.limit);\n return data ?? [];\n }\n}\n","<div class=\"space-y-8\">\n <verben-data-view #vdv [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: !!permissionConfig()?.Actions?.['Export'],\n isSelect: true,\n isCreate: !!permissionConfig()?.Actions?.['Create'],\n isToggle: true,\n }\" [buttonClass]=\"'my-custom-button-class'\" [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\" [selectedColumnCount]=\"selectedColumnCount\"\n [selectedSortCount]=\"selectedSortCount\" [selectedFilterTableCount]=\"selectedFilterTableCount\"\n (viewChange)=\"onViewChange($event)\" (stateChange)=\"onStateChange($event)\" (onSearchChange)=\"handleSearch($event)\">\n <div table-content>\n <lib-data-table [data]=\"data()\" [columns]=\"config.columns\" [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\">\n <ng-container libColumn=\"name\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <div class=\"width-max\">\n <verbena-input [formControl]=\"getFormControl(rowIndex, 'Name')\"></verbena-input>\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"description\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <div class=\"width-max\">\n <verbena-input [formControl]=\"getFormControl(rowIndex, 'Description')\"></verbena-input>\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"assignment-type\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <verben-drop-down styleClass=\"w-full\" width=\"100%\" [multiselect]=\"false\" placeholder=\"Select\"\n [options]=\"assignmentTypes\" [formControl]=\"getFormControl(rowIndex, 'AssignmentType')\"\n class=\"form-control\">\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"operation\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <!-- <verbena-input\n [formControl]=\"getFormControl(rowIndex, 'Operation')\"\n ></verbena-input> -->\n <verben-drop-down label=\"Operation\" styleClass=\"w-full\" width=\"100%\" [multiselect]=\"false\"\n placeholder=\"Select\" [options]=\"operations()\" optionLabel=\"Description\" optionValue=\"Description\"\n id=\"operation\" [formControl]=\"getFormControl(rowIndex, 'Operation')\" class=\"form-control\">\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"status\">\n <ng-template #cell let-value>\n <verbena-badge borderRadius=\"9px\" [bgColor]=\"value == 'Active' ? '#CAE1CC' : '#FFDFDF'\"\n [textColor]=\"value == 'Active' ? '#4ABB54' : '#EB5757'\" fontSize=\"12px\" [text]=\"value\"\n [pd]=\"'2px 6px'\"></verbena-badge>\n </ng-template>\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <verben-drop-down styleClass=\"w-full\" width=\"100%\" [multiselect]=\"false\" placeholder=\"Null\"\n [options]=\"statuses\" [formControl]=\"getFormControl(rowIndex, 'Status')\" class=\"form-control\">\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template #cell let-value let-deleteRow=\"deleteRow\" let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\" let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"flex gap-6\">\n <!-- @if (!!permissionConfig()?.Actions?.['Design']) { -->\n <verben-svg (click)=\"\n editForms.set(rowIndex, generateFormGroup(row));\n toggleRowEdit()\n \" icon=\"edit\" [width]=\"15\" [height]=\"15\" class=\"cursor-pointer\"></verben-svg>\n <!-- } -->\n\n <verben-svg icon=\"delete\" [width]=\"15\" [height]=\"15\" (click)=\"deleteRow()\"\n class=\"cursor-pointer\"></verben-svg>\n\n @if (!!permissionConfig()?.Actions?.['Design']) {\n <a [routerLink]=\"[designerUrl(), value]\">\n <verben-svg icon=\"designer\" [width]=\"15\" [height]=\"15\" class=\"cursor-pointer\"></verben-svg>\n </a>\n }\n </div>\n </ng-template>\n\n <ng-template #cellEdit let-value let-deleteRow=\"deleteRow\" let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\" let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"flex gap-6\">\n <verben-svg (click)=\"commitRowChange(rowIndex, row, toggleRowEdit)\" icon=\"tick\" [width]=\"15\" [height]=\"15\"\n class=\"cursor-pointer\"></verben-svg>\n\n <verben-svg icon=\"delete\" [width]=\"15\" [height]=\"15\" (click)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"></verben-svg>\n\n <verben-svg icon=\"cardViewAlt\" [width]=\"15\" [height]=\"15\" class=\"cursor-pointer\"\n (click)=\"goToCardView(value)\"></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n\n <div card-content>\n <verben-card-data-view borderRadius=\"12px\" (loadMoreClick)=\"loadMore()\" #vdcv dataId=\"Code\" border=\"5px\"\n [cardDataList]=\"cardData()\" rbgColor=\"#f5f6f9\" mg=\"20px\">\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data #vlcd [parent]=\"vdcv\" dataId=\"Code\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\" [cardDataList]=\"cardData()\">\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <div (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\">\n <div class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\" [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"></div>\n <div class=\"flex-1 flex justify-between gap-y-2 gap-x-4 p-4\">\n <div class=\"flex-1 flex flex-col justify-between space-y-2\">\n <span class=\"font-semibold text-[#404040] flex-1 truncate line-clamp-1\">{{ item.title }}</span>\n\n <span id=\"role\" class=\"text-sm line-clamp-1 truncate\">\n {{\n item.data?.Operation\n }}\n </span>\n\n <!-- <p class=\"flex items-center my-1\">\n <label for=\"phone\" class=\"text-[10px] font-light\"\n >Assignment:</label\n >\n <span id=\"phone\" class=\"text-sm truncate\">{{\n item.data.AssignmentType\n }}</span>\n </p> -->\n </div>\n\n <div class=\"grid gap-y-1 w-fit justify-items-end\">\n <!-- <p class=\"grid\">\n <span id=\"role\" class=\"text-sm font-medium line-clamp-1 truncate\">{{\n item.data?.Operation\n }}</span>\n </p> -->\n <span id=\"phone\" class=\"text-sm\">\n {{ item.data.AssignmentType }}\n </span>\n\n <div class=\"flex gap-4 items-center\">\n @if (!!permissionConfig()?.Actions?.['Design'] && item.data?.Code) {\n <a [routerLink]=\"[designerUrl(), item.data.Code]\">\n <verben-svg icon=\"designer\" [width]=\"15\" [height]=\"15\" class=\"cursor-pointer\"\n (click)=\"$event.stopPropagation()\"></verben-svg>\n </a>\n }\n\n <verbena-badge borderRadius=\"9px\" [bgColor]=\"\n item.data.Status == 'Active' ? '#CAE1CC' : '#FFDFDF'\n \" [textColor]=\"\n item.data.Status == 'Active' ? '#4ABB54' : '#EB5757'\n \" fontSize=\"12px\" [text]=\"item.data.Status\" [pd]=\"'2px 6px'\"></verbena-badge>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <lib-workflow-form [currentData]=\"currentData\" (switchView)=\"vdv.toggleView()\" (onSave)=\"onSave($event)\"\n [operations]=\"operations()\" [designerUrl]=\"designerUrl()\"></lib-workflow-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div class=\"flex gap-2 items-center justify-end\">\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n\n <div column-content>\n <!-- <verben-visible-column\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n [columns]=\"visibleColumns\"\n [displayedColumns]=\"5\"\n ></verben-visible-column> -->\n\n <lib-data-columns [columns]=\"config.columns\" (columnsUpdated)=\"onColumnsUpdated($event)\"></lib-data-columns>\n </div>\n <div filter-content>\n <verben-table-filter (filtersApplied)=\"onFilterSet($event)\" [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\" boxShadow=\"2px 2px 2px 0px silver\" bgColor=\"white\" width=\"420px\" textColor=\"black\" pd=\"1rem\"\n primaryColor=\"#FFE681\" secondaryColor=\"#3479E9\" tertiaryColor=\"#404040\" [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"></verben-table-filter>\n </div>\n <div sort-content>\n <!-- <verben-sort-table\n (selectedOptions)=\"onSortUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [enableDragAndDrop]=\"true\"\n [sortOptions]=\"sortOptions\"\n ></verben-sort-table> -->\n <lib-data-sort [columns]=\"config.columns\" [data]=\"data()\" (sortApplied)=\"onSortUpdated($event)\"></lib-data-sort>\n </div>\n <div export-content>\n <lib-data-xport [columns]=\"config.columns\" [data]=\"data()\" [dataQueryFunction]=\"loadData\">\n </lib-data-xport>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n <!-- <div class=\"message-log-button-container flex justify-between\">\n <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button>\n </div> -->\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WorkflowsComponent } from './workflows.component';\nimport { SharedModule } from 'verben-workflow-ui/src/lib/shared';\nimport { RouterLink } from '@angular/router';\nimport { WorkflowsService } from './workflows.service';\nimport { WorkflowFormComponent } from './workflow-form/workflow-form.component';\n\n@NgModule({\n declarations: [WorkflowsComponent, WorkflowFormComponent],\n imports: [CommonModule, SharedModule, RouterLink],\n exports: [WorkflowsComponent],\n})\nexport class WorkflowsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.WorkflowsService","i2.WorkflowsState","i3","i1","i2","i1.WorkflowFacade","i5","i6.WorkflowFormComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verben-workflow-ui-src-lib-components-workflows.mjs","sources":["../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.columns.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.helper.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.service.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.state.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.facade.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflow-form/workflow-form.component.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflow-form/workflow-form.component.html","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.component.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.component.html","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.module.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/verben-workflow-ui-src-lib-components-workflows.ts"],"sourcesContent":["import { ColumnDefinition } from 'verben-ng-ui';\nimport { Workflow } from 'verben-workflow-ui/src/lib/models';\n\nexport const columns: ColumnDefinition<Workflow>[] = [\n {\n id: 'name',\n header: 'Name',\n accessorKey: 'Name',\n },\n {\n id: 'description',\n header: 'Description',\n accessorKey: 'Description',\n },\n {\n id: 'assignment-type',\n header: 'Assignment Type',\n accessorKey: 'AssignmentType',\n },\n {\n id: 'operation',\n header: 'Operation',\n accessorKey: 'Operation',\n },\n {\n id: 'stage-entry-rule',\n header: 'StageEntryRule',\n accessorKey: 'StageEntryRule',\n },\n {\n id: 'status',\n header: 'Status',\n accessorKey: 'Status',\n },\n { id: 'actions', header: 'Actions', accessorKey: 'Code' },\n];\n","import { DataFilterType } from 'verben-ng-ui';\nimport { SearchPropertyValueType } from 'verben-workflow-ui/src/lib/models';\n\nexport function convertDataFilterTypeToSearchPropertyValueType(\n type: DataFilterType\n) {\n switch (type) {\n case DataFilterType.String:\n return SearchPropertyValueType.String;\n case DataFilterType.Integer:\n return SearchPropertyValueType.Int;\n case DataFilterType.Decimal:\n return SearchPropertyValueType.Decimal;\n case DataFilterType.Credit:\n return SearchPropertyValueType.Float;\n case DataFilterType.Date:\n return SearchPropertyValueType.Date;\n case DataFilterType.Bool:\n return SearchPropertyValueType.Bool;\n case DataFilterType.Number:\n return SearchPropertyValueType.Int;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ErrorResponse, FormEntity, Paged, SearchPropertyValue, Tag, Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { EnvironmentService, HttpWebRequestService } from 'verben-workflow-ui/src/lib/services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowsService {\n\n constructor(\n private httpService: HttpWebRequestService,\n private envSvc: EnvironmentService\n ) { }\n\n /**\n * Get user access requests with pagination and sorting\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the user access requests\n */\n getWorkflows(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Workflow> | ErrorResponse> {\n const url = `GetWorkflows/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(url) as Promise<Paged<Workflow> | ErrorResponse>;\n }\n\n /**\n * Get user access requests with additional parameter, pagination and sorting\n * @param param Search parameter\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the filtered user access requests\n */\n getWorkflowWithParam(\n param: string,\n skip: number = 0,\n limit: number = 1,\n sortParam: string = 'CreatedAt',\n sortOrder: string = 'Asc'\n ): Promise<Paged<Workflow> | ErrorResponse> {\n const url = `GetWorkflowsWithParam/${param}/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(url) as Promise<Paged<Workflow> | ErrorResponse>;\n }\n\n /**\n * Get user access requests with additional parameter, pagination and sorting\n * @param params Filter parameters\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the filtered user access requests\n */\n getWorkflowByFilterParams(\n params: SearchPropertyValue[],\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Workflow> | ErrorResponse> {\n const url = `SearchWorkflow/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.post(url, params) as Promise<Paged<Workflow> | ErrorResponse>;\n }\n\n /**\n * Save multiple user access requests\n * @param requests Array of user access requests to save\n * @returns Promise containing the save operation result\n */\n saveWorkflows(requests: Partial<Workflow>[]): Promise<any | ErrorResponse> {\n const url = `SaveWorkflows`;\n // const payload = requests.map((wf) => {\n // delete wf[\"Id\"];\n // wf.Actions = wf.Actions.map((ac) => {\n // delete ac[\"Id\"];\n // return ac;\n // })\n // return wf;\n // })\n return this.httpService.post(url, requests);\n }\n\n /**\n * Approve or reject multiple user access requests\n * @param requests Array of user access requests to save\n * @param isApproval True for approval, false for decline\n * @returns Promise containing the save operation result\n */\n processWorkflows(requests: Workflow[], isApproval: boolean): Promise<any | ErrorResponse> {\n const url = `WorkflowAction/${isApproval}`;\n return this.httpService.post(url, requests);\n }\n\n /**\n * Delete multiple user access requests\n * @param requestIds Array of request IDs to delete\n * @returns Observable containing the delete operation result\n */\n deleteWorkflows(requestIds: string[]): Observable<any | ErrorResponse> {\n const url = `DeleteWorkflows`;\n return this.httpService.delete(`${url}?data=${requestIds.join(',')}`);\n }\n\n /**\n * Get user access requests with pagination and sorting\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the user access requests\n */\n getForms(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<FormEntity> | ErrorResponse> {\n const url = `GetFormEntities/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(url) as Promise<Paged<FormEntity> | ErrorResponse>;\n }\n\n /**\n * Get user access requests with pagination and sorting\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the user access requests\n */\n getTags(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Tag> | ErrorResponse> {\n const url = `GetTags/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(\n url,\n this.envSvc.environment.AuthAPI\n ) as Promise<Paged<Tag> | ErrorResponse>;\n }\n\n getWorkflowOperations(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Tag> | ErrorResponse> {\n const url = `GetWorkflowOperations/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(url) as Promise<Paged<Tag> | ErrorResponse>;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IDataFilter } from 'verben-ng-ui';\nimport { QueryParams, SortDirection, Workflow, WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowsState {\n private updating$ = new BehaviorSubject<boolean>(false);\n private requests$ = new BehaviorSubject<Workflow[]>([]);\n private searchTerm$ = new BehaviorSubject<string>('');\n private queryParams$ = new BehaviorSubject<QueryParams<Workflow>>({\n skip: 0,\n limit: 20,\n sortParam: 'CreatedAt',\n sortOrder: SortDirection.Desc,\n });\n private filterParams$ = new BehaviorSubject<IDataFilter[]>([]);\n\n private operations$ = new BehaviorSubject<WorkflowOperation[]>([]);\n\n isUpdating$(): Observable<boolean> {\n return this.updating$.asObservable();\n }\n\n setUpdating(isUpdating: boolean): void {\n this.updating$.next(isUpdating);\n }\n\n getRequests$(): Observable<Workflow[]> {\n return this.requests$.asObservable();\n }\n\n setRequests(requests: Workflow[]): void {\n this.requests$.next(requests);\n }\n\n setOperations(operations: WorkflowOperation[]): void {\n this.operations$.next(operations);\n }\n\n getOperations$(): Observable<WorkflowOperation[]> {\n return this.operations$.asObservable();\n }\n\n getFilterParams$(): Observable<IDataFilter[]> {\n return this.filterParams$.asObservable();\n }\n\n setFilterParams(params: IDataFilter[]): void {\n this.filterParams$.next(params);\n }\n appendRequests(newRequests: Workflow[]): void {\n const currentRequests = this.requests$.getValue();\n this.requests$.next([...currentRequests, ...newRequests]);\n }\n\n getSearchTerm$(): Observable<string> {\n return this.searchTerm$.asObservable();\n }\n\n getSearchTermValue(): string {\n return this.searchTerm$.getValue();\n }\n\n setSearchTerm(term: string): void {\n this.searchTerm$.next(term);\n }\n\n getQueryParams$(): Observable<QueryParams<Workflow>> {\n return this.queryParams$.asObservable();\n }\n\n getQueryParamsValue(): QueryParams<Workflow> {\n return this.queryParams$.getValue();\n }\n\n updateQueryParams(params: Partial<QueryParams<Workflow>>): void {\n this.queryParams$.next({ ...this.queryParams$.getValue(), ...params });\n }\n\n resetPagination(): void {\n const currentParams = this.queryParams$.getValue();\n this.queryParams$.next({ ...currentParams, skip: 0 });\n }\n\n addRequest(request: Workflow): void {\n const currentValue = this.requests$.getValue();\n this.requests$.next([request, ...currentValue]);\n }\n\n updateRequest(updatedRequest: Workflow): void {\n const requests = this.requests$.getValue();\n const index = requests.findIndex((r) => r.Code === updatedRequest.Code);\n if (index !== -1) {\n requests[index] = updatedRequest;\n this.requests$.next([...requests]);\n }\n }\n\n removeRequest(requestId: string): void {\n const currentValue = this.requests$.getValue();\n this.requests$.next(currentValue.filter((r) => r.Code !== requestId));\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n Observable,\n Subject,\n debounceTime,\n distinctUntilChanged,\n lastValueFrom,\n takeUntil,\n} from 'rxjs';\n\nimport { IDataFilter } from 'verben-ng-ui';\nimport { ErrorResponse, QueryParams, SearchOperator, SearchPropertySign, SortDirection, Workflow, WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\nimport { UtilService } from 'verben-workflow-ui/src/lib/services';\nimport { convertDataFilterTypeToSearchPropertyValueType } from './workflows.helper';\nimport { WorkflowsService } from './workflows.service';\nimport { WorkflowsState } from './workflows.state';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowFacade {\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n constructor(\n private workflowService: WorkflowsService,\n private workflowState: WorkflowsState,\n private utilService: UtilService\n ) {\n // Set up debounced search handling\n this.searchSubject\n .pipe(\n debounceTime(1000),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n )\n .subscribe((searchTerm) => {\n this.handleSearch(searchTerm);\n });\n\n this.isUpdating$().subscribe((loading) => {\n this.utilService.sendBI(loading);\n });\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n isUpdating$(): Observable<boolean> {\n return this.workflowState.isUpdating$();\n }\n\n getRequests$(): Observable<Workflow[]> {\n return this.workflowState.getRequests$();\n }\n\n getOperations$(): Observable<WorkflowOperation[]> {\n return this.workflowState.getOperations$();\n }\n\n getFilterParams$(): Observable<IDataFilter[]> {\n return this.workflowState.getFilterParams$();\n }\n\n getQueryParams$(): Observable<QueryParams<Workflow>> {\n return this.workflowState.getQueryParams$();\n }\n\n getSearchTerm$(): Observable<string> {\n return this.workflowState.getSearchTerm$();\n }\n\n // Search handling\n search(term: string): void {\n this.searchSubject.next(term);\n }\n\n private async handleSearch(searchTerm: string): Promise<void> {\n this.workflowState.setSearchTerm(searchTerm);\n this.workflowState.resetPagination();\n\n try {\n this.workflowState.setUpdating(true);\n if (searchTerm.trim()) {\n await this.loadRequestsWithParam(searchTerm);\n } else {\n await this.loadRequests();\n }\n } catch (error) {\n console.error('Search failed:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async filter(filterParams: IDataFilter[]): Promise<void> {\n this.workflowState.resetPagination();\n this.workflowState.setFilterParams(filterParams);\n }\n\n // Load more handling\n async loadMore(): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const currentParams = this.workflowState.getQueryParamsValue();\n const searchTerm = this.workflowState.getSearchTermValue();\n\n // Compute new skip but fetch using the current skip first\n const newSkip = currentParams.skip + currentParams.limit;\n\n // Load and append data using the current (old) skip\n const response = searchTerm\n ? await this.workflowService.getWorkflowWithParam(\n searchTerm,\n currentParams.skip,\n currentParams.limit,\n currentParams.sortParam || 'createdDate',\n currentParams.sortOrder\n )\n : await this.workflowService.getWorkflows(\n currentParams.skip,\n currentParams.limit,\n currentParams.sortParam || 'createdDate',\n currentParams.sortOrder\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.workflowState.appendRequests(response.Result);\n // Update skip only after a successful fetch\n this.workflowState.updateQueryParams({ skip: newSkip });\n } catch (error) {\n console.error('Load more failed:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async loadData(\n skip: number,\n limit: number\n ): Promise<Workflow[] | void> {\n try {\n this.workflowState.setUpdating(true);\n const { sortParam, sortOrder } = this.workflowState.getQueryParamsValue();\n const searchTerm = this.workflowState.getSearchTermValue();\n\n // Load and append data\n const response = searchTerm\n ? await this.workflowService.getWorkflowWithParam(\n searchTerm,\n skip,\n limit,\n sortParam || 'createdDate',\n sortOrder\n )\n : await this.workflowService.getWorkflows(\n skip,\n limit,\n sortParam || 'createdDate',\n sortOrder\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n return response.Result;\n } catch (error) {\n console.error('Load more failed:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async loadRequests(): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const params = this.workflowState.getQueryParamsValue();\n\n const requests = await this.workflowService.getWorkflows(\n params.skip,\n params.limit,\n params.sortParam || 'CreatedDate',\n params.sortOrder\n );\n\n if (requests instanceof ErrorResponse) {\n this.utilService.showError(requests.ErrorMsg);\n return;\n }\n\n this.workflowState.setRequests(requests.Result);\n } catch (error) {\n console.error('Failed to load requests:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async loadOperations(): Promise<void> {\n try {\n const response = await this.workflowService.getWorkflowOperations(\n 0,\n 0,\n 'CreatedDate',\n SortDirection.Desc\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.workflowState.setOperations(response.Result);\n } catch (error) {\n console.error('Failed to load requests:', error);\n throw error;\n } finally {\n }\n }\n\n async loadRequestsWithParam(param: string): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const params = this.workflowState.getQueryParamsValue();\n\n const requests = await this.workflowService.getWorkflowWithParam(\n param,\n params.skip,\n params.limit,\n params.sortParam || 'createdDate',\n params.sortOrder\n );\n\n if (requests instanceof ErrorResponse) {\n this.utilService.showError(requests.ErrorMsg);\n return;\n }\n\n this.workflowState.setRequests(requests.Result);\n } catch (error) {\n console.error('Failed to load requests with param:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async loadRequestsByFilterParams(filterParams: IDataFilter[]): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const params = this.workflowState.getQueryParamsValue();\n\n const requests = await this.workflowService.getWorkflowByFilterParams(\n filterParams.map((filter) => ({\n PropertyName: filter.name,\n EntityValue: filter.value,\n type: convertDataFilterTypeToSearchPropertyValueType(filter.type),\n Operator: SearchOperator.And,\n Sign: SearchPropertySign.EQ,\n })),\n params.skip,\n params.limit,\n params.sortParam || 'createdDate',\n params.sortOrder\n );\n\n if (requests instanceof ErrorResponse) {\n this.utilService.showError(requests.ErrorMsg);\n return;\n }\n\n this.workflowState.setRequests(requests.Result);\n } catch (error) {\n console.error('Failed to load requests with param:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n updateQueryParams(params: Partial<QueryParams<Workflow>>): void {\n this.workflowState.updateQueryParams(params);\n }\n\n async addRequest(request: Partial<Workflow>): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const newRequest = { ...request } as Workflow;\n newRequest.Id = '';\n newRequest.Code = '';\n const response = await this.workflowService.saveWorkflows([newRequest]);\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.utilService.showSuccess('Workflows added successfully');\n this.workflowState.resetPagination();\n await this.loadRequests(); // Reload to get server-side changes\n } catch (error) {\n console.error('Failed to add request:', error);\n this.workflowState.removeRequest(request.Code!);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async updateRequest(request: Workflow): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const response = await this.workflowService.saveWorkflows([request]);\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.utilService.showSuccess('Workflows updated successfully');\n this.workflowState.updateRequest(request);\n } catch (error) {\n console.error('Failed to update request:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async deleteRequest(requestId: string): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n await lastValueFrom(this.workflowService.deleteWorkflows([requestId]));\n this.workflowState.removeRequest(requestId);\n } catch (error) {\n console.error('Failed to delete request:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async approveRequest(request: Workflow): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const response = await this.workflowService.processWorkflows(\n [request],\n true\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n // console.log(response);\n const data = (response as Workflow[])?.[0];\n if (data) {\n this.workflowState.updateRequest(data);\n }\n } catch (error) {\n console.error('Failed to update request:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n}\n\nenum DateFilterTypes {\n Before = SearchPropertySign.LT,\n On = SearchPropertySign.EQ,\n After = SearchPropertySign.GT,\n}\n","import { Component, EventEmitter, input, Input, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { CardData } from 'verben-ng-ui';\nimport { TaskAssignmentType } from 'verben-workflow-ui/src/lib/models';\nimport { Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\nimport { Status } from 'verben-workflow-ui/src/lib/models';\n\n@Component({\n selector: 'lib-workflow-form',\n templateUrl: './workflow-form.component.html',\n styleUrl: './workflow-form.component.css',\n})\nexport class WorkflowFormComponent {\n @Input() operations: WorkflowOperation[] = [];\n @Input()\n get currentData(): CardData | null {\n return this._currentData;\n }\n set currentData(value: CardData | null) {\n this._currentData = value;\n console.log(value?.data);\n if (value?.data) {\n this.form.patchValue({\n Name: value.data.Name || '',\n Description: value.data.Description || '',\n AssignmentType: value.data.AssignmentType || '',\n Service: value.data.Service || '',\n Operation: value.data.Operation || '',\n Status: value.data.Status || '',\n });\n } else {\n this.form.reset();\n }\n }\n private _currentData: CardData | null = null;\n designerUrl = input<string>('workflow');\n\n @Output() switchView = new EventEmitter<undefined>();\n @Output() onSave = new EventEmitter<Partial<Workflow>>();\n\n form: FormGroup;\n assignmentTypes = Object.values(TaskAssignmentType);\n statuses = Object.values(Status);\n\n // roles: WritableSignal<Role[]> = signal([]);\n\n constructor(private fb: FormBuilder) {\n this.form = this.fb.group({\n Name: ['', { validators: [Validators.required] }],\n Description: ['', { validators: [Validators.required] }],\n AssignmentType: ['', { validators: [Validators.required] }],\n Service: [''],\n Operation: [''],\n Status: ['', { validators: [Validators.required] }],\n });\n }\n\n ngOnInit(): void {\n // this.userAccessRequestFacade.getRoles$().subscribe((data) => {\n // this.roles.set(data);\n // });\n // try {\n // this.userAccessRequestFacade.loadRoles();\n // } catch (error) {\n // // Handle error\n // }\n console.log(this.currentData?.data);\n }\n\n handleSubmit(): void {\n if (this.form.valid) {\n // Emit save event with form value\n console.log('Form saved:', this.form.value);\n this.onSave.emit(this.form.value);\n }\n }\n\n onDelete(): void {\n // Emit delete event\n console.log('Delete requested');\n }\n\n disableProcessing(): boolean {\n return !this.form.valid;\n }\n}\n","<form\n [formGroup]=\"form\"\n class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n (ngSubmit)=\"handleSubmit()\"\n>\n <verbena-input\n name=\"Name\"\n label=\"Name\"\n formControlName=\"Name\"\n placeHolder=\"Enter Name\"\n />\n <verbena-input\n name=\"Description\"\n label=\"Description\"\n formControlName=\"Description\"\n placeHolder=\"Enter Description\"\n />\n\n <div class=\"space-y-1\">\n <label for=\"assignment\">Assignment</label>\n\n <verben-drop-down\n [showClear]=\"true\"\n label=\"Assignment\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"assignmentTypes\"\n id=\"assignment\"\n formControlName=\"AssignmentType\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <div class=\"space-y-1\">\n <label for=\"operation\">Operation</label>\n\n <verben-drop-down\n [showClear]=\"true\"\n label=\"Operation\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"operations\"\n optionLabel=\"Code\"\n optionValue=\"Code\"\n id=\"operation\"\n formControlName=\"Operation\"\n class=\"form-control\"\n [filter]=\"true\"\n [filterBy]=\"'Code'\"\n >\n </verben-drop-down>\n </div>\n\n <!-- <div class=\"space-y-1\">\n <label for=\"object\">Object</label>\n\n <verbena-input\n id=\"object\"\n formControlName=\"Operation\"\n placeHolder=\"Enter Object\"\n />\n </div> -->\n\n <div class=\"space-y-1\">\n <label for=\"status\">Status</label>\n\n <verben-drop-down\n label=\"Status\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [showClear]=\"true\"\n placeholder=\"Null\"\n [(options)]=\"statuses\"\n id=\"status\"\n formControlName=\"Status\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <!-- buttons -->\n <div class=\"flex justify-between gap-4 my-2\">\n <!-- <verbena-button\n width=\"114px\"\n height=\"39px\"\n text=\"Delete\"\n bgColor=\"#999999\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button> -->\n @if (currentData?.data?.Code) {\n <a [routerLink]=\"[designerUrl(), currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button text=\"Designer\" styleType=\"ylw-outline\"></verbena-button>\n </a>\n }\n <!-- <a [routerLink]=\"['/designer', currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Designer\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n </a> -->\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n class=\"ml-auto\"\n ></verbena-button>\n <verbena-button\n type=\"submit\"\n text=\"Save\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n </div>\n</form>\n","import {\n ChangeDetectorRef,\n Component,\n input,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { CardData, IDataFilter } from 'verben-ng-ui';\nimport { ObjectState, PermissionConfig, Status, TaskAssignmentType, Workflow, WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\nimport { BaseDataViewComponent, DataViewConfig } from 'verben-workflow-ui/src/lib/shared';\nimport { columns } from './workflows.columns';\nimport { WorkflowFacade } from './workflows.facade';\n\n@Component({\n selector: 'lib-workflows',\n templateUrl: './workflows.component.html',\n styleUrl: './workflows.component.css',\n})\nexport class WorkflowsComponent extends BaseDataViewComponent<Workflow> {\n designerUrl = input<string>('workflow');\n permissionConfig = input<PermissionConfig | null>(null);\n\n config: DataViewConfig<Workflow> = {\n dataSource: [],\n columns: columns,\n cardDataMapper: (task) => ({\n selected: false,\n title: task.Name,\n data: task,\n body: [\n { title: 'Name', value: task.Name },\n { title: 'Status', value: task.Status },\n { title: 'AssignmentType', value: task.AssignmentType },\n ],\n children: [],\n }),\n onDetailView: (task) => {\n // Custom detail view logic\n },\n };\n\n editForms: Map<number, FormGroup> = new Map();\n assignmentTypes = Object.values(TaskAssignmentType);\n statuses = Object.values(Status);\n operations: WritableSignal<WorkflowOperation[]> = signal([]);\n\n constructor(\n private cdr: ChangeDetectorRef,\n private facade: WorkflowFacade,\n private fb: FormBuilder\n ) {\n super();\n\n this.loadData = this.loadData.bind(this);\n\n this.facade.getRequests$().subscribe((data) => {\n this.data.set(data);\n });\n\n this.facade.getOperations$().subscribe((data) => {\n this.operations.set(data);\n });\n }\n\n generateFormGroup(data?: Partial<Workflow>) {\n console.log(data);\n const form = this.fb.group({\n // Name: [data?.Name ?? '', { validators: [Validators.required] }],\n Name: new FormControl(data?.Name ?? '', [Validators.required]),\n Description: new FormControl(data?.Description ?? '', [\n Validators.required,\n ]),\n AssignmentType: new FormControl(data?.AssignmentType ?? '', [\n Validators.required,\n ]),\n // Service: [data?.Service ?? ''],\n Operation: [data?.Operation ?? ''],\n Status: new FormControl(data?.Status ?? '', [Validators.required]),\n });\n // console.log(form.value);\n return form;\n }\n\n getFormControl(index: number, field: string) {\n const control = this.editForms.get(index)?.get(field) as FormControl<any>;\n // console.log(control);\n return control;\n }\n\n isRowValid(index: number): boolean {\n return this.editForms.get(index)?.valid || false;\n }\n\n override loadInitialData() {\n try {\n this.facade.loadRequests().then(() => {\n this.facade.loadOperations();\n });\n } catch (error) {\n // Handle error\n }\n }\n\n protected getCardDataByIdentifier(code: string): CardData | undefined {\n return this.cardData().find(({ data }) => data.data.Code === code);\n }\n\n loadMore() {\n this.facade.loadMore();\n }\n\n async onSave(data: Partial<Workflow>) {\n const payload = {\n ...this.currentData?.data,\n ...data,\n } as Workflow;\n if (payload.DataState === ObjectState.New) {\n await this.facade.addRequest(payload);\n } else {\n await this.facade.updateRequest({\n ...payload,\n DataState: ObjectState.Changed,\n });\n }\n }\n\n async commitRowChange(\n rowIndex: number,\n row: Workflow,\n postCommit?: () => void\n ) {\n const data = this.editForms.get(rowIndex)?.value as Partial<Workflow>;\n if (data) {\n const datum = {\n ...row,\n ...data,\n } as Workflow;\n if (datum.DataState === ObjectState.New) {\n this.facade.addRequest(datum).then(() => {\n postCommit?.();\n });\n } else {\n datum.DataState = ObjectState.Changed;\n this.facade.updateRequest(datum).then(() => {\n postCommit?.();\n });\n }\n }\n }\n\n onFilterSet(event: IDataFilter[]) {\n this.filterArray = event;\n this.config.filterOptions = event;\n this.facade.filter(event).then(() => {\n this.cdr.markForCheck();\n });\n }\n\n handleSearch(event: { key: string; value: string }) {\n this.facade.search(event.value);\n }\n\n override onStateChange(event: { key: string; value: boolean }): void {\n switch (event.key) {\n case 'create':\n const timestamp = new Date();\n var newForm: Workflow = {\n Name: '',\n Description: '',\n StageEntryRule: '',\n AssignmentType: TaskAssignmentType.AutoRoute,\n TenantId: '',\n ServiceName: '',\n id: crypto.randomUUID(),\n Id: '',\n CreatedAt: new Date(),\n UpdatedAt: new Date(),\n DataState: ObjectState.New,\n Code: '',\n Status: Status.Active,\n Actions: [],\n Lanes: [],\n Stages: [],\n };\n this.data.update((prev) => [newForm, ...prev]);\n // console.log(newForm);\n break;\n default:\n break;\n }\n }\n\n async loadData(range: { skip: number; limit: number }) {\n const data = await this.facade.loadData(range.skip, range.limit);\n return data ?? [];\n }\n}\n","<div class=\"space-y-8\">\n <verben-data-view #vdv [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: !!permissionConfig()?.Actions?.['Export'],\n isSelect: true,\n isCreate: !!permissionConfig()?.Actions?.['Create'],\n isToggle: true,\n }\" [buttonClass]=\"'my-custom-button-class'\" [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\" [selectedColumnCount]=\"selectedColumnCount\"\n [selectedSortCount]=\"selectedSortCount\" [selectedFilterTableCount]=\"selectedFilterTableCount\"\n (viewChange)=\"onViewChange($event)\" (stateChange)=\"onStateChange($event)\" (onSearchChange)=\"handleSearch($event)\">\n <div table-content>\n <lib-data-table [data]=\"data()\" [columns]=\"config.columns\" [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\">\n <ng-container libColumn=\"name\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <div class=\"width-max\">\n <verbena-input [formControl]=\"getFormControl(rowIndex, 'Name')\"></verbena-input>\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"description\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <div class=\"width-max\">\n <verbena-input [formControl]=\"getFormControl(rowIndex, 'Description')\"></verbena-input>\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"assignment-type\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <verben-drop-down styleClass=\"w-full\" width=\"100%\" [multiselect]=\"false\" placeholder=\"Select\"\n [options]=\"assignmentTypes\" [formControl]=\"getFormControl(rowIndex, 'AssignmentType')\"\n class=\"form-control\">\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"operation\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <!-- <verbena-input\n [formControl]=\"getFormControl(rowIndex, 'Operation')\"\n ></verbena-input> -->\n <verben-drop-down label=\"Operation\" styleClass=\"w-full\" width=\"100%\" [multiselect]=\"false\"\n placeholder=\"Select\" [options]=\"operations()\" optionLabel=\"Description\" optionValue=\"Description\"\n id=\"operation\" [formControl]=\"getFormControl(rowIndex, 'Operation')\" class=\"form-control\">\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"status\">\n <ng-template #cell let-value>\n <verbena-badge borderRadius=\"9px\" [bgColor]=\"value == 'Active' ? '#CAE1CC' : '#FFDFDF'\"\n [textColor]=\"value == 'Active' ? '#4ABB54' : '#EB5757'\" fontSize=\"12px\" [text]=\"value\"\n [pd]=\"'2px 6px'\"></verbena-badge>\n </ng-template>\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <verben-drop-down styleClass=\"w-full\" width=\"100%\" [multiselect]=\"false\" placeholder=\"Null\"\n [options]=\"statuses\" [formControl]=\"getFormControl(rowIndex, 'Status')\" class=\"form-control\">\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template #cell let-value let-deleteRow=\"deleteRow\" let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\" let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"flex gap-6\">\n <!-- @if (!!permissionConfig()?.Actions?.['Design']) { -->\n <verben-svg (click)=\"\n editForms.set(rowIndex, generateFormGroup(row));\n toggleRowEdit()\n \" icon=\"edit\" [width]=\"15\" [height]=\"15\" class=\"cursor-pointer\"></verben-svg>\n <!-- } -->\n\n <verben-svg icon=\"delete\" [width]=\"15\" [height]=\"15\" (click)=\"deleteRow()\"\n class=\"cursor-pointer\"></verben-svg>\n\n @if (!!permissionConfig()?.Actions?.['Design']) {\n <a [routerLink]=\"[designerUrl(), value]\">\n <verben-svg icon=\"designer\" [width]=\"15\" [height]=\"15\" class=\"cursor-pointer\"></verben-svg>\n </a>\n }\n </div>\n </ng-template>\n\n <ng-template #cellEdit let-value let-deleteRow=\"deleteRow\" let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\" let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"flex gap-6\">\n <verben-svg (click)=\"commitRowChange(rowIndex, row, toggleRowEdit)\" icon=\"tick\" [width]=\"15\" [height]=\"15\"\n class=\"cursor-pointer\"></verben-svg>\n\n <verben-svg icon=\"delete\" [width]=\"15\" [height]=\"15\" (click)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"></verben-svg>\n\n <verben-svg icon=\"cardViewAlt\" [width]=\"15\" [height]=\"15\" class=\"cursor-pointer\"\n (click)=\"goToCardView(value)\"></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n\n <div card-content>\n <verben-card-data-view borderRadius=\"12px\" (loadMoreClick)=\"loadMore()\" #vdcv dataId=\"Code\" border=\"5px\"\n [cardDataList]=\"cardData()\" rbgColor=\"#f5f6f9\" mg=\"20px\">\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data #vlcd [parent]=\"vdcv\" dataId=\"Code\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\" [cardDataList]=\"cardData()\">\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <div (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\">\n <div class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\" [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"></div>\n <div class=\"flex-1 flex justify-between gap-y-2 gap-x-4 p-4\">\n <div class=\"flex-1 flex flex-col justify-between space-y-2\">\n <span class=\"font-semibold text-[#404040] flex-1 truncate line-clamp-1\">{{ item.title }}</span>\n\n <span id=\"role\" class=\"text-sm line-clamp-1 truncate\">\n {{\n item.data?.Operation\n }}\n </span>\n\n <!-- <p class=\"flex items-center my-1\">\n <label for=\"phone\" class=\"text-[10px] font-light\"\n >Assignment:</label\n >\n <span id=\"phone\" class=\"text-sm truncate\">{{\n item.data.AssignmentType\n }}</span>\n </p> -->\n </div>\n\n <div class=\"grid gap-y-1 w-fit justify-items-end\">\n <!-- <p class=\"grid\">\n <span id=\"role\" class=\"text-sm font-medium line-clamp-1 truncate\">{{\n item.data?.Operation\n }}</span>\n </p> -->\n <span id=\"phone\" class=\"text-sm\">\n {{ item.data.AssignmentType }}\n </span>\n\n <div class=\"flex gap-4 items-center\">\n @if (!!permissionConfig()?.Actions?.['Design'] && item.data?.Code) {\n <a [routerLink]=\"[designerUrl(), item.data.Code]\">\n <verben-svg icon=\"designer\" [width]=\"15\" [height]=\"15\" class=\"cursor-pointer\"\n (click)=\"$event.stopPropagation()\"></verben-svg>\n </a>\n }\n\n <verbena-badge borderRadius=\"9px\" [bgColor]=\"\n item.data.Status == 'Active' ? '#CAE1CC' : '#FFDFDF'\n \" [textColor]=\"\n item.data.Status == 'Active' ? '#4ABB54' : '#EB5757'\n \" fontSize=\"12px\" [text]=\"item.data.Status\" [pd]=\"'2px 6px'\"></verbena-badge>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <lib-workflow-form [currentData]=\"currentData\" (switchView)=\"vdv.toggleView()\" (onSave)=\"onSave($event)\"\n [operations]=\"operations()\" [designerUrl]=\"designerUrl()\"></lib-workflow-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div class=\"flex gap-2 items-center justify-end\">\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n\n <div column-content>\n <!-- <verben-visible-column\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n [columns]=\"visibleColumns\"\n [displayedColumns]=\"5\"\n ></verben-visible-column> -->\n\n <lib-data-columns [columns]=\"config.columns\" (columnsUpdated)=\"onColumnsUpdated($event)\"></lib-data-columns>\n </div>\n <div filter-content>\n <verben-table-filter (filtersApplied)=\"onFilterSet($event)\" [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\" boxShadow=\"2px 2px 2px 0px silver\" bgColor=\"white\" width=\"420px\" textColor=\"black\" pd=\"1rem\"\n primaryColor=\"#FFE681\" secondaryColor=\"#3479E9\" tertiaryColor=\"#404040\" [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"></verben-table-filter>\n </div>\n <div sort-content>\n <!-- <verben-sort-table\n (selectedOptions)=\"onSortUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [enableDragAndDrop]=\"true\"\n [sortOptions]=\"sortOptions\"\n ></verben-sort-table> -->\n <lib-data-sort [columns]=\"config.columns\" [data]=\"data()\" (sortApplied)=\"onSortUpdated($event)\"></lib-data-sort>\n </div>\n <div export-content>\n <lib-data-xport [columns]=\"config.columns\" [data]=\"data()\" [dataQueryFunction]=\"loadData\">\n </lib-data-xport>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n <!-- <div class=\"message-log-button-container flex justify-between\">\n <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button>\n </div> -->\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WorkflowsComponent } from './workflows.component';\nimport { SharedModule } from 'verben-workflow-ui/src/lib/shared';\nimport { RouterLink } from '@angular/router';\nimport { WorkflowsService } from './workflows.service';\nimport { WorkflowFormComponent } from './workflow-form/workflow-form.component';\n\n@NgModule({\n declarations: [WorkflowsComponent, WorkflowFormComponent],\n imports: [CommonModule, SharedModule, RouterLink],\n exports: [WorkflowsComponent],\n})\nexport class WorkflowsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.WorkflowsService","i2.WorkflowsState","i3","i1","i2","i1.WorkflowFacade","i5","i6.WorkflowFormComponent"],"mappings":"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"}
|