@unifylib/ui-lib 1.1.14 → 1.1.16

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.
@@ -1 +1 @@
1
- {"version":3,"file":"unifylib-ui-lib.mjs","sources":["../../../../projects/invoiceq/ui-lib/src/lib/components/action-confirmation/action-confirmation.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/action-confirmation/action-confirmation.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/action-comment/action-comment.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/action-comment/action-comment.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/button-actions/button-actions.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/button-actions/button-actions.component.html","../../../../projects/invoiceq/ui-lib/src/lib/base-model/button-action-settings.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/table-column.interface.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/field-info.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/page-info.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/report-request.model.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/filter-request.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/filter.model.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/lookupItem.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/snack-message.model.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/table-page-user-action.interface.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/do-action-request.ts","../../../../projects/invoiceq/ui-lib/src/lib/utils/base-utils.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/response-envelop.model.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/title-bar/title-bar.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/title-bar/title-bar.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/paginator/paginator.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/paginator/paginator.component.html","../../../../projects/invoiceq/ui-lib/src/lib/validators/match-list.validator.ts","../../../../projects/invoiceq/ui-lib/src/lib/validators/multi-email-validator.ts","../../../../projects/invoiceq/ui-lib/src/lib/validators/date-range-validator.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/column-def.model.ts","../../../../projects/invoiceq/ui-lib/src/lib/services/top-panel.ts","../../../../projects/invoiceq/ui-lib/src/lib/services/backend-service.ts","../../../../projects/invoiceq/ui-lib/src/lib/services/trigger-form.service.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/multi-auto-complete/multi-auto-complete.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/multi-auto-complete/multi-auto-complete.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/auto-complete/auto-complete.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/auto-complete/auto-complete.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/base-form-canvas/base-form-canvas.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/base-form-canvas/base-form-canvas.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/advanced-filter/field-filter/field-filter.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/advanced-filter/field-filter/field-filter.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/advanced-filter/filter-builder/filter-builder.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/advanced-filter/filter-builder/filter-builder.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/base-table/base-table.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/base-table/base-table.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/audit-log-list/audit-log.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/audit-log-list/audit-log.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/shared/attachment-uploader/attachment-uploader.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/shared/attachment-uploader/attachment-uploader.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/equation-builder/equation-builder.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/equation-builder/equation-builder.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/editable-base-table/editable-base-table.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/editable-base-table/editable-base-table.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/shared-list/shared-list.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/shared-list/shared-list.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/base-form/base-form.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/base-form/base-form.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/section-form-canvas/section-form-canvas.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/section-form-canvas/section-form-canvas.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/report-details-dialog/report-details-dialog.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/report-details-dialog/report-details-dialog.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/report-form/report-form.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/report-form/report-form.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/activity-report-form/activity-report-form.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/activity-report-form/activity-report-form.component.html","../../../../projects/invoiceq/ui-lib/src/lib/base-model/line-item.model.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/items-total.model.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/base-input-dialog/base-input-dialog.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/base-input-dialog/base-input-dialog.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/search-bar/search-bar.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/search-bar/search-bar.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/snackbar-static/snackbar-static.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/snackbar-static/snackbar-static.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/shared/action-button/action-button.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/shared/action-button/action-button.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/shared/action-card/action-card.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/shared/action-card/action-card.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/item-line-editor/item-line-editor.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/item-line-editor/item-line-editor.component.html","../../../../projects/invoiceq/ui-lib/src/public-api.ts","../../../../projects/invoiceq/ui-lib/src/unifylib-ui-lib.ts"],"sourcesContent":["import {Component, HostBinding, HostListener, Inject, Input, OnInit} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {\r\n MAT_DIALOG_DATA,\r\n MatDialogActions,\r\n MatDialogContent,\r\n MatDialogRef,\r\n MatDialogTitle\r\n} from \"@angular/material/dialog\";\r\nimport {MatFormField} from \"@angular/material/form-field\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {MatButton, MatIconButton} from \"@angular/material/button\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\n\r\nexport interface IconConfig {\r\n name: string;\r\n color: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-action-confirmation',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n MatButton,\r\n MatIconButton,\r\n MatIcon\r\n ],\r\n templateUrl: './action-confirmation.component.html',\r\n styleUrl: './action-confirmation.component.css'\r\n})\r\nexport class ActionConfirmationComponent implements OnInit {\r\n @Input() icon: IconConfig = { name: 'check_circle', color: '#0d7d6a' };\r\n acceptActionLabel : string =''\r\n rejectActionLabel : string =''\r\n subMsg : string = '';\r\n titleMsg : string = '';\r\n listTitle: string = '';\r\n listMessages: string[] = [];\r\n extraWarningMsg: string = '';\r\n currentDirection: 'ltr' | 'rtl' = 'ltr';\r\n constructor(public dialogRef: MatDialogRef<ActionConfirmationComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n dialogRef.disableClose = true;\r\n }\r\n @HostListener('window:keyup.esc') onKeyUp() {\r\n this.dialogRef.close();\r\n }\r\n ngOnInit(): void {\r\n this.acceptActionLabel = this.data.acceptActionLabel || 'accept' ;\r\n this.rejectActionLabel = this.data.rejectActionLabel || 'reject';\r\n this.subMsg = this.data.warningMsg || '';\r\n this.titleMsg = this.data.confirmMsg || '';\r\n this.listTitle = this.data.listTitle || '';\r\n this.listMessages = this.data.listMessages || [];\r\n this.extraWarningMsg = this.data.extraWarningMsg || '';\r\n this.currentDirection = this.data.direction;\r\n this.icon = this.data.icon || { name: 'check_circle', color: '#0d7d6a' };\r\n }\r\n\r\n\r\n commentAndClose() {\r\n this.dialogRef.close('accept');\r\n\r\n return \"\";\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","<div class=\"confirm-dialog\" [dir]=\"currentDirection\">\r\n\r\n <div class=\"header-section\">\r\n <div class=\"header-row\">\r\n <div class=\"icon-container\">\r\n <mat-icon class=\"check-icon\" [style.color]=\"icon.color\">{{ icon.name }}</mat-icon>\r\n </div>\r\n <button mat-icon-button class=\"close-btn\" (click)=\"cancel()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n <div class=\"title-container\">\r\n <h2 class=\"title\">{{ titleMsg | translate }}</h2>\r\n </div>\r\n </div>\r\n\r\n <div class=\"message-container\">\r\n <p class=\"message\" *ngIf=\"subMsg\">\r\n {{ subMsg | translate }}\r\n </p>\r\n\r\n <div class=\"list-section\" *ngIf=\"listTitle || listMessages.length > 0\">\r\n <p class=\"list-title\" *ngIf=\"listTitle\"><strong>{{ listTitle | translate }}</strong></p>\r\n <ul class=\"list-messages\" *ngIf=\"listMessages.length > 0\">\r\n <li *ngFor=\"let message of listMessages\" class=\"list-item\">\r\n {{ message | translate }}\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <p class=\"extra-warning\" *ngIf=\"extraWarningMsg\">\r\n {{ extraWarningMsg | translate }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <button\r\n mat-stroked-button\r\n class=\"btn-cancel\"\r\n (click)=\"cancel()\"\r\n id=\"rejectActionLabel\">\r\n {{ rejectActionLabel | translate }}\r\n </button>\r\n\r\n <button\r\n mat-flat-button\r\n class=\"btn-confirm\"\r\n (click)=\"commentAndClose()\"\r\n id=\"acceptActionLabel\">\r\n {{ acceptActionLabel | translate }}\r\n </button>\r\n </div>\r\n\r\n</div>\r\n","import {Component, HostListener, Inject, Input, OnInit} from '@angular/core';\r\nimport {\r\n MAT_DIALOG_DATA,\r\n MatDialogActions,\r\n MatDialogContent,\r\n MatDialogRef,\r\n MatDialogTitle\r\n} from \"@angular/material/dialog\";\r\nimport {MatFormField} from \"@angular/material/form-field\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {CdkTextareaAutosize} from \"@angular/cdk/text-field\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {MatButton} from \"@angular/material/button\";\r\nimport {MatInput} from \"@angular/material/input\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\n\r\n@Component({\r\n selector: 'app-action-comment',\r\n standalone: true,\r\n imports: [\r\n MatDialogTitle,\r\n MatFormField,\r\n MatDialogContent,\r\n FormsModule,\r\n CdkTextareaAutosize,\r\n TranslateModule,\r\n MatDialogActions,\r\n MatButton,\r\n MatInput,\r\n MatIcon\r\n ],\r\n templateUrl: './action-comment.component.html',\r\n styleUrl: './action-comment.component.css'\r\n})\r\nexport class ActionCommentComponent implements OnInit {\r\n itemName: string = '';\r\n titleKey: string = '';\r\n subtitleKey: string = '';\r\n reasonLabelKey: string = '';\r\n placeholderKey: string = '';\r\n warningKey: string = '';\r\n cancelKey: string = '';\r\n actionKey: string = '';\r\n currentDirection: 'ltr' | 'rtl' = 'ltr';\r\n\r\n actionLabel : string =''\r\n isTermination : boolean=false;\r\n comment: string = '';\r\n external: boolean = false;\r\n signingRequired: boolean = false;\r\n tokenReference: string = \"\";\r\n otp: string = \"\";\r\n isSubmitted: boolean = false;\r\n warningMsg = false;\r\n\r\n constructor(public dialogRef: MatDialogRef<ActionCommentComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n dialogRef.disableClose = true;\r\n }\r\n @HostListener('window:keyup.esc') onKeyUp() {\r\n this.dialogRef.close();\r\n }\r\n ngOnInit(): void {\r\n this.actionLabel = this.data.label;\r\n this.isTermination = this.data.isTermination ;\r\n this.signingRequired = this.data.signingRequired;\r\n this.tokenReference = this.data.tokenReference;\r\n this.warningMsg = this.data.warningMsg || false;\r\n\r\n this.itemName = this.data.deviceName;\r\n this.titleKey = this.data.titleKey;\r\n this.subtitleKey = this.data.subtitleKey;\r\n this.reasonLabelKey = this.data.reasonLabelKey;\r\n this.placeholderKey = this.data.placeholderKey;\r\n this.warningKey = this.data.warningKey;\r\n this.cancelKey = this.data.cancelKey;\r\n this.actionKey = this.data.actionKey;\r\n this.currentDirection = this.data.direction;\r\n }\r\n\r\n\r\n commentAndClose() {\r\n this.isSubmitted = true;\r\n if (this.signingRequired && !this.otp) return false;\r\n let obj:{[key: string]:any} = {\r\n comment: this.comment,\r\n shareExternal : this.external\r\n };\r\n //\r\n if(this.signingRequired) obj[\"token\"] = this.otp;\r\n if(this.signingRequired) obj[\"tokenReference\"] = this.tokenReference;\r\n //\r\n this.dialogRef.close(obj);\r\n\r\n return \"\";\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","<div class=\"dialog-container\" [dir]=\"currentDirection\">\r\n\r\n <h2 mat-dialog-title class=\"dialog-title\" >\r\n {{ titleKey | translate}} {{itemName}}\r\n </h2>\r\n\r\n <p class=\"dialog-subtitle\">\r\n {{ subtitleKey | translate }}\r\n </p>\r\n\r\n\r\n <p class=\"textarea-label\">\r\n {{ reasonLabelKey | translate }}\r\n </p>\r\n\r\n\r\n <mat-dialog-content class=\"content-section\">\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <textarea\r\n matInput\r\n [(ngModel)]=\"comment\"\r\n placeholder=\"{{ placeholderKey | translate }}\"\r\n cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"4\"\r\n cdkAutosizeMaxRows=\"5\"\r\n ></textarea>\r\n </mat-form-field>\r\n\r\n\r\n <div class=\"info-box\">\r\n <mat-icon>info</mat-icon>\r\n <span class=\"info-text\">\r\n {{ warningKey | translate }}\r\n </span>\r\n </div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions align=\"end\" class=\"footer-actions\">\r\n <button mat-stroked-button class=\"btn-none-background-primary cancel-btn\" (click)=\"cancel()\">\r\n {{ cancelKey | translate }}\r\n </button>\r\n\r\n <button mat-flat-button class=\"btn-background-primary warn-btn\" (click)=\"commentAndClose()\" [disabled]=\"!comment\">\r\n {{ actionKey | translate }}\r\n </button>\r\n </mat-dialog-actions>\r\n</div>\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {ButtonActionSettings} from \"../../base-model/button-action-settings\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {ActionCommentComponent} from \"../action-comment/action-comment.component\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\r\nimport {MatIconButton} from \"@angular/material/button\";\r\nimport {NgClass, NgForOf, NgIf} from \"@angular/common\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\n\r\n@Component({\r\n selector: 'app-button-actions',\r\n standalone: true,\r\n imports: [\r\n MatIcon,\r\n MatMenuTrigger,\r\n MatIconButton,\r\n MatMenu,\r\n MatMenuItem,\r\n NgIf,\r\n NgClass,\r\n NgForOf,\r\n TranslateModule\r\n ],\r\n templateUrl: './button-actions.component.html',\r\n styleUrl: './button-actions.component.scss'\r\n})\r\nexport class ButtonActionsComponent {\r\n constructor(public dialog: MatDialog) { }\r\n\r\n @Input()\r\n actions: ButtonActionSettings[] =[];\r\n @Input()\r\n disabled?: boolean = false;\r\n\r\n @Output()\r\n clickedButton: EventEmitter<any> = new EventEmitter();\r\n\r\n @Input()\r\n buttonsAction: boolean = false;\r\n\r\n @Input()\r\n listAction: ButtonActionSettings[] = [];\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n getClickedAction(action: ButtonActionSettings) {\r\n if (action.showCommentDialog === true) {\r\n const dialogRef = this.dialog.open(ActionCommentComponent, {\r\n data: {label: action.label, isTermination: action.commentRequired, external: false,\r\n warningMsg: false},\r\n width: '600px',\r\n height: 'auto',\r\n direction: 'ltr' // this.authService.dir === 'rtl' ? 'rtl': 'ltr'\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n action.comment = result.comment;\r\n action.shareExternal = result.shareExternal;\r\n this.clickedButton.emit(action);\r\n }\r\n });\r\n\r\n } else {\r\n this.clickedButton.emit(action);\r\n }\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"buttonsAction; else list_Action\">\r\n <div class=\"action-buttons-container\" *ngIf=\"(actions?.length ? actions : listAction)?.length > 0\">\r\n <button\r\n *ngFor=\"let action of (actions?.length ? actions : listAction); let i = index\"\r\n class=\"action-button\"\r\n (click)=\"getClickedAction(action)\"\r\n [disabled]=\"disabled\"\r\n [attr.id]=\"action.id || ('actions-btn-' + action.label)\"\r\n [title]=\"action.label | translate\"\r\n >\r\n <mat-icon *ngIf=\"action.icon?.length\" class=\"action-icon\">{{ action.icon }}</mat-icon>\r\n </button>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #list_Action>\r\n <div *ngIf=\"listAction?.length > 0\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\" style=\"justify-content: center; color: grey\" id=\"actions-menu-trigger\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item *ngFor=\"let list_Action of listAction\" (click)=\"getClickedAction(list_Action)\" [attr.id]=\"list_Action.id || ('actions-menu-item-' + list_Action.label)\">\r\n <span>{{ list_Action.label | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n","\r\nexport class ButtonActionSettings {\r\n constructor(buttonActionSettings: ButtonActionSettings) {\r\n this.key = buttonActionSettings.key;\r\n this.id = buttonActionSettings.id;\r\n this.action = buttonActionSettings.action;\r\n this.label = buttonActionSettings.label;\r\n this.color = buttonActionSettings.color;\r\n this.isPrimary = buttonActionSettings.isPrimary;\r\n this.icon = buttonActionSettings.icon;\r\n this.showCommentDialog = buttonActionSettings.showCommentDialog;\r\n this.comment = buttonActionSettings.comment;\r\n this.shareExternal = buttonActionSettings.shareExternal;\r\n this.commentRequired = buttonActionSettings.commentRequired || false;\r\n }\r\n\r\n label: string;\r\n id: string;\r\n action?: any;\r\n key: number;\r\n isPrimary?: boolean;\r\n icon?: any;\r\n showCommentDialog?:boolean;\r\n comment?: any;\r\n shareExternal?: boolean;\r\n selectedId?: number;\r\n commentRequired? : boolean;\r\n color?: string;\r\n}\r\n","export interface TableColumn<T> {\r\n property: string;\r\n type: 'text' | 'croppedText' | 'image' | 'netAmount' | 'workflowStatus' | 'onOff' | 'progress' | 'checkbox' | 'button' | 'date' | 'number'| 'icon' |'bigdecimal'|'builder'|'localDateTime'|'report-sequence' | 'listAction' | 'info' | 'stateType' | 'hyper-text'|'year' | 'reportType' | 'status'\r\n viewType?:string;\r\n enableSorting: boolean;\r\n visible?: boolean;\r\n cssClasses?: string[];\r\n reportVisible?:boolean | true;\r\n reportProperty?: string;\r\n reportType?: string;\r\n showSum?:boolean;\r\n showCount?:boolean;\r\n translate?: boolean;\r\n width?:number;\r\n label?:string;\r\n reportwidth?:number;\r\n langDrivenName?:boolean;\r\n additionalProperty?: string;\r\n currency?: string;\r\n orderByProperty?: string;\r\n advancedFilter?: boolean;\r\n enableQuickFilter?: boolean;\r\n format?:string;\r\n group?:string;\r\n arraySubProperty?: string;\r\n digitInfo?:string;\r\n}\r\n\r\nexport const FRONT_END_COLUMN_TYPES = ['listAction', 'button','hyper-text'];\r\n","import {ValidatorFn} from \"@angular/forms\";\r\nimport {Filter} from \"./filter.model\";\r\n\r\nexport class FieldInfo {\r\n property: string = \"\";\r\n targetProperty?: string = \"\";\r\n row: number;\r\n required: boolean = false;\r\n type: 'text' | 'amount' |'color-picker' | 'currency' | 'date' | 'number' | 'sequence' | 'list' |'lookup'| 'multi-select' | 'password'| 'rich-text'|'radio-button'| 'phone-number'| 'iban-text'|'checkbox' |'textarea' |'button'|'spacer' | 'attachment'| 'section-title'| 'chip-list' |'time' | 'divider' | 'hyper-text' |'stateType'|'status' | 'year' | 'equation-builder' = 'text';\r\n textFormat?: 'json';\r\n readonly?: boolean = false;\r\n viewonly?: boolean ;\r\n label?: string = '';\r\n currency?: string;\r\n lookupApiPath?: string;\r\n multi?:boolean;\r\n supportedTypes?:string;\r\n cascadedBy?: string;\r\n cascadedByProperty?: string;\r\n pathParams?: string;\r\n listOptions?: any[];\r\n operators?: any[];\r\n fieldsApi?: string;\r\n reportFilter?:string;\r\n updateOnly?: boolean;\r\n fieldSize ?: number ;\r\n includeAllOption?: boolean;\r\n defaultListOption?: any;\r\n acceptNewItem?: boolean;\r\n translate?: boolean = false;\r\n validators?: ValidatorFn[];\r\n placeholder?: any;\r\n visible?: boolean = true;\r\n pattern?: string;\r\n disabled?: boolean;\r\n advancedFilter?: boolean;\r\n filterOperator?: 'GREATER_THAN_EQUAL'|'GREATER_THAN'| 'LESS_THAN'|'LESS_THAN_EQUAL'| 'EQUALS'| 'LIKE'| 'NOT_EQ'| 'IN' ;\r\n workflowManaged?: boolean;\r\n workflowCascadingField?: string;\r\n attachmentType?: string;\r\n lookupFilterList?: Filter[];\r\n buttonType?: string;\r\n hideFiles?: boolean;\r\n behavioralName?: string;\r\n flattenBySubAttribute?: string;\r\n defaultValue?:any;\r\n extraLookupsColumns?: string[];\r\n displayColumn?: string;\r\n searchAttribute?:string;\r\n validationMessages?: any;\r\n hideLabel?:boolean;\r\n searchOperator?:\"GREATER_THAN_EQUAL\" | \"GREATER_THAN\" | \"LESS_THAN\" | \"LESS_THAN_EQUAL\" | \"EQUALS\" | \"LIKE\" | \"NOT_EQ\" | \"IN\" | \"NOT_NULL\";\r\n showSearchIcon?: boolean;\r\n\r\n\r\n constructor(fieldInfo: FieldInfo) {\r\n this.property = fieldInfo.property;\r\n this.targetProperty = fieldInfo.targetProperty;\r\n this.required = fieldInfo.required;\r\n this.type = fieldInfo.type;\r\n this.readonly = fieldInfo.readonly;\r\n this.label = fieldInfo.label;\r\n this.fieldSize = fieldInfo.fieldSize;\r\n this.lookupApiPath = fieldInfo.lookupApiPath ? fieldInfo.lookupApiPath : fieldInfo.property;\r\n this.row = fieldInfo.row;\r\n this.supportedTypes = fieldInfo.supportedTypes;\r\n this.listOptions = fieldInfo.listOptions;\r\n this.pathParams = fieldInfo.pathParams;\r\n this.viewonly = fieldInfo.viewonly;\r\n this.multi = fieldInfo.multi;\r\n this.updateOnly = fieldInfo.updateOnly;\r\n this.includeAllOption = fieldInfo.includeAllOption;\r\n this.defaultListOption = fieldInfo.defaultListOption;\r\n this.acceptNewItem = fieldInfo.acceptNewItem;\r\n this.cascadedBy = fieldInfo.cascadedBy;\r\n this.cascadedByProperty = fieldInfo.cascadedByProperty ? fieldInfo.cascadedByProperty : fieldInfo.cascadedBy;\r\n this.currency = fieldInfo.currency;\r\n this.translate = fieldInfo.translate;\r\n this.advancedFilter = fieldInfo.advancedFilter;\r\n this.placeholder = fieldInfo.placeholder;\r\n this.validators = fieldInfo.validators;\r\n this.filterOperator = fieldInfo.filterOperator;\r\n this.pattern = fieldInfo.pattern;\r\n this.workflowManaged = fieldInfo.workflowManaged;\r\n this.workflowCascadingField = fieldInfo.workflowCascadingField;\r\n this.visible = fieldInfo.visible === undefined || fieldInfo.visible;\r\n this.attachmentType = fieldInfo.attachmentType;\r\n this.lookupFilterList = fieldInfo.lookupFilterList;\r\n this.extraLookupsColumns = fieldInfo.extraLookupsColumns;\r\n this.displayColumn = fieldInfo.displayColumn;\r\n this.textFormat = fieldInfo.textFormat;\r\n this.buttonType = fieldInfo.buttonType;\r\n this.hideFiles = fieldInfo.hideFiles;\r\n this.behavioralName = fieldInfo.behavioralName;\r\n this.flattenBySubAttribute = fieldInfo.flattenBySubAttribute;\r\n this.defaultValue = fieldInfo.defaultValue;\r\n this.searchAttribute = fieldInfo.searchAttribute || this.property;\r\n this.validationMessages = fieldInfo.validationMessages;\r\n this.hideLabel = fieldInfo.hideLabel;\r\n this.searchOperator = fieldInfo.searchOperator || 'EQUALS';\r\n this.showSearchIcon = fieldInfo.showSearchIcon;\r\n }\r\n\r\n}\r\n","export interface PageInfo {\r\n hasHint?: boolean;\r\n id: string;\r\n labelsSection: string;\r\n hasAddButton: boolean;\r\n apiUri?: string;\r\n selfRouting?: boolean;\r\n addNewRoutePath?: string;\r\n editRoutePath?: string;\r\n listRoutePath?: string;\r\n hideTitle?: boolean;\r\n saveLabel?: string;\r\n pageHeight?: 'full' | 'match',\r\n processId?: number,\r\n draftSupported: boolean;\r\n hasExtraTabs?: boolean;\r\n attachmentEnabled?: boolean;\r\n attachmentDefaultExternal?: boolean;\r\n printAction?: boolean;\r\n completedStatusFilterLabel?: string;\r\n enableHideTerminated?: boolean;\r\n embededTableOnly?: boolean;\r\n hasCustomFields?: boolean;\r\n hidePagination?: boolean;\r\n hideExtractButton?: boolean;\r\n hideReportsExtractButton?: boolean;\r\n externalPropertyName?: string;\r\n lazyLoadData?: boolean;\r\n groupByProperty?: string;\r\n groupByValue?: string[];\r\n supportGroupingInExport?: boolean;\r\n pageSize?: number;\r\n hideAuditLog?: boolean;\r\n stayOnPage?: boolean;\r\n hideAdvancedFilter?: boolean;\r\n}\r\n\r\nexport const EMPTY_PAGE_INFO = {\r\n id: \"\",\r\n labelsSection: \"\",\r\n hasAddButton: false,\r\n selfRouting: true,\r\n draftSupported: false,\r\n hasExtraTabs: false,\r\n attachmentEnabled: false,\r\n printAction: false,\r\n hidePagination: false,\r\n attachmentDefaultExternal: false,\r\n supportGroupingInExport: false,\r\n hideReportsExtractButton: false,\r\n hideAuditLog: false,\r\n stayOnPage: true\r\n\r\n}\r\n","import {ColumnDef} from \"./column-def.model\";\r\nimport {FieldPredicate} from \"./field-predicate.model\";\r\nimport {FilterRequest} from \"./filter-request\";\r\n\r\nexport class ReportRequest {\r\n sessionId: string;\r\n title: string;\r\n prefLang: string;\r\n columns: ColumnDef[];\r\n filter: string;\r\n reportType: 'pdf' | 'xlsx'\r\n dataset: any[];\r\n orientation: string;\r\n searchStr?: string;\r\n filtersList?: FieldPredicate[];\r\n filterRequest?: FilterRequest;\r\n reportCode?: string;\r\n constructor(br : any) {\r\n this.sessionId = br.sessionId;\r\n this.title = br.title;\r\n this.prefLang = br.prefLang;\r\n this.searchStr = br.searchStr;\r\n this.filter = br.filter;\r\n this.columns = br.columns;\r\n this.reportType=br.reportType;\r\n this.dataset = br.dataset;\r\n this.orientation = br.orientation;\r\n this.filtersList = br.filtersList;\r\n this.filterRequest = br.filterRequest;\r\n this.reportCode = br.reportCode;\r\n }\r\n\r\n}\r\n","import {Filter} from \"./filter.model\";\r\nimport {MATCH_TYPE} from \"./SearchStrConfig\";\r\n\r\nexport class FilterRequest {\r\n filters?: Filter[];\r\n searchStr: string;\r\n pageIndex: number;\r\n pageSize: number;\r\n sortKey: string;\r\n sortDirection: 'ASC'|'DESC';\r\n apiUri: string;\r\n columns: string[];\r\n pendingPage: boolean;\r\n matchType?: MATCH_TYPE;\r\n\r\n constructor(pageSize: number = 10) {\r\n this.apiUri = '';\r\n this.searchStr = '';\r\n this.pageIndex = 0;\r\n this.pageSize = pageSize;\r\n this.sortKey = 'id';\r\n this.sortDirection = \"DESC\";\r\n this.columns = [];\r\n this.pendingPage = false;\r\n }\r\n}\r\n\r\n","export class Filter {\r\n id?: any;\r\n key?: any;\r\n label?: string;\r\n fieldName?: string;\r\n joinObjectName?: string;\r\n valueObject?: any;\r\n fieldType?: string;\r\n objectFieldName?: string;\r\n filterType?: 'ASSIGNED_TO_ME'|'FILED_FILTER' | 'CLEAR_FILTERS' | 'CUSTOMER_ID'| 'VENDOR_ID' | 'INVOICE_CUSTOMER_ID'|\r\n 'INVOICE_VENDOR_ID' | 'DATE' | 'ASSIGNED_DEPARTMENT'| 'ASSIGNED_DEPARTMENT_MANAGER_STEPS';\r\n operator?: 'GREATER_THAN_EQUAL'|'GREATER_THAN'| 'LESS_THAN'|'LESS_THAN_EQUAL'| 'EQUALS'| 'LIKE'| 'NOT_EQ'| 'IN' | 'NOT_NULL';\r\n firstValue?: any;\r\n secondValue?: string;\r\n values?: string[];\r\n autoSelect?: boolean = false;\r\n\r\n constructor(filter : Filter) {\r\n this.id = filter.id;\r\n this.key = filter.key;\r\n this.label = filter.label;\r\n this.fieldName = filter.fieldName;\r\n this.joinObjectName = filter.joinObjectName;\r\n this.objectFieldName = filter.objectFieldName;\r\n this.valueObject = filter.valueObject;\r\n this.filterType = filter.filterType || 'FILED_FILTER';\r\n this.fieldType = filter.fieldType;\r\n this.operator = filter.operator || 'EQUALS';\r\n this.firstValue = filter.firstValue;\r\n this.secondValue = filter.secondValue;\r\n this.values = filter.values;\r\n this.autoSelect = filter.autoSelect;\r\n }\r\n}\r\n\r\nexport const HIDE_TERMINATED: Filter = new Filter(\r\n {key: 2, label: 'hideTerminated', filterType: 'FILED_FILTER', fieldType: 'number' , fieldName: 'statusId', firstValue: '3' , operator: 'NOT_EQ' , autoSelect:true});\r\n\r\nexport const ASSIGNED_TO_ME_FILTER: Filter = new Filter(\r\n {key: -1, label: 'Assigned to me', fieldName: 'stepId', filterType: 'ASSIGNED_TO_ME', autoSelect: true});\r\n\r\nexport const PENDING_STATUS_FILTER: Filter = new Filter(\r\n {key: -2, label: 'Pending Items', fieldName: 'statusId', firstValue: '2', filterType: 'FILED_FILTER'});\r\n\r\nexport const CLEAR_FILTERS: Filter = new Filter(\r\n {key: -3, label: 'clear', filterType:'CLEAR_FILTERS'});\r\n\r\nexport const ASSIGNED_DEPARTMENT_FILTER : Filter = new Filter(\r\n {key: -4, label: 'ASSIGNED_DEPARTMENT', filterType:'ASSIGNED_DEPARTMENT'});\r\n","export class LookupItem {\r\n id: number;\r\n arabicName: string;\r\n englishName: string;\r\n defaultValue?: boolean = false;\r\n\r\n constructor(lookup: LookupItem) {\r\n this.id = lookup.id;\r\n this.englishName = lookup.englishName;\r\n this.arabicName = lookup.arabicName;\r\n this.defaultValue = lookup.defaultValue;\r\n }\r\n}\r\n\r\nexport const ALL_ITEM= {\r\n id: -100,\r\n arabicName:'Select All',\r\n englishName:'Select All',\r\n defaultValue: false\r\n}\r\n\r\n","export class SnackMessage {\r\n message: string='';\r\n translate: boolean=false;\r\n type: 'info' | 'success' | 'error' | 'warning';\r\n translateParams: any;\r\n\r\n\r\n constructor(message: string, translate=false , type?:any , translateParams: any = {}) {\r\n this.message = message;\r\n this.translate = translate;\r\n this.type = type;\r\n this.translateParams = translateParams;\r\n }\r\n}\r\n","import {PageInfo} from \"./page-info\";\r\n\r\nexport interface TablePageUserAction {\r\n type: 'add' | 'select' | 'extra';\r\n id?:number;\r\n item?:any;\r\n actionKey?: string;\r\n pageInfo?:PageInfo\r\n}\r\n\r\nexport const SELECT_RECORD_ACTION: TablePageUserAction = {\r\n type:'select'\r\n}\r\nexport const EXTRA_ACTION: TablePageUserAction = {\r\n type:'extra'\r\n}\r\n\r\nexport const DRILL_DOWN_ACTION: TablePageUserAction = {\r\n type:'extra'\r\n}\r\nexport const JUNIOR_DOWN_ACTION: TablePageUserAction = {\r\n type:'extra'\r\n}\r\n\r\nexport const ADD_NEW_RECORD_ACTION: TablePageUserAction = {\r\n type:'add',\r\n id: -1\r\n}\r\n\r\nexport const TABLE_RECORD_ACTION: TablePageUserAction = {\r\n type:'extra',\r\n id: -1\r\n}\r\n","export const NEW =1;\r\nexport const SAVE =2;\r\nexport const REJECT =3;\r\nexport const APPROVE =4;\r\nexport const SAVE_AND_COMPLETE =5;\r\n\r\nexport class DoActionRequest {\r\n actionId: number;\r\n comment: string;\r\n subject: any;\r\n}\r\n","import {FieldInfo, EMPTY_PAGE_INFO, PageInfo, FilterRequest, SAVE_AND_COMPLETE} from \"../base-model\";\r\nimport {APPROVE, NEW, SAVE} from \"../base-model/do-action-request\";\r\nimport {Validators} from \"@angular/forms\";\r\n\r\nexport class BaseUtils {\r\n\r\n pageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n\r\n labelKey(column: any) {\r\n if (column.type === 'workflowStatus') {\r\n return 'INVENTORY.workflowStatus'\r\n }\r\n if (!column.property.length) {\r\n return \"\";\r\n }\r\n const configuredKey = column.label ? column.label : column.property\r\n return configuredKey.startsWith(this.pageInfo.labelsSection) ? `${configuredKey}` : `${this.pageInfo.labelsSection}.${configuredKey}`;\r\n }\r\n\r\n labelKeyByValue(column: any, element) {\r\n if (!column.property.length) {\r\n return \"\";\r\n }\r\n return `${this.pageInfo.labelsSection}.${element[column.property]}`\r\n }\r\n\r\n formatTimeToDate(v: any){\r\n const fromTime: Date = new Date();\r\n if (v) {\r\n let split = v.split(\":\");\r\n fromTime.setHours(split[0], split[1]);\r\n }\r\n return new Date(fromTime.getTime());\r\n }\r\n}\r\n\r\nexport function buildFormFields(fields: FieldInfo[], item:any){\r\n let fieldsControls: string[] = [];\r\n for (let field of fields) {\r\n if (field.type !== 'spacer') {\r\n const emptyValue = field.type === 'lookup' || field.type === 'multi-select' ? null : '';\r\n const extractedValue = item ? extractFieldName(item, field.property) : undefined;\r\n const validators = field.required\r\n ? [...(field.validators || []), Validators.required]\r\n : field.validators || [];\r\n\r\n fieldsControls[field.property] = extractedValue !== undefined && extractedValue !== null\r\n ? [extractedValue, validators]\r\n : [emptyValue, validators];\r\n }\r\n }\r\n return fieldsControls;\r\n}\r\nexport function buildItemsList(searchStr: string, apiPath?: string, cascadedByProperty?:string){\r\n const filterRequest : FilterRequest = new FilterRequest();\r\n // return {\r\n filterRequest.apiUri = cascadedByProperty ? `${apiPath}/${cascadedByProperty}` :apiPath;\r\n filterRequest.searchStr= searchStr\r\n filterRequest.pageIndex = 0;\r\n filterRequest.pageSize= 10;\r\n filterRequest.sortKey= 'id';\r\n filterRequest.sortDirection = \"DESC\" as const;\r\n // }\r\n return filterRequest;\r\n}\r\n\r\nexport function extractFieldName(element: any, property: string) {\r\n if (property.includes('.')) {\r\n return property.split('.').reduce((acc, part) => acc && acc[part], element);\r\n } else {\r\n return element[property];\r\n }\r\n}\r\n\r\nexport function getPositiveWfActionKey(stateType: any) {\r\n if (stateType === \"COMPLETED\") {\r\n return \"save\";\r\n } else if (stateType === \"PENDING\" || stateType === \"NEW\") {\r\n return \"approve\";\r\n }\r\n return \"save\";\r\n}\r\n\r\nexport function getNegativeWfActionKey(stateType: any) {\r\n if (stateType === \"COMPLETED\" ) {\r\n return \"cancel\";\r\n } else if (stateType === \"PENDING\"|| stateType === \"NEW\") {\r\n return \"reject\";\r\n }\r\n return \"cancel\";\r\n}\r\n\r\nexport function getWfActionId(stateType) {\r\n let actionId = NEW;\r\n if (stateType === \"COMPLETED\") {\r\n actionId = SAVE;\r\n } else if (stateType === \"PENDING\" || stateType === \"NEW\") {\r\n actionId = APPROVE;\r\n }\r\n return actionId;\r\n}\r\n\r\n","export class ResponseEnvelop {\r\n valid: boolean;\r\n message: string[];\r\n body: any;\r\n pagesCount: number;\r\n totalSize: number;\r\n\r\n constructor(responseEnvelop:ResponseEnvelop) {\r\n this.valid = responseEnvelop.valid;\r\n this.message = responseEnvelop.message;\r\n this.body = responseEnvelop.body;\r\n this.pagesCount = responseEnvelop.pagesCount;\r\n this.totalSize = responseEnvelop.totalSize;\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\r\nimport {Location, NgForOf, NgIf} from \"@angular/common\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {MatButton} from \"@angular/material/button\";\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {Directionality} from \"@angular/cdk/bidi\";\r\nimport {ButtonActionSettings} from \"../../base-model\";\r\n\r\n@Component({\r\n selector: 'app-title-bar',\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n MatIconModule,\r\n MatButton,\r\n MatMenuItem,\r\n MatMenu,\r\n NgForOf,\r\n MatMenuTrigger,\r\n TranslateModule,\r\n\r\n ],\r\n templateUrl: './title-bar.component.html',\r\n styleUrls: ['./title-bar.component.css', 'title-bar.component.scss']\r\n})\r\nexport class TitleBarComponent implements OnInit, OnChanges {\r\n @Input()\r\n pageTitle: string = \"\";\r\n\r\n @Input()\r\n showExtractButton: boolean = false;\r\n\r\n @Input()\r\n totalElements?: number;\r\n\r\n @Input()\r\n titleMode: string = '';\r\n @Input()\r\n subTitle: string = '';\r\n\r\n @Input()\r\n statusDesc?: string;\r\n\r\n @Input()\r\n newAction: boolean = false;\r\n\r\n\r\n @Input() // @ts-ignore\r\n extraButton: string;\r\n\r\n\r\n @Input()\r\n showDetails: any = [];\r\n\r\n @Input()\r\n showImport = false;\r\n\r\n @Input()\r\n showButton = false;\r\n\r\n @Output()\r\n newActionClicked = new EventEmitter();\r\n\r\n @Output()\r\n extraButtonClicked = new EventEmitter();\r\n\r\n\r\n @Output()\r\n extractReport = new EventEmitter();\r\n\r\n @Input()\r\n extraData = '';\r\n\r\n listTitle = '';\r\n newButton = '';\r\n\r\n @Input()\r\n titleCorporateAdmin: string = '';\r\n\r\n isRoot: boolean = false;\r\n @Input()\r\n hideBackButton: boolean = true;\r\n\r\n @Input() buttons: ButtonActionSettings[] = [];\r\n @Input() buttonsDisplayMode: 'dropdown' | 'list' = 'dropdown';\r\n @Output() buttonClicked = new EventEmitter<ButtonActionSettings>();\r\n constructor(private location:Location,\r\n private dir: Directionality) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.listTitle = this.pageTitle;\r\n this.newButton = this.extraButton;\r\n // this.isRoot = this.authService.isRootOrg();\r\n this.isRoot = false;\r\n }\r\n get backIcon(): string {\r\n return this.dir.value === 'rtl' ? 'arrow_back' : 'arrow_forward';\r\n }\r\n\r\n publishEvent() {\r\n this.newActionClicked.emit(true);\r\n }\r\n\r\n\r\n doExtractReport(value: any) {\r\n this.extractReport.emit(value);\r\n }\r\n publishExtraButtonEvent() {\r\n this.extraButtonClicked.emit(true);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"pageTitle\"] && !changes[\"pageTitle\"].isFirstChange() ) {\r\n this.listTitle = this.pageTitle;\r\n }\r\n }\r\n\r\n goBack() {\r\n this.location.back()\r\n }\r\n\r\n onButtonClick(btn: ButtonActionSettings) {\r\n this.buttonClicked.emit(btn);\r\n }\r\n}\r\n","<div class=\"row mainTitleBar gap-20 default-align\">\r\n\r\n <div class=\"column flex-auto textTitle\" >\r\n <h2 *ngIf=\"pageTitle\">\r\n <span class=\"textTitle__titleMode\">{{ titleMode | translate }}</span>\r\n {{ listTitle | translate }}\r\n <span *ngIf=\"titleCorporateAdmin && isRoot\">({{ titleCorporateAdmin }})</span>\r\n {{ extraData }}\r\n </h2>\r\n <span *ngIf=\"subTitle\" class=\"textTitle__subTitle\">{{ subTitle | translate }}</span>\r\n </div>\r\n\r\n <div class=\"column end-items gap-20\">\r\n <button mat-flat-button color=\"primary\" style=\"width: 100px\" *ngIf=\"!hideBackButton\" (click)=\"goBack()\" id=\"title-bar-back-btn\">\r\n <mat-icon color=\"second\">{{ backIcon }}</mat-icon>\r\n <span style=\"font-weight: bold\">{{ 'back' | translate }}</span>\r\n </button>\r\n\r\n <div class=\"row flex-auto gap-20 buttons-wrapper\">\r\n <ng-container *ngIf=\"buttonsDisplayMode === 'dropdown'\">\r\n <button\r\n *ngIf=\"buttons && buttons.length > 0\"\r\n mat-flat-button\r\n [matMenuTriggerFor]=\"actionMenu\"\r\n class=\"title-bar-action-button\"\r\n [attr.id]=\"'title-bar-action-button'\">\r\n <div class=\"button-content\">\r\n <mat-icon class=\"button-icon\">{{ buttons[0].icon }}</mat-icon>\r\n <span class=\"button-label\">{{ buttons[0].label | translate }}</span>\r\n <mat-icon class=\"button-arrow\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n </button>\r\n <mat-menu #actionMenu=\"matMenu\" class=\"title-bar-action-menu\">\r\n <button\r\n mat-menu-item\r\n *ngFor=\"let btn of buttons\"\r\n (click)=\"onButtonClick(btn)\"\r\n [attr.id]=\"btn.id || ('title-bar-menu-btn-' + (btn.action || btn.label || btn.key))\">\r\n <mat-icon>{{ btn.icon }}</mat-icon>\r\n <span>{{ btn.label | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"buttonsDisplayMode === 'list'\">\r\n <button\r\n *ngFor=\"let btn of buttons\"\r\n mat-flat-button\r\n color=\"primary\"\r\n class=\"title-bar-list-button\"\r\n (click)=\"onButtonClick(btn)\"\r\n [attr.id]=\"btn.id || ('title-bar-list-btn-' + (btn.action || btn.label || btn.key))\">\r\n <mat-icon>{{ btn.icon }}</mat-icon>\r\n <span>{{ btn.label | translate }}</span>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, OnInit, OnChanges } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { NgIf, NgForOf } from '@angular/common';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\n\r\n@Component({\r\n selector: 'app-paginator',\r\n templateUrl: './paginator.component.html',\r\n styleUrls: ['./paginator.component.css'],\r\n standalone: true,\r\n imports: [MatIconModule, MatButtonModule, NgIf, NgForOf],\r\n})\r\nexport class PaginatorComponent implements OnInit, OnChanges {\r\n @Input() currentPage = 1;\r\n @Input() totalItems = 0;\r\n @Input() pageSize = 10;\r\n @Input() pageSizeOptions: number[] = [5, 10, 25, 50];\r\n\r\n @Output() pageChange = new EventEmitter<number>();\r\n @Output() pageSizeChange = new EventEmitter<number>();\r\n\r\n currentDirection: 'ltr' | 'rtl' = 'ltr';\r\n\r\n constructor(private directionality: Directionality) {}\r\n\r\n ngOnInit() {\r\n this.currentDirection = this.directionality.value;\r\n this.directionality.change?.subscribe((value) => {\r\n this.currentDirection = value;\r\n });\r\n if (!this.pageSizeOptions.includes(this.pageSize)) {\r\n Promise.resolve().then(() => {\r\n this.pageSize = this.pageSizeOptions[1];\r\n this.pageSizeChange.emit(this.pageSize);\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.currentPage > this.totalPages) {\r\n this.currentPage = this.totalPages || 1;\r\n }\r\n }\r\n\r\n get totalPages(): number {\r\n return Math.ceil(this.totalItems / this.pageSize);\r\n }\r\n\r\n get startIndex(): number {\r\n return this.totalItems === 0 ? 0 : (this.currentPage - 1) * this.pageSize + 1;\r\n }\r\n\r\n get endIndex(): number {\r\n return Math.min(this.currentPage * this.pageSize, this.totalItems);\r\n }\r\n\r\n goToPage(page: number) {\r\n if (page >= 1 && page <= this.totalPages) {\r\n this.currentPage = page;\r\n this.pageChange.emit(this.currentPage);\r\n }\r\n }\r\n\r\n nextPage() {\r\n if (this.currentPage < this.totalPages) {\r\n this.goToPage(this.currentPage + 1);\r\n }\r\n }\r\n\r\n previousPage() {\r\n if (this.currentPage > 1) {\r\n this.goToPage(this.currentPage - 1);\r\n }\r\n }\r\n\r\n onPageSizeChange(size: number) {\r\n this.pageSize = size;\r\n this.currentPage = 1;\r\n this.pageSizeChange.emit(this.pageSize);\r\n this.pageChange.emit(this.currentPage);\r\n }\r\n\r\n getPageNumbers(): (number | string)[] {\r\n const TOTAL = this.totalPages;\r\n const CURRENT = this.currentPage;\r\n const PAGES: (number | string)[] = [];\r\n\r\n if (TOTAL <= 7) {\r\n for (let i = 1; i <= TOTAL; i++) {\r\n PAGES.push(i);\r\n }\r\n } else {\r\n PAGES.push(1);\r\n\r\n if (CURRENT <= 3) {\r\n for (let i = 2; i <= 4; i++) {\r\n PAGES.push(i);\r\n }\r\n PAGES.push('...');\r\n PAGES.push(TOTAL - 1);\r\n PAGES.push(TOTAL);\r\n } else if (CURRENT >= TOTAL - 2) {\r\n PAGES.push(2);\r\n PAGES.push('...');\r\n for (let i = TOTAL - 3; i <= TOTAL; i++) {\r\n PAGES.push(i);\r\n }\r\n } else {\r\n PAGES.push(2);\r\n PAGES.push('...');\r\n PAGES.push(CURRENT - 1);\r\n PAGES.push(CURRENT);\r\n PAGES.push(CURRENT + 1);\r\n PAGES.push('...');\r\n PAGES.push(TOTAL - 1);\r\n PAGES.push(TOTAL);\r\n }\r\n }\r\n\r\n return PAGES;\r\n }\r\n\r\n isEllipsis(page: number | string): boolean {\r\n return page === '...';\r\n }\r\n\r\n isActive(page: number | string): boolean {\r\n return typeof page === 'number' && page === this.currentPage;\r\n }\r\n\r\n protected readonly Math = Math;\r\n}\r\n","<div class=\"paginator-container\" [dir]=\"currentDirection\" [class.rtl]=\"currentDirection === 'rtl'\">\r\n <button\r\n class=\"paginator-button paginator-nav-button\"\r\n [class.disabled]=\"currentPage === 1\"\r\n [disabled]=\"currentPage === 1\"\r\n (click)=\"previousPage()\"\r\n type=\"button\">\r\n <mat-icon class=\"paginator-icon paginator-icon-left\">chevron_left</mat-icon>\r\n </button>\r\n\r\n <ng-container *ngFor=\"let page of getPageNumbers()\">\r\n <button\r\n *ngIf=\"!isEllipsis(page)\"\r\n class=\"paginator-button paginator-page-button\"\r\n [class.active]=\"isActive(page)\"\r\n [disabled]=\"isActive(page)\"\r\n (click)=\"goToPage(+page)\"\r\n type=\"button\">\r\n <span class=\"paginator-page-number\">{{ page }}</span>\r\n </button>\r\n <div *ngIf=\"isEllipsis(page)\" class=\"paginator-button paginator-ellipsis\">\r\n <span class=\"paginator-ellipsis-text\">...</span>\r\n </div>\r\n </ng-container>\r\n\r\n <button\r\n class=\"paginator-button paginator-nav-button\"\r\n [class.disabled]=\"currentPage === totalPages\"\r\n [disabled]=\"currentPage === totalPages\"\r\n (click)=\"nextPage()\"\r\n type=\"button\">\r\n <mat-icon class=\"paginator-icon paginator-icon-right\">chevron_right</mat-icon>\r\n </button>\r\n</div>\r\n","import {FormGroup} from \"@angular/forms\";\r\nimport {LookupItem} from \"../base-model\";\r\n\r\nexport function RequireMatch(control: FormGroup) {\r\n const selection: any = control.value;\r\n if (typeof selection === 'string' || (selection instanceof LookupItem && selection.id === -1)) {\r\n return { incorrect: true };\r\n }\r\n return null;\r\n}\r\n","import { FormGroup } from '@angular/forms';\r\n\r\nexport function MultiEmailValidator(control: FormGroup) {\r\n if (!control.value) {\r\n return null;\r\n }\r\n const emails = control.value.split(';').map(email => email.trim());\r\n\r\n for (let email of emails) {\r\n if (!email.match(/^([\\w+-.%]+@[\\w-.]+\\.[A-Za-z]{2,7};?)*$/)) {\r\n return { 'invalidEmail': { value: control.value } };\r\n }\r\n }\r\n return null;\r\n}\r\n","import { AbstractControl, ValidationErrors, FormArray, FormGroup } from '@angular/forms';\r\n\r\nexport function DateRangeValidator(group: AbstractControl): ValidationErrors | null {\r\n let fromDateControl: AbstractControl | null = null;\r\n let toDateControl: AbstractControl | null = null;\r\n\r\n if (group.parent instanceof FormGroup && group.parent.parent instanceof FormArray) {\r\n const formGroup = group.parent;\r\n fromDateControl = formGroup.get('from');\r\n toDateControl = formGroup.get('to');\r\n } else {\r\n fromDateControl = group.root.get('from');\r\n toDateControl = group.root.get('to');\r\n }\r\n\r\n if (fromDateControl && toDateControl) {\r\n const fromDateValue = fromDateControl.value;\r\n const toDateValue = toDateControl.value;\r\n\r\n if (fromDateValue && toDateValue) {\r\n const fromDate = new Date(fromDateValue);\r\n const toDate = new Date(toDateValue);\r\n\r\n if (fromDate > toDate) {\r\n return { dateRangeInvalid: 'Invalid Date Range: To date must be after from date' };\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n","export class ColumnDef {\r\n order: number;\r\n label: string;\r\n fieldName: string;\r\n datatype: string;\r\n groupLabel: string;\r\n width: number;\r\n showSum: boolean=false;\r\n showCount: boolean=false;\r\n\r\n constructor(tableColumn: any, order: number, transLabel :string, lang?:string, groupLabel?:string) {\r\n this.order = order;\r\n this.label = transLabel;\r\n if (tableColumn.reportProperty) {\r\n this.fieldName = tableColumn.reportProperty;\r\n } else {\r\n this.fieldName = tableColumn.property.toString();\r\n }\r\n\r\n if (tableColumn.langDrivenName){\r\n this.fieldName = this.fieldName + \".\" + (lang === 'en'? \"englishName\": \"arabicName\");\r\n }\r\n\r\n if (tableColumn.reportType) {\r\n this.datatype = tableColumn.reportType;\r\n } else {\r\n this.datatype = tableColumn.type === 'number' ? 'long' : tableColumn.type;\r\n }\r\n this.width = tableColumn.reportwidth ? tableColumn.reportwidth : null;\r\n this.showSum = tableColumn.showSum;\r\n this.showCount = tableColumn.showCount;\r\n this.groupLabel = groupLabel;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {BehaviorSubject} from \"rxjs\";\r\nimport {SnackMessage} from \"../base-model/snack-message.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TopPanel {\r\n\r\n public topPanelMessage$ = new BehaviorSubject<SnackMessage>({\r\n message: '',\r\n translate: false,\r\n type: 'info',\r\n translateParams: {}\r\n });\r\n\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {HttpClient, HttpErrorResponse, HttpHeaders, HttpParams} from \"@angular/common/http\";\r\nimport {Observable, of, Subject} from \"rxjs\";\r\nimport {catchError, distinctUntilChanged} from \"rxjs/operators\";\r\nimport {SnackMessage} from \"../base-model/snack-message.model\";\r\nimport {PageInfo} from \"../base-model/page-info\";\r\nimport {TranslateService} from \"@ngx-translate/core\";\r\nimport {ColumnDef} from \"../base-model/column-def.model\";\r\nimport {TableColumn} from \"../base-model/table-column.interface\";\r\nimport {GetItemsList} from \"../base-model/get-items-list\";\r\nimport {FieldAction} from \"../base-model/field-action\";\r\nimport {Workflow} from \"../base-model/workflow/workflow.model\";\r\nimport {ReportRequest} from \"../base-model/report-request.model\";\r\nimport {FilterRequest} from \"../base-model/filter-request\";\r\nimport {ResponseEnvelop} from \"../base-model/response-envelop.model\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport {TopPanel} from \"./top-panel\";\r\nimport {DoActionRequest} from \"../base-model/do-action-request\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {ActionConfirmationComponent} from \"../components/action-confirmation/action-confirmation.component\";\r\n\r\nconst WORKFLOW_STATES_MAP: Record<number, string> = {\r\n 1: 'New',\r\n 2: 'Pending',\r\n 3: 'Terminated',\r\n 4: 'Completed',\r\n 5: 'Updated',\r\n 6: 'Default'\r\n};\r\n\r\nconst EXCLUDED_REPORT_COLUMNS = ['listAction','button', 'checkbox'];\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BackendService {\r\n public topPanelMessage$ = new Subject<SnackMessage>();\r\n // @ts-ignore\r\n public parentForm: FormGroup;\r\n public childForm: FormGroup;\r\n public fieldAction$ = new Subject<FieldAction>();\r\n public isEmptyItems: boolean = true;\r\n\r\n constructor(private http: HttpClient,\r\n private topPanel: TopPanel,\r\n private translateService: TranslateService,\r\n private route: ActivatedRoute,\r\n private dialog: MatDialog,\r\n @Inject('config') private config: any,\r\n @Inject('secretsManager') private secretsManager: any) {\r\n\r\n this.topPanelMessage$.subscribe(msg => {\r\n this.topPanel.topPanelMessage$.next(msg);\r\n })\r\n }\r\n\r\n set defaults(value: any | undefined) {\r\n }\r\n\r\n get defaults(): any | undefined {\r\n return {};\r\n }\r\n\r\n getStatusDescription(element: any, workflow: Workflow) {\r\n if (element?.stepId) {\r\n\r\n let index = workflow?.workflowSteps?.findIndex(s => s.stepId === element.stepId);\r\n if (index > -1) {\r\n return this.translateService.getDefaultLang() === 'ar' ?\r\n workflow?.workflowSteps[index].stepNameAr || workflow?.workflowSteps[index].stepName:\r\n workflow?.workflowSteps[index].stepName;\r\n // return this.translateService.instant(workflow?.workflowSteps[index].stepName);\r\n } else {\r\n return this.translateService.instant('INVENTORY.inprocessStatus');\r\n }\r\n } else {\r\n if (element.statusId === 4 && element.statusDescription) {\r\n return element.statusDescription;\r\n } else if (element.statusId) {\r\n return this.translateService.instant(WORKFLOW_STATES_MAP[element.statusId]);\r\n } else {\r\n return \"unknown\";\r\n }\r\n }\r\n }\r\n//sss\r\n getItemsByFilter(reportRequest: any, apiUrl: string): Observable<any> {\r\n const url = `${this.getApiBasePath()}/api/v1${apiUrl}/list`;\r\n return this.http.post(url, reportRequest, { headers: this.buildSecuredHeader()}).pipe(\r\n distinctUntilChanged(),\r\n catchError(err => of(err.message || err)));\r\n }\r\n\r\n getItemAuditLog(reportRequest: any, apiUrl: string): Observable<any> {\r\n const url = `${this.getApiBasePath()}/api/v1${apiUrl}/audit-log`;\r\n return this.http.post(url, reportRequest, { headers: this.buildSecuredHeader()}).pipe(\r\n distinctUntilChanged(),\r\n catchError(err => of(err.message || err)));\r\n }\r\n\r\n\r\n private buildSecuredHeader() {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n Authorization: this.config.getAuthToken()\r\n });\r\n return headers;\r\n }\r\n\r\n public buildFormSecuredHeader() {\r\n const headers = new HttpHeaders({\r\n Authorization: this.config.getAuthToken()\r\n });\r\n return headers;\r\n }\r\n\r\n labelKey(column: any, pageInfo: PageInfo) {\r\n const configuredKey = column.label ? column.label : column.property;\r\n\r\n if (configuredKey && configuredKey.trim() !== '' && configuredKey.startsWith(pageInfo.labelsSection)) {\r\n return configuredKey;\r\n }\r\n\r\n return `${pageInfo.labelsSection}.${configuredKey}`;\r\n }\r\n\r\n\r\n private buildReportColumn(columns: TableColumn<any>[], pageInfo: PageInfo): ColumnDef[] {\r\n let columnDef: ColumnDef[] = [];\r\n\r\n columns.filter(x => !EXCLUDED_REPORT_COLUMNS.includes(x.type)).forEach((c, index) => {\r\n let transLabel = this.translateService.instant(this.labelKey(c,pageInfo));\r\n let transGroup = pageInfo.supportGroupingInExport ?\r\n c.group.trim() ? this.translateService.instant(c.group) : ' ' : null;\r\n if (c.type === 'workflowStatus') {\r\n transLabel = this.translateService.instant('workflowStatus');\r\n }\r\n if ((c.reportVisible === true) || (c.visible === true && c.reportVisible !== false)) {\r\n columnDef.push(new ColumnDef(c, index, transLabel, this.translateService.getDefaultLang(),transGroup));\r\n }\r\n });\r\n return columnDef;\r\n }\r\n\r\n private base64ToArrayBuffer(base64: string) {\r\n const binaryString = window.atob(base64); // Comment this if not using base64\r\n const bytes = new Uint8Array(binaryString.length);\r\n return bytes.map((byte, i) => binaryString.charCodeAt(i));\r\n }\r\n\r\n buildReportRequest(columns: TableColumn<any>[], title: string | string[], filterRequest: FilterRequest, reportType: any, pageInfo: PageInfo, searchStr: string ,orientation='PORTRAIT'): ReportRequest {\r\n const columnDef = this.buildReportColumn(columns, pageInfo);\r\n const reportRequest = new ReportRequest({\r\n dataset: [], filter: \"\",\r\n columns: columnDef,\r\n // sessionId: this.topPanel.userSession().sessionId,\r\n sessionId: this.config.getAuthToken(),\r\n title: this.translateService.instant(title),\r\n prefLang: this.translateService.getDefaultLang(),\r\n reportType: reportType,\r\n searchStr: searchStr,\r\n filterRequest: filterRequest,\r\n orientation: orientation});\r\n return reportRequest;\r\n }\r\n\r\n getLookupItemsByMultiFilter(listItems: GetItemsList, filterRequest?: FilterRequest): Observable<any> {\r\n listItems.pageSize = 100;\r\n filterRequest.pageSize = 100;\r\n const params = new HttpParams().set('searchStr', listItems.searchStr);\r\n let url = `${this.getApiBasePath()}/api/v1/${listItems.apiUri}`;\r\n return this.http.post(url, filterRequest, { headers: this.buildSecuredHeader(), params: params}).pipe(\r\n distinctUntilChanged(),\r\n catchError(err => of(err.message || err)));\r\n }\r\n getLookupItemsByFilter(listItems: GetItemsList, cascadedId?: any): Observable<any> {\r\n listItems.pageSize = 500;\r\n const params = new HttpParams().set('searchStr', listItems.searchStr);\r\n let url = `${this.getApiBasePath()}/api/v1/${listItems.apiUri}`;\r\n if (cascadedId) {\r\n url = url + `/${cascadedId}`\r\n }\r\n\r\n return this.http.post(url, listItems,{ headers: this.buildSecuredHeader()}).pipe(\r\n distinctUntilChanged(),\r\n catchError(err => of(err.message || err)));\r\n }\r\n\r\n\r\n\r\n downloadReport(reportRequest: ReportRequest, pageApiPath : string, readyPath? : boolean ) {\r\n const s = readyPath === true ? `/api/v1${pageApiPath}` : `/api/v1${pageApiPath}/extractAndDownloadListReport`;\r\n return this.http.post<ResponseEnvelop>(this.getApiBasePath() + s, reportRequest, {headers: this.buildSecuredHeader()}).subscribe(\r\n (resp:ResponseEnvelop) => {\r\n if (resp.valid) {\r\n if (resp.body) {\r\n const filename = reportRequest.title + \".\" + reportRequest.reportType;\r\n const blob = new Blob([this.base64ToArrayBuffer(resp.body)]);\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, filename);\r\n } else {\r\n const link = document.createElement('a');\r\n // Browsers that support HTML5 download attribute\r\n if (link.download !== undefined) {\r\n const url = URL.createObjectURL(blob);\r\n link.setAttribute('href', url);\r\n link.setAttribute('download', filename);\r\n link.style.visibility = 'hidden';\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n }\r\n } else {\r\n this.topPanel.topPanelMessage$.next(new SnackMessage(resp.message.toString(), true, 'info'));\r\n }\r\n } else {\r\n this.topPanel.topPanelMessage$.next(new SnackMessage(resp.message.toString(), false, 'error'));\r\n }\r\n }\r\n );\r\n\r\n }\r\n\r\n private getApiBasePath(){\r\n return this.config.getBaseApi();\r\n }\r\n\r\n doActionWithAttachments(request: DoActionRequest, param2: any[], pageInfo: PageInfo) {\r\n const url = `${this.getApiBasePath()}/api/v1${pageInfo.apiUri}/doActionWithAttachments`;\r\n const formData: FormData = new FormData();\r\n formData.set('doActionRequest', new Blob([JSON.stringify(request)], {\r\n type: \"application/json\"\r\n }));\r\n\r\n return this.http.post(url, formData, { headers: this.buildFormSecuredHeader() }).pipe(\r\n distinctUntilChanged(),\r\n catchError((error: HttpErrorResponse) => {\r\n return of(error.error);\r\n })\r\n );\r\n\r\n }\r\n doActionWithAttachment(request: DoActionRequest, file: File, pageInfo: PageInfo) {\r\n const url = `${this.getApiBasePath()}/api/v1${pageInfo.apiUri}/doActionWithAttachments`;\r\n const formData: FormData = new FormData();\r\n\r\n formData.append('files', file);\r\n formData.set('doActionRequest', new Blob([JSON.stringify(request)], {\r\n type: \"application/json\"\r\n }));\r\n\r\n return this.http.post<any>(url, formData, {\r\n headers: this.buildFormSecuredHeader()\r\n }).pipe(\r\n distinctUntilChanged(),\r\n catchError((error: HttpErrorResponse) => {\r\n // Transform the error into a fake success-like response\r\n return of(error.error); // This will now be passed to `next` in subscribe()\r\n })\r\n );\r\n }\r\n\r\n encrypt(message: any) {\r\n return this.secretsManager.encryptSecret(message);\r\n }\r\n\r\n decrypt(secret: any) {\r\n return this.secretsManager.decryptSecret(secret);\r\n }\r\n\r\n public getConfirmation(): Observable<any> {\r\n const dialogRef = this.dialog.open(ActionConfirmationComponent, {\r\n data: {acceptActionLabel: 'accept',rejectActionLabel:'return', warningMsg: 'confirmation_message'},\r\n width: '600px',\r\n height: 'auto'\r\n });\r\n return dialogRef.afterClosed();\r\n }\r\n\r\n}\r\n\r\ndeclare global {\r\n interface Navigator {\r\n msSaveBlob: (blobOrBase64: Blob | string, filename: string) => void\r\n }\r\n}\r\n","import {Injectable, signal} from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\n\r\nexport class ShareDataService {\r\n trigger = signal<boolean>(true);\r\n enableTrigger = (() => (() => this.trigger.update((val) => val = !val)))\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, Output, SimpleChanges, ViewChild} from '@angular/core';\r\nimport {ALL_ITEM, LookupItem} from \"../../base-model\";\r\nimport {MatAutocomplete, MatAutocompleteTrigger, MatOption} from \"@angular/material/autocomplete\";\r\nimport {Observable, of} from \"rxjs\";\r\nimport {FieldInfo} from \"../../base-model\";\r\nimport {FormControl, FormGroup, ReactiveFormsModule, Validators} from \"@angular/forms\";\r\nimport {BackendService} from \"../../services\";\r\nimport {TranslateService} from \"@ngx-translate/core\";\r\nimport {GetItemsList} from \"../../base-model/get-items-list\";\r\nimport {MatFormField} from \"@angular/material/form-field\";\r\nimport {MatChip, MatChipGrid, MatChipInput, MatChipListbox} from \"@angular/material/chips\";\r\nimport {AsyncPipe, NgForOf, NgIf} from \"@angular/common\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {MatInput} from \"@angular/material/input\";\r\nimport { MatLabel } from '@angular/material/form-field';\r\nimport {buildItemsList} from \"../../utils/base-utils\";\r\nimport {FilterRequest} from \"../../base-model\";\r\nimport {Filter} from \"../../base-model\";\r\nimport {RequireMatch} from \"../../validators\";\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n\r\n@Component({\r\n selector: 'app-multi-auto-complete',\r\n standalone: true,\r\n imports: [\r\n MatFormField,\r\n MatChip,\r\n MatIconModule,\r\n MatChipsModule,\r\n NgForOf,\r\n MatIcon,\r\n ReactiveFormsModule,\r\n MatAutocompleteTrigger,\r\n MatChipInput,\r\n MatInput,\r\n MatAutocomplete,\r\n MatOption,\r\n AsyncPipe,\r\n NgIf,\r\n MatChipGrid,\r\n MatChipListbox,\r\n MatLabel\r\n ],\r\n templateUrl: './multi-auto-complete.component.html',\r\n styleUrl: './multi-auto-complete.component.css'\r\n})\r\nexport class MultiAutoCompleteComponent {\r\n// @ts-ignore\r\n @ViewChild('itemInput') itemInput: ElementRef<HTMLInputElement>;\r\n @ViewChild('autocompleteTrigger') matACTrigger: MatAutocompleteTrigger;\r\n\r\n lookupItems$: Observable<LookupItem[]> | undefined;\r\n private lookupItems: LookupItem[] = [];\r\n\r\n selectedItems: LookupItem[] = [];\r\n cascadedIdz: number[] = [];\r\n isRequired: boolean= false;\r\n private timer: any;\r\n\r\n @Input()// @ts-ignore\r\n field: FieldInfo;\r\n //\r\n @Input()// @ts-ignore\r\n form: FormGroup;\r\n\r\n @Input()// @ts-ignore\r\n defaultValue: any;\r\n\r\n @Input()\r\n pathParam: any;\r\n\r\n @Input()\r\n readonly : boolean=false;\r\n\r\n @Output()\r\n selectedValue: EventEmitter<LookupItem[]> = new EventEmitter();\r\n\r\n question = 'Would you like to add ?\"';\r\n\r\n multiControl = new FormControl();\r\n\r\n constructor(private backendService: BackendService, private translateService: TranslateService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n // this.form = this.rootFormGroup.control;\r\n this.selectedItems = [];\r\n this.multiControl = new FormControl(this.form?.controls[this.field?.property]);\r\n\r\n this.multiControl.enable();\r\n this.updateFieldAttributes();\r\n\r\n if (!this.field.acceptNewItem){\r\n // @ts-ignore\r\n this.multiControl.setValidators([RequireMatch]);\r\n }\r\n\r\n this.multiControl.setValue(this.form?.controls[this.field?.property]?.value);\r\n\r\n this.multiControl.valueChanges.subscribe( v => {\r\n if (typeof v === 'string') {\r\n clearTimeout(this.timer);\r\n this.timer = setTimeout(() => {\r\n this.filterLookupItems(v, null);}, 700);\r\n }\r\n }\r\n );\r\n\r\n // this.multiControl.valueChanges.subscribe(v => {\r\n // if (typeof v === 'string') this.filterLookupItems(v, null);\r\n // })\r\n // this.filterAutoCompleteData(this.field.property);\r\n\r\n this.getLookupData();\r\n if (this.field.cascadedBy) {\r\n this.form?.get(this.field.cascadedBy)?.valueChanges.subscribe(v => {\r\n this.removeChildItemsIfCascadedByRemoved(v);\r\n });\r\n }\r\n\r\n }\r\n\r\n private updateFieldAttributes() {\r\n if (this.field.readonly) {\r\n this.multiControl.disable();\r\n this.isRequired = false;\r\n } else if (this.field.required) {\r\n this.form?.controls[this.field?.property].setValidators([Validators.required]);\r\n this.form?.controls[this.field?.property].updateValueAndValidity();\r\n this.multiControl.setValidators([Validators.required]);\r\n this.isRequired = true;\r\n }\r\n this.multiControl.updateValueAndValidity();\r\n }\r\n\r\n private removeChildItemsIfCascadedByRemoved(v) {\r\n this.cascadedIdz = [];\r\n v.forEach(a => {\r\n this.cascadedIdz.push(a.id);\r\n });\r\n let toDeleteIdz = [];\r\n this.selectedItems?.forEach(x => {\r\n const del = this.cascadedIdz.findIndex(y => y === x[this.field.cascadedBy]?.id);\r\n if (del < 0) {\r\n toDeleteIdz.push(x['id']);\r\n }\r\n });\r\n\r\n if (toDeleteIdz) {\r\n this.selectedItems = this.selectedItems.filter(s => !toDeleteIdz.includes(s.id));\r\n this.form.get(this.field.property).patchValue(this.selectedItems, {emitEvent: true});\r\n }\r\n }\r\n\r\n ngOnChanges({defaultValue, field}: SimpleChanges): void {\r\n this.patchLookupValue(defaultValue?.currentValue);\r\n if (field?.currentValue) {\r\n this.field = field.currentValue;\r\n this.updateFieldAttributes();\r\n }\r\n }\r\n\r\n private getLookupData() {\r\n const listItems: GetItemsList = buildItemsList('', this.field.lookupApiPath);\r\n\r\n const filterRequest: FilterRequest = new FilterRequest();\r\n filterRequest.filters = [];\r\n this.cascadedIdz = [];\r\n if (this.field.cascadedBy) {\r\n this.form.get(this.field.cascadedBy)?.value?.forEach(a => {\r\n this.cascadedIdz.push(a.id);\r\n })\r\n }\r\n if (this.field.cascadedBy && this.cascadedIdz?.length > 0) {\r\n filterRequest.filters.push(new Filter({\r\n key: 'id', fieldName: this.field.cascadedBy, label: '',\r\n filterType: 'FILED_FILTER', operator: 'IN',\r\n valueObject: this.cascadedIdz\r\n }));\r\n }\r\n\r\n filterRequest.columns = ['id','code','englishName','arabicName'];\r\n this.backendService.getLookupItemsByMultiFilter(listItems, filterRequest).subscribe((resp => {\r\n if (resp.valid) {\r\n this.lookupItems = this.field.includeAllOption ? [ALL_ITEM].concat(resp.body) : resp.body;\r\n if (!this.form.get('id')?.value) {\r\n this.patchLookupValue(this.lookupItems?.find(l => l.defaultValue));\r\n }\r\n this.patchLookupValue(this.multiControl.value);\r\n\r\n }\r\n\r\n }));\r\n }\r\n\r\n\r\n selected(value: any): void {\r\n if (value.id !== -1 && this.selectedItems.findIndex(i => i.id === value.id) === -1) {\r\n this.selectedItems?.push(value);\r\n this.itemInput.nativeElement.value = '';\r\n this.form.get(this.field.property)?.setValue(this.selectedItems);\r\n // @ts-ignore\r\n this.selectedValue.emit(this.selectedItems);\r\n this.multiControl.setValue(null);\r\n }\r\n }\r\n\r\n displayFn(selected: any): string {\r\n return selected ? selected.englishName : undefined;\r\n\r\n }\r\n isSelected(item: any): boolean {\r\n return this.selectedItems?.some(selected => selected.id === item.id); // Use your unique identifier\r\n }\r\n\r\n _allowSelection(option: LookupItem): { [className: string]: boolean } {\r\n return {\r\n 'prevent-selection': option.id === -1,\r\n }\r\n }\r\n\r\n itemNameByLag(item: any): string {\r\n // return item.arabicName;\r\n return this.translateService.getDefaultLang() === 'en' ? item.englishName : item.arabicName\r\n }\r\n\r\n private readonly _columns = ['id','code','englishName','arabicName'];\r\n\r\n filterLookupItems(name: any, trigger: MatAutocompleteTrigger) {\r\n if (trigger) {\r\n trigger.openPanel();\r\n }\r\n if (name === undefined) {\r\n name = '';\r\n }\r\n\r\n const listItems: GetItemsList = buildItemsList(name, this.field.lookupApiPath);\r\n\r\n const filterRequest: FilterRequest = new FilterRequest();\r\n filterRequest.filters = this.field.lookupFilterList || [];\r\n filterRequest.searchStr = name;\r\n this.cascadedIdz = [];\r\n if (this.field.cascadedBy) {\r\n this.form.get(this.field.cascadedBy)?.value?.forEach(a => {\r\n this.cascadedIdz.push(a.id);\r\n })\r\n }\r\n if (this.field.cascadedBy && this.cascadedIdz?.length > 0) {\r\n filterRequest.filters.push(new Filter({\r\n key: 'id',joinObjectName: this.field.cascadedBy, fieldName: this.field.cascadedBy, label: '',\r\n filterType: 'FILED_FILTER', operator: 'IN',\r\n valueObject: this.cascadedIdz\r\n }));\r\n }\r\n\r\n filterRequest.columns = [...this._columns, ...(this.field.extraLookupsColumns ?? [])];\r\n\r\n this.backendService.getLookupItemsByMultiFilter(listItems, filterRequest).subscribe(resp => {\r\n // console.log('result -->', resp);\r\n let items: LookupItem[] = [];\r\n if (resp.valid) {\r\n // resp.body.forEach(r => items.push(r));\r\n items = resp.body.filter(item =>\r\n // (item.englishName.toLowerCase().includes(name.toLowerCase()) ||\r\n // item.arabicName.toLowerCase().includes(name.toLowerCase())) &&\r\n this.selectedItems?.findIndex( i=> i.id ===item.id ) ===-1 );\r\n if (!items?.length) {\r\n this.field.acceptNewItem ?\r\n items?.push(new LookupItem({id: -2, englishName: this.question + name, arabicName: this.question + name})):\r\n items?.push(new LookupItem({id: -1, englishName: 'No match ...', arabicName: 'غير موجود ... '})) ;\r\n\r\n }\r\n } else {\r\n this.field.acceptNewItem ?\r\n items?.push(new LookupItem({id: -2, englishName: this.question + name, arabicName: this.question + name})):\r\n items?.push(new LookupItem({id: -1, englishName: 'No match ...', arabicName: 'غير موجود ... '})) ;\r\n }\r\n this.lookupItems$ = of(items);\r\n });\r\n return;\r\n }\r\n\r\n private patchLookupValue(defaultValue: any) {\r\n if (defaultValue) {\r\n // this.form?.get(this.field.property)?.patchValue(defaultValue);\r\n this.selectedItems = defaultValue;\r\n this.multiControl.setValue(defaultValue);\r\n this.multiControl.patchValue(defaultValue, {emitEvent: true});\r\n }\r\n }\r\n\r\n remove(item: LookupItem) {\r\n const index = this.selectedItems.indexOf(item);\r\n if (index >= 0) {\r\n this.selectedItems.splice(index, 1);\r\n this.form.get(this.field.property).patchValue(this.selectedItems, {emitEvent: true});\r\n }\r\n }\r\n\r\n getLabel() {\r\n return this.translateService.instant(this.field.label);\r\n }\r\n onKeydown(event: KeyboardEvent, autocompleteTrigger: MatAutocompleteTrigger) {\r\n if (event.key === 'Enter') {\r\n this.filterLookupItems('', autocompleteTrigger);\r\n autocompleteTrigger.openPanel();\r\n event.preventDefault();\r\n }\r\n }\r\n getId() {\r\n return this.field.property;\r\n }\r\n}\r\n","<ng-container *ngIf=\"this.field\" class=\"main-multi-auto\">\r\n <div class=\"matField\" (click)=\"this.filterLookupItems('', autocompleteTrigger)\">\r\n <mat-form-field class=\"full-width\" appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label>{{ getLabel() }}</mat-label>\r\n <mat-chip-listbox #chipList [selectable]=\"true\">\r\n <mat-chip\r\n *ngFor=\"let item of selectedItems\"\r\n [removable]=\"true\"\r\n (removed)=\"remove(item)\">\r\n {{ itemNameByLag(item) }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input class=\"chip-input\" type=\"text\"\r\n [id]=\"getId()\" #itemInput\r\n [formControl]=\"multiControl\"\r\n [matAutocomplete]=\"auto\" matInput\r\n [readonly]=\"readonly\"\r\n [required]=\"isRequired\"\r\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\r\n [disabled]=\"field.readonly\"\r\n #autocompleteTrigger=\"matAutocompleteTrigger\"\r\n >\r\n </mat-chip-listbox>\r\n\r\n <mat-icon class=\"arrow_drop_down_autocomplete\">arrow_drop_down</mat-icon>\r\n <mat-autocomplete #auto=\"matAutocomplete\" autoActiveFirstOption [displayWith]=\"displayFn\"\r\n (optionSelected)=\"selected($event.option.value)\">\r\n <ng-container *ngIf=\"!field.readonly\">\r\n <mat-option *ngFor=\"let item of lookupItems$ | async\" [value]=\"item\"\r\n [disabled]=\"field.readonly || isSelected(item)\"\r\n (click)=\"$event.stopPropagation(); autocompleteTrigger.openPanel()\">\r\n {{ itemNameByLag(item) }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n</ng-container>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {FieldInfo, Filter, LookupItem} from \"../../base-model\";\r\nimport {MatAutocomplete, MatAutocompleteTrigger, MatOption} from \"@angular/material/autocomplete\";\r\nimport {Observable, of} from \"rxjs\";\r\nimport {FormControl, FormGroup, ReactiveFormsModule, Validators} from \"@angular/forms\";\r\nimport {BackendService} from \"../../services\";\r\nimport {GetItemsList} from \"../../base-model/get-items-list\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {MatFormFieldModule} from \"@angular/material/form-field\";\r\nimport {MatInputModule} from \"@angular/material/input\";\r\nimport {AsyncPipe, NgClass, NgForOf, NgIf} from \"@angular/common\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {buildItemsList} from \"../../utils/base-utils\";\r\nimport {RequireMatch} from \"../../validators\";\r\nimport {MatButton, MatIconButton} from \"@angular/material/button\";\r\n\r\n@Component({\r\n selector: 'app-auto-complete',\r\n standalone: true,\r\n imports: [\r\n TranslateModule,\r\n MatFormFieldModule,\r\n MatAutocompleteTrigger,\r\n MatInputModule,\r\n ReactiveFormsModule,\r\n NgIf,\r\n MatAutocomplete,\r\n AsyncPipe,\r\n MatOption,\r\n NgClass,\r\n MatIcon,\r\n NgForOf,\r\n MatIconButton,\r\n MatButton,\r\n\r\n ],\r\n templateUrl: './auto-complete.component.html',\r\n styleUrl: './auto-complete.component.css'\r\n})\r\nexport class AutoCompleteComponent implements OnInit, OnChanges {\r\n @ViewChild('autocompleteTrigger') matACTrigger: MatAutocompleteTrigger;\r\n\r\n lookupItems$: Observable<LookupItem[]> | undefined;\r\n lookupItems: LookupItem[] = [];\r\n items: LookupItem[] = [];\r\n\r\n // @ts-ignore\r\n // form: FormGroup;\r\n\r\n @Input()// @ts-ignore\r\n field: FieldInfo;\r\n\r\n @Input()// @ts-ignore\r\n form: FormGroup;\r\n @Input()// @ts-ignore\r\n defaultValue: any;\r\n\r\n @Input()\r\n readonly:boolean = false;\r\n\r\n @Input()\r\n supportingAttributes: any;\r\n\r\n @Output()\r\n selectedValue: EventEmitter<LookupItem> = new EventEmitter();\r\n\r\n @ViewChild(MatAutocompleteTrigger) autocompleteTrigger!: MatAutocompleteTrigger;\r\n\r\n question = 'Would you like to add ?\"';\r\n cascadedId: number = 0;\r\n isRequired:boolean = false;\r\n\r\n private timer: any;\r\n myControl = new FormControl();\r\n\r\n constructor(private backendService: BackendService,\r\n protected translateService: TranslateService,\r\n @Inject('secretsManager') private secretsManager: any) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.buildControl();\r\n this.extractWorkflowGuidedCascading();\r\n this.getLookupData();\r\n // this.myControl.valueChanges.subscribe(v => {\r\n // if (typeof v === 'string') this.filterLookupItems(v, null);\r\n // });\r\n\r\n this.form.get(this.field.property).valueChanges.subscribe(x => {\r\n if (x?.id === -100) {\r\n this.myControl.reset()\r\n }\r\n })\r\n if (this.field.cascadedBy) {\r\n this.form.get(this.field.cascadedByProperty)?.valueChanges.subscribe(v => {\r\n this.cascadedId = this.form.get(this.field.cascadedByProperty).value?.id;\r\n this.lookupItems = [];\r\n this.myControl.setValue(undefined);\r\n this.myControl.patchValue(undefined, {emitEvent: true});\r\n this.form.get(this.field.property)?.setValue(undefined);\r\n this.form.get(this.field.property)?.patchValue(undefined, {emitEvent: true});\r\n this.getLookupData();\r\n });\r\n }\r\n\r\n }\r\n\r\n private extractWorkflowGuidedCascading() {\r\n if (this.supportingAttributes && this.field.workflowCascadingField && this.supportingAttributes[this.field.workflowCascadingField]) {\r\n this.cascadedId = this.supportingAttributes[this.field.workflowCascadingField];\r\n }\r\n }\r\n\r\n private buildControl() {\r\n this.myControl = new FormControl(this.form?.controls[this.field?.property]);\r\n this.backendService.fieldAction$.subscribe( e => {\r\n if (e.property === this.field?.property) {\r\n this.field.readonly = e.fieldInfo.readonly;\r\n this.updateAttributes();\r\n }\r\n });\r\n this.updateAttributes();\r\n\r\n this.myControl.valueChanges.subscribe( v => {\r\n if (typeof v === 'string') {\r\n clearTimeout(this.timer);\r\n this.timer = setTimeout(() => {\r\n this.filterLookupItems(v, null); }, 700);\r\n }\r\n }\r\n );\r\n }\r\n\r\n private updateAttributes() {\r\n this.myControl.enable();\r\n if (this.field.readonly) {\r\n this.myControl.disable();\r\n this.isRequired = false;\r\n } else if (this.field.required) {\r\n this.form?.controls[this.field?.property].setValidators([Validators.required]);\r\n this.myControl.setValidators([Validators.required]);\r\n this.isRequired = true;\r\n }\r\n\r\n if (!this.field.acceptNewItem) {\r\n // @ts-ignore\r\n this.myControl.setValidators(RequireMatch);\r\n }\r\n\r\n this.myControl.setValue(this.form?.get(this.field?.property)?.value);\r\n }\r\n\r\n ngOnChanges({defaultValue}: SimpleChanges): void {\r\n this.patchLookupValue(defaultValue?.currentValue);\r\n }\r\n\r\n private getLookupData() {\r\n if (this.field.cascadedBy && !this.cascadedId) {\r\n } else {\r\n const listItems = buildItemsList('', this.field.lookupApiPath, this.field.cascadedBy);\r\n listItems.columns = ['id','code','englishName','arabicName'];\r\n\r\n this.backendService.getLookupItemsByFilter(listItems, this.cascadedId).subscribe((resp => {\r\n if (resp.valid) {\r\n this.lookupItems = resp.body;\r\n this.lookupItems = [];\r\n resp.body.forEach((r: LookupItem) => this.lookupItems.push(r));\r\n if (!this.form?.get('id')?.value) {\r\n this.patchLookupValue(this.lookupItems?.find(l => l.defaultValue));\r\n }\r\n this.patchLookupValue(this.myControl.value);\r\n }\r\n\r\n }));\r\n }\r\n }\r\n\r\n itemSelected(value: any) {\r\n if (value && value.id !== -1) {\r\n if (value.englishName.indexOf(this.question) === 0) {\r\n value.englishName = value.englishName.substring(this.question.length).split('\"?')[0];\r\n }\r\n if (value.arabicName && value.arabicName.indexOf(this.question) === 0) {\r\n value.arabicName = value.arabicName.substring(this.question.length).split('\"?')[0];\r\n }\r\n this.form.get(this.field.property)?.setValue(value);\r\n // @ts-ignore\r\n this.selectedValue.emit(this.myControl.value);\r\n }\r\n setTimeout(() => {\r\n this.autocompleteTrigger.closePanel();\r\n });\r\n\r\n }\r\n\r\n displayFn(selected: any): string | undefined {\r\n if (selected?.id < 0) {\r\n return null;\r\n }\r\n\r\n if (Array.isArray(selected))\r\n selected = this.defaultValue\r\n return this.translateService.getDefaultLang() === 'en'\r\n ? selected?.englishName\r\n : selected?.arabicName;\r\n }\r\n\r\n\r\n _allowSelection(option: LookupItem): { [className: string]: boolean } {\r\n return {\r\n 'prevent-selection': option.id === -1,\r\n };\r\n }\r\n\r\n itemNameByLag(item: any): string {\r\n return this.translateService.getDefaultLang() === 'en' ? item.englishName : item.arabicName\r\n\r\n }\r\n\r\n filterLookupItems(name: any, trigger: MatAutocompleteTrigger) {\r\n if (this.myControl.enabled) {\r\n if (trigger) {\r\n trigger.openPanel();\r\n }\r\n if (name === undefined) {\r\n name = '';\r\n }\r\n\r\n if (name === '' && !this.myControl.value) {\r\n this.myControl.setValue(undefined);\r\n this.myControl.updateValueAndValidity();\r\n }\r\n\r\n const listItems: GetItemsList = buildItemsList(name, this.field.lookupApiPath, this.field.cascadedBy);\r\n listItems.filters = this.field.lookupFilterList;\r\n this.addLookupFilterByAnotherProperties(listItems);\r\n listItems.columns = ['id','code','englishName','arabicName'];\r\n this.backendService.getLookupItemsByFilter(listItems);\r\n if (this.field.cascadedBy) {\r\n this.cascadedId = this.form.get(this.field.cascadedByProperty).value?.id;\r\n } else {\r\n this.extractWorkflowGuidedCascading();\r\n }\r\n listItems.columns = ['id','code','englishName','arabicName'];\r\n this.backendService.getLookupItemsByFilter(listItems, this.cascadedId).subscribe(resp => {\r\n if (resp.valid) {\r\n this.items = resp.body.filter((item: { id: any; }) => this.myControl.value?.id !== item.id);\r\n if (!this.items?.length) {\r\n this.field.acceptNewItem ?\r\n this.items?.push(new LookupItem({id: -2, englishName: this.question + name, arabicName: this.question + name})) :\r\n this.items?.push(new LookupItem({id: -1, englishName: 'No match ...', arabicName: 'غير موجود ... '}));\r\n }\r\n } else {\r\n if (this.items?.length == 0)\r\n this.field.acceptNewItem && this.backendService.parentForm.get(this.field.cascadedBy).value != null ?\r\n this.items?.push(new LookupItem({id: -2, englishName: this.question + name, arabicName: this.question + name})) :\r\n this.items?.push(new LookupItem({id: -1, englishName: 'No match ...', arabicName: 'غير موجود ... '}));\r\n }\r\n this.lookupItems$ = of(this.items);\r\n });\r\n return;\r\n }\r\n }\r\n\r\n addLookupFilterByAnotherProperties(listItems: GetItemsList) {\r\n const properties = this.field.lookupFilterList;\r\n if (!Array.isArray(properties)) return;\r\n\r\n const newFilters: Filter[] = [];\r\n\r\n for (const prop of properties) {\r\n const fieldValue = this.form?.value?.[prop.fieldName];\r\n const finalValue = typeof fieldValue === 'object' && fieldValue !== null ? fieldValue.code : fieldValue;\r\n if (!finalValue) continue;\r\n\r\n const fieldName =typeof fieldValue === 'object' && fieldValue !== null ? prop.fieldName + \".\" + this.field.flattenBySubAttribute : prop.fieldName;\r\n const filter = new Filter({\r\n fieldType: 'FILED_FILTER',\r\n filterType: undefined,\r\n operator: prop.operator,\r\n valueObject: finalValue,\r\n fieldName: fieldName\r\n });\r\n\r\n newFilters.push(filter);\r\n }\r\n\r\n if (newFilters.length) {\r\n listItems.filters = [...(listItems.filters || []), ...newFilters];\r\n }\r\n listItems.filters = listItems.filters.filter(f => f.valueObject);\r\n }\r\n\r\n private patchLookupValue(defaultValue: any) {\r\n if (defaultValue) {\r\n\r\n // this.form?.get(this.field.property)?.patchValue(defaultValue);\r\n this.myControl.setValue(defaultValue);\r\n this.myControl.patchValue(defaultValue, {emitEvent: true});\r\n }\r\n }\r\n getId() {\r\n return this.field.property;\r\n }\r\n onKeydown(event: KeyboardEvent, autocompleteTrigger: MatAutocompleteTrigger) {\r\n if (event.key === 'Enter') {\r\n this.filterLookupItems('', autocompleteTrigger);\r\n autocompleteTrigger.openPanel();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n closed() {\r\n if (!this.myControl.value){\r\n this.form.get(this.field.property)?.setValue(this.myControl.value);\r\n this.selectedValue.emit(this.myControl.value);\r\n } else if (typeof this.myControl.value === 'string') {\r\n this.myControl.setValue(null);\r\n }\r\n }\r\n}\r\n","<ng-container *ngIf=\"field\" class=\"main-auto-complete\">\r\n <div class=\"mat-field-wrapper\" [formGroup]=\"form\">\r\n\r\n <div class=\"label-and-asterisk-container\">\r\n <span class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n\r\n <mat-form-field class=\"autocomplete-field\" appearance=\"outline\">\r\n <input type=\"text\"\r\n [placeholder]=\"'search_placeholder' | translate\"\r\n [id]=\"getId()\"\r\n [formControl]=\"myControl\"\r\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\r\n [matAutocomplete]=\"auto\"\r\n matInput\r\n [required]=\"isRequired\"\r\n #autocompleteTrigger=\"matAutocompleteTrigger\"\r\n [readonly]=\"readonly\"\r\n >\r\n\r\n <button mat-button matSuffix\r\n color=\"primary\"\r\n class=\"autocomplete-button\"\r\n (click)=\"autocompleteTrigger.openPanel(); filterLookupItems('', autocompleteTrigger); $event.stopPropagation()\"\r\n [attr.id]=\"'autocomplete-trigger-' + field.property\">\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" autoActiveFirstOption [displayWith]=\"displayFn.bind(this)\"\r\n (optionSelected)=\"itemSelected($event.option.value)\"\r\n (closed)=\"closed()\">\r\n <ng-container *ngIf=\"!field.readonly\">\r\n <mat-option *ngIf=\"items.length > 1 && lookupItems$\" [value]=\"null\">{{ \"none\" | translate }}</mat-option>\r\n <mat-option *ngFor=\"let item of lookupItems$ | async\" [value]=\"item\" [ngClass]=\"_allowSelection(item)\">\r\n {{ itemNameByLag(item) }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n\r\n </div>\r\n</ng-container>\r\n","import {\r\n Component, ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n computed,\r\n model,\r\n signal\r\n} from '@angular/core';\r\nimport {FormBuilder, FormGroup, ReactiveFormsModule, FormsModule, FormControl} from \"@angular/forms\";\r\nimport {\r\n MatChip,\r\n MatChipGrid,\r\n MatChipInput,\r\n MatChipInputEvent,\r\n MatChipListbox, MatChipOption, MatChipRemove,\r\n MatChipRow\r\n} from \"@angular/material/chips\";\r\nimport {FieldInfo} from \"../../base-model/field-info\";\r\nimport {ActivatedRoute} from \"@angular/router\";\r\nimport {BackendService} from \"../../services/backend-service\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {PageInfo} from \"../../base-model/page-info\";\r\nimport {COMMA, ENTER, SEMICOLON} from \"@angular/cdk/keycodes\";\r\nimport {LookupItem} from \"../../base-model/lookupItem\";\r\nimport {FieldMessage} from \"../../base-model/api-response\";\r\nimport {\r\n AsyncPipe,\r\n CurrencyPipe,\r\n DatePipe,\r\n KeyValuePipe,\r\n NgForOf,\r\n NgIf, NgStyle,\r\n NgSwitch,\r\n NgSwitchCase,\r\n NgTemplateOutlet\r\n} from \"@angular/common\";\r\nimport {MatError, MatFormFieldModule, MatLabel} from \"@angular/material/form-field\";\r\nimport {MatInputModule} from \"@angular/material/input\";\r\nimport {MatDatepicker, MatDatepickerInput, MatDatepickerToggle, MatDateRangeInput} from \"@angular/material/datepicker\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {CdkTextareaAutosize} from \"@angular/cdk/text-field\";\r\nimport {MatRadioButton, MatRadioGroup} from \"@angular/material/radio\";\r\nimport {MatCheckbox} from \"@angular/material/checkbox\";\r\nimport {MatOption, MatSelect} from \"@angular/material/select\";\r\nimport {MatDivider} from \"@angular/material/divider\";\r\nimport {NgxJsonViewerModule} from \"ngx-json-viewer\";\r\nimport {CKEditorModule} from \"@ckeditor/ckeditor5-angular\";\r\nimport {NgxMatIntlTelInputComponent} from \"ngx-mat-intl-tel-input\";\r\nimport {MultiAutoCompleteComponent} from \"../multi-auto-complete/multi-auto-complete.component\";\r\nimport {AutoCompleteComponent} from \"../auto-complete/auto-complete.component\";\r\nimport {MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger} from \"@angular/material/autocomplete\";\r\nimport {BehaviorSubject, map} from \"rxjs\";\r\nimport {LiveAnnouncer} from \"@angular/cdk/a11y\";\r\nimport {buildFormFields, extractFieldName} from \"../../utils/base-utils\";\r\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\"\r\nimport moment, {Moment} from \"moment/moment\";\r\nimport {MatCell, MatCellDef, MatHeaderCell, MatHeaderCellDef} from \"@angular/material/table\";\r\nimport {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE} from \"@angular/material/core\";\r\nimport {MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter} from \"@angular/material-moment-adapter\";\r\nexport const DD_MM_YYYY_Format = {\r\n parse: { dateInput: 'DD/MM/YYYY' },\r\n display: {\r\n dateInput: 'DD/MM/YYYY',\r\n monthYearLabel: 'MMM YYYY',\r\n dateA11yLabel: 'DD/MM/YYYY',\r\n monthYearA11yLabel: 'MMMM YYYY',\r\n },\r\n};\r\n@Component({\r\n selector: 'app-base-form-canvas',\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n NgSwitch,\r\n FormsModule,\r\n NgForOf,\r\n NgTemplateOutlet,\r\n KeyValuePipe,\r\n NgIf,\r\n MatLabel,\r\n MatFormFieldModule,\r\n TranslateModule,\r\n MatInputModule,\r\n MatDatepickerInput,\r\n MatDatepicker,\r\n MatDatepickerToggle,\r\n MatError,\r\n NgSwitchCase,\r\n MatIcon,\r\n MatAutocomplete,\r\n MatAutocompleteTrigger,\r\n MatChip,\r\n CdkTextareaAutosize,\r\n MatRadioGroup,\r\n MatCheckbox,\r\n MatRadioButton,\r\n MatSelect,\r\n MatOption,\r\n MatDivider,\r\n DatePipe,\r\n NgxJsonViewerModule,\r\n CurrencyPipe,\r\n CKEditorModule,\r\n NgxMatIntlTelInputComponent,\r\n MatChipGrid,\r\n MatChipInput,\r\n MatChipRow,\r\n MatChipListbox,\r\n MatChipOption,\r\n MultiAutoCompleteComponent,\r\n AutoCompleteComponent,\r\n MatDateRangeInput,\r\n AsyncPipe,\r\n MatChipRemove,\r\n MatCell,\r\n MatCellDef,\r\n MatHeaderCell,\r\n MatHeaderCellDef,\r\n NgStyle\r\n ],\r\n templateUrl: './base-form-canvas.component.html',\r\n styleUrl: './base-form-canvas.component.css',\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS]\r\n },\r\n { provide: MAT_DATE_FORMATS, useValue: DD_MM_YYYY_Format },\r\n { provide: MAT_DATE_LOCALE, useValue: 'en-GB' }\r\n ]\r\n\r\n})\r\nexport class BaseFormCanvasComponent implements OnInit, OnChanges, OnDestroy {\r\n public Editor = ClassicEditor;\r\n public hide: boolean = true;\r\n dateViewMode: 'month' | 'year' | 'multi-year' = 'month';\r\n @Input()\r\n pageInfo!: PageInfo;\r\n\r\n\r\n @Input()\r\n currency: string;\r\n\r\n @Input()// @ts-ignore\r\n fields: FieldInfo[] = [];\r\n\r\n @Input()// @ts-ignore\r\n errors: FieldMessage[] = [];\r\n\r\n @Input()\r\n workflowEditableFields: string[]=[];\r\n @Input()\r\n isWorkflowEditableManaged: boolean = false;\r\n\r\n @Input()\r\n supportingAttributes: any;\r\n\r\n @Input()\r\n editable: boolean = false;\r\n\r\n // When true, emit formUpdated on every value change. Default is false to avoid\r\n // noisy emissions for all consumers. Item-line-editor will enable this explicitly.\r\n @Input()\r\n emitOnValueChanges: boolean = false;\r\n\r\n @Input()\r\n item: any = {};\r\n\r\n _defaults: any = {};\r\n\r\n @Output() attachmentEmitter: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output() actionEmitter: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\r\n @Output()\r\n formUpdated: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();\r\n\r\n @Output()\r\n hyperTextEvent: EventEmitter<boolean> = new EventEmitter();\r\n\r\n\r\n formParam!: FormGroup;\r\n screenFields = new Map<number, FieldInfo[]>();\r\n removable = true;\r\n selectable = true;\r\n addOnBlur = true;\r\n\r\n readonly separatorKeysCodes: number[] = [ENTER, COMMA, SEMICOLON];\r\n\r\n\r\n public isPending: boolean = false;\r\n public isNew: boolean = false;\r\n itemId: number | undefined;\r\n\r\n equationOperators : string[] = ['+','-','(' ];\r\n @Input() equationSuggestedFields: { name: string, id: string }[] = [];\r\n allEquationFields: BehaviorSubject<string[]>;\r\n readonly equationValues = signal<string[]>([]);\r\n currentEquationValue = model<string>('');\r\n\r\n readonly equationFilteredFields = computed(() => {\r\n const currentEquationValue = this.currentEquationValue().toLowerCase();\r\n return this.allEquationFields.pipe(\r\n map(fields =>\r\n currentEquationValue ? fields?.filter(field => field.toLowerCase().includes(currentEquationValue)) : fields?.slice()\r\n )\r\n );\r\n });\r\n @ViewChild('EquationValueInput') fieldsInput: ElementRef<HTMLInputElement>;\r\n\r\n set defaults(value: any | undefined) {\r\n // this.backendService._defaults = value;\r\n this._defaults = value;\r\n this.buildForm();\r\n // this.myCallback = value;\r\n }\r\n\r\n get defaults(): any | undefined {\r\n // this.myCallback;\r\n return this._defaults;\r\n // return this.backendService._defaults;\r\n }\r\n\r\n constructor(protected translateService: TranslateService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected backendService: BackendService,\r\n private fb: FormBuilder,\r\n private announcer: LiveAnnouncer) {\r\n ClassicEditor.defaultConfig = {\r\n toolbar: {\r\n items: ['heading', '|', 'bold', 'italic', '|', 'bulletedList', 'numberedList']\r\n },\r\n image: {\r\n toolbar: ['imageStyle:side', '|', 'imageTextAlternative']\r\n },\r\n table: {\r\n contentToolbar: [ 'tableColumn', 'tableRow', 'mergeTableCells' ]\r\n },\r\n language: 'en'\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n if(this.item && this.item.fieldValue){\r\n this.equationValues.update(value => this.item.fieldValue)\r\n }\r\n this.defaults = this.item;\r\n this.extractLables();\r\n this.buildForm();\r\n this.activatedRoute.data.subscribe(data => {\r\n this.isPending = data['mode'] === 'pending';\r\n this.isNew = data['mode'] === 'new';\r\n });\r\n // this.authService.summaryPanelState$.next(Constants.SUMMARY_PANEL_CLOSED);\r\n // this.defaults = {};\r\n // this.invoiceQInit();\r\n this.allEquationFields = new BehaviorSubject<string[]>([]);\r\n\r\n this.updateEquationOptions();\r\n }\r\n\r\n formatTimeToDate(v: any){\r\n const fromTime: Date = new Date();\r\n if (v) {\r\n let split = v.split(\":\");\r\n fromTime.setHours(split[0], split[1]);\r\n }\r\n return new Date(fromTime.getTime());\r\n }\r\n\r\n patchLookupValue($event: LookupItem, fieldName: string) {\r\n if ($event?.id !== -1 && this.defaults) {\r\n // @ts-ignore\r\n this.defaults[fieldName] = this.formParam.get(fieldName).value;\r\n }\r\n }\r\n getBankName(fieldName: string) {\r\n //TODO Batool do we need this here ?\r\n if (this.formParam.get(fieldName).value?.length > 10 && !isNaN(this.formParam.get(fieldName).value) ) {\r\n return ' / ' + this.translateService.instant('BANK.' + this.formParam.get(fieldName).value?.substr(4, 4));\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n patchMultiSelectValue($event: LookupItem[], fieldName: string) {\r\n if ($event?.length >= 0 && this.defaults) {\r\n this.defaults[fieldName] = this.formParam.get(fieldName).value;\r\n }\r\n }\r\n\r\n ngOnChanges({item, errors, fields}: SimpleChanges): void {\r\n errors?.currentValue?.forEach((msg: FieldMessage) => {\r\n this.formParam.get(msg.fieldName)?.setErrors({serverError: msg.message});\r\n });\r\n\r\n if (item?.currentValue && !item.isFirstChange()){\r\n this.defaults = item.currentValue;\r\n }\r\n\r\n if (fields?.currentValue && !fields.isFirstChange()){\r\n this.buildForm();\r\n }\r\n }\r\n\r\n showField(item: any, field: any) {\r\n return (item.id || (!item.id && !field.updateOnly)) && field.visible\r\n }\r\n\r\n workflowEditableField(field: { property: string; }) {\r\n const x = this.isWorkflowEditableManaged ? this.workflowEditableFields?.findIndex(d => d === field.property) > -1 : true;\r\n return x;\r\n }\r\n\r\n showMultiSelectValuesAsReadonly(field: FieldInfo) {\r\n const viewProp = this.translateService.getDefaultLang() === 'en' ? 'englishName' : 'arabicName';\r\n return this.extractFieldName(this.defaults,field.property)?.map((a: { [x: string]: any; }) => a[viewProp]);\r\n }\r\n\r\n splitReadonly(values: any) {\r\n return !values || values === '' ? []: values.split(';');\r\n }\r\n\r\n\r\n referenceAttributeTrue(fieldName: string, attribute: any) {\r\n // return this.authService.referenceAttributeTrue(fieldName, this.pageInfo.processId, attribute);\r\n }\r\n\r\n translateLable(itemElement: any) {\r\n return this.translateService.instant(itemElement)\r\n }\r\n\r\n buildForm() {\r\n if (!this.fields || this.fields.length === 0 || !this.defaults) return;\r\n\r\n if (!this.formParam) {\r\n this.formParam = this.fb.group(buildFormFields(this.fields, this.defaults));\r\n // Emit initial form reference\r\n this.formUpdated.next(this.formParam);\r\n // Emit on every value change so parent components can react live\r\n if (this.emitOnValueChanges) {\r\n this.formParam.valueChanges.subscribe(() => {\r\n this.formUpdated.emit(this.formParam);\r\n });\r\n }\r\n return;\r\n }\r\n\r\n const patchValues: any = {};\r\n for (const field of this.fields) {\r\n if (field.readonly) {\r\n this.formParam.get(field.property)?.disable({ emitEvent: false });\r\n } else {\r\n this.formParam.get(field.property)?.enable({ emitEvent: false });\r\n }\r\n if (field.type !== 'spacer') {\r\n patchValues[field.property] = extractFieldName(this.defaults, field.property);\r\n }\r\n }\r\n\r\n this.formParam.patchValue(patchValues, { emitEvent: false });\r\n }\r\n\r\n labelKey(column: any) {\r\n const configuredKey = column.label ? column.label : column.property\r\n return configuredKey.startsWith(this.pageInfo.labelsSection) ? `${configuredKey}` : `${this.pageInfo.labelsSection}.${configuredKey}`;\r\n }\r\n\r\n labelKeyPlaceHolder(column: any) {\r\n const configuredKey = column.placeholder ? column.placeholder : column.property\r\n return configuredKey.startsWith(this.pageInfo.labelsSection) ? `${configuredKey}` : `${this.pageInfo.labelsSection}.${configuredKey}`;\r\n }\r\n\r\n getErrors(prop: string): string {\r\n const control = this.formParam.get(prop);\r\n if (!control || control.disabled) return '';\r\n\r\n const field = this.fields.find(f => f.property === prop);\r\n\r\n if (!field?.validationMessages) {\r\n if (control.value && control.status !== 'VALID' && this.getFirstErrorKey) {\r\n return this.getFirstErrorKey(prop);\r\n }\r\n return '';\r\n }\r\n\r\n if (control.invalid) {\r\n const errors = control.errors || {};\r\n const prefix = this.pageInfo.labelsSection + \".\";\r\n\r\n if (errors['required']) return prefix + 'REQUIRED';\r\n if (errors['min']) return prefix + (field.validationMessages?.min || 'NUMBER_MIN');\r\n if (errors['max']) return prefix + (field.validationMessages?.max || 'NUMBER_MAX');\r\n if (errors['maxlength']) return prefix + (field.validationMessages?.maxlength || 'MAX_LENGTH');\r\n if (errors['decimalMin']) return prefix + (field.validationMessages?.decimalMin || 'DECIMAL_MIN');\r\n if (errors['decimalMax']) return prefix + (field.validationMessages?.decimalMax || 'DECIMAL_MAX');\r\n if (errors['pattern']) return prefix + (field.validationMessages?.pattern || 'INVALID_FORMAT');\r\n if (errors['invalidMathExpression']) return prefix + 'INVALID_MATH';\r\n if (errors['serverError']) return prefix + errors['serverError'];\r\n\r\n return prefix + 'INVALID_VALUE';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n\r\n getFirstErrorKey(prop: string): string {\r\n const errors = this.formParam.get(prop)?.errors;\r\n\r\n if (!errors || Object.keys(errors).length === 0) {\r\n return errors?.['serverError'] || 'INVALID_FORMAT';\r\n }\r\n\r\n return Object.keys(errors)[0];\r\n }\r\n\r\n public getCountryCodeList() {\r\n return ['af', 'ax', 'al', 'dz', 'as', 'ad', 'ao', 'ai', 'aq', 'ag', 'ar', 'am', 'aw', 'au', 'at', 'az',\r\n 'bs', 'bh', 'bd', 'bb', 'by', 'be', 'bz', 'bj', 'bm', 'bt', 'bo', 'ba', 'bw', 'bv', 'br', 'io', 'bn',\r\n 'bg', 'bf', 'bi', 'kh', 'cm', 'ca', 'cv', 'ky', 'cf', 'td', 'cl', 'cn', 'cx', 'cc', 'co', 'km', 'cg',\r\n 'cd', 'ck', 'cr', 'ci', 'hr', 'cu', 'cy', 'cz', 'dk', 'dj', 'dm', 'do', 'ec', 'eg', 'sv', 'gq', 'er',\r\n 'ee', 'et', 'fk', 'fo', 'fj', 'fi', 'fr', 'gf', 'pf', 'tf', 'ga', 'gm', 'ge', 'de', 'gh', 'gi', 'gr',\r\n 'gl', 'gd', 'gp', 'gu', 'gt', 'gg', 'gn', 'gw', 'gy', 'ht', 'hm', 'va', 'hn', 'hk', 'hu', 'is', 'in',\r\n 'id', 'ir', 'iq', 'ie', 'im', 'it', 'jm', 'jp', 'je', 'jo', 'kz', 'ke', 'ki', 'kr', 'kw', 'kg', 'la',\r\n 'lv', 'lb', 'ls', 'lr', 'ly', 'li', 'lt', 'lu', 'mo', 'mk', 'mg', 'mw', 'my', 'mv', 'ml', 'mt', 'mh',\r\n 'mq', 'mr', 'mu', 'yt', 'mx', 'fm', 'md', 'mc', 'mn', 'me', 'ms', 'ma', 'mz', 'mm', 'na', 'nr', 'np',\r\n 'nl', 'an', 'nc', 'nz', 'ni', 'ne', 'ng', 'nu', 'nf', 'mp', 'no', 'om', 'pk', 'pw', 'ps', 'pa', 'pg',\r\n 'py', 'pe', 'ph', 'pn', 'pl', 'pt', 'pr', 'qa', 're', 'ro', 'ru', 'rw', 'bl', 'sh', 'kn', 'lc', 'mf',\r\n 'pm', 'vc', 'ws', 'sm', 'st', 'sa', 'sn', 'rs', 'sc', 'sl', 'sg', 'sk', 'si', 'sb', 'so', 'za', 'gs',\r\n 'es', 'lk', 'sd', 'sr', 'sj', 'sz', 'se', 'ch', 'sy', 'tw', 'tj', 'tz', 'th', 'tl', 'tg', 'tk', 'to',\r\n 'tt', 'tn', 'tr', 'tm', 'tc', 'tv', 'ug', 'ua', 'ae', 'gb', 'us', 'um', 'uy', 'uz', 'vu', 've', 'vn',\r\n 'vg', 'vi', 'wf', 'eh', 'ye', 'zm', 'zw'];\r\n }\r\n\r\n\r\n friendlyName(fullPath: string , subPath: string , item: string){\r\n return fullPath.substring(0, fullPath.indexOf(subPath)) + item ;\r\n }\r\n\r\n showValue(defaults, field){\r\n return this.friendlyName(field.label , field.property , defaults[field.property]);\r\n }\r\n\r\n showError(prop: string) {\r\n const CONTROL = this.formParam?.get(prop);\r\n return (CONTROL?.value || CONTROL?.value === 0) && CONTROL?.status === 'INVALID';\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.defaults = null;\r\n }\r\n\r\n private extractLables() {\r\n this.fields.forEach(f => {\r\n if (f.visible) {\r\n f.label = this.labelKey(f);\r\n\r\n if (!this.screenFields.has(f.row)) {\r\n this.screenFields.set(f.row, []);\r\n }\r\n this.screenFields.get(f.row)!.push(f);\r\n\r\n if (f.cascadedBy) {\r\n this.formParam?.get(f.cascadedBy)?.valueChanges.subscribe(() => {\r\n this.formParam?.get(f.property)?.patchValue(null);\r\n })\r\n }\r\n }\r\n });\r\n\r\n for (let i = 1; i < this.screenFields.size; i++) {\r\n this.calcFlexSize(i);\r\n }\r\n // console.log(this.screenFields)\r\n }\r\n\r\n private calcFlexSize(i: number){\r\n // Preserve explicit fieldSize values only. For fields without fieldSize, allow\r\n // the layout to auto-size via flex (handled in the template/CSS).\r\n // Intentionally do nothing here so that unspecified fields remain flexible.\r\n return;\r\n }\r\n\r\n getCurrencyPattern(field: FieldInfo) {\r\n // const decimalPlaces = this.authService?.myCurrencies?.find(c => c.key === this.formParam.get(field.currency)?.value)?.currencyNumOfDecimalPattern || 3;\r\n const decimalPlaces = 3;\r\n return '^\\\\d*(?:[.,]\\\\d{1,' + decimalPlaces + '})?$';\r\n }\r\n\r\n splittedChips(form: FormGroup, fieldName: string):string[] {\r\n return form.get(fieldName).value === '' ? []: form.get(fieldName).value.trim().split(';');\r\n }\r\n\r\n\r\n fixArabicNumbers(str: any) {\r\n // if(typeof str === 'string') {\r\n // str = str.replace(/([٠١٢٣٤٥٦٧٨٩])|([۰۱۲۳۴۵۶۷۸۹])/g, (m, $1, $2) => m.charCodeAt(0) - ($1 ? 1632 : 1776));\r\n // }\r\n // console.log(str);\r\n }\r\n\r\n listShowValue(defaults: any, field: FieldInfo) {\r\n return defaults[field.property] ? this.showValue(defaults, field) : '';\r\n }\r\n\r\n removeChipsItem(form: FormGroup, fieldName: string, idx: number) {\r\n const emails = this.splittedChips(form, fieldName);\r\n if (emails.length >= 1){\r\n emails.splice(idx,1);\r\n }\r\n let cleanedEmails = emails.join(\";\");\r\n form.get(fieldName).setValue(cleanedEmails);\r\n }\r\n\r\n extractFieldName(element: any, property: string) {\r\n if (property?.includes('.')) {\r\n return property.split('.').reduce((acc, part) => acc && acc[part], element);\r\n } else {\r\n return element[property];\r\n }\r\n }\r\n\r\n getMultiValue(field: FieldInfo) {\r\n return this.formParam.get(field.property)?.value;\r\n }\r\n\r\n private validateEmail(email) {\r\n var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(String(email).toLowerCase());\r\n }\r\n\r\n addEmailToChips(event: MatChipInputEvent, form: FormGroup, fieldName: string) {\r\n\r\n const input = event.input;\r\n const value = event.value;\r\n const items = value.split(';');\r\n // value.split(' ');\r\n items.forEach(itm => {\r\n if (this.validateEmail((itm || '').trim())) {\r\n const x = this.splittedChips(form, fieldName);\r\n x.push(itm);\r\n form.get(fieldName).patchValue(x.join(';'));\r\n if (input) {\r\n input.value = '';\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n extractJsonFieldName(defaults: any, property: string) {\r\n const x= this.extractFieldName(defaults, property);\r\n if (x?.length > 0)\r\n return JSON.parse(x);\r\n else return '{}';\r\n }\r\n\r\n getOptionValue(item: any) {\r\n const value = typeof item === 'object' ?\r\n this.translateService.getDefaultLang() === 'en' ? item.englishName : item.arabicName\r\n : item;\r\n return value;\r\n }\r\n\r\n getHyperTextEvent() {\r\n this.hyperTextEvent.emit(true);\r\n }\r\n\r\n add(event: MatChipInputEvent): void {\r\n const value = (event.value || '').trim();\r\n if (value) {\r\n if (this.equationOperators.includes(value) || !this.equationValues().includes(value)) {\r\n this.equationValues.update(equationValues => [...equationValues, value]);\r\n }\r\n }\r\n\r\n this.fieldsInput.nativeElement.value = '';\r\n this.currentEquationValue.set('');\r\n this.updateEquationOptions();\r\n\r\n }\r\n\r\n remove(item: string, index: number): void {\r\n this.equationValues.update(equationValues => {\r\n if (index < 0) {\r\n return equationValues;\r\n }\r\n\r\n equationValues.splice(index, 1);\r\n this.announcer.announce(`Removed ${item}`);\r\n return [...equationValues];\r\n });\r\n this.updateEquationOptions();\r\n }\r\n\r\n selected(event: MatAutocompleteSelectedEvent): void{\r\n const selectedValue = event.option.viewValue.trim();\r\n\r\n if (!this.equationOperators.includes(selectedValue) && !this.equationValues().includes(selectedValue)) {\r\n this.equationValues.update(equationValues => [...equationValues, selectedValue]);\r\n } else if (this.equationOperators.includes(selectedValue)) {\r\n this.equationValues.update(equationValues => [...equationValues, selectedValue]);\r\n }\r\n\r\n this.currentEquationValue.set('');\r\n event.option.deselect();\r\n this.fieldsInput.nativeElement.value = '';\r\n this.updateEquationOptions();\r\n }\r\n\r\n updateEquationOptions(){\r\n this.reflectEquationValueOnForm();\r\n\r\n let updatedFields: string[];\r\n if (this.equationValues().length === 0) {\r\n updatedFields = this.getNamesFromSuggestedEquationFields();\r\n } else {\r\n let lastElement = this.equationValues()[this.equationValues().length - 1];\r\n if (this.equationOperators.includes(lastElement)) {\r\n updatedFields = this.getNamesFromSuggestedEquationFields();\r\n } else {\r\n updatedFields = this.equationOperators;\r\n }\r\n }\r\n // console.log('*****', updatedFields);\r\n this.allEquationFields.next(updatedFields);\r\n }\r\n\r\n getNamesFromSuggestedEquationFields(): string[] {\r\n return this.equationSuggestedFields?.map(field => field.name);\r\n }\r\n\r\n reflectEquationValueOnForm() {\r\n if (this.formParam && this.formParam.get('fieldValue')) {\r\n this.formParam.get('fieldValue').setValue(this.equationValues());\r\n } else {\r\n // console.log('Form or fieldValue is not available.');\r\n }\r\n }\r\n\r\n checkEquation(field: FieldInfo, $event: Event) {\r\n // console.log('$event', $event);\r\n // try {\r\n // evaluate(equation.replace(/[a-zA-Z0-9]+/g, '1')); // Replace variables with dummy values\r\n // this.formGroups[index].get('xyz').setErrors(null);\r\n // console.log('valid ', equation)\r\n // } catch (e) {\r\n // this.formGroups[index].get('xyz').setErrors({serverError: 'incomplete '});\r\n // console.log('bad ', equation)\r\n // }\r\n }\r\n\r\n getView(field): 'month' | 'year' | 'multi-year' {\r\n return field.pattern || 'month';\r\n }\r\n\r\n setMonthAndYear(normalizedMonthAndYear: Moment, picker: MatDatepicker<Moment>, field) {\r\n console.log('field.pattern', field.pattern)\r\n if (field.pattern === 'multi-year') {\r\n console.log('hi')\r\n const date = new FormControl(moment());\r\n const ctrlValue = date.value;\r\n ctrlValue.year(normalizedMonthAndYear.year());\r\n ctrlValue.month(1);\r\n ctrlValue.dayOfYear(1);\r\n this.formParam.get(field.property).setValue(ctrlValue)\r\n picker.close();\r\n }\r\n }\r\n}\r\n\r\n","<div class=\"main-form-canvas\">\r\n <div class=\"form-wrapper\">\r\n <ng-container *ngIf=\"defaults\">\r\n <ng-container *ngIf=\"editable; else readonlyView\" class=\"form-container\">\r\n <form [formGroup]=\"formParam\" class=\"form-content\">\r\n <div class=\"form-row\">\r\n <div class=\"form-column\">\r\n <ng-container *ngFor=\"let row of screenFields | keyvalue\">\r\n <div class=\"row-container\">\r\n <ng-container *ngFor=\"let field of row.value\">\r\n <div class=\"field-column\" [style.flex]=\"field.fieldSize ? ('0 0 ' + field.fieldSize + '%') : '1 1 0'\">\r\n <ng-container [ngSwitch]=\"field.type\">\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n\r\n <mat-form-field appearance=\"outline\">\r\n <input matInput\r\n [matDatepicker]=\"picker\"\r\n [value]=\"formParam.get(field.property)?.value\"\r\n (dateChange)=\"formParam.get(field.property).setValue($event.value)\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n formControlName=\"{{field.property}}\"\r\n [required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n\r\n <mat-datepicker #picker\r\n [startView]=\"getView(field)\"\r\n (yearSelected)=\"setMonthAndYear($event, picker, field)\"\r\n panelClass=\"example-month-picker\">\r\n </mat-datepicker>\r\n\r\n <mat-error *ngIf=\"showError(field.property)\" aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'phone-number'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container class=\"custom-ngx-mat-intl-tel-input\" *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <div class=\"phone-input-wrapper\">\r\n <ngx-mat-intl-tel-input\r\n formControlName=\"{{ field.property }}\"\r\n [inputPlaceholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [preferredCountries]=\"['qa']\"\r\n [enablePlaceholder]=\"true\"\r\n [enableSearch]=\"true\"\r\n [onlyCountries]=\"getCountryCodeList()\"\r\n [required]=\"field.required\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n </ngx-mat-intl-tel-input>\r\n </div>\r\n\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'iban-text'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"textReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [required]=\"field.required\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'password'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input matInput\r\n class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n [type]=\"hide && !field.disabled ? 'password' : 'text'\"\r\n [readonly]=\"field.readonly\"\r\n [required]=\"field.required\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n <!-- <mat-icon matSuffix-->\r\n <!-- (click)=\"hide = !hide\">-->\r\n <!-- {{ hide ? 'visibility_off' : 'visibility' }}-->\r\n <!-- </mat-icon>-->\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"textReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-icon *ngIf=\"field.showSearchIcon\" matPrefix>search</mat-icon>\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [required]=\"field.required\"\r\n (keyup)=\"fixArabicNumbers($event.target)\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'chip-list'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n\r\n <mat-chip-grid [attr.aria-labelledby]=\"'label-' + field.property\"\r\n formControlName=\"{{ field.property }}\">\r\n <mat-chip-row\r\n *ngFor=\"let mail of splittedChips(formParam, field.property); let idx = index\"\r\n [removable]=\"removable\"\r\n (removed)=\"removeChipsItem(formParam, field.property, idx)\">\r\n {{ mail }}\r\n <mat-icon matChipRemove *ngIf=\"removable\">cancel</mat-icon>\r\n </mat-chip-row>\r\n\r\n <input [attr.aria-labelledby]=\"'label-' + field.property\" [matChipInputFor]=\"null\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"addOnBlur\"\r\n (matChipInputTokenEnd)=\"addEmailToChips($event, formParam, field.property)\">\r\n </mat-chip-grid>\r\n <mat-error id=\"error-{{ field.property }}\" *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'amount'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"amountReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n type=\"number\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [required]=\"field.required\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'sequence'\">\r\n <ng-container\r\n *ngIf=\"referenceAttributeTrue(field.property, 'autoGenerated'); else noSequence\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"true\"\r\n [disabled]=\"true\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #noSequence>\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n [readonly]=\"false\"\r\n [disabled]=\"false\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [required]=\"field.required\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-template>\r\n\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"textareaReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <textarea cdkFocusInitial\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"3\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-describedby]=\"'error-' + field.property\"\r\n [readonly]=\"field.readonly\"\r\n [required]=\"field.required\"></textarea>\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"numberReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n type=\"number\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-describedby]=\"'error-' + field.property\"\r\n [required]=\"field.readonly ? false : field.required\"\r\n [readonly]=\"field.readonly\"\r\n [pattern]=\"field.pattern\">\r\n <mat-error id=\"error-{{ field.property }}\" *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"timeReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input\r\n matInput\r\n class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n type=\"time\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-describedby]=\"'error-' + field.property\"\r\n [required]=\"field.required\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"checkboxReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <mat-checkbox\r\n appearance=\"outline\"\r\n style=\"padding-bottom: 14px; padding-top: 14px;\"\r\n [disabled]=\"field.readonly\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n formControlName=\"{{ field.property }}\">\r\n {{ field.label! | translate }}\r\n <mat-error *ngIf=\"showError(field.property)\" aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-checkbox>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'color-picker'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center\">\r\n <h4 style=\"margin-right: 10px\">{{ field.label! | translate }}</h4>\r\n <input\r\n ejs-colorpicker\r\n type=\"color\"\r\n id=\"colorpicker\"\r\n formControlName=\"{{ field.property }}\"\r\n [attr.aria-label]=\"field.label! | translate\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n />\r\n </div>\r\n <mat-error *ngIf=\"showError(field.property)\" aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'radio-button'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"radioButtonReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <mat-radio-group\r\n formControlName=\"{{field.property}}\"\r\n class=\"app-radio\"\r\n [attr.aria-label]=\"field.label! | translate\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\">\r\n <div class=\"field-row\">\r\n <div class=\"field-label\">\r\n <span class=\"custom-label\">{{ field.label! | translate }}</span>\r\n </div>\r\n <div class=\"field-input\">\r\n <div class=\"radio-group-custom\">\r\n <mat-radio-button\r\n *ngFor=\"let option of field.listOptions\"\r\n [value]=\"option\"\r\n [attr.aria-labelledby]=\"option\">\r\n {{ option | translate }}\r\n </mat-radio-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-error\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-radio-group>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"listReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\r\n <mat-select\r\n formControlName=\"{{field.property}}\"\r\n [attr.aria-label]=\"field.label! | translate\"\r\n [attr.aria-required]=\"field.required\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [disabled]=\"field.readonly\"\r\n [multiple]=\"field.multi || false\"\r\n [required]=\"field.readonly ? false : field.required\"\r\n [(value)]=\"field.defaultListOption\">\r\n <ng-container *ngIf=\"field.translate; else lookup_no_translation\">\r\n <mat-option\r\n *ngFor=\"let item of field.listOptions; let i = index\"\r\n [value]=\"item\">\r\n {{ friendlyName(field.label, field.property, item) | translate }}\r\n </mat-option>\r\n </ng-container>\r\n <ng-template #lookup_no_translation>\r\n <mat-option\r\n *ngFor=\"let item of field.listOptions\"\r\n [value]=\"item\">\r\n {{ getOptionValue(item) }}\r\n </mat-option>\r\n </ng-template>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'attachment'\" [formGroup]=\"formParam\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <!-- Uncomment and use the attachment control when ready -->\r\n <!-- <ag-attachment-control\r\n [allowMulti]=\"field.multi\"\r\n [attachmentDefaultExternal]=\"pageInfo?.attachmentDefaultExternal\"\r\n [supportedTypes]=\"field.supportedTypes\"\r\n [buttonType]=\"field.buttonType\"\r\n [hideListOfFiles]=\"field.hideFiles\"\r\n (filesList)=\"updateFilesList($event, field)\"\r\n (actionExecuted)=\"actionExecuted($event, field)\"\r\n style=\"margin-top: 5px\"\r\n label=\"{{field.label! | translate}}\">\r\n </ag-attachment-control> -->\r\n <mat-error class=\"iq-error\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'lookup'\" [formGroup]=\"formParam\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"lookupReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <app-auto-complete\r\n [form]=\"formParam\"\r\n [field]=\"field\"\r\n [supportingAttributes]=\"supportingAttributes\"\r\n [defaultValue]=\"this.formParam.get(field.property)?.value\"\r\n (selectedValue)=\"patchLookupValue($event, field.property)\">\r\n <mat-error\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </app-auto-complete>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'currency'\" [formGroup]=\"formParam\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"currencyReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <!-- Uncomment and use the currency control when ready -->\r\n <!-- <app-currency\r\n [form]=\"formParam\"\r\n [field]=\"field\"\r\n [defaultValue]=\"this.formParam.get(field.property)?.value\"\r\n (selectedValue)=\"patchCurrencyValue($event, field.property)\">\r\n </app-currency> -->\r\n <mat-error\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'multi-select'\" [formGroup]=\"formParam\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"multiSelectReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <app-multi-auto-complete\r\n [form]=\"formParam\"\r\n [field]=\"field\"\r\n [defaultValue]=\"getMultiValue(field)\"\r\n (selectedValue)=\"patchMultiSelectValue($event, field.property)\">\r\n <mat-error\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </app-multi-auto-complete>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'rich-text'\" [formGroup]=\"formParam\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <!-- Uncomment and use the rich text editor when ready -->\r\n <!-- <ckeditor\r\n [editor]=\"Editor\"\r\n [disabled]=\"field.readonly\"\r\n formControlName=\"{{field.property}}\">\r\n </ckeditor> -->\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'divider'\">\r\n <mat-divider></mat-divider>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'hyper-text'\">\r\n <div>\r\n <mat-label\r\n (click)=\"getHyperTextEvent()\"\r\n class=\"hyper-link\">\r\n {{ field.label! | translate }}\r\n </mat-label>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'section-title'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <div class=\"hrdivider-mid\">\r\n <span>{{ field.label | translate }}</span>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'equation-builder'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"textReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\" dir=\"ltr\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [required]=\"field.required\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- <ng-container *ngSwitchCase=\"'equation-builder'\" [formGroup]=\"formParam\">-->\r\n <!-- <ng-container *ngIf=\"showField(defaults, field)\">-->\r\n <!-- <ng-container *ngIf=\"!workflowEditableField(field)\">-->\r\n <!-- <ng-container-->\r\n <!-- [ngTemplateOutlet]=\"dateReadonly\"-->\r\n <!-- [ngTemplateOutletContext]=\"{ field: field }\">-->\r\n <!-- </ng-container>-->\r\n <!-- </ng-container>-->\r\n <!-- <ng-container *ngIf=\"workflowEditableField(field)\">-->\r\n <!-- <div style=\"display: flex; width: 350%\">-->\r\n <!-- <mat-label>{{ field.label! | translate }}</mat-label>-->\r\n <!-- <mat-form-field style=\"width: 400%\" appearance=\"outline\">-->\r\n <!-- <mat-chip-grid #chipGrid>-->\r\n <!-- <ng-container *ngFor=\"let equationValue of equationValues(); let i = index\">-->\r\n <!-- <mat-chip-row (removed)=\"remove(equationValue, i)\">-->\r\n <!-- {{ equationValue }}-->\r\n <!-- <button-->\r\n <!-- matChipRemove-->\r\n <!-- [attr.aria-label]=\"'remove ' + equationValue\">-->\r\n <!-- <mat-icon>cancel</mat-icon>-->\r\n <!-- </button>-->\r\n <!-- </mat-chip-row>-->\r\n <!-- </ng-container>-->\r\n <!-- </mat-chip-grid>-->\r\n <!-- <input-->\r\n <!-- [(ngModel)]=\"currentEquationValue\"-->\r\n <!-- [matChipInputFor]=\"chipGrid\"-->\r\n <!-- [matAutocomplete]=\"auto\"-->\r\n <!-- [ngModelOptions]=\"{ standalone: true }\"-->\r\n <!-- [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"-->\r\n <!-- (matChipInputTokenEnd)=\"add($event)\"-->\r\n <!-- aria-label=\"Add equation value\" />-->\r\n <!-- <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">-->\r\n <!-- <ng-container *ngFor=\"let filteredField of (equationFilteredFields() | async)\">-->\r\n <!-- <mat-option [value]=\"filteredField\">{{ filteredField }}</mat-option>-->\r\n <!-- </ng-container>-->\r\n <!-- </mat-autocomplete>-->\r\n <!-- </mat-form-field>-->\r\n <!-- </div>-->\r\n <!-- <mat-error class=\"iq-error\" *ngIf=\"showError(field.property)\" aria-live=\"assertive\">-->\r\n <!-- {{ getErrors(field.property) | translate }}-->\r\n <!-- </mat-error>-->\r\n <!-- </ng-container>-->\r\n <!-- </ng-container>-->\r\n <!-- </ng-container>-->\r\n\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n</div>\r\n<ng-template #dateReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) | date: 'dd/MM/yyyy' }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #timeReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ formatTimeToDate(defaults[field.property]) | date: 'shortTime' }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #phoneNumberReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #textReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\" *ngIf=\"!field.advancedFilter\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #textareaReadonly let-field=\"field\">\r\n <ng-container *ngIf=\"field.textFormat === 'json'; else normalText\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <div class=\"readonly-value json-viewer\">\r\n <ngx-json-viewer [json]=\"extractJsonFieldName(defaults, field.property)\" [expanded]=\"true\"></ngx-json-viewer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-template #normalText>\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n </ng-template>\r\n</ng-template>\r\n\r\n<ng-template #numberReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #currencyReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #radioButtonReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ translateLable(defaults[field.property]) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #richTextReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\" [innerHtml]=\"extractFieldName(defaults, field.property)\"></span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #checkboxReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">\r\n <mat-icon color=\"warn\" *ngIf=\"extractFieldName(defaults, field.property); else showNo\">done</mat-icon>\r\n <ng-template #showNo>\r\n <mat-icon color=\"warn\">close</mat-icon>\r\n </ng-template>\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #listReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\" *ngIf=\"field.translate; else noTranslate\">\r\n {{ listShowValue(defaults, field) | translate }}\r\n </span>\r\n <ng-template #noTranslate>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </ng-template>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #sequenceReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #lookupReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">\r\n {{ extractFieldName(defaults, field.property)?.[translateService.getDefaultLang() === 'en' ? 'englishName' : 'arabicName'] }}\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #amountReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">\r\n {{ extractFieldName(defaults, field.property) | currency: currency }}\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #multiSelectReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <mat-chip-grid class=\"readonly-value chipList\">\r\n <mat-chip *ngFor=\"let filedProp of showMultiSelectValuesAsReadonly(field)\">\r\n {{ filedProp }}\r\n </mat-chip>\r\n </mat-chip-grid>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #chipListReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHTML]=\"field.label | translate\"></label>\r\n <mat-chip-listbox class=\"readonly-value chipList\">\r\n <mat-chip-option *ngFor=\"let loc of splitReadonly(extractFieldName(defaults, field.property))\"\r\n [selectable]=\"true\"\r\n color=\"warn\"\r\n [removable]=\"false\">\r\n {{ loc }}\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #readonlyView>\r\n <div class=\"row-wrapper\">\r\n <div class=\"column-wrapper\">\r\n <ng-container *ngFor=\"let row of screenFields | keyvalue\">\r\n <div class=\"row-container\">\r\n <ng-container *ngFor=\"let field of row.value\">\r\n <div class=\"field-column readonly-item\" [style.flex]=\"field.fieldSize ? ('0 0 ' + field.fieldSize + '%') : '1 1 0'\">\r\n\r\n <ng-container [ngSwitch]=\"field.type\">\r\n\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ng-container [ngTemplateOutlet]=\"dateReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <ng-container [ngTemplateOutlet]=\"timeReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'phone-number'\">\r\n <ng-container [ngTemplateOutlet]=\"phoneNumberReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <ng-container [ngTemplateOutlet]=\"textReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <ng-container [ngTemplateOutlet]=\"textareaReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <ng-container [ngTemplateOutlet]=\"numberReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'currency'\">\r\n <ng-container [ngTemplateOutlet]=\"currencyReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'radio-button'\">\r\n <ng-container [ngTemplateOutlet]=\"radioButtonReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <ng-container [ngTemplateOutlet]=\"checkboxReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'status'\">\r\n <ng-container [ngTemplateOutlet]=\"checkboxReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'lookup'\">\r\n <ng-container [ngTemplateOutlet]=\"lookupReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'amount'\">\r\n <ng-container [ngTemplateOutlet]=\"amountReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'multi-select'\">\r\n <ng-container [ngTemplateOutlet]=\"multiSelectReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'chip-list'\">\r\n <ng-container [ngTemplateOutlet]=\"chipListReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'sequence'\">\r\n <ng-container [ngTemplateOutlet]=\"sequenceReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <ng-container [ngTemplateOutlet]=\"listReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'iban-text'\">\r\n <p class=\"label\">\r\n <span [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></span>\r\n <span> : </span>\r\n <span class=\"value\" [innerHtml]=\"extractFieldName(defaults, field.property)\"></span>\r\n </p>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'section-title'\">\r\n <div class=\"hrdivider-mid\">\r\n <span>{{ field.label | translate }}</span>\r\n </div>\r\n </ng-container>\r\n\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n","import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {FieldFilter} from \"../../../base-model/field-filter.model\";\r\nimport {FieldInfo, PageInfo} from \"../../../base-model\";\r\nimport {BaseFormCanvasComponent} from \"../../base-form-canvas/base-form-canvas.component\";\r\n\r\n@Component({\r\n selector: 'app-field-filter',\r\n templateUrl: './field-filter.component.html',\r\n standalone: true,\r\n imports: [\r\n BaseFormCanvasComponent\r\n ],\r\n styleUrls: ['./field-filter.component.scss']\r\n})\r\n\r\nexport class FieldFilterComponent implements OnInit {\r\n\r\n @Input()\r\n filter: FieldFilter;\r\n\r\n @Input()\r\n pageInfo: PageInfo;\r\n\r\n @Input()\r\n filterFields: FieldInfo[];\r\n\r\n filterForm: FormGroup;\r\n\r\n @Input()\r\n item: any;\r\n\r\n @Input()\r\n editable = false;\r\n\r\n @Output()\r\n selectedValue: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n filterFieldInformation: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n\r\n formChanges($event: FormGroup) {\r\n this.filterForm = $event;\r\n this.filterForm.valueChanges.subscribe(v => {\r\n this.filterFieldInformation.emit(this.filterForm.value);\r\n });\r\n }\r\n}\r\n","\r\n<app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"filterFields\"\r\n [editable]=\"editable\"\r\n (formUpdated)=\"formChanges($event)\"\r\n>\r\n</app-base-form-canvas>\r\n","import {Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport {CommonModule, formatDate} from '@angular/common';\r\nimport {FieldInfo, PageInfo, TableColumn} from \"../../../base-model\";\r\nimport {FieldFilter} from \"../../../base-model/field-filter.model\";\r\nimport {FieldFilterComponent} from \"../field-filter/field-filter.component\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {MatButtonModule} from \"@angular/material/button\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\n\r\n@Component({\r\n selector: 'app-filter-builder',\r\n templateUrl: './filter-builder.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FieldFilterComponent,\r\n TranslateModule,\r\n MatButtonModule,\r\n MatIcon\r\n ],\r\n styleUrls: ['./filter-builder.component.scss']\r\n})\r\nexport class FilterBuilderComponent implements OnInit, OnDestroy {\r\n\r\n @Input()\r\n columns: TableColumn<any>[];\r\n\r\n @Input()\r\n isChecked: boolean;\r\n @Input()\r\n filterFields: FieldInfo[];\r\n @Input()\r\n pageInfo: PageInfo;\r\n @Input()\r\n pendingFilters: FieldFilter[] = [];\r\n\r\n filter: FieldFilter;\r\n filters: FieldFilter[] = [];\r\n\r\n private searchTimeout: any;\r\n private autoApplyTimeout: any;\r\n\r\n @Output()\r\n filterInformation: EventEmitter<FieldFilter[]> = new EventEmitter<FieldFilter[]>();\r\n\r\n @Output()\r\n isEmpty: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @Output()\r\n applyFilter: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n\r\n this.switchToAdvanced();\r\n if (!this.filter) {\r\n this.filter = this.createDefaultFieldFilter();\r\n }\r\n if (this.filterFields && this.filterFields.length) {\r\n this.filters = this.filterFields.map(() => this.createDefaultFieldFilter());\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.searchTimeout) {\r\n clearTimeout(this.searchTimeout);\r\n this.searchTimeout = null;\r\n }\r\n if (this.autoApplyTimeout) {\r\n clearTimeout(this.autoApplyTimeout);\r\n this.autoApplyTimeout = null;\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (event.key === 'Enter' && !event.shiftKey && !event.ctrlKey && !event.metaKey) {\r\n const target = event.target as HTMLElement;\r\n const isInputElement = target.tagName === 'INPUT' ||\r\n target.tagName === 'TEXTAREA' ||\r\n target.tagName === 'SELECT' ||\r\n target.isContentEditable;\r\n\r\n if (isInputElement) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n this.onApplyFilter();\r\n }\r\n }\r\n\r\n\r\n doSearch() {\r\n const filtersArray = (this.filters || [])\r\n .filter(f => !!f && f.fieldName && f.valueObject !== undefined && f.valueObject !== null && f.valueObject !== '')\r\n .map(f => ({...f}));\r\n this.filterInformation.emit(filtersArray);\r\n }\r\n\r\n onApplyFilter(): void {\r\n if (this.autoApplyTimeout) {\r\n clearTimeout(this.autoApplyTimeout);\r\n this.autoApplyTimeout = null;\r\n }\r\n this.applyFilter.emit();\r\n }\r\n\r\n private scheduleAutoApply(): void {\r\n if (this.autoApplyTimeout) {\r\n clearTimeout(this.autoApplyTimeout);\r\n this.autoApplyTimeout = null;\r\n }\r\n this.autoApplyTimeout = setTimeout(() => {\r\n this.onApplyFilter();\r\n this.autoApplyTimeout = null;\r\n }, 10000);\r\n }\r\n\r\n private scheduleSearch(delayMs: number = 800) {\r\n if (this.searchTimeout) {\r\n clearTimeout(this.searchTimeout);\r\n }\r\n this.searchTimeout = setTimeout(() => {\r\n this.doSearch();\r\n }, delayMs);\r\n }\r\n\r\n formChanges($event: any, index?: number, fieldInfo?: FieldInfo) {\r\n if (this.autoApplyTimeout) {\r\n clearTimeout(this.autoApplyTimeout);\r\n this.autoApplyTimeout = null;\r\n }\r\n\r\n const formatIfDate = (type?: string, value?: any) => {\r\n if (!type || value === undefined || value === null || value === '') return value;\r\n if ((type || '').toLowerCase().includes('date')) {\r\n return formatDate(value, 'yyyy-MM-dd', 'en_US');\r\n }\r\n return value;\r\n };\r\n\r\n if (index === undefined || !fieldInfo) {\r\n if (!this.filterFields || !this.filterFields.length) {\r\n this.filters = [];\r\n this.doSearch();\r\n return;\r\n }\r\n\r\n this.filters = this.filterFields.map((fi) => {\r\n const controlName = fi.property;\r\n let value = $event ? $event[controlName] : undefined;\r\n if (value === undefined || value === null || value === '') {\r\n return this.createDefaultFieldFilter();\r\n }\r\n const fieldName = controlName === 'from' || controlName === 'to' ? fi.targetProperty : controlName;\r\n\r\n return {\r\n fieldName: fieldName,\r\n operator: fi.filterOperator || 'EQUALS',\r\n filterType: 'FILED_FILTER',\r\n fieldType: this.typeMap(fi.type) as any,\r\n valueObject: formatIfDate(fi.type, value) as any\r\n } as FieldFilter;\r\n });\r\n\r\n const hasTextField = (this.filterFields || []).some(fi => ((fi.type || '').toLowerCase() === 'text'));\r\n if (hasTextField) {\r\n this.scheduleSearch();\r\n } else {\r\n this.doSearch();\r\n }\r\n this.scheduleAutoApply();\r\n return;\r\n }\r\n\r\n if (!this.filters) {\r\n this.filters = [];\r\n }\r\n if (this.filters.length < index + 1) {\r\n this.filters.length = index + 1;\r\n }\r\n\r\n let controlName = fieldInfo.property;\r\n let value = $event ? $event[controlName] : undefined;\r\n if ($event && $event.filterField !== undefined && $event.fromValue !== undefined) {\r\n controlName = $event.filterField || controlName;\r\n value = $event.fromValue;\r\n }\r\n\r\n if (value === undefined || value === null || value === '') {\r\n this.filters[index] = this.createDefaultFieldFilter();\r\n } else {\r\n this.filters[index] = {\r\n fieldName: controlName,\r\n operator: fieldInfo.filterOperator || 'EQUALS',\r\n filterType: 'FILED_FILTER',\r\n fieldType: this.typeMap(fieldInfo.type) as any,\r\n valueObject: formatIfDate(fieldInfo.type, value) as any\r\n } as FieldFilter;\r\n }\r\n const isTextField = ((fieldInfo.type || '').toLowerCase() === 'text');\r\n if (isTextField) {\r\n this.scheduleSearch();\r\n } else {\r\n this.doSearch();\r\n }\r\n this.scheduleAutoApply();\r\n }\r\n typeMap(colType?: string): string {\r\n const t = (colType || '').toLowerCase();\r\n if (t.includes('number') || t.includes('int') || t === 'long') return 'Long';\r\n if (t.includes('date') || t.includes('time')) return 'Date';\r\n if (t.includes('bool')) return 'Boolean';\r\n return 'String';\r\n }\r\n\r\n isEditable(_index?: number) {\r\n return true;\r\n }\r\n\r\n\r\n deleteAll() {\r\n this.filter = this.createDefaultFieldFilter();\r\n this.filters = this.filterFields ? this.filterFields.map(() => this.createDefaultFieldFilter()) : [];\r\n this.isEmpty.emit(true);\r\n }\r\n\r\n\r\n switchToAdvanced() {\r\n if (this.isChecked) {\r\n if (!this.filter || Object.keys(this.filter).length === 0) {\r\n this.filter = this.createDefaultFieldFilter();\r\n }\r\n }\r\n }\r\n\r\n\r\n private createDefaultFieldFilter(): FieldFilter {\r\n return {\r\n fieldName: '',\r\n operator: '',\r\n filterType: '',\r\n fieldType: '',\r\n valueObject: ''\r\n } as FieldFilter;\r\n }\r\n}\r\n","<div class=\"main-filter-builder\">\r\n\r\n <div class=\"filterForm\">\r\n <div class=\"filterForm__row\">\r\n <div class=\"filterForm__col\">\r\n <app-field-filter\r\n [editable]=\"isEditable()\"\r\n [filter]=\"filter\"\r\n [pageInfo]=\"pageInfo\"\r\n *ngIf=\"isEditable()\"\r\n [filterFields]=\"filterFields\"\r\n (filterFieldInformation)=\"formChanges($event)\"\r\n class=\"filterForm__filed-filter\"\r\n >\r\n </app-field-filter>\r\n </div>\r\n <div class=\"button-group\">\r\n <button\r\n mat-flat-button\r\n class=\"btn-apply-filter\"\r\n (click)=\"onApplyFilter()\">\r\n <div class=\"button-text\">\r\n <mat-icon>filter_list</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n<!-- <div *ngIf=\"checkIsEmpty()\" class=\"line-top\">-->\r\n<!-- <mat-divider></mat-divider>-->\r\n<!-- </div>-->\r\n\r\n<!-- <div class=\"line-bottom\">-->\r\n<!-- <mat-divider></mat-divider>-->\r\n<!-- </div>-->\r\n\r\n<!-- <div class=\"action\">-->\r\n<!-- <button class=\"btn-none-background-primary action__clear\" mat-button (click)=\"deleteAll()\">-->\r\n<!-- {{'FILTER-BUILDER.clearAllFilters' | translate}}-->\r\n<!-- </button>-->\r\n<!-- <button class=\"btn-background-primary\" mat-button (click)=\"doSearch()\">-->\r\n<!-- {{'FILTER-BUILDER.search' | translate}}-->\r\n<!-- </button>-->\r\n<!-- </div>-->\r\n</div>\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n effect,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnChanges, OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\nimport {\r\n MatCell,\r\n MatCellDef,\r\n MatColumnDef,\r\n MatHeaderCell,\r\n MatHeaderCellDef,\r\n MatHeaderRow,\r\n MatHeaderRowDef,\r\n MatRow,\r\n MatRowDef,\r\n MatTable,\r\n MatTableDataSource\r\n} from \"@angular/material/table\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {MatSortModule, Sort} from \"@angular/material/sort\";\r\nimport {\r\n CurrencyPipe,\r\n DatePipe, DecimalPipe,\r\n JsonPipe,\r\n NgClass,\r\n NgForOf,\r\n NgIf,\r\n NgStyle,\r\n NgSwitch,\r\n NgSwitchCase,\r\n NgSwitchDefault, UpperCasePipe\r\n} from \"@angular/common\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {MatButton, MatButtonModule, MatIconButton} from \"@angular/material/button\";\r\nimport {NgxPaginationModule} from \"ngx-pagination\";\r\nimport {ButtonActionsComponent} from \"../button-actions/button-actions.component\";\r\nimport {ShareDataService} from \"../../services/trigger-form.service\";\r\nimport {BaseUtils} from \"../../utils/base-utils\";\r\nimport {BackendService} from \"../../services/backend-service\";\r\nimport {Filter} from \"../../base-model/filter.model\";\r\nimport {FilterRequest} from \"../../base-model/filter-request\";\r\nimport {\r\n ADD_NEW_RECORD_ACTION,\r\n ButtonActionSettings,\r\n EMPTY_PAGE_INFO, FieldInfo,\r\n FRONT_END_COLUMN_TYPES,\r\n PageInfo,\r\n SELECT_RECORD_ACTION, TABLE_RECORD_ACTION,\r\n TableColumn\r\n} from \"../../base-model\";\r\nimport {ReportRequest} from \"../../base-model/report-request.model\";\r\nimport {TablePageUserAction} from \"../../base-model/table-page-user-action.interface\";\r\nimport {Workflow} from \"../../base-model/workflow/workflow.model\";\r\nimport {ResponseEnvelop} from \"../../base-model/response-envelop.model\";\r\nimport {Router} from \"@angular/router\";\r\nimport {MatLabel} from \"@angular/material/form-field\";\r\nimport {MatChipListbox, MatChipOption} from \"@angular/material/chips\";\r\nimport {MatButtonToggle, MatButtonToggleGroup} from \"@angular/material/button-toggle\";\r\nimport {TitleBarComponent} from \"../title-bar/title-bar.component\";\r\nimport {PaginatorComponent} from \"../paginator/paginator.component\";\r\nimport {MatCheckbox} from \"@angular/material/checkbox\";\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport {FilterBuilderComponent} from \"../advanced-filter/filter-builder/filter-builder.component\";\r\nimport {FieldFilter} from \"../../base-model/field-filter.model\";\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\r\n\r\n@Component({\r\n selector: 'app-base-table',\r\n standalone: true,\r\n templateUrl: './base-table.component.html',\r\n styleUrls: ['./base-table.component.scss'],\r\n animations: [],\r\n imports: [\r\n NgStyle,\r\n NgClass,\r\n TranslateModule,\r\n MatIcon,\r\n MatSortModule,\r\n MatColumnDef,\r\n MatHeaderCellDef,\r\n NgIf,\r\n MatTable,\r\n MatHeaderCell,\r\n NgSwitch,\r\n MatButtonModule,\r\n MatCell,\r\n MatCellDef,\r\n DatePipe,\r\n CurrencyPipe,\r\n NgxPaginationModule,\r\n MatRow,\r\n MatRowDef,\r\n MatHeaderRow,\r\n NgSwitchCase,\r\n NgSwitchDefault,\r\n MatHeaderRowDef,\r\n MatIconButton,\r\n NgForOf,\r\n JsonPipe,\r\n MatButton,\r\n ButtonActionsComponent,\r\n MatLabel,\r\n MatChipListbox,\r\n MatChipOption,\r\n MatButtonToggleGroup,\r\n MatButtonToggle,\r\n TitleBarComponent,\r\n PaginatorComponent,\r\n DecimalPipe,\r\n MatCheckbox,\r\n BaseFormCanvasComponent,\r\n FilterBuilderComponent,\r\n MatMenuTrigger,\r\n MatMenu,\r\n MatMenuItem,\r\n UpperCasePipe,\r\n ]\r\n})\r\nexport class BaseTableComponent extends BaseUtils implements OnInit, OnChanges, OnDestroy {\r\n types: string[] = [\"pdf\", \"csv\", \"xlsx\"]\r\n collection = {count: 60, data: []};\r\n config = {\r\n itemsPerPage: 15,\r\n currentPage: 1,\r\n totalItems: this.collection.count\r\n };\r\n public maxSize: number = 7;\r\n public directionLinks: boolean = true;\r\n public autoHide: boolean = false;\r\n public responsive: boolean = true;\r\n public labels: any = {\r\n previousLabel: '<',\r\n nextLabel: '>',\r\n screenReaderPaginationLabel: 'Pagination',\r\n screenReaderPageLabel: 'page',\r\n screenReaderCurrentLabel: `You're on page`\r\n };\r\n\r\n @Input()\r\n filterFields: FieldInfo[];\r\n @Input() noDataFoundIcon = 'close';\r\n @Input() noDataFoundTitle = 'noDataFoundTitle';\r\n @Input() noDataFoundSubtitle = 'noDataFoundSubtitle';\r\n totalElements = 0;\r\n pagesCount = 0;\r\n pageIndex = 1;\r\n pageSize = 15;\r\n private selectedStatusFilter: Filter[] = [];\r\n advancedAppliedFilter: any[] = [];\r\n pendingFilters: any[] = [];\r\n searchStr: string = '';\r\n private filterRequest: FilterRequest = new FilterRequest();\r\n private timer: any;\r\n @Input()\r\n override pageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n\r\n @Input()\r\n enablePagination: boolean = true;\r\n\r\n @Input() data?: MatTableDataSource<any>;\r\n @Input()\r\n listAction: ButtonActionSettings[] = [];\r\n\r\n @Input()\r\n columns: TableColumn<any>[];\r\n\r\n @Input()\r\n filters: Filter[] = [];\r\n\r\n @Input() //@ts-ignore\r\n pathParam: number;\r\n\r\n @Input() //@ts-ignore\r\n extraButton: string;\r\n\r\n @Input() //@ts-ignore\r\n enforceRefresh: boolean = false;\r\n\r\n @Input()\r\n isPending: boolean = false;\r\n\r\n @Input()\r\n trigger: boolean = false;\r\n\r\n @Input()\r\n reportRequest: ReportRequest = new ReportRequest({});\r\n\r\n @Input()\r\n separateEndpointData: any;\r\n @Input()\r\n manageablePages: boolean = false;\r\n @Input()\r\n totalPagesCount: number = 0;\r\n @Input()\r\n currentPageIndex: number = 0;\r\n\r\n @Output()\r\n pageChange: EventEmitter<any> = new EventEmitter();\r\n\r\n\r\n @Output()\r\n userAction: EventEmitter<TablePageUserAction> = new EventEmitter<TablePageUserAction>();\r\n @Output()\r\n hyperLinkAction: EventEmitter<TablePageUserAction> = new EventEmitter<TablePageUserAction>();\r\n\r\n @Output()\r\n extraAction: EventEmitter<TablePageUserAction> = new EventEmitter<TablePageUserAction>();\r\n\r\n @Output()\r\n selectedColumn: EventEmitter<Sort> = new EventEmitter<Sort>();\r\n\r\n @Output()\r\n listActionClicked: EventEmitter<{ action: ButtonActionSettings, row: any }> = new EventEmitter<{\r\n action: ButtonActionSettings,\r\n row: any\r\n }>();\r\n\r\n @Output()\r\n showDialog: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n usedWorkflow!: Workflow;\r\n\r\n mode:any;\r\n\r\n @Input()\r\n customizedData?: MatTableDataSource<any>;\r\n dataSource: MatTableDataSource<any>;\r\n selectedRowIndex = -1;\r\n noDataFound = false;\r\n totalRequiredCountItem = 0;\r\n\r\n\r\n @Output()\r\n clickRoutePage: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n constructor(\r\n private backendService: BackendService,\r\n public translateService: TranslateService,\r\n public shareDataService: ShareDataService,\r\n @Inject('securityManager') private securityManager: any,\r\n private router: Router,\r\n ) {\r\n super();\r\n this.dataSource = new MatTableDataSource();\r\n this.columns = [];\r\n this.filterRequest = new FilterRequest();\r\n\r\n effect(() => {\r\n if (this.pageInfo.lazyLoadData !== true || this.enforceRefresh === true) {\r\n this.loadData();\r\n }\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.backendService.isEmptyItems = this.dataSource.data.length <= 0;\r\n if (this.customizedData) {\r\n this.dataSource = this.customizedData;\r\n }\r\n if(this.manageablePages) {\r\n this.pagesCount = this.totalPagesCount;\r\n this.pageIndex = this.currentPageIndex;\r\n }\r\n\r\n }\r\n\r\n onPageChange(event: number) {\r\n this.pageIndex = event;\r\n this.getNext(this.pageIndex - 1);\r\n if (this.manageablePages) {\r\n this.pageChange.emit(this.pageIndex);\r\n }\r\n }\r\n\r\n\r\n extractFieldName(element: any, property: string) {\r\n if (property?.includes('.')) {\r\n return property.split('.').reduce((acc, part) => acc && acc[part], element);\r\n } else {\r\n const c = this.columns.find(c => c.property === property);\r\n if (Array.isArray(element[property]) && c.arraySubProperty ) {\r\n const fieldValues = element[property].map(f => f[c.arraySubProperty]);\r\n return fieldValues.join(', ');\r\n }else {\r\n return element[property];\r\n }\r\n }\r\n }\r\n\r\n get visibleColumns() {\r\n this.buildGroups()\r\n return this.columns.filter(column => column.visible).map(column => column.property);\r\n }\r\n\r\n get visibleColumnsArray() {\r\n return this.visibleColumns;\r\n }\r\n\r\n getColumn(property: string): TableColumn<any> | undefined {\r\n return this.columns.find(c => c.property === property);\r\n }\r\n\r\n getSortDirection(property: string): 'asc' | 'desc' | '' {\r\n if (this.reportRequest?.filterRequest?.sortKey === property) {\r\n return this.reportRequest.filterRequest.sortDirection === 'ASC' ? 'asc' : 'desc';\r\n }\r\n return '';\r\n }\r\n\r\n handleSortClick(property: string): void {\r\n const COLUMN = this.getColumn(property);\r\n if (!COLUMN || !COLUMN.enableSorting) {\r\n return;\r\n }\r\n\r\n const CURRENT_DIRECTION = this.getSortDirection(property);\r\n let NEW_DIRECTION: 'asc' | 'desc' = 'asc';\r\n\r\n if (CURRENT_DIRECTION === 'asc') {\r\n NEW_DIRECTION = 'desc';\r\n }\r\n\r\n this.onSortAction({\r\n active: property,\r\n direction: NEW_DIRECTION\r\n });\r\n }\r\n\r\n sortState: any = {};\r\n\r\n getNext(pageIndex: number) {\r\n this.reportRequest.filterRequest.pageIndex = pageIndex;\r\n this.reportRequest.filterRequest.pageSize = this.pageSize;\r\n this.loadData();\r\n }\r\n onPageSizeChange(event: number) {\r\n this.pageSize = event;\r\n this.pageIndex = 1; // reset to first page on page size change\r\n this.reportRequest.filterRequest.pageSize = this.pageSize;\r\n this.getNext(0);\r\n }\r\n\r\n\r\n\r\n private loadData() {\r\n clearTimeout(this.timer);\r\n if (!this.reportRequest.filterRequest) {\r\n this.reportRequest.filterRequest = new FilterRequest(this.pageInfo.pageSize);\r\n this.reportRequest.filterRequest.filters = this.advancedAppliedFilter;\r\n }\r\n if (this.separateEndpointData || !this.pageInfo.apiUri || this.pageInfo.apiUri.length === 0) {\r\n this.dataSource.data = this.separateEndpointData;\r\n } else if(this.reportRequest == undefined){\r\n return;\r\n } else if(!this.manageablePages) {\r\n this.timer = setTimeout(() => {\r\n this.reportRequest.filterRequest.columns = this.columns?.filter(c => FRONT_END_COLUMN_TYPES.indexOf(c.type) < 0 ).map(c => c.property) || [];\r\n this.reportRequest.filterRequest.pendingPage = this.isPending;\r\n this.reportRequest.filterRequest.filters = this.advancedAppliedFilter;\r\n this.backendService.getItemsByFilter(this.reportRequest?.filterRequest, this.pageInfo.apiUri).subscribe(resp => {\r\n const responseEnvelope = new ResponseEnvelop(resp);\r\n if (responseEnvelope.valid) {\r\n this.totalRequiredCountItem = this.reportRequest.filterRequest.pageSize\r\n this.noDataFound = responseEnvelope.body.length < 1;\r\n this.dataSource.data = responseEnvelope.body;\r\n this.backendService.isEmptyItems = this.dataSource.data.length <= 0;\r\n this.totalElements = responseEnvelope.totalSize || 0;\r\n this.pagesCount = Math.ceil(this.totalElements / this.pageSize) || 1;\r\n this.pageIndex = (this.reportRequest.filterRequest.pageIndex || 0) + 1;\r\n this.config.totalItems = responseEnvelope.totalSize || 0;\r\n this.config.currentPage = this.pageIndex + 1;\r\n // this.pageSize = this.reportRequest.filterRequest.pageSize;\r\n }\r\n });\r\n }\r\n , 300);\r\n }\r\n }\r\n\r\n getStatusDescription(element: any) {\r\n return this.backendService.getStatusDescription(element, this.usedWorkflow);\r\n }\r\n\r\n getStateType(element: any) {\r\n return element.stateType\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"customizedData\"] && !changes[\"customizedData\"].isFirstChange()) {\r\n this.dataSource.data = changes[\"customizedData\"].currentValue?.data || []; // Update data source with new data\r\n this.pagesCount=this.totalPagesCount;\r\n this.pageIndex=this.currentPageIndex;\r\n }\r\n if (changes[\"enforceRefresh\"] && !changes[\"enforceRefresh\"].isFirstChange()) {\r\n this.loadData();\r\n }\r\n }\r\n getCroppedText(elementValue: any, subWidth: number = 20) {\r\n return elementValue && elementValue.length > subWidth ? elementValue.substring(0, subWidth) + \"...\" : elementValue;\r\n }\r\n\r\n emitEvent(element: any) {\r\n this.showDialog.emit(element);\r\n }\r\n\r\n extractFormat(column: TableColumn<any>) {\r\n return column?.format || 'd/M/yyyy, h:mm a';\r\n }\r\n\r\n actionListClicked(listAction: ButtonActionSettings, element: any) {\r\n this.listActionClicked.emit({action:listAction, row: element});\r\n }\r\n\r\n hyperLinkClicked(actionName: string, element: any) {\r\n const action = TABLE_RECORD_ACTION;\r\n action.actionKey = actionName;\r\n action.item = element;\r\n action.pageInfo = this.pageInfo;\r\n this.hyperLinkAction.emit(action)\r\n }\r\n\r\n\r\n emitRoutePage(element: any){\r\n this.clickRoutePage.emit(element);\r\n }\r\n\r\n onSelectItem(row: any) {\r\n if (this.pageInfo.selfRouting) {\r\n const mode = this.isPending ? 'pending' : 'view';\r\n const url = `${this.pageInfo.listRoutePath || this.router.url}/view`;\r\n\r\n const encryptedId = this.backendService.encrypt(String(row.id));\r\n const encryptedMode = this.backendService.encrypt(mode);\r\n\r\n const encryptedRow = this.backendService.encrypt(JSON.stringify(row));\r\n\r\n this.router.navigate([url], {\r\n queryParams: { token: encryptedId, mode: encryptedMode },\r\n state: { raw: encryptedRow },\r\n });\r\n return;\r\n }\r\n // const action = SELECT_RECORD_ACTION;\r\n // action.id = row?.id;\r\n // action.item = row;\r\n // this.userAction.emit(action)\r\n }\r\n\r\n openNewTab(row) {\r\n if (!this.pageInfo.embededTableOnly) {\r\n const mode = this.isPending ? 'pending' : 'view';\r\n window.open(`${this.pageInfo.listRoutePath}/${mode}` + '/' + row?.id);\r\n }\r\n }\r\n\r\n switchViewMode(b: boolean) {\r\n this.isPending = !this.isPending;\r\n this.loadData();\r\n }\r\n\r\n onAddNewAction($event: any) {\r\n const url = `${this.pageInfo.listRoutePath || this.router.url}/view`;\r\n const encryptedId = this.backendService.encrypt(\"-1\");\r\n const encryptedMode = this.backendService.encrypt(\"pending\");\r\n this.router.navigate([`${url}`],\r\n { queryParams: { token: encryptedId , mode : encryptedMode } });\r\n\r\n // const action = SELECT_RECORD_ACTION;\r\n // action.id = row?.id;\r\n // action.item = row;\r\n // this.userAction.emit(action)\r\n }\r\n\r\n showAddNew() {\r\n return this.pageInfo.hasAddButton ;\r\n }\r\n\r\n onExtraButtionAction($event: any) {\r\n this.extraAction.emit($event);\r\n\r\n }\r\n\r\n hasGroups() {\r\n let b = this.columns.findIndex(p => p.group);\r\n return b >= 0;\r\n }\r\n groupNames: any = []\r\n groupSpans: Map<string, number> = new Map();\r\n\r\n buildGroups(){\r\n let count = 0;\r\n this.groupNames = [];\r\n this.groupSpans.clear();\r\n if(this.hasGroups() === false){\r\n return;\r\n }\r\n this.columns\r\n .filter(column => column.visible === true)\r\n .forEach((column) => {\r\n if (column.group === \"-\") {\r\n this.groupNames.push(count.toString());\r\n this.insertInMap(count);\r\n count++;\r\n return;\r\n } else if (!this.groupNames.includes(column.group)) {\r\n this.groupNames.push(column.group);\r\n this.insertInMap(column.group);\r\n return;\r\n }\r\n this.insertInMap(column.group);\r\n });\r\n }\r\n\r\n insertInMap(key){\r\n if(this.groupSpans.has(key)){\r\n this.groupSpans.set(key.toString(), this.groupSpans.get(key) + 1);\r\n } else {\r\n this.groupSpans.set(key.toString(), 1);\r\n }\r\n }\r\n\r\n isHumanMade(str){\r\n return isNaN(str);\r\n }\r\n\r\n actionButtonClicked(actionKey: string, item: any): void {\r\n if (actionKey === 'navigate') {\r\n this.handleNavigateAction(item);\r\n return;\r\n }\r\n\r\n this.emitTableAction(actionKey, item);\r\n }\r\n\r\n private handleNavigateAction(item: any): void {\r\n const mode = this.isPending ? 'pending' : 'view';\r\n const basePath = this.pageInfo.listRoutePath || this.router.url;\r\n const url = `${basePath}/view`;\r\n\r\n const encryptedId = this.backendService.encrypt(item.id.toString());\r\n const encryptedMode = this.backendService.encrypt(mode);\r\n\r\n this.router.navigate([url], {\r\n queryParams: { token: encryptedId, mode: encryptedMode }\r\n });\r\n }\r\n\r\n private emitTableAction(actionKey: string, item: any): void {\r\n const action = TABLE_RECORD_ACTION;\r\n action.actionKey = actionKey;\r\n action.item = item;\r\n action.pageInfo = this.pageInfo;\r\n this.userAction.emit(action);\r\n }\r\n\r\n extractReport(reportType: any) {\r\n const myFilters = this.reportRequest.filterRequest;\r\n const reportRequest = this.backendService.buildReportRequest(this.columns, this.pageInfo.labelsSection + '.list_title',\r\n myFilters, reportType, this.pageInfo, this.searchStr, 'LANDSCAPE');\r\n this.backendService.downloadReport(reportRequest, this.pageInfo.apiUri);\r\n }\r\n\r\n getIcon(status: string): string {\r\n switch (status) {\r\n case 'pass': return 'check_circle';\r\n case 'warning': return 'warning';\r\n case 'error': return 'error';\r\n default: return 'help';\r\n }\r\n }\r\n\r\n actionCheckedClicked(property: string, element) {\r\n element[property]= !element[property];\r\n this.actionButtonClicked(property, element);\r\n }\r\n\r\n\r\n isDarkHighlight(row: any): boolean {\r\n const groupByProp = this.pageInfo?.groupByProperty;\r\n const groupByValues = this.pageInfo?.groupByValue;\r\n\r\n if (!groupByProp || !groupByValues || !row[groupByProp]) {\r\n return false;\r\n }\r\n\r\n const cellValue = row[groupByProp].toString();\r\n\r\n return groupByValues.some(val =>\r\n cellValue.includes(val) && cellValue.length > val.length\r\n );\r\n }\r\n\r\n shouldRenderAsHyperLink(element: any): boolean {\r\n const groupByProp = this.pageInfo?.groupByProperty;\r\n const groupByValues = this.pageInfo?.groupByValue;\r\n\r\n if (!groupByProp || !groupByValues || !element[groupByProp]) {\r\n return false;\r\n }\r\n\r\n const value = element[groupByProp].toString();\r\n\r\n return !groupByValues.some(v => value.includes(v) && value.length >= v.length);\r\n }\r\n\r\n\r\n onSortAction($event: Sort) {\r\n this.reportRequest.filterRequest.sortKey = $event.active && $event.direction ?\r\n this.columns.find(c => c.property === $event.active)?.orderByProperty || $event.active\r\n : 'id';\r\n this.reportRequest.filterRequest.sortDirection = $event.direction === 'asc' ? 'ASC' : 'DESC';\r\n this.reportRequest.filterRequest.pageIndex = 0;\r\n this.selectedColumn.emit($event);\r\n this.loadData();\r\n }\r\n\r\n shouldShowButton(element: any): boolean {\r\n const groupByProp = this.pageInfo?.groupByProperty;\r\n const groupByValues = this.pageInfo?.groupByValue;\r\n\r\n if (!groupByProp || !groupByValues || !element[groupByProp]) {\r\n return true;\r\n }\r\n\r\n const value = element[groupByProp].toString();\r\n\r\n return !groupByValues.some(v => value.includes(v) && value.length >= v.length);\r\n }\r\n doAdvancedSearch($event: FieldFilter[]) {\r\n this.advancedAppliedFilter = [];\r\n if ($event.length === 0) {\r\n this.advancedAppliedFilter = [];\r\n this.loadData();\r\n // this.paginator.firstPage();\r\n } else {\r\n this.advancedAppliedFilter = $event;\r\n this.loadData();\r\n }\r\n }\r\n\r\n storePendingFilters($event: FieldFilter[]): void {\r\n this.pendingFilters = $event || [];\r\n }\r\n\r\n applyPendingFilters(): void {\r\n this.advancedAppliedFilter = this.pendingFilters || [];\r\n this.loadData();\r\n }\r\n\r\n handleFilterEmpty($event: boolean): void {\r\n if ($event) {\r\n this.pendingFilters = [];\r\n this.advancedAppliedFilter = [];\r\n this.loadData();\r\n }\r\n }\r\n\r\n resetData($event: boolean) {\r\n if ($event) {\r\n this.advancedAppliedFilter = [];\r\n this.pendingFilters = [];\r\n this.loadData();\r\n // this.paginator.firstPage();\r\n }\r\n }\r\n}\r\n","<div class=\"flex-column baseTable\">\r\n <div class=\"flex-row flex-100\" *ngIf=\"!pageInfo.hideTitle\">\r\n <div [class.flex-50]=\"pageInfo.draftSupported\" [class.flex-100]=\"!pageInfo.draftSupported\" class=\"flex-column align-start\">\r\n <app-title-bar\r\n [pageTitle]=\"pageInfo.hideTitle ? '' : pageInfo.labelsSection+'.list_title'\"\r\n [titleMode]=\"''\"\r\n [newAction]=\"showAddNew()\"\r\n [showExtractButton]=\"!pageInfo.hideExtractButton\"\r\n [extraButton]=\"extraButton\"\r\n (newActionClicked)=\"onAddNewAction($event)\"\r\n (extractReport)=\"extractReport($event)\"\r\n [totalElements]=\"pageInfo.hideTitle ? undefined : totalElements\">\r\n </app-title-bar>\r\n </div>\r\n <div class=\"flex-50 flex-column align-end\" *ngIf=\"pageInfo.draftSupported\">\r\n <mat-chip-listbox aria-label=\"Color selection\" [multiple]=\"false\">\r\n <mat-chip-option [selected]=\"!this.isPending\" [color]=\"'accent'\" [value]=\"'COMPLETED'\" (click)=\"switchViewMode(false)\">\r\n {{'finished' | translate}}\r\n </mat-chip-option>\r\n <mat-chip-option [selected]=\"this.isPending\" [color]=\"'accent'\" [value]=\"'PENDING'\" (click)=\"switchViewMode(true)\">\r\n {{'todo' | translate}}\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"filter-row\" *ngIf=\"!pageInfo.hideAdvancedFilter\">\r\n <app-filter-builder\r\n *ngIf=\"!pageInfo.hideAdvancedFilter\"\r\n [pageInfo]=\"pageInfo\"\r\n [columns]=\"columns\"\r\n [filterFields]=\"filterFields\"\r\n [pendingFilters]=\"pendingFilters\"\r\n (filterInformation)=\"storePendingFilters($event)\"\r\n (isEmpty)=\"handleFilterEmpty($event)\"\r\n (applyFilter)=\"applyPendingFilters()\">\r\n </app-filter-builder>\r\n\r\n <div class=\"button-group\" *ngIf=\"!pageInfo.hideExtractButton\">\r\n <button *ngIf=\"!pageInfo.hideExtractButton\"\r\n mat-flat-button\r\n [matMenuTriggerFor]=\"exportMenu\"\r\n class=\"btn-export\"\r\n >\r\n <div class=\"button-text\">\r\n <mat-icon>file_export</mat-icon>\r\n <span>{{ 'export' | translate }}</span>\r\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n </button>\r\n\r\n <mat-menu #exportMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"extractReport('pdf')\">PDF</button>\r\n <button mat-menu-item (click)=\"extractReport('xlsx')\">Excel</button>\r\n <button mat-menu-item (click)=\"extractReport('csv')\">CSV</button>\r\n </mat-menu>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"flex-row flex-100 baseTable__detailsColumn\">\r\n <div class=\"flex-100\">\r\n <div class=\"flex-row flex-100 mainTable\">\r\n <div class=\"table-container\">\r\n <div class=\"table-header\" [attr.data-sort]=\"sortState\">\r\n <div *ngFor=\"let columnProp of visibleColumnsArray; let i = index\"\r\n class=\"table-header-cell\"\r\n [class.sortable]=\"getColumn(columnProp)?.enableSorting\"\r\n [class.first-cell]=\"i === 0\"\r\n [class.last-cell]=\"i === visibleColumnsArray.length - 1\"\r\n [class.actions-cell]=\"i === visibleColumnsArray.length - 1 && columnProp === 'actions'\"\r\n [class.has-width]=\"getColumn(columnProp)?.width\"\r\n [ngStyle]=\"getColumn(columnProp)?.width ? {'width': getColumn(columnProp)?.width + '%', 'flex-basis': getColumn(columnProp)?.width + '%'} : {}\"\r\n (click)=\"getColumn(columnProp)?.enableSorting && handleSortClick(columnProp)\">\r\n <div class=\"table-header-content\">\r\n <span class=\"table-header-label\">{{ labelKey(getColumn(columnProp)) | translate }}</span>\r\n <ng-container *ngIf=\"getColumn(columnProp)?.enableSorting\">\r\n <mat-icon *ngIf=\"getSortDirection(columnProp) === 'asc'\"\r\n class=\"sort-icon sort-asc\">arrow_drop_up</mat-icon>\r\n <mat-icon *ngIf=\"getSortDirection(columnProp) === 'desc'\"\r\n class=\"sort-icon sort-desc\">arrow_drop_down</mat-icon>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"table-body\">\r\n <div *ngFor=\"let row of dataSource.data; let rowIndex = index\"\r\n class=\"table-row\"\r\n [attr.id]=\"'table-row-' + (row?.id || row?.key || '')\"\r\n [ngClass]=\"{\r\n 'table-row--highlight': selectedRowIndex == row.id || (pageInfo.groupByProperty && pageInfo.groupByValue?.includes(row[pageInfo.groupByProperty])),\r\n 'table-row--dark-highlight': isDarkHighlight(row)\r\n }\"\r\n (auxclick)=\"openNewTab(row)\"\r\n (click)=\"$event.stopPropagation(); onSelectItem(row)\">\r\n <div *ngFor=\"let columnProp of visibleColumnsArray; let i = index\"\r\n class=\"table-cell\"\r\n [class.first-cell]=\"i === 0\"\r\n [class.last-cell]=\"i === visibleColumnsArray.length - 1\"\r\n [class.actions-cell]=\"i === visibleColumnsArray.length - 1 && columnProp === 'actions'\"\r\n [class.has-width]=\"getColumn(columnProp)?.width\"\r\n [ngStyle]=\"getColumn(columnProp)?.width ? {'width': getColumn(columnProp)?.width + '%', 'flex-basis': getColumn(columnProp)?.width + '%'} : {}\">\r\n <ng-container [ngSwitch]=\"getColumn(columnProp)?.type\">\r\n <ng-container *ngSwitchCase=\"'workflowStatus'\">\r\n <button mat-button class=\"wfStatus {{ getStatusDescription(row)}}\" [attr.id]=\"'table-btn-wf-'+columnProp+'-'+(row.id || row.key || '')\">{{ getStatusDescription(row) }}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'hyper-text'\">\r\n <mat-label (click)=\"hyperLinkClicked(columnProp, row)\" [ngClass]=\"{'hyper-link': shouldRenderAsHyperLink(row)}\">\r\n {{ extractFieldName(row, columnProp) }}\r\n </mat-label>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <button *ngIf=\"shouldShowButton(row)\" mat-button class=\"primary\" (click)=\"$event.stopPropagation(); actionButtonClicked(columnProp, row)\" [attr.id]=\"'table-btn-action-'+columnProp\">\r\n {{ labelKey(getColumn(columnProp)) + '_title' | translate }}\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <mat-icon [ngClass]=\"{\r\n 'mainTable__td__icon-green': row[columnProp] === 'pass',\r\n 'mainTable__td__icon-orange': row[columnProp] === 'warning',\r\n 'mainTable__td__icon-red': row[columnProp] === 'error'\r\n }\">\r\n {{ getIcon(row[columnProp]) }}\r\n </mat-icon>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <mat-checkbox class=\"primary\" [checked]=\"row[columnProp]\" (click)=\"$event.stopPropagation();actionCheckedClicked(columnProp,row)\"></mat-checkbox>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'stateType'\">\r\n <button mat-button class=\"stateType {{ row[columnProp]}}\" [attr.id]=\"'table-btn-state-'+columnProp\">{{ labelKeyByValue(getColumn(columnProp), row) | translate}}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n {{ extractFieldName(row, columnProp) | date:'yyyy-MM-dd' }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'croppedText'\">\r\n {{ getCroppedText(row[columnProp], row[getColumn(columnProp)?.width]) }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'download'\">\r\n <mat-icon class=\"mainTable__td__icon-blue\">system_update_alt</mat-icon>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'onOff'\">\r\n <mat-icon *ngIf=\"row[columnProp] === null\" class=\"mainTable__td__icon-darkorange\">flag</mat-icon>\r\n <mat-icon *ngIf=\"row[columnProp] === false\" class=\"mainTable__td__icon-red\">flag</mat-icon>\r\n <mat-icon *ngIf=\"row[columnProp] === true\" class=\"mainTable__td__icon-green\">flag</mat-icon>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'status'\">\r\n <span *ngIf=\"row[columnProp] === null || row[columnProp] === false\">\r\n {{ pageInfo.labelsSection + '.' + getColumn(columnProp)?.label + 'InActive' | translate }}\r\n </span>\r\n <span *ngIf=\"row[columnProp] === true\">\r\n {{ pageInfo.labelsSection + '.' + getColumn(columnProp)?.label + 'Active' | translate }}\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'info'\">\r\n <button mat-icon-button (click)=\"$event.stopPropagation();emitEvent(row)\" [attr.id]=\"'table-btn-info-'+row.id\">\r\n <mat-icon>info</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'netAmount'\">\r\n <div class=\"mainTable__td__currency\" style=\"display:inline-block;\">{{ row[getColumn(columnProp)?.currency] }}</div>\r\n <span class=\"mainTable__td__property\" style=\"display:inline-block; margin-left:6px; margin-right:6px;\">\r\n {{ extractFieldName(row, columnProp) | currency:'':'' }}</span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'localDateTime'\">\r\n {{ extractFieldName(row, columnProp) | date : extractFormat(getColumn(columnProp)) }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'bigdecimal'\">\r\n <small><sup class=\"mainTable__td__currency\">{{row[getColumn(columnProp)?.currency]}}</sup></small>\r\n {{ extractFieldName(row, columnProp) | number : (getColumn(columnProp)?.digitInfo || '1.3-5') }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'listAction'\">\r\n <app-button-actions\r\n [buttonsAction]=\"getColumn(columnProp)?.viewType === 'buttonsAction'\"\r\n [listAction]=\"listAction\"\r\n [actions]=\"listAction\"\r\n (clickedButton)=\"actionListClicked($event,row)\">\r\n </app-button-actions>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"getColumn(columnProp)?.translate; else noTranslate\">\r\n <span (click)=\"emitRoutePage(row)\">\r\n {{ extractFieldName(row, columnProp) | translate }}\r\n </span>\r\n </ng-container>\r\n <ng-template #noTranslate>\r\n <span (click)=\"emitRoutePage(row)\" [innerHtml]='extractFieldName(row, columnProp)'></span>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"noDataFound\" class=\"dataNotFound flex-column\">\r\n <mat-icon class=\"dataNotFound__icon\">{{ noDataFoundIcon }}</mat-icon>\r\n <span class=\"dataNotFound__title\">{{ noDataFoundTitle | translate}}</span>\r\n <span class=\"dataNotFound__subtitle\">{{ noDataFoundSubtitle | translate}}</span>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"(dataSource.data?.length > 0 || customizedData) && !pageInfo.hidePagination\" class=\"main-pagination flex-row\">\r\n <ng-container *ngIf=\"enablePagination\">\r\n <div class=\"flex-column flex-100\">\r\n <app-paginator\r\n [currentPage]=\"pageIndex\"\r\n [totalItems]=\"totalElements\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"[5, 10, 25, 50]\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\">\r\n </app-paginator>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import {Component, HostListener, Inject, OnInit} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogContent, MatDialogRef, MatDialogTitle} from \"@angular/material/dialog\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {MatButton} from \"@angular/material/button\";\r\nimport {FieldInfo, PageInfo} from \"../../base-model\";\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport {MatDivider} from \"@angular/material/divider\";\r\n\r\n@Component({\r\n selector: 'app-audit-log-details-dialog',\r\n standalone: true,\r\n imports: [\r\n MatDialogTitle,\r\n MatDialogContent,\r\n FormsModule,\r\n TranslateModule,\r\n MatButton,\r\n BaseFormCanvasComponent,\r\n MatDivider\r\n ],\r\n templateUrl: './audit-log-details-dialog.component.html',\r\n styleUrl: './audit-log-details-dialog.component.css'\r\n})\r\nexport class AuditLogDetailsDialogComponent implements OnInit {\r\n pageInfo: PageInfo;\r\n fields: FieldInfo[] = [];\r\n\r\n actionLabel : string =''\r\n isTermination : boolean=false;\r\n comment: string = '';\r\n external: boolean = false;\r\n signingRequired: boolean = false;\r\n tokenReference: string = \"\";\r\n warningMsg = false;\r\n item: any = {};\r\n constructor(public dialogRef: MatDialogRef<AuditLogDetailsDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n dialogRef.disableClose = true;\r\n }\r\n @HostListener('window:keyup.esc') onKeyUp() {\r\n this.dialogRef.close();\r\n }\r\n ngOnInit(): void {\r\n this.pageInfo = this.data.pageInfo;\r\n this.fields = this.data.fields;\r\n\r\n this.fields = this.data.fields.map((f: any) => ({ ...f }));\r\n\r\n const showHiddenFields: string[] = this.data.showHiddenFields || [];\r\n this.fields.forEach(field => {\r\n if (showHiddenFields.includes(field.property)) {\r\n field.visible = true;\r\n }\r\n });\r\n this.item = this.data.item;\r\n this.comment = this.data.comment;\r\n this.warningMsg = this.data.warningMsg || false;\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n\r\n getTitle() {\r\n return `${this.pageInfo.labelsSection}.${this.pageInfo.id}`;\r\n }\r\n}\r\n","<mat-dialog-content class=\"mat-typography overflow-hidden\">\r\n <div style=\"'padding': '10px 30px 10px 0'\">\r\n <h2 mat-dialog-title>{{ getTitle()| translate }}</h2>\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"false\"\r\n [item]=\"item\"\r\n ></app-base-form-canvas>\r\n\r\n <p>\r\n <span class=\"invoice-label\">{{ 'audit-log.reason_dialog' | translate }} :</span>\r\n <span class=\"invoice-label-text\">{{ comment }}</span>\r\n </p>\r\n <mat-divider style=\"width: 97%\"></mat-divider>\r\n <br>\r\n <button mat-stroked-button color='accent' style=\"margin: 5px\"\r\n (click)=\"cancel()\" id=\"acceptActionLabel\">\r\n {{ 'audit-log.close' | translate }}\r\n </button>\r\n <br>\r\n </div>\r\n</mat-dialog-content>\r\n","import {Component, Inject, Input, OnInit} from '@angular/core';\r\nimport {FieldInfo, Filter, FilterRequest, PageInfo, TableColumn} from \"../../base-model\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {BackendService} from \"../../services\";\r\nimport {DatePipe, NgForOf, NgIf} from \"@angular/common\";\r\nimport {MatButton, MatButtonModule} from \"@angular/material/button\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {AuditLogEntry} from \"../../base-model/audit-log-entry\";\r\nimport {AuditLogDetailsDialogComponent} from \"../audit-log-details-dialog/audit-log-details-dialog.component\";\r\nimport {Directionality} from \"@angular/cdk/bidi\";\r\n\r\n@Component({\r\n selector: 'app-audit-log',\r\n standalone: true,\r\n imports: [\r\n NgForOf,\r\n MatButtonModule,\r\n TranslateModule,\r\n NgIf,\r\n MatIconModule,\r\n MatButton\r\n ],\r\n providers: [DatePipe],\r\n templateUrl: './audit-log.component.html',\r\n styleUrl: './audit-log.component.scss'\r\n})\r\nexport class AuditLogComponent implements OnInit {\r\n auditLogEntries: AuditLogEntry[] = [];\r\n\r\n @Input()\r\n pageInfo!: PageInfo;\r\n\r\n @Input()\r\n fields: FieldInfo[];\r\n\r\n @Input()\r\n showHiddenFields : string[];\r\n\r\n\r\n itemId: number;\r\n\r\n item : any = {};\r\n isLoaded : boolean = false;\r\n columnsDefinition: TableColumn<any>[];\r\n\r\n currentDirection: 'ltr' | 'rtl';\r\n\r\n\r\n constructor(public dialog: MatDialog,\r\n private activatedRoute: ActivatedRoute,\r\n private datePipe: DatePipe,\r\n private translateService:TranslateService,\r\n private router:Router,\r\n private directionality: Directionality,\r\n @Inject('securityManager') private securityManager: any,\r\n public backendService: BackendService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.currentDirection = this.directionality.value;\r\n this.directionality.change.subscribe((value) => {\r\n this.currentDirection = value;\r\n })\r\n\r\n this.loadItem();\r\n }\r\n\r\n\r\n private loadItem() {\r\n if (this.activatedRoute.snapshot.queryParams['token']) {\r\n this.itemId = this.backendService.decrypt(this.activatedRoute.snapshot.queryParams['token']);\r\n }\r\n const filterRequest = new FilterRequest;\r\n if (this.itemId > 0) {\r\n filterRequest.filters = [];\r\n filterRequest.sortDirection = \"DESC\";\r\n // TODO\r\n // add pagination support here.\r\n filterRequest.pageSize = 1000;\r\n filterRequest.filters.push(new Filter({\r\n key: 0,\r\n fieldType: 'Long',\r\n fieldName: 'id',\r\n valueObject: this.itemId,\r\n filterType: 'FILED_FILTER',\r\n operator: 'EQUALS'\r\n }));\r\n }\r\n this.backendService.getItemAuditLog(filterRequest, this.pageInfo!.apiUri).subscribe(resp => {\r\n this.auditLogEntries = resp.body;\r\n });\r\n }\r\n\r\n\r\n viewObject(auditLog: AuditLogEntry) {\r\n const dialogRef = this.dialog.open(AuditLogDetailsDialogComponent, {\r\n data: {pageInfo: this.pageInfo, fields: this.fields, item:auditLog.subject, comment: auditLog.comment, showHiddenFields:this.showHiddenFields},\r\n width: '800px',\r\n height: 'auto',\r\n direction: this.currentDirection\r\n });\r\n\r\n }\r\n\r\n getDescription(auditLog: AuditLogEntry) {\r\n return `\r\n ${auditLog.createdBy || this.translateService.instant('system')}\r\n ${this.translateService.instant('on')}\r\n ${this.datePipe.transform(auditLog.createdOn, 'medium')}\r\n ${this.translateService.instant('audit-log.executed')} ${this.translateService.instant(auditLog.action.toString())}`\r\n }\r\n}\r\n","<h4>\r\n <span class=\"audit-log-title\">{{ 'audit-log.title' | translate }}</span>\r\n</h4>\r\n\r\n<div class=\"hrdivider-mini\">\r\n <hr class=\"header-hr\" />\r\n</div>\r\n\r\n<div class=\"audit-log-container\" *ngFor=\"let auditLog of auditLogEntries; let i = index\">\r\n <div class=\"audit-log-entry\">\r\n <p *ngIf=\"i === 0\" class=\"audit-log-spacer\"></p>\r\n\r\n <p class=\"audit-log-text\">\r\n {{ getDescription(auditLog) }}\r\n <button mat-stroked-button color=\"secondary\" (click)=\"viewObject(auditLog)\" [attr.id]=\"'audit-view-details-' + i\">\r\n {{ 'audit-log.view_details' | translate }}\r\n </button>\r\n </p>\r\n\r\n <p class=\"invoice-label-text\"></p>\r\n\r\n <div class=\"hrdivider-mini\">\r\n <hr class=\"header-hr\" />\r\n </div>\r\n </div>\r\n</div>\r\n","import {Component, ElementRef, EventEmitter, Output, ViewChild} from '@angular/core';\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {MatButton, MatIconButton} from \"@angular/material/button\";\r\nimport {NgIf} from \"@angular/common\";\r\nimport {MatTooltip} from \"@angular/material/tooltip\";\r\n\r\n@Component({\r\n selector: 'app-attachment-uploader',\r\n standalone: true,\r\n imports: [\r\n MatIcon,\r\n TranslateModule,\r\n MatButton,\r\n NgIf,\r\n MatTooltip,\r\n MatIconButton,\r\n ],\r\n templateUrl: './attachment-uploader.component.html',\r\n styleUrl: './attachment-uploader.component.css'\r\n})\r\nexport class AttachmentUploaderComponent {\r\n @ViewChild('fileUpload') fileUpload!: ElementRef<HTMLInputElement>;\r\n @Output() fileSelected = new EventEmitter<File | null>();\r\n\r\n selectedFile: File | null = null;\r\n isDragOver = false;\r\n\r\n triggerAttachmentUpload(): void {\r\n this.fileUpload.nativeElement.click();\r\n }\r\n\r\n uploadFileToServer(): void {\r\n const file = this.fileUpload.nativeElement.files?.[0];\r\n if (file) {\r\n this.selectedFile = file;\r\n this.fileSelected.emit(file);\r\n }\r\n }\r\n\r\n clearFile(): void {\r\n this.selectedFile = null;\r\n this.fileUpload.nativeElement.value = '';\r\n this.fileSelected.emit(null);\r\n }\r\n\r\n onDragOver(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDragOver = true;\r\n }\r\n\r\n onDragLeave(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDragOver = false;\r\n }\r\n\r\n onDrop(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDragOver = false;\r\n\r\n const files = event.dataTransfer?.files;\r\n if (files && files.length > 0) {\r\n const file = files[0];\r\n this.selectedFile = file;\r\n this.fileSelected.emit(file);\r\n }\r\n }\r\n}","<div class=\"attachment-uploader\"\r\n [class.drag-over]=\"isDragOver\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\">\r\n <div class=\"upload-content\">\r\n <div class=\"upload-icon\">\r\n <mat-icon>upload_file</mat-icon>\r\n </div>\r\n\r\n <p class=\"main-text\">{{ 'attachmentUploader.dragAndDrop' | translate }}</p>\r\n\r\n <p class=\"info-text\">{{ 'attachmentUploader.fileInfo' | translate }}</p>\r\n\r\n <button mat-stroked-button\r\n class=\"browse-button\"\r\n (click)=\"triggerAttachmentUpload()\">\r\n {{ 'attachmentUploader.browseFiles' | translate }}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"selectedFile\" class=\"selected-file\">\r\n <div class=\"file-info\">\r\n <mat-icon class=\"file-icon\">description</mat-icon>\r\n <span class=\"file-name\">{{ selectedFile.name }}</span>\r\n </div>\r\n <button mat-icon-button\r\n class=\"clear-button\"\r\n (click)=\"clearFile()\"\r\n matTooltip=\"{{ 'attachmentUploader.removeFile' | translate }}\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <input #fileUpload type=\"file\" class=\"hidden-input\" (change)=\"uploadFileToServer()\" />\r\n</div>\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport { FormGroup } from \"@angular/forms\";\r\nimport { AutoCompleteComponent } from \"../auto-complete/auto-complete.component\";\r\nimport { MatFormField, MatOption, MatSelect } from \"@angular/material/select\";\r\nimport {NgForOf, NgIf, NgSwitch, NgSwitchCase} from \"@angular/common\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {MatIconButton} from \"@angular/material/button\";\r\n\r\n@Component({\r\n selector: 'lib-equation-builder',\r\n standalone: true,\r\n imports: [\r\n AutoCompleteComponent,\r\n MatSelect,\r\n MatOption,\r\n MatFormField,\r\n NgSwitch,\r\n NgForOf,\r\n NgSwitchCase,\r\n MatIcon,\r\n MatIconButton,\r\n NgIf\r\n ],\r\n templateUrl: './equation-builder.component.html',\r\n styleUrl: './equation-builder.component.css'\r\n})\r\nexport class EquationBuilderComponent implements OnInit {\r\n @Input() form!: FormGroup;\r\n @Input() field!: any;\r\n @Input() isPending!: boolean;\r\n @Output() valueChanged = new EventEmitter<any>();\r\n\r\n operators = [\r\n { label: '+', value: '+' },\r\n { label: '-', value: '-' },\r\n { label: '=', value: '=' }\r\n ];\r\n\r\n items: any[] = [];\r\n @Input() readOnly!: boolean;\r\n\r\n ngOnInit() {\r\n const fieldValues: any[] = this.form.get('fieldValue')?.value;\r\n\r\n if (Array.isArray(fieldValues) && fieldValues.length > 0) {\r\n this.items = fieldValues.map(val => {\r\n if (this.operators.some(op => op.value === val)) {\r\n return { type: 'dropdown', value: val };\r\n } else {\r\n return {\r\n type: 'lookup',\r\n value: this.getLookupByCode(val)\r\n };\r\n }\r\n });\r\n } else {\r\n this.items = [{ type: 'lookup', value: null }];\r\n }\r\n\r\n }\r\n\r\n getLookupByCode(code: string): any {\r\n return { code: code, id: 1, englishName: code, arabicName: code }\r\n }\r\n\r\n onLookupChange(index: number, value: any) {\r\n this.items[index].value = value;\r\n\r\n if (index === this.items.length - 1) {\r\n this.items.push({ type: 'dropdown', value: null});\r\n }\r\n\r\n this.emitChange();\r\n }\r\n\r\n onDropdownChange(index: number, value: any) {\r\n this.items[index].value = value;\r\n\r\n if (index !== this.items.length - 1) {\r\n this.emitChange();\r\n return;\r\n }\r\n\r\n if (value === '=') {\r\n this.items = this.items.slice(0, index + 1);\r\n } else if (value != null && value !== '') {\r\n const lastItem = this.items[this.items.length - 1];\r\n if (lastItem.type !== 'lookup') {\r\n this.items.push({ type: 'lookup', value: null });\r\n }\r\n }\r\n\r\n this.emitChange();\r\n }\r\n\r\n emitChange() {\r\n const simplifiedItems = this.items.map(item => {\r\n if (item?.type === 'lookup') {\r\n return item.value?.code ?? null;\r\n } else if (item?.type === 'dropdown') {\r\n return item.value ?? null;\r\n }\r\n return null;\r\n });\r\n const isValid = simplifiedItems[simplifiedItems.length - 1] === '=';\r\n\r\n this.valueChanged.emit({\r\n value: simplifiedItems.filter(val => val !== '='),\r\n valid: isValid\r\n });\r\n }\r\n\r\n onClearAll(): void {\r\n this.items = [{ type: 'lookup', value: null }];\r\n this.emitChange();\r\n }\r\n\r\n\r\n}\r\n","<div class=\"flex-row gap-10 fill align-start-center\">\r\n <ng-container *ngFor=\"let item of items; let i = index\">\r\n <div class=\"flex-row align-start-center gap-5\">\r\n <ng-container [ngSwitch]=\"item.type\">\r\n <ng-container *ngSwitchCase=\"'lookup'\">\r\n <app-auto-complete\r\n class=\"flex-full\"\r\n [field]=\"field\"\r\n [form]=\"form\"\r\n [defaultValue]=\"item.value\"\r\n (selectedValue)=\"onLookupChange(i, $event)\">\r\n </app-auto-complete>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'dropdown'\">\r\n <mat-form-field class=\"flex-none\" appearance=\"outline\" style=\"width: 100px\">\r\n <mat-select [disabled]=\"readOnly\" [value]=\"item.value\" (selectionChange)=\"onDropdownChange(i, $event.value)\">\r\n <mat-option *ngFor=\"let opt of operators\" [value]=\"opt.value\">\r\n {{ opt.label }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <button [disabled]=\"isPending\" mat-icon-button color=\"warn\" (click)=\"onClearAll()\" *ngIf=\"items.length > 0\" id=\"equation-clear-all-btn\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n</div>\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from \"@angular/core\";\r\nimport {\r\n MatCell,\r\n MatCellDef,\r\n MatColumnDef,\r\n MatHeaderCell,\r\n MatHeaderCellDef,\r\n MatHeaderRow,\r\n MatHeaderRowDef,\r\n MatRow,\r\n MatRowDef,\r\n MatTable\r\n} from \"@angular/material/table\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {MatSortModule} from \"@angular/material/sort\";\r\nimport {NgClass, NgForOf, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault} from \"@angular/common\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {MatButton, MatButtonModule} from \"@angular/material/button\";\r\nimport {NgxPaginationModule} from \"ngx-pagination\";\r\nimport {Router} from \"@angular/router\";\r\nimport {AbstractControl, FormArray, FormBuilder, FormControl, FormGroup, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {MatError, MatFormField, MatInput, MatLabel, MatSuffix} from \"@angular/material/input\";\r\nimport {BackendService} from \"../../services\";\r\nimport {\r\n BaseUtils,\r\n buildFormFields,\r\n getNegativeWfActionKey,\r\n getPositiveWfActionKey,\r\n getWfActionId\r\n} from \"../../utils/base-utils\";\r\nimport {\r\n EMPTY_PAGE_INFO,\r\n FieldInfo,\r\n Filter,\r\n FilterRequest,\r\n LookupItem,\r\n PageInfo,\r\n SELECT_RECORD_ACTION,\r\n SnackMessage,\r\n TableColumn\r\n} from \"../../base-model\";\r\nimport {DoActionRequest, REJECT, SAVE} from \"../../base-model/do-action-request\";\r\nimport {ActionCommentComponent} from \"../action-comment/action-comment.component\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {MatDatepicker, MatDatepickerInput, MatDatepickerToggle} from \"@angular/material/datepicker\";\r\nimport moment, {Moment} from 'moment';\r\nimport {AutoCompleteComponent} from \"../auto-complete/auto-complete.component\";\r\nimport {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatOption} from \"@angular/material/core\";\r\nimport {MatChipListbox, MatChipOption} from \"@angular/material/chips\";\r\nimport {TitleBarComponent} from \"../title-bar/title-bar.component\";\r\nimport {PaginatorComponent} from \"../paginator/paginator.component\";\r\nimport {Directionality} from \"@angular/cdk/bidi\";\r\nimport {AttachmentUploaderComponent} from \"../shared/attachment-uploader/attachment-uploader.component\";\r\nimport {EquationBuilderComponent} from \"../equation-builder/equation-builder.component\";\r\nimport {MatSelect} from \"@angular/material/select\";\r\n\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport {MatCheckbox} from \"@angular/material/checkbox\";\r\n@Component({\r\n selector: 'app-editable-base-table',\r\n standalone: true,\r\n templateUrl: './editable-base-table.component.html',\r\n styleUrls: ['./editable-base-table.component.scss'],\r\n animations: [],\r\n imports: [\r\n NgClass,\r\n TranslateModule,\r\n MatIcon,\r\n MatSortModule,\r\n MatColumnDef,\r\n MatHeaderCellDef,\r\n NgIf,\r\n MatTable,\r\n MatHeaderCell,\r\n NgSwitch,\r\n MatButtonModule,\r\n MatCell,\r\n MatCellDef,\r\n NgxPaginationModule,\r\n MatRow,\r\n MatRowDef,\r\n MatHeaderRow,\r\n NgSwitchCase,\r\n NgSwitchDefault,\r\n MatHeaderRowDef,\r\n NgForOf,\r\n MatButton,\r\n ReactiveFormsModule,\r\n MatInput,\r\n AutoCompleteComponent,\r\n MatFormField,\r\n MatDatepicker,\r\n MatDatepickerInput,\r\n MatDatepickerToggle,\r\n MatLabel,\r\n MatSuffix,\r\n MatChipListbox,\r\n MatChipOption,\r\n TitleBarComponent,\r\n PaginatorComponent,\r\n AttachmentUploaderComponent,\r\n EquationBuilderComponent,\r\n MatSelect,\r\n MatOption,\r\n BaseFormCanvasComponent,\r\n MatCheckbox,\r\n ],\r\n providers: [\r\n // `MomentDateAdapter` can be automatically provided by importing `MomentDateModule` in your\r\n // application's root module. We provide it at the component level here, due to limitations of\r\n // our example generation script.\r\n // {\r\n // provide: DateAdapter,\r\n // useClass: MomentDateAdapter,\r\n // deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n // },\r\n\r\n // { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },\r\n ],\r\n})\r\n\r\nexport class EditableBaseTableComponent extends BaseUtils implements OnInit, OnChanges {\r\n\r\n collection = {count: 60, data: []};\r\n config = {\r\n itemsPerPage: 10,\r\n currentPage: 1,\r\n totalItems: this.collection.count\r\n };\r\n public maxSize: number = 7;\r\n public directionLinks: boolean = true;\r\n public autoHide: boolean = false;\r\n public responsive: boolean = true;\r\n public labels: any = {\r\n previousLabel: '<',\r\n nextLabel: '>',\r\n screenReaderPaginationLabel: 'Pagination',\r\n screenReaderPageLabel: 'page',\r\n screenReaderCurrentLabel: `You're on page`\r\n };\r\n\r\n private timer: any;\r\n dataElements: any[] = [];\r\n noDataFound = false;\r\n isLoaded: boolean = false;\r\n totalElements = 0;\r\n pagesCount = 0;\r\n pageIndex = 1;\r\n pageSize = 10;\r\n formParam: FormGroup;\r\n searchForm: FormGroup;\r\n\r\n @Input()\r\n filterRequest: FilterRequest;\r\n\r\n @Input()\r\n superDataElements: any[];\r\n\r\n @Input()\r\n override pageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n\r\n @Input() //@ts-ignore\r\n enforceRefresh: boolean = false;\r\n\r\n @Input()\r\n isPending: boolean = false;\r\n\r\n @Input()\r\n isBulkItemsSupported: boolean = false;\r\n\r\n @Input()// @ts-ignore\r\n public fields: FieldInfo[] = [];\r\n\r\n @Input()// @ts-ignore\r\n public searchFormFields: FieldInfo[] = [];\r\n\r\n @Input() translationKey: string = 'addNew';\r\n\r\n @Output()\r\n formUpdated: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();\r\n\r\n @Output()\r\n saveActionEmitter: EventEmitter<any> = new EventEmitter<any>();\r\n @Output()\r\n saveAttachmentEmitter: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Input() actionRequestCallback!: (actionRequest: DoActionRequest) => DoActionRequest;\r\n\r\n @ViewChild('uploader') uploaderComponent!: AttachmentUploaderComponent;\r\n\r\n currentDirection: 'ltr' | 'rtl';\r\n selectedFileFromUploader: File | null = null;\r\n private selectedItem: any;\r\n\r\n\r\n constructor(\r\n private backendService: BackendService,\r\n private router: Router,\r\n private fb: FormBuilder,\r\n public dialog: MatDialog,\r\n private directionality: Directionality\r\n ) {\r\n super();\r\n }\r\n\r\n get dataFormArray(): FormArray {\r\n return this.formParam.get('dataFormArray') as FormArray;\r\n }\r\n\r\n extractFormat(column: TableColumn<any>) {\r\n return column?.format || 'd/M/yyyy, h:mm a';\r\n }\r\n\r\n get dataSource() {\r\n return this.dataFormArray.value;\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.currentDirection = this.directionality.value;\r\n this.directionality.change.subscribe((value) => {\r\n this.currentDirection = value;\r\n })\r\n\r\n if(this.superDataElements?.length>0){\r\n this.dataElements=this.superDataElements;\r\n this.buildForm();\r\n this.isLoaded = true;\r\n }else {\r\n this.loadData();\r\n }\r\n }\r\n\r\n private loadData() {\r\n this.fields.forEach(field => field.readonly = this.isPending);\r\n\r\n this.dataElements = [];\r\n this.totalElements = 0;\r\n this.pagesCount = 1;\r\n this.pageIndex = 1;\r\n this.noDataFound = true;\r\n this.isLoaded = true;\r\n\r\n this.filterRequest.pendingPage = this.isPending;\r\n\r\n if (!this.pageInfo.lazyLoadData) {\r\n this.backendService.getItemsByFilter(this.filterRequest, this.pageInfo.apiUri)\r\n .subscribe(resp => {\r\n this.dataElements = resp.body || [];\r\n this.totalElements = resp.totalSize || 0;\r\n this.pagesCount = Math.max(Math.ceil(this.totalElements / this.pageSize), 1);\r\n this.pageIndex = (this.filterRequest.pageIndex || 0) + 1;\r\n this.noDataFound = this.dataElements.length === 0;\r\n this.isLoaded = true;\r\n });\r\n }\r\n\r\n this.buildForm();\r\n }\r\n\r\n private buildForm() {\r\n this.formParam = this.fb.group({\r\n dataFormArray: this.fb.array(this.dataElements.map(item => this.fb.group(buildFormFields(this.fields, item)))),\r\n });\r\n this.formUpdated.next(this.formParam);\r\n }\r\n\r\n onPageChange(event: number) {\r\n this.pageIndex = event;\r\n this.getNext(this.pageIndex - 1);\r\n }\r\n getNext(pageIndex: number) {\r\n this.filterRequest.pageIndex = pageIndex;\r\n this.filterRequest.pageSize = this.pageSize;\r\n this.loadData();\r\n }\r\n\r\n onPageSizeChange(event: number) {\r\n this.pageSize = event;\r\n this.pageIndex = 1;\r\n this.filterRequest.pageSize = this.pageSize;\r\n this.getNext(0);\r\n }\r\n\r\n\r\n extractFieldName(element: any, property: string) {\r\n if (property.includes('.')) {\r\n return property.split('.').reduce((acc, part) => acc && acc[part], element);\r\n } else {\r\n return element[property];\r\n }\r\n }\r\n\r\n get visibleColumns() {\r\n return this.fields.filter(column => column.visible).map(column => column.property);\r\n }\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"enforceRefresh\"] && !changes[\"enforceRefresh\"].isFirstChange() && changes[\"enforceRefresh\"].currentValue === true) {\r\n // this.loadData();\r\n }\r\n }\r\n\r\n onSelectItem(row: any) {\r\n if (this.pageInfo.selfRouting) {\r\n const mode = this.isPending ? 'pending' : 'view';\r\n const url = `${this.pageInfo.listRoutePath || this.router.url}/${mode}`;\r\n this.router.navigate([`${url}`, row?.id]);\r\n }\r\n const action = SELECT_RECORD_ACTION;\r\n action.id = row?.id;\r\n // this.userAction.emit(action)\r\n this.selectedItem = row;\r\n }\r\n\r\n openNewTab(row) {\r\n if (!this.pageInfo.embededTableOnly) {\r\n const mode = this.isPending ? 'pending' : 'view';\r\n window.open(`${this.pageInfo.listRoutePath}/${mode}` + '/' + row?.id);\r\n }\r\n }\r\n\r\n\r\n getField(element, column: FieldInfo) {\r\n return element.controls[column.property];\r\n }\r\n\r\n fieldButtonEvent(column, element, actionId: number) {\r\n this.doSaveApproveAction(element, actionId);\r\n }\r\n\r\n patchLookupValue($event: LookupItem, property: string) {\r\n this.formUpdated.emit(this.selectedItem)\r\n }\r\n\r\n addNewItem() {\r\n const currentValues = this.formParam?.get('dataFormArray')?.value;\r\n if (currentValues) {\r\n this.dataElements = [...currentValues];\r\n }\r\n this.dataElements.push({});\r\n this.buildForm();\r\n }\r\n\r\n\r\n doSaveApproveAction(element, userActionId) {\r\n let actionId = getWfActionId(element.value.stateType);\r\n if (userActionId === REJECT && this.isPending) {\r\n actionId =3\r\n }\r\n let request = new DoActionRequest();\r\n request.actionId = actionId;\r\n request.subject = element.value;\r\n\r\n if (this.actionRequestCallback) {\r\n request = this.actionRequestCallback(request);\r\n if (request.subject.id === \"\") {\r\n request.subject.id = null;\r\n request.subject.stateType = \"NEW\";\r\n }\r\n }\r\n\r\n if (request.subject.id === \"\") {\r\n request.subject.id = null;\r\n request.subject.stateType = \"NEW\";\r\n }\r\n\r\n\r\n const dialogRef = this.dialog.open(ActionCommentComponent, {\r\n data: {label: userActionId === 2 ? 'save' : 'reject', isTermination: false},\r\n width: '600px',\r\n height: 'auto',\r\n direction: this.currentDirection\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n request.comment = result.comment;\r\n this.backendService.doActionWithAttachments(request, [], this.pageInfo!).subscribe(resp => {\r\n if (resp.valid) {\r\n this.loadData();\r\n let message = '';\r\n if (actionId === 1 ) {\r\n message = 'saved_successfully' ;\r\n } else if (actionId ===2 ) {\r\n message = 'updated_successfully';\r\n } else if (actionId ===3 ) {\r\n message = 'successful_reject_message';\r\n } else if (actionId ===4 ) {\r\n message = 'approve_successfully';\r\n }\r\n this.backendService.topPanelMessage$.next(new SnackMessage(message, true, 'success'));\r\n }else {\r\n const x = resp.message?.length >0 ? resp.message[0].errorMessage : 'FAILED_CONTACT_ADMIN';\r\n this.backendService.topPanelMessage$.next(new SnackMessage(x, true, 'error'));\r\n }\r\n this.saveActionEmitter.emit({item:request.subject, resp});\r\n });\r\n }\r\n });\r\n }\r\n protected readonly getPositiveWfActionKey = getPositiveWfActionKey;\r\n protected readonly getNegativeWfActionKey = getNegativeWfActionKey;\r\n protected readonly SAVE = SAVE;\r\n protected readonly REJECT = REJECT;\r\n\r\n\r\n setMonthAndYear(normalizedMonthAndYear: Moment, picker: MatDatepicker<Moment>, element, column) {\r\n const date = new FormControl(moment());\r\n const ctrlValue = date.value;\r\n ctrlValue.year(normalizedMonthAndYear.year());\r\n ctrlValue.month(1);\r\n ctrlValue.dayOfYear(1);\r\n element.controls[column.property].setValue(ctrlValue);\r\n picker.close();\r\n }\r\n\r\n switchViewMode(b: boolean) {\r\n this.isPending = b;\r\n this.loadData();\r\n }\r\n\r\n addBulkItems() {\r\n const merged: any[] = [];\r\n\r\n this.dataFormArray.controls.forEach((group: AbstractControl) => {\r\n merged.push(group.value);\r\n });\r\n\r\n let request = new DoActionRequest();\r\n request.actionId = 1;\r\n\r\n request.subject = { invoices: merged };\r\n\r\n if (this.actionRequestCallback) {\r\n request = this.actionRequestCallback(request);\r\n\r\n request.subject.invoices = request.subject.invoices.map((item: any) => {\r\n if (item.id === \"\") {\r\n item.id = null;\r\n item.stateType = \"NEW\";\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n request.subject.invoices = request.subject.invoices.map((item: any) => {\r\n if (item.id === \"\") {\r\n item.id = null;\r\n item.stateType = \"NEW\";\r\n }\r\n return item;\r\n });\r\n\r\n\r\n\r\n const dialogRef = this.dialog.open(ActionCommentComponent, {\r\n data: {label: 'save' , isTermination: false},\r\n width: '600px',\r\n height: 'auto',\r\n direction: this.currentDirection\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n request.comment = result.comment;\r\n this.backendService.doActionWithAttachment(request, this.selectedFileFromUploader, this.pageInfo!).subscribe(resp => {\r\n if (resp.valid) {\r\n this.clearBulkItems();\r\n this.backendService.topPanelMessage$.next(new SnackMessage('saved_successfully', true, 'success'));\r\n this.loadData();\r\n }else {\r\n this.backendService.topPanelMessage$.next(new SnackMessage(this.pageInfo.labelsSection + '.' + resp.message?.[0]?.errorCode, true, 'error'));\r\n }\r\n this.saveAttachmentEmitter.emit({item:request.subject, resp});\r\n });\r\n }\r\n }); }\r\n\r\n @ViewChild('fileUpload') fileUpload: ElementRef<HTMLInputElement>;\r\n\r\n handleFileUpload($event: File) {\r\n let actionId = getWfActionId('NEW');\r\n let request = new DoActionRequest();\r\n request.actionId = actionId;\r\n\r\n this.selectedFileFromUploader = $event;\r\n\r\n }\r\n\r\n shouldDisableBulkAdd() {\r\n const hasFile = !!this.selectedFileFromUploader;\r\n return (!this.formParam?.valid || this.dataFormArray.controls.length === 0) && !hasFile;\r\n }\r\n handleEquationChange(event: { value: any[], valid: boolean }, element: FormGroup, column: any): void {\r\n element.value[column.property] = event.value;\r\n const { value, valid } = event;\r\n element.get(column.property)?.setValue(value);\r\n if (!valid) {\r\n element.get(column.property)?.setErrors({ invalidEquation: true });\r\n } else {\r\n element.get(column.property)?.setErrors(null);\r\n }\r\n }\r\n\r\n clearBulkItems() {\r\n this.dataElements = [];\r\n this.selectedFileFromUploader = null;\r\n this.uploaderComponent.clearFile();\r\n this.buildForm();\r\n this.formUpdated.emit(this.formParam);\r\n }\r\n\r\n hasDataToClear(): boolean {\r\n return (this.dataElements && this.dataElements.length > 0) || !!this.selectedFileFromUploader;\r\n }\r\ngetOptionValue(item: any) {\r\n const value = typeof item === 'object' ?\r\n item.englishName : item;\r\n return value;\r\n }\r\n\r\n disabledSaveButton(element) {\r\n return !element.valid || (!this.isPending && element.value.stateType == 'PENDING');\r\n }\r\n\r\n doSearch() {\r\n if (this.searchForm.valid) {\r\n const rawValues = this.searchForm.getRawValue();\r\n this.filterRequest.pageIndex=0;\r\n this.filterRequest.filters = [];\r\n this.searchFormFields.forEach(x => {\r\n const value = rawValues[x.property];\r\n if (value !== null && value !== undefined && value !== '') {\r\n const filter = new Filter({\r\n key: 0,\r\n label: x.property,\r\n fieldName: x.searchAttribute,\r\n valueObject : x.searchAttribute.includes('.') ? value[x.searchAttribute.split('.').pop()] : value,\r\n operator: x.searchOperator,\r\n filterType: 'FILED_FILTER'\r\n });\r\n this.filterRequest.filters.push(filter);\r\n }\r\n });\r\n this.loadData();\r\n } else {\r\n this.backendService.topPanelMessage$.next(new SnackMessage('INVALID_SEARCH_FORM', true, 'error'));\r\n }\r\n }\r\n\r\n showSearch() {\r\n return this.searchFormFields?.length > 0;\r\n }\r\n\r\n clearSearch() {\r\n this.searchForm.get('sectorType').setValue({id:-100, englishName:'aaa', code:'aaa', arabicName:'aaa'});\r\n this.searchForm.reset();\r\n this.doSearch();\r\n }\r\n\r\n updateSearchForm($event: FormGroup) {\r\n this.searchForm = $event\r\n }\r\n\r\n validSearchData() {\r\n return !this.searchForm.valid || true;\r\n }\r\n\r\n}\r\n","<div class=\"baseTable flex-column\">\r\n <div class=\"left-align\">\r\n <app-attachment-uploader #uploader\r\n *ngIf=\"isBulkItemsSupported\"\r\n (fileSelected)=\"handleFileUpload($event)\">\r\n </app-attachment-uploader>\r\n </div>\r\n\r\n <div class=\"flex-row full-width\">\r\n <div class=\"flex-half flex-column align-center-start\">\r\n <app-title-bar [pageTitle]=\"pageInfo.hideTitle ? '' : pageInfo.labelsSection+'.list_title'\"\r\n [titleMode]=\"''\"\r\n [newAction]=\"false\"\r\n [showExtractButton]=\"!pageInfo.hideExtractButton\">\r\n </app-title-bar>\r\n <span class=\"font-small\">{{ 'totalCountItem' | translate }} : {{ this.totalElements }}</span>\r\n </div>\r\n <div class=\"flex-half flex-column align-start-end\">\r\n <mat-chip-listbox aria-label=\"Color selection\" [multiple]=\"false\" *ngIf=\"pageInfo.draftSupported\">\r\n <mat-chip-option [selected]=\"!this.isPending\" [color]=\"'accent'\" [value]=\"'COMPLETED'\"\r\n (click)=\"switchViewMode(false)\">{{ 'finished' | translate }}\r\n </mat-chip-option>\r\n <mat-chip-option [selected]=\"this.isPending\" [color]=\"'accent'\" [value]=\"'PENDING'\"\r\n (click)=\"switchViewMode(true)\">{{ 'todo' | translate }}\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"showSearch()\">\r\n <div class=\"flex-row full-width\">\r\n <div class=\"flex-80 flex-column align-start-end\">\r\n <app-base-form-canvas class=\"flex-fill\"\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"searchFormFields\"\r\n [editable]=\"true\"\r\n (formUpdated)=\"updateSearchForm($event)\">\r\n </app-base-form-canvas>\r\n </div>\r\n <div class=\"flex-15 flex-column align-start-end\">\r\n <div class=\"flex-row align-center-center gap-8 full-width\">\r\n <button mat-button color=\"primary\" type=\"button\" (click)=\"doSearch()\" id=\"editable-search-btn\">\r\n <mat-icon>search</mat-icon>\r\n {{ 'search' | translate }}\r\n </button>\r\n <button mat-button color=\"primary\" type=\"button\" (click)=\"clearSearch()\" id=\"editable-clear-search-btn\">\r\n <mat-icon>clear</mat-icon>\r\n {{ 'clear' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"flex-row full-width baseTable__detailsColumn\">\r\n <div class=\"flex-full\">\r\n <ng-container *ngIf=\"isLoaded\">\r\n <div class=\"flex-row mainTable gap-0 align-start-start\">\r\n <form [formGroup]=\"formParam\" class=\"flex-fill\">\r\n <table [dataSource]=\"dataFormArray.controls\" class=\"flex-fill\" mat-table matSort>\r\n <ng-container *ngFor=\"let column of this.fields; let i = index\">\r\n <ng-container matColumnDef=\"{{column.property}}\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'equation-builder'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\" mat-cell>\r\n <lib-equation-builder\r\n [form]=\"element\"\r\n [field]=\"column\"\r\n [readOnly]=\"column.readonly\"\r\n [isPending]=\"isPending\"\r\n (valueChanged)=\"handleEquationChange($event, element, column)\">\r\n </lib-equation-builder>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'lookup'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <app-auto-complete\r\n [form]=\"element\"\r\n [field]=\"column\"\r\n [defaultValue]=\"element.get(column.property)?.value\"\r\n (selectedValue)=\"patchLookupValue($event, column.property)\">\r\n </app-auto-complete>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}</th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-label>{{element}}</mat-label>\r\n <mat-select\r\n formControlName=\"{{column.property}}\"\r\n [attr.aria-label]=\"column.label! | translate\"\r\n [multiple]=\"false\"\r\n [(value)]=\"element[column.property]\">\r\n <ng-container>\r\n <mat-option\r\n *ngFor=\"let item of column.listOptions\"\r\n [value]=\"item\">\r\n {{ getOptionValue(item) }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'stateType'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ 'action' | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td mainTable__td__text-secondary__td\" mat-cell>\r\n <div class=\"flex-column\">\r\n <div class=\"flex-row full-width\">\r\n <div class=\"flex-third flex-column align-center-center\">\r\n <button mat-button class=\"btn-none-background-primary\"\r\n color=\"primary\"\r\n [disabled]=\"disabledSaveButton(element)\"\r\n (click)=\"fieldButtonEvent(column,element,SAVE)\"\r\n [attr.id]=\"'editable-save-' + (element.value?.id || '')\">\r\n {{ getPositiveWfActionKey(element.value.stateType) | translate }}\r\n </button>\r\n </div>\r\n <div class=\"flex-third flex-column align-center-center\">\r\n <button *ngIf=\"isPending\" mat-button class=\"btn-none-background-primary\"\r\n color=\"accent\"\r\n (click)=\"fieldButtonEvent(column,element,REJECT)\"\r\n [attr.id]=\"'editable-reject-' + (element.value?.id || '')\">\r\n {{ getNegativeWfActionKey(element.value.stateType) | translate }}\r\n </button>\r\n </div>\r\n <div class=\"flex-third flex-column align-center-center\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'year'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <mat-label>{{ labelKey(column) | translate }}</mat-label>\r\n <input matInput\r\n [disabled]=\"column.readonly\"\r\n [readonly]=\"column.readonly\"\r\n [matDatepicker]=\"picker\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker startView=\"multi-year\"\r\n (yearSelected)=\"setMonthAndYear($event, picker, element,column)\"\r\n panelClass=\"example-month-picker\"></mat-datepicker>\r\n\r\n </mat-form-field>\r\n <!-- <mat-form-field class=\"flex-auto\" appearance=\"outline\" fxFlexFill>-->\r\n <!-- <input matInput [formControl]=\"getField(element, column)\">-->\r\n <!-- </mat-form-field>-->\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <!-- Visually hidden label just to trigger the floating label and asterisk -->\r\n <mat-label>\r\n </mat-label>\r\n\r\n <input matInput\r\n type=\"number\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [readonly]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'status'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-checkbox\r\n style=\"padding-bottom: 14px; padding-top: 14px;\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\"\r\n [style.pointer-events]=\"column.readonly ? 'none' : 'auto'\"\r\n [style.opacity]=\"column.readonly ? 0.7 : 1\"\r\n (click)=\"column.readonly ? $event.preventDefault() : null\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <mat-label>\r\n {{ labelKey(column) | translate }}\r\n </mat-label>\r\n <input matInput\r\n type=\"text\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [readonly]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <input matInput\r\n [matDatepicker]=\"xpicker\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [readonly]=\"column.readonly\"\r\n [disabled]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"xpicker\"\r\n [disabled]=\"column.readonly\">\r\n </mat-datepicker-toggle>\r\n <mat-datepicker #xpicker></mat-datepicker>\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <input matInput\r\n [readonly]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [formControl]=\"getField(element, column)\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <tr *matHeaderRowDef=\"visibleColumns\" mat-header-row></tr>\r\n <tr (click)=\"onSelectItem(row)\" (auxclick)=\"openNewTab(row)\"\r\n *matRowDef=\"let row; columns: visibleColumns | paginate:config\"\r\n [attr.id]=\"'editable-row-' + (row?.value?.id || row?.value?.key || '')\"\r\n mat-row></tr>\r\n </table>\r\n </form>\r\n </div>\r\n\r\n <div *ngIf=\"noDataFound && !pageInfo.lazyLoadData\" class=\"flex-row dataNotFound\">\r\n <div class=\"flex-column flex-full\">\r\n <span class=\"dataNotFound__details\">\r\n <mat-icon class=\"dataNotFound__details__icon\">info</mat-icon>\r\n <span>{{ 'dataNotFound' | translate }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex-row mainTable\" *ngIf=\"!selectedFileFromUploader\">\r\n <div>\r\n <button *ngIf=\"!isPending && pageInfo.hasAddButton\" mat-button color=\"primary\" type=\"button\"\r\n (click)=\"addNewItem()\" id=\"editable-add-item-btn\">\r\n <mat-icon>add_box</mat-icon>\r\n {{ translationKey | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex-row flex-wrap align-center-center main-pagination\" *ngIf=\"totalElements > 0\">\r\n <div class=\"flex-column flex-full\">\r\n <app-paginator [currentPage]=\"pageIndex\" [totalItems]=\"totalElements\" [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"[5, 10, 25, 50]\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></app-paginator>\r\n </div>\r\n <div class=\"flex-column flex-full countItem hide-gt-xs\">\r\n <span class=\"countItem__totalElement\">{{ 'totalCountItem' | translate }} : {{ this.totalElements }}</span>\r\n </div>\r\n <div class=\"flex-column flex-2\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isBulkItemsSupported\" class=\"flex-row gap-10 align-start-start mainTable\">\r\n <div>\r\n <button mat-flat-button color=\"primary\" type=\"button\" (click)=\"addBulkItems()\" [disabled]=\"shouldDisableBulkAdd()\" id=\"editable-bulk-add-btn\">\r\n <mat-icon>add_box</mat-icon>\r\n {{ 'addAll' | translate }}\r\n </button>\r\n </div>\r\n <div>\r\n <button mat-flat-button color=\"warn\" type=\"button\" [disabled]=\"!hasDataToClear()\" (click)=\"clearBulkItems()\" id=\"editable-bulk-clear-btn\">\r\n <mat-icon>delete</mat-icon>\r\n {{ 'clearAll' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {ActivatedRoute} from \"@angular/router\";\r\nimport {NgIf} from \"@angular/common\";\r\nimport {BaseTableComponent} from \"../base-table/base-table.component\";\r\nimport {ButtonActionSettings, EMPTY_PAGE_INFO, FieldInfo, FilterRequest, PageInfo, TableColumn} from \"../../base-model\";\r\nimport {Filter} from \"../../base-model\";\r\nimport {EditableBaseTableComponent} from \"../editable-base-table/editable-base-table.component\";\r\n\r\n@Component({\r\n selector: 'app-shared-list',\r\n standalone: true,\r\n imports: [\r\n BaseTableComponent,\r\n NgIf,\r\n EditableBaseTableComponent\r\n ],\r\n templateUrl: './shared-list.component.html',\r\n styleUrls:[ './shared-list.component.css']\r\n})\r\nexport class SharedListComponent implements OnInit {\r\n pageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n columnsDefinition: TableColumn<any>[] = [];\r\n fields: FieldInfo[] = [];\r\n filters: Filter[] = [];\r\n readyToLoad: boolean = false;\r\n isPending: boolean = false;\r\n listAction: ButtonActionSettings[] = [];\r\n editableTable : boolean = false;\r\n filterRequest: FilterRequest = new FilterRequest();\r\n constructor(private activatedRoute: ActivatedRoute) { }\r\n\r\n ngOnInit(): void {\r\n this.activatedRoute.data.subscribe(data => {\r\n this.pageInfo = data['pageInfo'];\r\n this.columnsDefinition = data[\"columnsDefinition\"];\r\n this.filters = data[\"filters\"] || [];\r\n\r\n this.isPending = 'pending' === data[\"mode\"];\r\n this.listAction = data['actions'];\r\n this.editableTable = data['editableTable'] || false;\r\n this.fields = data['fields'];\r\n\r\n this.filterRequest = new FilterRequest();\r\n this.filterRequest.columns = this.fields?.filter(c => c.type !== 'button').map(c => c.property) || [];\r\n this.filterRequest.filters = this.filters;\r\n\r\n this.readyToLoad = true;\r\n\r\n });\r\n }\r\n\r\n\r\n}\r\n","<ng-container *ngIf=\"readyToLoad\">\r\n @if (editableTable) {\r\n <app-editable-base-table [filterRequest]=\"filterRequest\" [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [isPending]=\"isPending\"\r\n ></app-editable-base-table>\r\n\r\n } @else {\r\n\r\n <app-base-table [filters]=\"filters\" [pageInfo]=\"pageInfo\"\r\n [columns]=\"columnsDefinition\"\r\n [listAction]=\"listAction\"\r\n [isPending]=\"isPending\"\r\n ></app-base-table>\r\n\r\n }\r\n</ng-container>\r\n","import {Component, EventEmitter, Inject, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\r\nimport {FieldInfo, Filter, FilterRequest, NEW, PageInfo, SAVE_AND_COMPLETE, SnackMessage} from \"../../base-model\";\r\nimport {FieldMessage} from \"../../base-model/api-response\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {BackendService} from \"../../services\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {Location, NgIf} from \"@angular/common\";\r\nimport {MatButton, MatButtonModule} from \"@angular/material/button\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {TitleBarComponent} from \"../title-bar/title-bar.component\";\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\r\nimport {DoActionRequest, SAVE} from \"../../base-model/do-action-request\";\r\nimport {ActionCommentComponent} from \"../action-comment/action-comment.component\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {BaseUtils, getNegativeWfActionKey, getPositiveWfActionKey, getWfActionId} from \"../../utils/base-utils\";\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {AuditLogComponent} from \"../audit-log-list/audit-log.component\";\r\nimport {Directionality} from \"@angular/cdk/bidi\";\r\n\r\n@Component({\r\n selector: 'app-base-form',\r\n standalone: true,\r\n imports: [\r\n TitleBarComponent,\r\n BaseFormCanvasComponent,\r\n MatButtonModule,\r\n TranslateModule,\r\n NgIf,\r\n MatIconModule,\r\n MatButton,\r\n AuditLogComponent\r\n ],\r\n templateUrl: './base-form.component.html',\r\n styleUrl: './base-form.component.scss'\r\n})\r\nexport class BaseFormComponent extends BaseUtils implements OnInit, OnChanges {\r\n\r\n @Input()\r\n override pageInfo!: PageInfo;\r\n\r\n @Input()// @ts-ignore\r\n fields: FieldInfo[] = [];\r\n\r\n @Input()// @ts-ignore\r\n errors: FieldMessage[] = [];\r\n\r\n @Input()\r\n editable: boolean = false;\r\n\r\n @Input()\r\n itemId: number;\r\n\r\n @Output()\r\n actionResultEmitter: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n formUpdated: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();\r\n\r\n @Output()\r\n itemLoaded: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n extraAction: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n item : any = {};\r\n isLoaded : boolean = false;\r\n\r\n @Output()\r\n hyperTextEvent: EventEmitter<boolean> = new EventEmitter();\r\n\r\n currentDirection: 'ltr' | 'rtl';\r\n isSaveDisabled: boolean = true;\r\n isRejectDisabled: boolean = true;\r\n\r\n @Input()\r\n hideBackButton: boolean = true;\r\n protected readonly SAVE = SAVE;\r\n private isPending: boolean;\r\n\r\n constructor(public dialog: MatDialog,\r\n private activatedRoute: ActivatedRoute,\r\n private router:Router,\r\n private directionality: Directionality,\r\n private location:Location,\r\n @Inject('securityManager') private securityManager: any,\r\n public backendService: BackendService) {\r\n super();\r\n ClassicEditor.defaultConfig = {\r\n toolbar: {\r\n items: ['heading', '|', 'bold', 'italic', '|', 'bulletedList', 'numberedList']\r\n },\r\n image: {\r\n toolbar: ['imageStyle:side', '|', 'imageTextAlternative']\r\n },\r\n table: {\r\n contentToolbar: [ 'tableColumn', 'tableRow', 'mergeTableCells' ]\r\n },\r\n language: 'en'\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n this.currentDirection = this.directionality.value;\r\n this.directionality.change.subscribe((value) => {\r\n this.currentDirection = value;\r\n })\r\n\r\n // console.log('editable', this.editable)\r\n this.securityManager.loadPermissions().subscribe(x => {\r\n console.log(\"before edit\", this.editable);\r\n this.loadItem();\r\n console.log(\"after edit\", this.editable);\r\n });\r\n }\r\n\r\n ngOnChanges({item, errors, fields}: SimpleChanges): void {\r\n }\r\n\r\n isValid() {\r\n return this.backendService.parentForm?.valid;\r\n }\r\n\r\n isMatchHeight() {\r\n return this.pageInfo.pageHeight === 'match';\r\n }\r\n\r\n private loadItem() {\r\n this.editable = false;\r\n\r\n const modeEncrypted = this.activatedRoute.snapshot.queryParams['mode'];\r\n this.isPending = !!modeEncrypted && this.backendService.decrypt(modeEncrypted) === 'pending';\r\n\r\n if (this.activatedRoute.snapshot.queryParams['token'] && this.activatedRoute.snapshot.queryParams['mode']) {\r\n this.itemId = this.backendService.decrypt(this.activatedRoute.snapshot.queryParams['token']);\r\n } else {\r\n // console.log(' ****** ****** ****** ****** error in url ')\r\n }\r\n if (this.itemId > 0) {\r\n const filterRequest = new FilterRequest;\r\n filterRequest.columns = this.fields.filter(c => c.type !== 'spacer').map(c => c.property);\r\n filterRequest.pendingPage = this.isPending;\r\n\r\n filterRequest.filters = [];\r\n filterRequest.filters.push(new Filter({\r\n key: 0,\r\n fieldType: 'Long',\r\n fieldName: 'id',\r\n valueObject: this.itemId,\r\n filterType: 'FILED_FILTER',\r\n operator: 'EQUALS'\r\n }));\r\n ///audit-log\r\n this.backendService.getItemAuditLog(filterRequest, this.pageInfo!.apiUri).subscribe(resp => {\r\n // console.log('resp', resp);\r\n });\r\n this.backendService.getItemsByFilter(filterRequest, this.pageInfo!.apiUri).subscribe(resp => {\r\n if (resp?.valid && resp.body?.length >= 0) {\r\n this.item = resp.body[0];\r\n this.editable = (!this.pageInfo.draftSupported || !this.isPending) && this.securityManager.hasPagePermission(this.pageInfo.id, 'EDIT')\r\n && (!this.pageInfo.draftSupported ||this.item['stateType'] === 'COMPLETED' );\r\n this.itemLoaded.emit(this.item);\r\n this.isLoaded = true;\r\n }\r\n });\r\n } else {\r\n this.editable = this.securityManager.hasPagePermission(this.pageInfo.id, 'EDIT');\r\n this.item = {};\r\n this.itemLoaded.emit(this.item);\r\n this.isLoaded = true;\r\n }\r\n\r\n }\r\n\r\n buildDoActionSubject(): any {\r\n const newVar = this.editable ? Object.assign(this.item, this.backendService.parentForm.value) : this.item;\r\n if (this.itemId <= 0 && this.editable ) {\r\n //TODO this is like a hack and must be handled from backend\r\n newVar['stateType'] = 'NEW';\r\n }\r\n this.fields.forEach(field => {\r\n if (field.flattenBySubAttribute){\r\n newVar[field.property] = newVar[field.property][field.flattenBySubAttribute]\r\n }\r\n })\r\n if (!this.pageInfo.draftSupported){\r\n newVar['status'] = true;\r\n }\r\n return newVar;\r\n }\r\n\r\n\r\n doSaveApproveAction() {\r\n let actionId = getWfActionId(this.item.stateType);\r\n if (this.itemId <= 0 && this.editable ) {\r\n actionId = NEW\r\n }\r\n if (!this.pageInfo.draftSupported) {\r\n actionId = SAVE_AND_COMPLETE\r\n }\r\n if (this.editable && this.backendService.parentForm.valid !== true) {\r\n this.backendService.topPanelMessage$.next(new SnackMessage('INVALID_INPUT_FORM', true, 'error'));\r\n return;\r\n }\r\n const request = new DoActionRequest();\r\n request.actionId = actionId;\r\n request.subject = this.buildDoActionSubject();\r\n\r\n const dialogRef = this.dialog.open(ActionCommentComponent, {\r\n data: {label: 'save', isTermination: false},\r\n width: '600px',\r\n height: 'auto',\r\n direction: this.currentDirection\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n request.comment = result.comment;\r\n this.backendService.doActionWithAttachments(request, [], this.pageInfo!).subscribe(resp => {\r\n console.log('step',actionId);\r\n this.actionResultEmitter.emit({ valid: resp.valid, actionId: actionId });\r\n if (resp.valid ) {\r\n let message = 'approve_successfully';\r\n switch (actionId) {\r\n case 1:\r\n message = 'saved_successfully';\r\n break;\r\n case 2:\r\n message = 'updated_successfully';\r\n break;\r\n default:\r\n message = 'approve_successfully';\r\n }\r\n this.backendService.topPanelMessage$.next(new SnackMessage(message, true, 'success'));\r\n if(!this.pageInfo.stayOnPage){\r\n this.backToParent();\r\n }\r\n }\r\n else{\r\n request.subject['stateType'] = null;\r\n if (resp.message[0].errorMessage.toLowerCase().includes('duplic'))\r\n this.backendService.topPanelMessage$.next(new SnackMessage(this.pageInfo.labelsSection + '.' + resp.message[0].errorCode, true, 'error'));\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n backToParent() {\r\n const idIdx = this.router.url.lastIndexOf('/');\r\n this.router.navigateByUrl(this.router.url.substring(0, idIdx));\r\n }\r\n\r\n\r\n getTitle() {\r\n return `${this.pageInfo.labelsSection}.${this.pageInfo.id}` ;\r\n }\r\n\r\n updateForm($event: FormGroup) {\r\n this.backendService.parentForm = $event;\r\n this.formUpdated.emit($event);\r\n }\r\n\r\n doCancelRejectAction() {\r\n if (!this.editable){\r\n let actionId = 3;\r\n // console.log('actionId',actionId);\r\n const request = new DoActionRequest();\r\n request.actionId = actionId;\r\n request.subject = this.buildDoActionSubject();\r\n\r\n const dialogRef = this.dialog.open(ActionCommentComponent, {\r\n data: {label: 'reject', acceptActionLabel: 'accept', rejectActionLabel: 'return'},\r\n width: '600px',\r\n height: 'auto',\r\n direction: this.currentDirection\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n request.comment = result.comment;\r\n this.backendService.doActionWithAttachments(request, [], this.pageInfo!).subscribe(resp => {\r\n this.actionResultEmitter.emit({ valid: resp.valid, actionId: actionId });\r\n if (resp.valid) {\r\n this.backendService.topPanelMessage$.next(new SnackMessage('successful_reject_message', true, 'success'));\r\n if(!this.pageInfo.stayOnPage){\r\n this.backToParent();\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n this.location.back()\r\n }\r\n }\r\n\r\n hasWfPermission() {\r\n return (this.securityManager.hasPagePermission(this.pageInfo.id, 'EDIT')\r\n || this.securityManager.hasPagePermission(this.pageInfo.id, 'COMPLETE')\r\n || this.securityManager.hasPagePermission(this.pageInfo.id, 'TERMINATE'))\r\n }\r\n\r\n protected readonly getPositiveWfActionKey = getPositiveWfActionKey;\r\n protected readonly getNegativeWfActionKey = getNegativeWfActionKey;\r\n\r\n hasWfPositivePermission() {\r\n return (!this.editable && this.securityManager.hasPagePermission(this.pageInfo.id, 'COMPLETE')) ||\r\n (this.editable && this.securityManager.hasPagePermission(this.pageInfo.id, 'EDIT'))\r\n }\r\n\r\n hasWfNegativePermission() {\r\n return (!this.editable && this.securityManager.hasPagePermission(this.pageInfo.id, 'TERMINATE')) ||\r\n (this.editable && this.securityManager.hasPagePermission(this.pageInfo.id, 'EDIT'))\r\n }\r\n\r\n doExtraAction() {\r\n this.extraAction.emit()\r\n }\r\n disabledSaveButton(element) {\r\n return (!this.isPending && element.stateType == 'PENDING') && this.pageInfo.draftSupported ;\r\n }\r\n\r\n}\r\n","<div class=\"page-container\">\r\n\r\n <div class=\"row full-width mt-2vh\">\r\n <div class=\"column full-width\">\r\n <app-title-bar\r\n [pageTitle]=\"getTitle()\"\r\n [newAction]=\"false\"\r\n [hideBackButton]=\"hideBackButton\">\r\n </app-title-bar>\r\n </div>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editable\"\r\n [errors]=\"errors\"\r\n [item]=\"item\"\r\n (formUpdated)=\"updateForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-49\">\r\n <div class=\"row row-center-start\">\r\n <button *ngIf=\"hasWfPositivePermission()\" color=\"primary\" mat-flat-button\r\n (click)=\"doSaveApproveAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-positive-btn\">\r\n {{ getPositiveWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"hasWfNegativePermission()\" color=\"second\" mat-raised-button\r\n (click)=\"doCancelRejectAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-negative-btn\">\r\n {{ getNegativeWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"pageInfo.hideExtractButton === false && itemId > 0 && editable\" color=\"primary\" mat-raised-button\r\n (click)=\"doExtraAction()\"\r\n class=\"action-button\"\r\n id=\"base-form-extra-btn\">\r\n {{ pageInfo.labelsSection + \".\" + \"EXTRA_BUTTON_NAME\" | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"column flex-49\"></div>\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!pageInfo.hideAuditLog\">\r\n <div class=\"row main-form-canvas mt-4vh pb-5vh\">\r\n <div class=\"column flex-95\">\r\n <app-audit-log [pageInfo]=\"pageInfo\" [fields]=\"fields\"></app-audit-log>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {MatButton} from \"@angular/material/button\";\r\nimport {ButtonActionSettings, FieldInfo, PageInfo} from \"../../base-model\";\r\nimport {BaseFormComponent} from \"../base-form/base-form.component\";\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport {NgForOf, NgIf, NgClass} from \"@angular/common\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {\r\n MatExpansionPanel,\r\n MatExpansionPanelHeader,\r\n MatExpansionPanelDescription,\r\n MatExpansionPanelTitle\r\n} from \"@angular/material/expansion\";\r\n\r\n@Component({\r\n selector: 'lib-section-form-canvas',\r\n standalone: true,\r\n imports: [\r\n MatIcon,\r\n MatButton,\r\n BaseFormComponent,\r\n BaseFormCanvasComponent,\r\n NgIf,\r\n NgClass,\r\n TranslateModule,\r\n MatExpansionPanel,\r\n MatExpansionPanelTitle,\r\n MatExpansionPanelDescription,\r\n MatExpansionPanelHeader,\r\n NgForOf\r\n ],\r\n templateUrl: './section-form-canvas.component.html',\r\n styleUrl: './section-form-canvas.component.scss'\r\n})\r\nexport class SectionFormCanvasComponent{\r\n @Input() pageInfo: PageInfo;\r\n @Input() fields: FieldInfo[];\r\n @Input() itemId: number;\r\n @Input() editable: boolean;\r\n @Input() hideBackButton: boolean;\r\n @Input() item: any;\r\n @Input() title: string;\r\n @Input() isTranslateTitle: boolean;\r\n @Input() key: number;\r\n @Input() hideToggle: boolean = true;\r\n @Input() isExpanded: boolean = true;\r\n @Input() alwaysOpen: boolean = true;\r\n @Output() actionEdit: EventEmitter<any> = new EventEmitter();\r\n @Output() formEdit: EventEmitter<FormGroup> = new EventEmitter();\r\n @Input() buttons: ButtonActionSettings[] = [];\r\n @Input() itemStatus: string;\r\n @Output() buttonClicked = new EventEmitter<any>();\r\n\r\n formUpdated($event) {\r\n this.formEdit.emit($event);\r\n\r\n }\r\n\r\n toggleExpand() {\r\n this.isExpanded = !this.isExpanded;\r\n }\r\n\r\n onButtonClick(btn: ButtonActionSettings, sectionKey: number): void {\r\n this.buttonClicked.emit({...btn , sectionKey: sectionKey});\r\n }\r\n}\r\n","<mat-expansion-panel class=\"location-card\"\r\n #panel=\"matExpansionPanel\"\r\n [expanded]=\"isExpanded\"\r\n [hideToggle]=\"hideToggle\"\r\n (opened)=\"alwaysOpen ? panel.open() : null\"\r\n (closed)=\"alwaysOpen ? panel.open() : null\">\r\n <mat-expansion-panel-header class=\"card-header\" (click)=\"toggleExpand()\">\r\n <mat-panel-title>\r\n <div class=\"title-container\">\r\n <h3 class=\"card-title\" *ngIf=\"isTranslateTitle\">\r\n {{ pageInfo.labelsSection + '.' + title | translate }}\r\n </h3>\r\n <h3 class=\"card-title\" *ngIf=\"!isTranslateTitle\">{{ title }}</h3>\r\n <button mat-button *ngIf=\"itemStatus\" class=\"stateType\" [ngClass]=\"itemStatus\">\r\n {{ pageInfo.labelsSection + '.' + itemStatus | translate }}\r\n </button>\r\n </div>\r\n </mat-panel-title>\r\n\r\n <mat-panel-description class=\"panel-description\">\r\n <div class=\"row flex-auto buttons-wrapper\">\r\n <button\r\n mat-flat-button\r\n *ngFor=\"let btn of buttons\"\r\n type=\"button\"\r\n [color]=\"btn.color || 'primary'\"\r\n (click)=\"onButtonClick(btn , key); $event.stopPropagation()\"\r\n class=\"btn-none-background-primary action\"\r\n [attr.id]=\"btn.id || ('section-btn-' + (btn.action || btn.label || btn.key))\"\r\n >\r\n <div class=\"button-text\">\r\n <mat-icon *ngIf=\"btn.icon\">{{ btn.icon }}</mat-icon>\r\n <span>{{ btn.label | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div class=\"panel-body\">\r\n <hr class=\"divider\"/>\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editable\"\r\n [item]=\"item\"\r\n (formUpdated)=\"formUpdated($event)\"\r\n ></app-base-form-canvas>\r\n </div>\r\n</mat-expansion-panel>\r\n","import {AfterViewInit, Component, ElementRef, HostListener, Inject, OnInit} from '@angular/core';\r\nimport {\r\n MAT_DIALOG_DATA, MatDialogActions, MatDialogContent,\r\n MatDialogRef, MatDialogTitle,\r\n} from \"@angular/material/dialog\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {FieldInfo, PageInfo, ReportRequest, TableColumn} from \"../../base-model\";\r\nimport {BaseTableComponent} from \"../base-table/base-table.component\";\r\nimport {MatButton, MatIconButton} from \"@angular/material/button\";\r\nimport {BackendService} from \"../../services\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\n\r\n@Component({\r\n selector: 'app-audit-log-details-dialog',\r\n standalone: true,\r\n imports: [\r\n FormsModule,\r\n TranslateModule,\r\n BaseTableComponent,\r\n MatDialogContent,\r\n MatDialogTitle,\r\n MatIconButton,\r\n MatIcon\r\n ],\r\n templateUrl: './report-details-dialog.component.html',\r\n styleUrl: './report-details-dialog.component.css'\r\n})\r\nexport class ReportDetailsDialogComponent implements OnInit , AfterViewInit{\r\n dialogDirection: 'ltr' | 'rtl' = 'ltr';\r\n\r\n pageInfo: PageInfo;\r\n fields: FieldInfo[] = [];\r\n\r\n isTermination : boolean=false;\r\n comment: string = '';\r\n external: boolean = false;\r\n signingRequired: boolean = false;\r\n tokenReference: string = \"\";\r\n warningMsg = false;\r\n item: any = {};\r\n reportRequest: ReportRequest;\r\n columns: TableColumn<any>[];\r\n constructor(public dialogRef: MatDialogRef<ReportDetailsDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private translateService: TranslateService,\r\n public backendService:BackendService,\r\n private elRef: ElementRef) {\r\n dialogRef.disableClose = true;\r\n }\r\n @HostListener('window:keyup.esc') onKeyUp() {\r\n this.dialogRef.close();\r\n }\r\n ngOnInit(): void {\r\n this.pageInfo = this.data.pageInfo;\r\n this.pageInfo.hideTitle = true;\r\n this.item = this.data.item;\r\n this.pageInfo.hideExtractButton = false;\r\n this.columns = this.data.columns;\r\n this.reportRequest = this.data.request;\r\n this.warningMsg = this.data.warningMsg || false;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const container = this.elRef.nativeElement.closest('mat-dialog-container');\r\n if (container && container.getAttribute('dir')) {\r\n this.dialogDirection = container.getAttribute('dir') as 'ltr' | 'rtl';\r\n }\r\n }\r\n\r\n cancel() {\r\n this.reportRequest.filterRequest.filters = [];\r\n this.backendService.isEmptyItems = false;\r\n this.dialogRef.close();\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onBackdropClick(event: MouseEvent): void {\r\n const target = event.target as HTMLElement;\r\n if (target.classList.contains('cdk-overlay-backdrop')) {\r\n this.reportRequest.filterRequest.filters = [];\r\n this.backendService.isEmptyItems = false;\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n getTitle() {\r\n if (this.item?.isec_value_ar) {\r\n const isecLabel = this.translateService.instant('ISEC');\r\n return `<strong>${isecLabel} ${this.item.isec_value_ar}</strong>`;\r\n }\r\n\r\n const sectorLabel = this.translateService.instant('SECTOR');\r\n const periodLabel = this.translateService.instant('FOR_PERIOD');\r\n const directorateLabel = this.translateService.instant('DIRECTORATE');\r\n\r\n const sectorText = this.item.sector ? `${sectorLabel} ${this.item.sector}` : '';\r\n const periodText = this.item.period ? ` ${periodLabel} ${this.item.period}` : '';\r\n const yearText = this.item.year ? ` - ${this.item.year}` : '';\r\n const directorateLine = this.item.directorate ? `<br><strong>${directorateLabel} - ${this.item.directorate}</strong>` : '';\r\n\r\n const mainLine = (sectorText || periodText || yearText)\r\n ? `<strong>${[sectorText, periodText, yearText].filter(Boolean).join('')}</strong>`\r\n : '';\r\n\r\n return `${mainLine}${directorateLine}`;\r\n }\r\n\r\n\r\n\r\n}\r\n","<mat-dialog-content style=\"max-height: 70vh; overflow: auto; position: relative;\">\r\n <button mat-icon-button class=\"close-button\" (click)=\"cancel()\" [attr.dir]=\"dialogDirection\" id=\"report-details-close-btn\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n\r\n <h1 mat-dialog-title [innerHTML]=\"getTitle()\"></h1>\r\n\r\n <app-base-table\r\n [pageInfo]=\"pageInfo\"\r\n [columns]=\"columns\"\r\n id=\"junior\"\r\n [enforceRefresh]=\"true\"\r\n [reportRequest]=\"reportRequest\">\r\n </app-base-table>\r\n</mat-dialog-content>\r\n\r\n","import {ChangeDetectionStrategy, Component, EventEmitter, Injector, Input, OnInit, Output} from '@angular/core';\r\nimport {FieldInfo} from \"../../base-model/field-info\";\r\nimport {EMPTY_PAGE_INFO, PageInfo} from \"../../base-model/page-info\";\r\nimport {TableColumn} from \"../../base-model/table-column.interface\";\r\nimport {FieldMessage} from \"../../base-model/api-response\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {BackendService} from \"../../services/backend-service\";\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {FormBuilder, FormGroup} from \"@angular/forms\";\r\nimport {formatDate, NgForOf, NgIf} from \"@angular/common\";\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\r\nimport {MatButton, MatButtonModule} from \"@angular/material/button\";\r\nimport {BaseTableComponent} from \"../base-table/base-table.component\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {FilterRequest} from \"../../base-model/filter-request\";\r\nimport {ReportRequest} from \"../../base-model/report-request.model\";\r\nimport {Filter} from \"../../base-model/filter.model\";\r\nimport {TitleBarComponent} from \"../title-bar/title-bar.component\";\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\r\nimport {DRILL_DOWN_ACTION, JUNIOR_DOWN_ACTION, SnackMessage, TablePageUserAction} from \"../../base-model\";\r\nimport {} from \"../audit-log-details-dialog/audit-log-details-dialog.component\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {ReportDetailsDialogComponent} from \"../report-details-dialog/report-details-dialog.component\";\r\nimport { cloneDeep } from 'lodash';\r\nimport {MatTooltip} from \"@angular/material/tooltip\";\r\nimport {Directionality} from \"@angular/cdk/bidi\";\r\n\r\n\r\nconst NON_REPORT_COLUMNS = ['listAction', 'button', 'checkbox'];\r\n\r\n@Component({\r\n selector: 'app-report-form',\r\n standalone: true,\r\n imports: [\r\n TitleBarComponent,\r\n BaseFormCanvasComponent,\r\n MatMenu,\r\n MatMenuItem,\r\n NgForOf,\r\n MatMenuTrigger,\r\n MatButtonModule,\r\n TranslateModule,\r\n BaseTableComponent,\r\n NgIf,\r\n MatIconModule,\r\n MatButton,\r\n MatTooltip\r\n ],\r\n templateUrl: './report-form.component.html',\r\n styleUrl: './report-form.component.scss'\r\n})\r\nexport class ReportFormComponent implements OnInit {\r\n @Input()\r\n showDetails : any = [];\r\n\r\n @Input()\r\n showExtractButton: boolean = true;\r\n\r\n @Input()\r\n columns: TableColumn<any>[] =[];\r\n\r\n @Input() actionRequestCallback!: (actionRequest: TablePageUserAction) => TablePageUserAction;\r\n @Input() enrichDrillDownReportRequest!: (actionRequest: TablePageUserAction, reportRequest: ReportRequest) => TablePageUserAction;\r\n @Input() enrichHyperLinkReportRequest!: (actionRequest: TablePageUserAction, reportRequest: ReportRequest) => TablePageUserAction;\r\n @Input() enrichJuniorReportRequest!: (actionRequest: TablePageUserAction, reportRequest: ReportRequest) => TablePageUserAction;\r\n\r\n @Output()\r\n userAction: EventEmitter<TablePageUserAction> = new EventEmitter<TablePageUserAction>();\r\n activeLevel: number = 1;\r\n\r\n private filterRequest: FilterRequest;\r\n x: any;\r\n isEditable: boolean = true;\r\n fields: FieldInfo[] = [];\r\n pageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n drillDownPageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n drillDownColumns: TableColumn<any>[] = [];\r\n hideDrillDownButton: false;\r\n\r\n juniorPageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n juniorColumns: TableColumn<any>[] = [];\r\n\r\n columnsDefinition: TableColumn<any>[] = [];\r\n types: string[] = [\"pdf\", \"csv\", \"xlsx\"]\r\n searchStr: string = '';\r\n\r\n errors: FieldMessage[] = [];\r\n\r\n reloadData: boolean = false;\r\n backButtonEnabled: boolean = true;\r\n\r\n\r\n reportRequest: ReportRequest = new ReportRequest({});\r\n childReportRequest: ReportRequest = new ReportRequest({});\r\n juniorReportRequest: ReportRequest = new ReportRequest({});\r\n public reportForm: FormGroup;\r\n readyToSearch = false;\r\n private pageSize: any;\r\n private dialogReportRequest: any;\r\n currentDirection: 'ltr' | 'rtl';\r\n\r\n constructor(private translateService: TranslateService,\r\n public backendService: BackendService,\r\n private activatedRoute: ActivatedRoute,\r\n private injector: Injector,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private directionality: Directionality,\r\n public dialog: MatDialog,\r\n private fb: FormBuilder) {\r\n ClassicEditor.defaultConfig = {\r\n toolbar: {\r\n items: ['heading', '|', 'bold', 'italic', '|', 'bulletedList', 'numberedList']\r\n },\r\n image: {\r\n toolbar: ['imageStyle:side', '|', 'imageTextAlternative']\r\n },\r\n table: {\r\n contentToolbar: [ 'tableColumn', 'tableRow', 'mergeTableCells' ]\r\n },\r\n language: 'en'\r\n };\r\n }\r\n\r\n disableExportAction : boolean = false;\r\n\r\n ngOnInit(): void {\r\n this.currentDirection = this.directionality.value;\r\n this.directionality.change.subscribe((value) => {\r\n this.currentDirection = value;\r\n })\r\n\r\n this.activatedRoute.data.subscribe(data => {\r\n this.pageInfo = data['pageInfo'];\r\n this.pageSize = this.pageInfo.pageSize ?? 10;\r\n this.filterRequest = new FilterRequest(this.pageSize);\r\n data['pageInfo'].lazyLoadData = true;\r\n this.drillDownPageInfo = data['drillDownPageInfo'];\r\n this.drillDownColumns = data['drillDownColumns']?.filter(c => c.property !== 'selectItem');\r\n this.hideDrillDownButton = data['hideDrillDownButton'] ?? false;\r\n this.juniorPageInfo = data['juniorPageInfo'];\r\n this.juniorColumns = data['juniorColumns'];\r\n this.columnsDefinition = data['columnsDefinition'].filter(c => (this.drillDownPageInfo && this.drillDownColumns || (!NON_REPORT_COLUMNS.includes(c.type))));\r\n this.fields = data['fields'];\r\n if (data['enrichDrillDownReportRequest']) {\r\n this.enrichDrillDownReportRequest = data['enrichDrillDownReportRequest'](this.injector);\r\n }\r\n if (data['enrichJuniorReportRequest']) {\r\n this.enrichJuniorReportRequest = data['enrichJuniorReportRequest'](this.injector);\r\n }\r\n\r\n if (data['enrichHyperLinkReportRequest']) {\r\n this.enrichHyperLinkReportRequest = data['enrichHyperLinkReportRequest'](this.injector);\r\n }\r\n });\r\n this.route.queryParamMap.subscribe(params => {\r\n const isComparisonReport = params.get('comparisonReport') === 'true';\r\n\r\n if (isComparisonReport) {\r\n const comparisonStr = sessionStorage.getItem('comparisonReportPageInfo');\r\n\r\n if (comparisonStr) {\r\n const comparisonData = JSON.parse(comparisonStr);\r\n\r\n this.pageInfo.lazyLoadData = comparisonData.lazyLoadData ?? false;\r\n this.activeLevel = comparisonData.activeLevel ?? 2;\r\n this.isEditable = false;\r\n this.backButtonEnabled = false;\r\n this.drillDownPageInfo = comparisonData.drillDownPageInfo;\r\n this.drillDownColumns = comparisonData.drillDownColumns;\r\n this.reportForm = this.fb.group({\r\n directorate: [[]],\r\n fromDate: [''],\r\n toDate: [''],\r\n sector: [''],\r\n });\r\n\r\n this.reportForm.patchValue(comparisonData.form)\r\n this.fields = this.fields.filter(c => c.type !== 'checkbox');\r\n\r\n const reportRequest = comparisonData.reportRequest;\r\n\r\n this.childReportRequest = this.backendService.buildReportRequest(\r\n this.drillDownColumns,\r\n `${this.drillDownPageInfo.labelsSection}.${this.drillDownPageInfo.id}`,\r\n reportRequest,\r\n '',\r\n this.drillDownPageInfo,\r\n 'LANDSCAPE'\r\n );\r\n\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n // ngOnChanges({item, errors, fields}: SimpleChanges): void {\r\n // // errors?.currentValue?.forEach((msg: FieldMessage) => {\r\n // // this.backendService.parentForm.get(msg.fieldName)?.setErrors({serverError: msg.message});\r\n // // });\r\n // // if (fields?.currentValue && !fields.isFirstChange()){\r\n // // this.buildForm();\r\n // // }\r\n // // this.buildForm();\r\n // }\r\n\r\n isMatchHeight() {\r\n return this.pageInfo.pageHeight === 'match';\r\n }\r\n\r\n\r\n doAction(type: string) {\r\n if (this.backendService.parentForm.valid) {\r\n this.reloadData = !this.reloadData;\r\n const filterRequest: FilterRequest = new FilterRequest(this.pageSize);\r\n filterRequest.filters = [];\r\n let paramsString: string[] = [];\r\n this.fields.filter(x => x.type !== 'spacer').forEach(f => {\r\n if (this.getParamValue(f) != null && this.getParamValue(f).toString().trim() !== '')\r\n {\r\n if (f.type === 'multi-select' || f.type === 'lookup') {\r\n // do not filter if this field as cascading for another one and the other one got selected values\r\n const childFieldIdx = this.fields.findIndex(field => field.cascadedBy === f.property);\r\n if (childFieldIdx > -1 && this.backendService.parentForm.get(this.fields[childFieldIdx].property)?.value?.length > 0) {\r\n return;\r\n }\r\n const idz: number[] = [];\r\n const param: string[] = [];\r\n if (this.backendService.parentForm.get(f.property)?.value && Array.isArray(this.backendService.parentForm.get(f.property)?.value)\r\n && this.backendService.parentForm.get(f.property)?.value.length > 0) {\r\n this.backendService.parentForm.get(f.property)?.value.forEach((a: {\r\n channelId: number;\r\n englishName: string;\r\n id: number;\r\n }) => {\r\n if (f.flattenBySubAttribute) {\r\n idz.push(a[f.flattenBySubAttribute]);\r\n param.push(a[f.flattenBySubAttribute]);\r\n } else if (this.fields.find(s => s.property === 'terminalId')) {\r\n idz.push(a.channelId);\r\n param.push(a.englishName);\r\n } else {\r\n idz.push(a.id);\r\n param.push(a.englishName);\r\n }\r\n })\r\n filterRequest.filters?.push(new Filter({\r\n id: f.property, fieldName: f.property, label: this.translateService.instant(f.label),\r\n filterType: 'FILED_FILTER', operator: f.filterOperator,\r\n valueObject: idz\r\n }));\r\n paramsString.push(this.translateService.instant(f.label) + ' : ' + param.join(','));\r\n } else if (this.backendService.parentForm.get(f.property)?.value && f.flattenBySubAttribute) {\r\n filterRequest.filters?.push(new Filter({\r\n id: f.property, fieldName: f.property, label: this.translateService.instant(f.label),\r\n filterType: 'FILED_FILTER', operator: f.filterOperator,\r\n valueObject: this.getParamValue(f)[f.flattenBySubAttribute]\r\n }));\r\n }\r\n } else {\r\n if (this.backendService.parentForm.get(f.property)?.value !== null &&\r\n this.backendService.parentForm.get(f.property)?.value !== undefined &&\r\n this.backendService.parentForm.get(f.property)?.value !== \"\") {\r\n filterRequest.filters?.push(new Filter({\r\n id: f.property, fieldName: f.property, label: this.translateService.instant(f.label),\r\n filterType: 'FILED_FILTER', operator: f.filterOperator,\r\n valueObject: this.getParamValue(f)\r\n }));\r\n }\r\n paramsString.push(this.translateService.instant(f.label) + ' : ' + this.getParamValueLabel(f));\r\n }\r\n }})\r\n const reportRequest = this.backendService.buildReportRequest(this.columnsDefinition, this.pageInfo.labelsSection + '.' + this.pageInfo.id,\r\n filterRequest, type, this.pageInfo, 'LANDSCAPE');\r\n reportRequest.searchStr = paramsString.join(' , ');\r\n this.reportRequest = reportRequest;\r\n // this.activeLevel = 1;\r\n } else {\r\n this.backendService.topPanelMessage$.next(new SnackMessage('INVALID_REPORT_FORM', true, 'error'));\r\n }\r\n }\r\n\r\n private getParamValue(f: FieldInfo) {\r\n if (f.type === 'date' && this.backendService.parentForm.get(f.property)?.value) {\r\n return formatDate(this.backendService.parentForm.get(f.property)?.value, 'yyyy-MM-dd', 'en_US')\r\n }else if (f.type === 'checkbox') {\r\n return !!this.backendService.parentForm.get(f.property)?.value;\r\n }else {\r\n return this.backendService.parentForm.get(f.property)?.value;\r\n }\r\n }\r\n\r\n private getParamValueLabel(f: FieldInfo) {\r\n if (f.type === 'checkbox') {\r\n return this.backendService.parentForm.get(f.property)?.value ? this.translateService.instant('yes') : this.translateService.instant('no');\r\n }else {\r\n return this.backendService.parentForm.get(f.property)?.value;\r\n }\r\n }\r\n\r\n getTitle() {\r\n const pageInfoMap = {\r\n 1: this.pageInfo,\r\n 2: this.drillDownPageInfo,\r\n 3: this.juniorPageInfo\r\n };\r\n\r\n const currentInfo = pageInfoMap[this.activeLevel] || this.pageInfo;\r\n return `${currentInfo.labelsSection}.${currentInfo.id}`;\r\n }\r\n\r\n updateForm($event: FormGroup) {\r\n this.reportForm = $event;\r\n this.backendService.parentForm = $event;\r\n\r\n this.setupDependentFieldWatchers();\r\n\r\n this.backendService.parentForm.valueChanges.subscribe(x => {\r\n this.readyToSearch = this.backendService.parentForm.valid;\r\n }\r\n\r\n );\r\n }\r\n\r\n private setupDependentFieldWatchers() {\r\n this.fields\r\n .filter(field => field.lookupFilterList && field.lookupFilterList.length > 0)\r\n .forEach(field => {\r\n const dependentFields = field.lookupFilterList.map(f => f.fieldName);\r\n\r\n dependentFields.forEach(dependentFieldName => {\r\n const dependentControl = this.reportForm.get(dependentFieldName);\r\n if (dependentControl) {\r\n dependentControl.valueChanges.subscribe(() => {\r\n const targetControl = this.reportForm.get(field.property);\r\n if (targetControl) {\r\n targetControl.setValue([]);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n isValidForm() {\r\n return this.readyToSearch ;\r\n\r\n }\r\n\r\n\r\n\r\n emitUserAction($event: TablePageUserAction) {\r\n $event.pageInfo = this.pageInfo;\r\n this.doADrillDownAction($event);\r\n }\r\n\r\n emitHyperLinkAction($event: TablePageUserAction) {\r\n if (!this.shouldProcessEventItem($event.item)) return;\r\n\r\n const item = $event.item;\r\n this.prepareDialogReportRequest(item);\r\n const reportRequest = this.buildDialogReportRequest();\r\n reportRequest.filterRequest.pageIndex = 0\r\n const dialogRef = this.dialog.open(ReportDetailsDialogComponent, {\r\n data: {\r\n pageInfo: this.juniorPageInfo,\r\n request: reportRequest,\r\n columns: this.juniorColumns,\r\n item,\r\n },\r\n height: '50vw',\r\n maxWidth: '120vw',\r\n direction: this.currentDirection,\r\n disableClose: false,\r\n });\r\n\r\n dialogRef.afterOpened().subscribe(() => this.doHyperLinkAction($event));\r\n dialogRef.afterClosed().subscribe(() => {});\r\n }\r\n\r\n private prepareDialogReportRequest(item: any): void {\r\n this.dialogReportRequest = cloneDeep(this.reportRequest);\r\n this.dialogReportRequest.filterRequest = { filters: [] };\r\n\r\n this.addStandardFilters(item);\r\n this.addOrReplaceFilter('isec1', 'iSec', item['isec_value']);\r\n this.addFilterType();\r\n }\r\n\r\n private addStandardFilters(item: any): void {\r\n const standardFilters = [\r\n { key: 'period', value: item['period'] },\r\n { key: 'year', value: item['year'] },\r\n { key: 'sector', value: item['sectorCode'] },\r\n { key: 'directorate', value: item['directorateCode'] },\r\n { key: 'subTaxRate', value: item['tax_rate_code'] },\r\n ];\r\n\r\n standardFilters.forEach(({ key, value }) =>\r\n this.dialogReportRequest.filterRequest.filters.push(\r\n this.createFilter(key, key, value)\r\n )\r\n );\r\n }\r\n\r\n private addFilterType(): void {\r\n const isTax = this.dialogReportRequest.actionKey?.toLowerCase().includes('tax');\r\n const filterType = isTax ? 'TAX' : 'VALUE';\r\n\r\n this.dialogReportRequest.filterRequest.filters.push(\r\n this.createFilter('filterType', 'filterType', filterType)\r\n );\r\n }\r\n\r\n private buildDialogReportRequest(): any {\r\n return this.backendService.buildReportRequest(\r\n this.juniorColumns,\r\n `${this.juniorPageInfo.labelsSection}.${this.juniorPageInfo.id}`,\r\n { ...this.dialogReportRequest.filterRequest },\r\n '',\r\n this.juniorPageInfo,\r\n 'LANDSCAPE'\r\n );\r\n }\r\n\r\n private createFilter(key: string, fieldName: string, value: any): Filter {\r\n return new Filter({\r\n key,\r\n fieldName,\r\n label: '',\r\n filterType: 'FILED_FILTER',\r\n operator: 'EQUALS',\r\n valueObject: value,\r\n });\r\n }\r\n\r\n private addOrReplaceFilter(id: string, fieldName: string, value: any): void {\r\n const filter = new Filter({\r\n id,\r\n fieldName,\r\n label: '',\r\n filterType: 'FILED_FILTER',\r\n operator: 'EQUALS',\r\n valueObject: value,\r\n });\r\n\r\n const filters = this.dialogReportRequest.filterRequest.filters;\r\n const existingIndex = filters.findIndex((f: Filter) => f.id === id);\r\n\r\n if (existingIndex !== -1) {\r\n filters.splice(existingIndex, 1, filter);\r\n } else {\r\n filters.push(filter);\r\n }\r\n }\r\n\r\n\r\n\r\n emitJuniorAction($event: TablePageUserAction) {\r\n const juniorAction = JUNIOR_DOWN_ACTION;\r\n juniorAction.pageInfo = this.drillDownPageInfo;\r\n this.doJuniorAction($event);\r\n }\r\n\r\n drillDown() {\r\n const drilldownaction = DRILL_DOWN_ACTION;\r\n drilldownaction.pageInfo = this.drillDownPageInfo;\r\n this.doADrillDownAction(drilldownaction);\r\n }\r\n\r\n private doJuniorAction($event: TablePageUserAction) {\r\n if (this.juniorColumns && this.juniorPageInfo) {\r\n if (this.enrichJuniorReportRequest) {\r\n if (this.activeLevel === 2) {\r\n this.isEditable = false;\r\n this.disableExportAction = this.juniorPageInfo.hideReportsExtractButton || false;\r\n this.juniorReportRequest = this.backendService.buildReportRequest(this.juniorColumns,\r\n this.juniorPageInfo.labelsSection + '.' + this.juniorPageInfo.id,\r\n this.reportRequest.filterRequest, '', this.juniorPageInfo, 'LANDSCAPE');\r\n this.enrichJuniorReportRequest($event, this.juniorReportRequest);\r\n }\r\n }\r\n this.activeLevel = this.activeLevel +1;\r\n }\r\n }\r\n private doADrillDownAction($event: TablePageUserAction) {\r\n if (this.drillDownColumns && this.drillDownPageInfo) {\r\n if (this.enrichDrillDownReportRequest) {\r\n if (this.activeLevel === 1) {\r\n this.isEditable = false;\r\n this.childReportRequest = this.backendService.buildReportRequest(this.drillDownColumns,\r\n this.drillDownPageInfo.labelsSection + '.' + this.drillDownPageInfo.id,\r\n this.reportRequest.filterRequest, '', this.drillDownPageInfo, 'LANDSCAPE');\r\n this.disableExportAction = this.drillDownPageInfo.hideReportsExtractButton || false;\r\n this.enrichDrillDownReportRequest($event, this.childReportRequest);\r\n }\r\n }\r\n this.activeLevel = this.activeLevel +1;\r\n }\r\n }\r\n\r\n private doHyperLinkAction($event: TablePageUserAction) {\r\n if (this.enrichHyperLinkReportRequest) {\r\n this.juniorReportRequest = this.backendService.buildReportRequest(this.juniorColumns,\r\n this.juniorPageInfo.labelsSection + '.' + this.juniorPageInfo.id,\r\n this.dialogReportRequest.filterRequest, '', this.juniorPageInfo, 'LANDSCAPE');\r\n this.disableExportAction = this.juniorPageInfo.hideReportsExtractButton || false;\r\n this.enrichHyperLinkReportRequest($event, this.juniorReportRequest);\r\n }\r\n }\r\n\r\n extractReport(reportType: any) {\r\n if (this.activeLevel === 1) {\r\n this.reportRequest.reportType = reportType;\r\n this.backendService.downloadReport(this.reportRequest, this.pageInfo.apiUri );\r\n }\r\n else if (this.activeLevel === 2) {\r\n this.childReportRequest.reportType = reportType;\r\n this.backendService.downloadReport(this.childReportRequest, this.drillDownPageInfo.apiUri );\r\n }\r\n else if (this.activeLevel === 3) {\r\n this.juniorReportRequest.reportType = reportType;\r\n this.backendService.downloadReport(this.juniorReportRequest, this.juniorPageInfo.apiUri );\r\n }\r\n }\r\n\r\n goUp() {\r\n this.isEditable = true;\r\n this.activeLevel = this.activeLevel -1;\r\n this.doAction(this.x);\r\n this.reloadData = true;\r\n if (this.activeLevel >1) {\r\n this.isEditable = false;\r\n }\r\n this.disableExportAction = false\r\n }\r\n\r\n drillDownEnabled() {\r\n return this.drillDownPageInfo && !this.hideDrillDownButton && !this.getIsEmptyList();\r\n }\r\n\r\n drillDownLabel() {\r\n return `${this.pageInfo.labelsSection}.drillDownLabel` ;\r\n }\r\n getIsEmptyList() {\r\n return this.backendService.isEmptyItems || this.disableExportAction === true;\r\n }\r\n clear() {\r\n const currentUrl = this.router.url;\r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigate([currentUrl]);\r\n });\r\n\r\n // if (this.reportForm) {\r\n // this.reportForm.reset();\r\n //\r\n // this.fields.forEach(field => {\r\n // if (field.type === 'lookup' || field.type === 'multi-select') {\r\n // const control = this.reportForm.get(field.property);\r\n // if (control) {\r\n // control.setValue([]);\r\n // }\r\n // }\r\n // });\r\n // }\r\n\r\n }\r\n\r\n\r\n isFormEmpty(): boolean {\r\n if (!this.reportForm || !this.reportForm.value) {\r\n return true;\r\n }\r\n\r\n return Object.values(this.reportForm.value).every(value => {\r\n if (value === null || value === undefined || value === '') {\r\n return true;\r\n }\r\n return Array.isArray(value) && value.length === 0;\r\n\r\n\r\n });\r\n }\r\n\r\n shouldProcessEventItem(item: any): boolean {\r\n const groupByProp = this.pageInfo?.groupByProperty;\r\n const groupByValues = this.pageInfo?.groupByValue;\r\n\r\n if (!groupByProp || !groupByValues || !item[groupByProp]) {\r\n return true;\r\n }\r\n\r\n const value = item[groupByProp].toString();\r\n\r\n return !groupByValues.some(v => value.includes(v) && value.length >= v.length);\r\n }\r\n}\r\n","<div class=\"column full-width\">\r\n\r\n <div class=\"row align-start-center\" style=\"margin-bottom: 10px;\">\r\n <app-title-bar [pageTitle]=\"getTitle()\" [newAction]=\"false\"></app-title-bar>\r\n\r\n <mat-icon\r\n *ngIf=\"pageInfo?.hasHint\"\r\n [matTooltip]=\"pageInfo.labelsSection + '.hint' | translate\"\r\n matTooltipPosition=\"right\"\r\n color=\"primary\"\r\n class=\"hint-icon\"\r\n matTooltipClass=\"custom-tooltip\">\r\n help_outline\r\n </mat-icon>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"isEditable\"\r\n [errors]=\"errors\"\r\n [item]=\"this.reportForm?.value || {}\"\r\n (formUpdated)=\"updateForm($event)\"\r\n ></app-base-form-canvas>\r\n\r\n <br><br>\r\n\r\n <div class=\"column\">\r\n <div class=\"row gap-10 responsive-row\">\r\n <button *ngIf=\"activeLevel === 1\" color=\"primary\" mat-flat-button (click)=\"doAction(x)\" [disabled]=\"!isValidForm()\" id=\"report-generate-btn\">\r\n {{ 'REPORTS.generate' | translate }}\r\n </button>\r\n\r\n <button mat-raised-button [matMenuTriggerFor]=\"menu\" [disabled]=\"getIsEmptyList()\" color=\"primary\" id=\"report-extract-trigger\">\r\n {{ 'extract' | translate }}\r\n <mat-icon class=\"expand_more actionButton__expand\">expand_more</mat-icon>\r\n </button>\r\n\r\n <button mat-flat-button (click)=\"clear()\" [disabled]=\"isFormEmpty() || activeLevel > 1\" id=\"report-clear-btn\">\r\n {{ 'REPORTS.clear' | translate }}\r\n </button>\r\n\r\n <button *ngIf=\"activeLevel === 1 && drillDownEnabled()\" color=\"warn\" mat-flat-button (click)=\"drillDown()\" id=\"report-drilldown-btn\">\r\n {{ drillDownLabel() | translate }}\r\n </button>\r\n\r\n <button *ngIf=\"activeLevel > 1 && backButtonEnabled\" color=\"warn\" mat-flat-button (click)=\"goUp()\" id=\"report-up-btn\">\r\n {{ 'REPORTS.up' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"activeLevel >= 1\" class=\"main-form-canvas row align-start-start responsive-table\" style=\"margin-top: 3vh;\">\r\n <div class=\"column full-width\">\r\n <app-base-table\r\n *ngIf=\"activeLevel === 1\"\r\n [pageInfo]=\"pageInfo\"\r\n [columns]=\"columnsDefinition\"\r\n [enforceRefresh]=\"reloadData\"\r\n id=\"parent\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n\r\n <app-base-table\r\n *ngIf=\"activeLevel === 2\"\r\n [pageInfo]=\"drillDownPageInfo\"\r\n [columns]=\"drillDownColumns\"\r\n id=\"child\"\r\n [reportRequest]=\"childReportRequest\"\r\n (userAction)=\"emitJuniorAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n\r\n <app-base-table\r\n *ngIf=\"activeLevel === 3\"\r\n [pageInfo]=\"juniorPageInfo\"\r\n [columns]=\"juniorColumns\"\r\n id=\"junior\"\r\n [reportRequest]=\"juniorReportRequest\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<mat-menu #menu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item *ngFor=\"let type of types\" (click)=\"extractReport(type)\" [attr.id]=\"'report-extract-item-' + type\">\r\n {{ type }}\r\n </button>\r\n</mat-menu>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport {FieldInfo} from \"../../base-model/field-info\";\r\nimport {EMPTY_PAGE_INFO, PageInfo} from \"../../base-model/page-info\";\r\nimport {TableColumn} from \"../../base-model/table-column.interface\";\r\nimport {FieldMessage} from \"../../base-model/api-response\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {BackendService} from \"../../services/backend-service\";\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {FormBuilder, FormGroup} from \"@angular/forms\";\r\nimport {formatDate, NgForOf, NgIf} from \"@angular/common\";\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\r\nimport {MatButton, MatButtonModule} from \"@angular/material/button\";\r\nimport {BaseTableComponent} from \"../base-table/base-table.component\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {FilterRequest} from \"../../base-model/filter-request\";\r\nimport {ReportRequest} from \"../../base-model/report-request.model\";\r\nimport {Filter} from \"../../base-model/filter.model\";\r\nimport {TitleBarComponent} from \"../title-bar/title-bar.component\";\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\r\nimport {DRILL_DOWN_ACTION, JUNIOR_DOWN_ACTION, SnackMessage, TablePageUserAction} from \"../../base-model\";\r\nimport {} from \"../audit-log-details-dialog/audit-log-details-dialog.component\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {ReportDetailsDialogComponent} from \"../report-details-dialog/report-details-dialog.component\";\r\nimport { cloneDeep } from 'lodash';\r\nimport {Directionality} from \"@angular/cdk/bidi\";\r\nimport {MatTooltip} from \"@angular/material/tooltip\";\r\n\r\n\r\nconst NON_REPORT_COLUMNS = ['listAction', 'button', 'checkbox'];\r\n\r\n@Component({\r\n selector: 'app-report-form',\r\n standalone: true,\r\n imports: [\r\n TitleBarComponent,\r\n BaseFormCanvasComponent,\r\n MatMenu,\r\n MatMenuItem,\r\n NgForOf,\r\n MatMenuTrigger,\r\n MatButtonModule,\r\n TranslateModule,\r\n BaseTableComponent,\r\n NgIf,\r\n MatIconModule,\r\n MatButton,\r\n MatTooltip\r\n ],\r\n templateUrl: './activity-report-form.component.html',\r\n styleUrl: './activity-report-form.component.scss'\r\n})\r\nexport class ActivityReportFormComponent implements OnInit{\r\n @Input()\r\n showDetails : any = [];\r\n\r\n @Input()\r\n showExtractButton: boolean = true;\r\n\r\n @Input()\r\n columns: TableColumn<any>[] =[];\r\n private originalColumns: any[] = [];\r\n\r\n\r\n @Input() actionRequestCallback!: (actionRequest: TablePageUserAction) => TablePageUserAction;\r\n @Input() enrichDrillDownReportRequest!: (actionRequest: TablePageUserAction, reportRequest: ReportRequest) => TablePageUserAction;\r\n @Input() enrichHyperLinkReportRequest!: (actionRequest: TablePageUserAction, reportRequest: ReportRequest) => TablePageUserAction;\r\n @Input() enrichJuniorReportRequest!: (actionRequest: TablePageUserAction, reportRequest: ReportRequest) => TablePageUserAction;\r\n\r\n @Output()\r\n userAction: EventEmitter<TablePageUserAction> = new EventEmitter<TablePageUserAction>();\r\n activeLevel: number = 1;\r\n items = [4, 5,6,7];\r\n private filterRequest: FilterRequest;\r\n x: any;\r\n isEditable: boolean = true;\r\n fields: FieldInfo[] = [];\r\n pageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n drillDownPageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n drillDownColumns: TableColumn<any>[] = [];\r\n hideDrillDownButton: false;\r\n\r\n juniorPageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n juniorColumns: TableColumn<any>[] = [];\r\n\r\n columnsDefinition: TableColumn<any>[] = [];\r\n types: string[] = [\"pdf\", \"csv\", \"xlsx\"]\r\n searchStr: string = '';\r\n\r\n errors: FieldMessage[] = [];\r\n\r\n reloadData: boolean = false;\r\n drillDownRequestStack: any[] = [];\r\n reportRequest: ReportRequest = new ReportRequest({});\r\n childReportRequest: ReportRequest = new ReportRequest({});\r\n juniorReportRequest: ReportRequest = new ReportRequest({});\r\n public reportForm: FormGroup;\r\n readyToSearch = false;\r\n private pageSize: any;\r\n private dialogReportRequest: any;\r\n currentDirection: 'ltr' | 'rtl';\r\n protected isComparisonReport: boolean = false;\r\n constructor(private translateService: TranslateService,\r\n public backendService: BackendService,\r\n private activatedRoute: ActivatedRoute,\r\n private injector: Injector,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n public dialog: MatDialog,\r\n private directionality: Directionality,\r\n private fb: FormBuilder) {\r\n ClassicEditor.defaultConfig = {\r\n toolbar: {\r\n items: ['heading', '|', 'bold', 'italic', '|', 'bulletedList', 'numberedList']\r\n },\r\n image: {\r\n toolbar: ['imageStyle:side', '|', 'imageTextAlternative']\r\n },\r\n table: {\r\n contentToolbar: [ 'tableColumn', 'tableRow', 'mergeTableCells' ]\r\n },\r\n language: 'en'\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.currentDirection = this.directionality.value;\r\n this.directionality.change.subscribe((value) => {\r\n this.currentDirection = value;\r\n })\r\n\r\n this.activatedRoute.data.subscribe(data => {\r\n this.pageInfo = data['pageInfo'];\r\n this.pageSize = this.pageInfo.pageSize ?? 10;\r\n this.filterRequest= new FilterRequest(this.pageSize);\r\n data['pageInfo'].lazyLoadData = true;\r\n this.drillDownPageInfo = data['drillDownPageInfo'];\r\n this.drillDownColumns = data['drillDownColumns'];\r\n this.originalColumns = [...this.drillDownColumns];\r\n this.hideDrillDownButton = data['hideDrillDownButton'] ?? false;\r\n this.juniorPageInfo = data['juniorPageInfo'];\r\n this.juniorColumns = data['juniorColumns'];\r\n this.columnsDefinition = data['columnsDefinition'].filter(c => (this.drillDownPageInfo && this.drillDownColumns || (!NON_REPORT_COLUMNS.includes(c.type))));\r\n this.fields = data['fields'];\r\n if (data['enrichDrillDownReportRequest']) {\r\n this.enrichDrillDownReportRequest = data['enrichDrillDownReportRequest'](this.injector);\r\n }\r\n if (data['enrichJuniorReportRequest']) {\r\n this.enrichJuniorReportRequest = data['enrichJuniorReportRequest'](this.injector);\r\n }\r\n\r\n if (data['enrichHyperLinkReportRequest']) {\r\n this.enrichHyperLinkReportRequest = data['enrichHyperLinkReportRequest'](this.injector);\r\n }\r\n });\r\n\r\n this.route.queryParamMap.subscribe(params => {\r\n this.isComparisonReport = params.get('comparisonReport') === 'true';\r\n if (!this.isComparisonReport) return;\r\n\r\n const comparisonStr = sessionStorage.getItem('comparisonReportPageInfo');\r\n if (!comparisonStr) return;\r\n\r\n const comparisonData = JSON.parse(comparisonStr);\r\n this.initializeComparisonReport(comparisonData);\r\n });\r\n }\r\n\r\n private initializeComparisonReport(data: any): void {\r\n this.pageInfo.lazyLoadData = data.lazyLoadData ?? false;\r\n this.activeLevel = data.activeLevel ?? 2;\r\n this.isEditable = false;\r\n this.drillDownPageInfo = data.drillDownPageInfo;\r\n this.drillDownColumns = data.drillDownColumns;\r\n\r\n const reportRequest = data.reportRequest;\r\n\r\n this.reportRequest = this.backendService.buildReportRequest(\r\n this.drillDownColumns,\r\n `${this.drillDownPageInfo.labelsSection}.${this.drillDownPageInfo.id}`,\r\n reportRequest,\r\n '',\r\n this.drillDownPageInfo,\r\n 'LANDSCAPE'\r\n );\r\n\r\n this.setupForm(data.form);\r\n this.removeCheckboxFields();\r\n this.setupFilters(data.reportRequest, data.item);\r\n this.setupJuniorReportRequest();\r\n }\r\n\r\n private setupForm(formData: any): void {\r\n this.reportForm = this.fb.group({\r\n directorate: [[]],\r\n fromDate: [''],\r\n toDate: [''],\r\n sector: {},\r\n });\r\n\r\n if (formData) {\r\n this.reportForm.patchValue(formData);\r\n }\r\n }\r\n\r\n private removeCheckboxFields(): void {\r\n this.fields = this.fields.filter(field => field.type !== 'checkbox');\r\n }\r\n\r\n private setupFilters(reportRequest: any, item: any): void {\r\n this.filterRequest.filters = [];\r\n\r\n this.addOrUpdateFilter(reportRequest, {\r\n key: 'iSecLevel',\r\n fieldName: 'iSecLevel',\r\n value: this.activeLevel\r\n });\r\n\r\n this.addOrUpdateFilter(reportRequest, {\r\n id: 'iSecValue',\r\n key: 'iSecValue',\r\n fieldName: 'iSecValue',\r\n value: item?.isec_value\r\n });\r\n\r\n this.addOrUpdateFilter(reportRequest, {\r\n id: 'period',\r\n key: 'period',\r\n fieldName: 'period',\r\n value: item?.period\r\n });\r\n\r\n this.addOrUpdateFilter(reportRequest, {\r\n id: 'year',\r\n key: 'year',\r\n fieldName: 'year',\r\n value: item?.year\r\n });\r\n\r\n this.reportRequest.filterRequest = reportRequest;\r\n }\r\n\r\n private setupJuniorReportRequest(): void {\r\n this.juniorReportRequest = this.backendService.buildReportRequest(\r\n this.juniorColumns,\r\n `${this.juniorPageInfo.labelsSection}.${this.juniorPageInfo.id}`,\r\n this.reportRequest.filterRequest,\r\n '',\r\n this.juniorPageInfo,\r\n 'LANDSCAPE'\r\n );\r\n\r\n this.juniorReportRequest.filterRequest.pageSize = 500;\r\n }\r\n\r\n isMatchHeight() {\r\n return this.pageInfo.pageHeight === 'match';\r\n }\r\n\r\n\r\n doAction(type: string) {\r\n if (this.backendService.parentForm.valid) {\r\n this.reloadData = !this.reloadData;\r\n const filterRequest: FilterRequest = new FilterRequest(this.pageSize);\r\n filterRequest.filters = [];\r\n this.addOrUpdateFilter(filterRequest, {\r\n key: 'iSecLevel',\r\n fieldName: 'iSecLevel',\r\n value: this.activeLevel\r\n });\r\n let paramsString: string[] = [];\r\n this.fields.filter(x => x.type !== 'spacer').forEach(f => {\r\n if (this.getParamValue(f) != null && this.getParamValue(f).toString().trim() !== '')\r\n {\r\n if (f.type === 'multi-select' || f.type === 'lookup') {\r\n // do not filter if this field as cascading for another one and the other one got selected values\r\n const childFieldIdx = this.fields.findIndex(field => field.cascadedBy === f.property);\r\n if (childFieldIdx > -1 && this.backendService.parentForm.get(this.fields[childFieldIdx].property)?.value?.length > 0) {\r\n return;\r\n }\r\n const idz: number[] = [];\r\n const param: string[] = [];\r\n if (this.backendService.parentForm.get(f.property)?.value && Array.isArray(this.backendService.parentForm.get(f.property)?.value)\r\n && this.backendService.parentForm.get(f.property)?.value.length > 0) {\r\n this.backendService.parentForm.get(f.property)?.value.forEach((a: {\r\n channelId: number;\r\n englishName: string;\r\n id: number;\r\n }) => {\r\n if (f.flattenBySubAttribute) {\r\n idz.push(a[f.flattenBySubAttribute]);\r\n param.push(a[f.flattenBySubAttribute]);\r\n } else if (this.fields.find(s => s.property === 'terminalId')) {\r\n idz.push(a.channelId);\r\n param.push(a.englishName);\r\n } else {\r\n idz.push(a.id);\r\n param.push(a.englishName);\r\n }\r\n })\r\n filterRequest.filters?.push(new Filter({\r\n id: f.property, fieldName: f.property, label: this.translateService.instant(f.label),\r\n filterType: 'FILED_FILTER', operator: f.filterOperator,\r\n valueObject: idz\r\n }));\r\n paramsString.push(this.translateService.instant(f.label) + ' : ' + param.join(','));\r\n } else if (this.backendService.parentForm.get(f.property)?.value && f.flattenBySubAttribute) {\r\n filterRequest.filters?.push(new Filter({\r\n id: f.property, fieldName: f.property, label: this.translateService.instant(f.label),\r\n filterType: 'FILED_FILTER', operator: f.filterOperator,\r\n valueObject: this.getParamValue(f)[f.flattenBySubAttribute]\r\n }));\r\n }\r\n } else {\r\n if (this.backendService.parentForm.get(f.property)?.value !== null &&\r\n this.backendService.parentForm.get(f.property)?.value !== undefined &&\r\n this.backendService.parentForm.get(f.property)?.value !== \"\") {\r\n filterRequest.filters?.push(new Filter({\r\n id: f.property, fieldName: f.property, label: this.translateService.instant(f.label),\r\n filterType: 'FILED_FILTER', operator: f.filterOperator,\r\n valueObject: this.getParamValue(f)\r\n }));\r\n }\r\n paramsString.push(this.translateService.instant(f.label) + ' : ' + this.getParamValueLabel(f));\r\n }\r\n }})\r\n const reportRequest = this.backendService.buildReportRequest(this.columnsDefinition, this.pageInfo.labelsSection + '.' + this.pageInfo.id,\r\n filterRequest, type, this.pageInfo, 'LANDSCAPE');\r\n reportRequest.searchStr = paramsString.join(' , ');\r\n this.reportRequest = reportRequest;\r\n // this.activeLevel = 1;\r\n } else {\r\n this.backendService.topPanelMessage$.next(new SnackMessage('INVALID_REPORT_FORM', true, 'error'));\r\n }\r\n }\r\n\r\n private getParamValue(f: FieldInfo) {\r\n if (f.type === 'date' && this.backendService.parentForm.get(f.property)?.value) {\r\n return formatDate(this.backendService.parentForm.get(f.property)?.value, 'yyyy-MM-dd', 'en_US')\r\n }else if (f.type === 'checkbox') {\r\n return !!this.backendService.parentForm.get(f.property)?.value;\r\n }else {\r\n return this.backendService.parentForm.get(f.property)?.value;\r\n }\r\n }\r\n\r\n private getParamValueLabel(f: FieldInfo) {\r\n if (f.type === 'checkbox') {\r\n return this.backendService.parentForm.get(f.property)?.value ? this.translateService.instant('yes') : this.translateService.instant('no');\r\n }else {\r\n return this.backendService.parentForm.get(f.property)?.value;\r\n }\r\n }\r\n\r\n getTitle() {\r\n const pageInfoMap = {\r\n 1: this.pageInfo,\r\n 2: this.drillDownPageInfo,\r\n 3: this.juniorPageInfo\r\n };\r\n\r\n const currentInfo = pageInfoMap[this.activeLevel] || this.pageInfo;\r\n return `${currentInfo.labelsSection}.${currentInfo.id}`;\r\n }\r\n\r\n updateForm($event: FormGroup) {\r\n this.reportForm = $event;\r\n this.backendService.parentForm = $event;\r\n this.backendService.parentForm.valueChanges.subscribe(x => {\r\n this.readyToSearch = this.backendService.parentForm.valid;\r\n }\r\n\r\n );\r\n }\r\n\r\n isValidForm() {\r\n return this.readyToSearch ;\r\n\r\n }\r\n\r\n\r\n\r\n emitUserAction($event: TablePageUserAction) {\r\n $event.pageInfo = this.pageInfo;\r\n this.doADrillDownAction($event);\r\n }\r\n\r\n emitHyperLinkAction($event: TablePageUserAction) {\r\n if (this.shouldProcessEventItem($event.item)) {\r\n this.dialogReportRequest = cloneDeep(this.reportRequest);\r\n const reportRequest1 = this.backendService.buildReportRequest(\r\n this.juniorColumns,\r\n this.juniorPageInfo.labelsSection + '.' + this.juniorPageInfo.id,\r\n { ...this.dialogReportRequest.filterRequest },\r\n '',\r\n this.juniorPageInfo,\r\n 'LANDSCAPE'\r\n );\r\n reportRequest1.filterRequest.pageIndex = 0\r\n const dialogRef = this.dialog.open(ReportDetailsDialogComponent, {\r\n data: {\r\n pageInfo: this.juniorPageInfo,\r\n request: reportRequest1,\r\n columns: this.juniorColumns,\r\n item :$event.item\r\n },\r\n height: '50vw',\r\n maxWidth: '120vw',\r\n direction: this.currentDirection,\r\n disableClose: false,\r\n });\r\n\r\n dialogRef.afterOpened().subscribe(() => {\r\n this.doHyperLinkAction($event);\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(() => {\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n emitJuniorAction($event: TablePageUserAction) {\r\n console.log('$event call junior', $event);\r\n const juniorAction = JUNIOR_DOWN_ACTION;\r\n juniorAction.pageInfo = this.drillDownPageInfo;\r\n this.doJuniorAction($event);\r\n }\r\n\r\n drillDown() {\r\n const drilldownaction = DRILL_DOWN_ACTION;\r\n drilldownaction.pageInfo = this.drillDownPageInfo;\r\n this.doADrillDownAction(drilldownaction);\r\n }\r\n\r\n private doJuniorAction($event: TablePageUserAction) {\r\n this.juniorColumns = this.originalColumns\r\n if (this.juniorColumns && this.juniorPageInfo) {\r\n if (this.enrichJuniorReportRequest) {\r\n\r\n this.isEditable = false;\r\n this.juniorReportRequest = this.backendService.buildReportRequest(this.juniorColumns,\r\n this.juniorPageInfo.labelsSection + '.' + this.juniorPageInfo.id,\r\n this.reportRequest.filterRequest, '', this.juniorPageInfo, 'LANDSCAPE');\r\n this.enrichJuniorReportRequest($event, this.juniorReportRequest);\r\n }\r\n this.activeLevel = this.activeLevel +1;\r\n this.addOrUpdateFilter(this.reportRequest.filterRequest, {\r\n key: 'iSecLevel',\r\n fieldName: 'iSecLevel',\r\n value: this.activeLevel\r\n });\r\n }\r\n }\r\n private doADrillDownAction($event: TablePageUserAction) {\r\n\r\n if (this.drillDownColumns && this.drillDownPageInfo) {\r\n this.drillDownRequestStack.push(cloneDeep(this.reportRequest));\r\n if (this.enrichDrillDownReportRequest) {\r\n this.isEditable = false;\r\n this.childReportRequest = this.backendService.buildReportRequest(this.drillDownColumns,\r\n this.drillDownPageInfo.labelsSection + '.' + this.drillDownPageInfo.id,\r\n this.reportRequest.filterRequest, '', this.drillDownPageInfo, 'LANDSCAPE');\r\n this.enrichDrillDownReportRequest($event, this.childReportRequest);\r\n\r\n }\r\n this.childReportRequest.filterRequest.pageSize = 500\r\n this.activeLevel = this.activeLevel +1;\r\n this.addOrUpdateFilter(this.reportRequest.filterRequest, {\r\n key: 'iSecLevel',\r\n fieldName: 'iSecLevel',\r\n value: this.activeLevel\r\n });\r\n if (this.isComparisonReport){\r\n this.addOrUpdateFilter(this.reportRequest.filterRequest, {\r\n id: 'iSecValue',\r\n key: 'iSecValue',\r\n fieldName: 'iSecValue',\r\n value: $event.item.isec_value\r\n });\r\n\r\n }\r\n if (this.activeLevel === 4) {\r\n this.drillDownColumns = this.drillDownColumns.filter(item => item.type !== 'button');\r\n }\r\n this.reloadData = true\r\n }\r\n }\r\n\r\n private addOrUpdateFilter(\r\n filterRequest: FilterRequest,\r\n options: {\r\n id?: string;\r\n key: string;\r\n fieldName: string;\r\n value: any;\r\n }\r\n ): void {\r\n const { id, key, fieldName, value } = options;\r\n\r\n const existingFilterIndex = filterRequest.filters.findIndex((filter: Filter) =>\r\n id ? filter.id === id : filter.key === key\r\n );\r\n\r\n const newFilter = new Filter({\r\n ...(id && { id }),\r\n key,\r\n fieldName,\r\n label: '',\r\n filterType: 'FILED_FILTER',\r\n operator: 'EQUALS',\r\n valueObject: value\r\n });\r\n\r\n if (existingFilterIndex !== -1) {\r\n filterRequest.filters[existingFilterIndex] = newFilter;\r\n } else {\r\n filterRequest.filters.push(newFilter);\r\n }\r\n }\r\n\r\n private doHyperLinkAction($event: TablePageUserAction) {\r\n if (this.enrichHyperLinkReportRequest) {\r\n this.juniorReportRequest = this.backendService.buildReportRequest(this.juniorColumns,\r\n this.juniorPageInfo.labelsSection + '.' + this.juniorPageInfo.id,\r\n this.dialogReportRequest.filterRequest, '', this.juniorPageInfo, 'LANDSCAPE');\r\n this.enrichHyperLinkReportRequest($event, this.juniorReportRequest);\r\n }\r\n }\r\n\r\n extractReport(reportType: any) {\r\n this.reportRequest.reportType = reportType;\r\n this.backendService.downloadReport(this.reportRequest, this.drillDownPageInfo.apiUri );\r\n\r\n }\r\n\r\n goUp() {\r\n Object.keys(this.reportForm.controls).forEach(controlName => {\r\n const control = this.reportForm.get(controlName);\r\n control?.clearValidators();\r\n control?.updateValueAndValidity();\r\n });\r\n this.isEditable = true;\r\n this.activeLevel = this.activeLevel - 1;\r\n if (this.activeLevel > 1 ) {\r\n this.isEditable = false;\r\n }\r\n this.doAction(this.x);\r\n this.reportRequest = this.drillDownRequestStack.pop();\r\n this.addOrUpdateFilter(this.reportRequest.filterRequest, {\r\n key: 'iSecLevel',\r\n fieldName: 'iSecLevel',\r\n value: this.activeLevel\r\n });\r\n this.reloadData = true;\r\n if (this.activeLevel !== 4) {\r\n this.drillDownColumns = [...this.originalColumns];\r\n }\r\n }\r\n\r\n\r\n drillDownEnabled() {\r\n return this.drillDownPageInfo && !this.hideDrillDownButton && !this.getIsEmptyList();\r\n }\r\n\r\n drillDownLabel() {\r\n return `${this.pageInfo.labelsSection}.drillDownLabel` ;\r\n }\r\n getIsEmptyList() {\r\n return this.backendService.isEmptyItems;\r\n }\r\n clear() {\r\n const currentUrl = this.router.url;\r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigate([currentUrl]);\r\n });\r\n }\r\n\r\n\r\n isFormEmpty(): boolean {\r\n if (!this.reportForm || !this.reportForm.value) {\r\n return true;\r\n }\r\n\r\n return Object.values(this.reportForm.value).every(value => {\r\n if (value === null || value === undefined || value === '') {\r\n return true;\r\n }\r\n return Array.isArray(value) && value.length === 0;\r\n\r\n });\r\n }\r\n\r\n shouldProcessEventItem(item: any): boolean {\r\n const groupByProp = this.pageInfo?.groupByProperty;\r\n const groupByValues = this.pageInfo?.groupByValue;\r\n\r\n if (!groupByProp || !groupByValues || !item[groupByProp]) {\r\n return true;\r\n }\r\n\r\n const value = item[groupByProp].toString();\r\n\r\n return !groupByValues.some(v => value.includes(v) && value.length >= v.length);\r\n }\r\n\r\n}\r\n","<div class=\"page-container\">\r\n\r\n <div class=\"row row-center-start mb-10px full-width\">\r\n <app-title-bar [pageTitle]=\"getTitle()\" [newAction]=\"false\"></app-title-bar>\r\n <mat-icon *ngIf=\"pageInfo?.hasHint\"\r\n [matTooltip]=\"pageInfo.labelsSection + '.hint' | translate\"\r\n matTooltipPosition=\"right\"\r\n color=\"primary\"\r\n class=\"help-icon\"\r\n matTooltipClass=\"custom-tooltip\">\r\n help_outline\r\n </mat-icon>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"isEditable\"\r\n [errors]=\"errors\"\r\n [item]=\"reportForm?.value || {}\"\r\n (formUpdated)=\"updateForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-49\">\r\n <div class=\"row row-center-start\">\r\n <button *ngIf=\"activeLevel === 1\" color=\"primary\" mat-flat-button (click)=\"doAction(x)\"\r\n [disabled]=\"!isValidForm()\" class=\"action-button\" id=\"activity-generate-btn\">\r\n {{ 'REPORTS.generate' | translate }}\r\n </button>\r\n <button mat-raised-button [matMenuTriggerFor]=\"menu\" [disabled]=\"getIsEmptyList()\"\r\n color=\"primary\" class=\"btn-none-background-primary action-button\" id=\"activity-extract-trigger\">\r\n {{ 'extract' | translate }}\r\n <mat-icon class=\"expand_more actionButton__expand\">expand_more</mat-icon>\r\n </button>\r\n <button mat-flat-button (click)=\"clear()\"\r\n [disabled]=\"isFormEmpty() || activeLevel > 1\"\r\n class=\"action-button\" id=\"activity-clear-btn\">\r\n {{ 'REPORTS.clear' | translate }}\r\n </button>\r\n <button *ngIf=\"activeLevel === 1 && drillDownEnabled()\" color=\"warn\" mat-flat-button\r\n (click)=\"drillDown()\" class=\"action-button\" id=\"activity-drilldown-btn\">\r\n {{ drillDownLabel() | translate }}\r\n </button>\r\n <button *ngIf=\"activeLevel > 1 && !(isComparisonReport && activeLevel == 2)\" color=\"warn\"\r\n mat-flat-button (click)=\"goUp()\" class=\"action-button\" id=\"activity-up-btn\">\r\n {{ 'REPORTS.up' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"column flex-49\"></div>\r\n </div>\r\n\r\n <!-- Base tables -->\r\n <ng-container *ngIf=\"activeLevel === 1\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"pageInfo\" [columns]=\"columnsDefinition\" [enforceRefresh]=\"reloadData\"\r\n id=\"parent\" [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 2\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\" id=\"child\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 3\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\" id=\"junior\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 4\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n\r\n<!-- Menu -->\r\n<mat-menu #menu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item *ngFor=\"let type of types\" (click)=\"extractReport(type)\" [attr.id]=\"'activity-extract-item-' + type\">\r\n {{ type }}\r\n </button>\r\n</mat-menu>\r\n","export class LineItem {\r\n itemType?: string | null;\r\n itemLine: string | null;\r\n description: string | null;\r\n unitPrice: number | null;\r\n discount: number | null;\r\n totalAmount: number | null;\r\n quantity: number | null;\r\n\r\n constructor(\r\n itemType: string | null,\r\n itemLine: string | null,\r\n description: string | null,\r\n unitPrice: number | null,\r\n quantity: number | null,\r\n discount: number | null,\r\n totalAmount: number | null\r\n ) {\r\n this.itemType = itemType;\r\n this.itemLine = itemLine;\r\n this.description = description;\r\n this.unitPrice = unitPrice;\r\n this.quantity = quantity;\r\n this.discount = discount;\r\n this.totalAmount = totalAmount;\r\n }\r\n}\r\n","export class ItemsTotal {\r\n subtotal: number;\r\n discount: number;\r\n grandTotal: number;\r\n\r\n\r\n constructor(subtotal: number, discount: number, grandTotal: number) {\r\n this.subtotal = subtotal;\r\n this.discount = discount;\r\n this.grandTotal = grandTotal;\r\n }\r\n}\r\n","import {Component, Inject, Input, OnInit} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from \"@angular/material/dialog\";\r\nimport {FormGroup, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {NgClass, NgIf} from \"@angular/common\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {MatSelectModule} from \"@angular/material/select\";\r\nimport {MatInputModule} from \"@angular/material/input\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport { BaseFormCanvasComponent } from '../base-form-canvas/base-form-canvas.component';\r\nimport {TitleBarComponent} from \"../title-bar/title-bar.component\";\r\nimport {FieldInfo, PageInfo} from \"../../base-model\";\r\nimport {BaseUtils} from \"../../utils/base-utils\";\r\nimport {MatButton} from \"@angular/material/button\";\r\n\r\n@Component({\r\n selector: 'lib-base-input-dialog',\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n NgClass,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatSelectModule,\r\n MatInputModule,\r\n BaseFormCanvasComponent,\r\n TranslateModule,\r\n NgIf,\r\n TranslateModule,\r\n TitleBarComponent,\r\n MatButton\r\n ],\r\n templateUrl: './base-input-dialog.component.html',\r\n styleUrl: './base-input-dialog.component.css'\r\n})\r\nexport class BaseInputDialogComponent extends BaseUtils implements OnInit {\r\n fieldsInfo: FieldInfo[];\r\n default: any;\r\n isLoaded: boolean = false;\r\n formGroup: FormGroup;\r\n\r\n constructor(public dialogRef: MatDialogRef<BaseInputDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n super()\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log('data' ,this.data);\r\n this.fieldsInfo = this.data.fieldsInfo;\r\n this.pageInfo = this.data.pageInfo;\r\n this.default = this.data.element;\r\n this.isLoaded = true;\r\n }\r\n captureForm($event: FormGroup) {\r\n this.formGroup = $event;\r\n }\r\n\r\n saveDisabled() {\r\n return !this.formGroup?.valid;\r\n }\r\n\r\n getTitle() {\r\n return this.pageInfo.labelsSection + '.pop_up_title';\r\n }\r\n\r\n doSave(save: string) {\r\n if (this.formGroup.valid) {\r\n let id = this.default?.id;\r\n this.default = this.formGroup.value;\r\n this.default.id = id;\r\n this.dialogRef.close(this.default);\r\n }\r\n }\r\n\r\n doCancel(cancel: string) {\r\n this.dialogRef.close(null);\r\n }\r\n}\r\n","<div class=\"container\">\r\n <div class=\"title-row\">\r\n <div class=\"full-column\">\r\n <app-title-bar [pageTitle]=\"getTitle()\"></app-title-bar>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"isLoaded\">\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fieldsInfo\"\r\n [editable]=\"true\"\r\n [item]=\"default\"\r\n (formUpdated)=\"captureForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"button-row\">\r\n <div class=\"half-column\"></div>\r\n <div class=\"half-column right-align\">\r\n <div class=\"button-group\">\r\n <ng-container>\r\n <button\r\n mat-stroked-button\r\n class=\"btn-none-background-primary\"\r\n type=\"button\"\r\n (click)=\"doCancel('cancel')\"\r\n id=\"base-input-cancel-btn\">\r\n Cancel\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container>\r\n <button\r\n [ngClass]=\"saveDisabled() ? 'btn-none-background-primary' : 'btn-background-primary'\"\r\n [disabled]=\"saveDisabled()\"\r\n mat-stroked-button\r\n type=\"button\"\r\n (click)=\"doSave('save')\"\r\n id=\"base-input-save-btn\">\r\n Save\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {MatFormField, MatLabel} from \"@angular/material/form-field\";\r\nimport {MatOption, MatSelect} from \"@angular/material/select\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {MatInput} from \"@angular/material/input\";\r\nimport {MatIconButton} from \"@angular/material/button\";\r\nimport {NgForOf} from \"@angular/common\";\r\nimport {TableColumn} from \"../../base-model\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\ntype SearchType = 'exact' | 'like';\r\ntype SortType = 'ASC' | 'DESC';\r\n@Component({\r\n selector: 'ag-search-bar',\r\n templateUrl: './search-bar.component.html',\r\n standalone: true,\r\n imports: [\r\n MatFormField,\r\n MatSelect,\r\n MatOption,\r\n FormsModule,\r\n MatIcon,\r\n MatInput,\r\n MatIconButton,\r\n NgForOf,\r\n TranslateModule\r\n ],\r\n styleUrls: ['./search-bar.component.scss']\r\n})\r\nexport class SearchBarComponent implements OnInit {\r\n @Input() columns: TableColumn<any>[];\r\n @Input() defaultSortKey: string = '';\r\n\r\n searchValue: string = '';\r\n searchType: SearchType = 'like';\r\n selectedSortKey: string = '';\r\n selectedSortType: SortType = 'ASC';\r\n @Output() searchTriggered = new EventEmitter<{\r\n searchValue: string;\r\n searchType: SearchType;\r\n sortKey: string;\r\n sortType: string;\r\n }>();\r\n\r\n onSearch() {\r\n this.selectedSortKey ||= this.defaultSortKey || this.columns[0]?.property;\r\n\r\n this.searchTriggered.emit({\r\n searchValue: this.searchValue,\r\n searchType: this.searchType,\r\n sortKey: this.selectedSortKey,\r\n sortType: this.selectedSortType\r\n });\r\n }\r\n\r\n labelKey(column: { label?: string; property: string }): string {\r\n return column.label || column.property;\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n getColumns() {\r\n return this.columns.filter(\r\n (column) => ['text', 'date', 'localDateTime'].includes(column.type)\r\n );\r\n }\r\n}\r\n","<div class=\"mainSearchBar\">\r\n <div class=\"search row align-start-center gap-16\">\r\n\r\n <mat-form-field appearance=\"outline\" class=\"search__field flex-50\">\r\n <input\r\n matInput\r\n class=\"search__input\"\r\n placeholder=\"Search...\"\r\n (keydown.enter)=\"onSearch()\"\r\n [(ngModel)]=\"searchValue\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\" class=\"search__field flex-15\">\r\n <mat-select\r\n class=\"search__toggle\"\r\n [(ngModel)]=\"searchType\"\r\n placeholder=\"Type\">\r\n <mat-option value=\"exact\">Exact</mat-option>\r\n <mat-option value=\"like\">Like</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\" class=\"search__field flex-15\">\r\n <mat-select\r\n class=\"search__toggle\"\r\n [(ngModel)]=\"selectedSortKey\"\r\n placeholder=\"Sort By\">\r\n <mat-option *ngFor=\"let col of getColumns()\" [value]=\"col.property\">\r\n {{ labelKey(col) | translate }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\" class=\"search__field flex-10\">\r\n <mat-select\r\n class=\"search__toggle\"\r\n [(ngModel)]=\"selectedSortType\"\r\n placeholder=\"Type\">\r\n <mat-option value=\"ASC\">ASC</mat-option>\r\n <mat-option value=\"DESC\">DESC</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <div class=\"search__button row align-center-center\">\r\n <div class=\"icon-design\" (click)=\"onSearch()\">\r\n <mat-icon class=\"icon-search\" color=\"primary\">search</mat-icon>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {MatButton, MatIconButton} from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport {NgIf, NgStyle} from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-snackbar-static',\r\n standalone: true,\r\n imports: [MatIcon, NgIf, TranslateModule, MatIconButton, MatButton, NgStyle],\r\n templateUrl: './snackbar-static.component.html',\r\n styleUrls: ['./snackbar-static.component.scss']\r\n})\r\nexport class SnackbarStaticComponent {\r\n @Input() messageKey = '';\r\n @Input() titleKey = '';\r\n @Input() params: Record<string, any> = {};\r\n @Input() paramsTitle: Record<string, any> = {};\r\n @Input() type: 'error' | 'success' | 'warning' | 'info' | 'help'\r\n @Output() actionBtn: EventEmitter<void> = new EventEmitter();\r\n @Input() width: string = 'auto';\r\n @Input() textBtn: string;\r\n submit() {\r\n this.actionBtn.emit()\r\n }\r\n}\r\n","<div class=\"snackbar snackbar-{{type}}\" [ngStyle]=\"{'width': width == 'auto' ? 'auto' : width}\">\r\n <div class=\"sub-snackbar\">\r\n <mat-icon *ngIf=\"type === 'error'\">error</mat-icon>\r\n <mat-icon *ngIf=\"type === 'success'\">check_box</mat-icon>\r\n <mat-icon *ngIf=\"type === 'warning'\">warning</mat-icon>\r\n <mat-icon *ngIf=\"type === 'info'\">info</mat-icon>\r\n <mat-icon *ngIf=\"type === 'help'\">help</mat-icon>\r\n\r\n <div class=\"text-content\">\r\n <div class=\"title\">{{ titleKey | translate : paramsTitle }}</div>\r\n <div class=\"subtitle\">{{ messageKey | translate: params }}</div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"action\" *ngIf=\"textBtn\">\r\n <button mat-stroked-button class=\"btn-none-background-primary action-btn\" (click)=\"submit()\" id=\"snackbar-action-btn\">\r\n {{ textBtn | translate}}\r\n </button>\r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output, inject, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { Subject, takeUntil, startWith } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-action-button',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n TranslateModule\r\n ],\r\n templateUrl: './action-button.component.html',\r\n styleUrl: './action-button.component.scss'\r\n})\r\nexport class ActionButtonComponent implements OnInit, OnDestroy {\r\n private readonly translateService = inject(TranslateService);\r\n private readonly destroy$ = new Subject<void>();\r\n\r\n @Input() buttonText: string = '';\r\n @Input() buttonTextKey?: string;\r\n @Input() buttonGradient: string = 'linear-gradient(90deg, #E4C9D0 0%, #8A1538 100%)';\r\n @Input() id?: string;\r\n @Output() buttonClick = new EventEmitter<void>();\r\n\r\n get isArabic(): boolean {\r\n const currentLang = this.translateService.currentLang\r\n || this.translateService.defaultLang\r\n || this.translateService.getBrowserLang()\r\n || 'en';\r\n return currentLang === 'ar';\r\n }\r\n\r\n ngOnInit(): void {\r\n this.translateService.onLangChange\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n onButtonClick(): void {\r\n this.buttonClick.emit();\r\n }\r\n}\r\n","<button\r\n class=\"action-button\"\r\n (click)=\"onButtonClick()\"\r\n [style.background]=\"buttonGradient\"\r\n [attr.id]=\"id || (buttonTextKey ? ('action-button-' + buttonTextKey) : 'action-button')\"\r\n type=\"button\">\r\n <span class=\"button-texts\">\r\n <span *ngIf=\"buttonTextKey\">{{ buttonTextKey | translate }}</span>\r\n <span *ngIf=\"!buttonTextKey\">{{ buttonText }}</span>\r\n </span>\r\n <mat-icon class=\"arrow-icon\" [class.arrow-rtl]=\"isArabic\">arrow_forward</mat-icon>\r\n</button>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ActionButtonComponent } from '../action-button/action-button.component';\r\n\r\nexport interface FeatureItem {\r\n text?: string;\r\n textKey?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-action-card',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n TranslateModule,\r\n ActionButtonComponent\r\n ],\r\n templateUrl: './action-card.component.html',\r\n styleUrl: './action-card.component.scss'\r\n})\r\nexport class ActionCardComponent {\r\n\r\n @Input() icon: string = '';\r\n @Input() iconSvg?: string;\r\n @Input() title: string = '';\r\n @Input() description: string = '';\r\n @Input() buttonText: string = '';\r\n @Input() buttonTextKey?: string;\r\n @Input() titleKey?: string;\r\n @Input() descriptionKey?: string;\r\n @Input() iconColor: string = '#8A1538';\r\n @Input() borderColor: string = '#d1d1d1';\r\n @Input() borderLeftColor?: string;\r\n @Input() borderRightColor?: string;\r\n @Input() borderBottomColor?: string;\r\n @Input() topBorderColor?: string;\r\n @Input() topBorderGradient?: string;\r\n @Input() buttonGradient: string = 'linear-gradient(90deg, #E4C9D0 0%, #8A1538 100%)';\r\n @Input() decorativeIconColor: string = 'rgba(209, 203, 216, 1)';\r\n @Input() featureCheckIconColor?: string;\r\n @Input() variant: 'default' | 'extended' = 'default';\r\n @Input() iconSize: number = 40;\r\n @Input() features?: FeatureItem[];\r\n @Input() featuresHeading?: string;\r\n @Input() featuresHeadingKey?: string;\r\n @Input() showDivider: boolean = false;\r\n @Input() topBorderHeight: number = 12;\r\n @Output() buttonClick = new EventEmitter<void>();\r\n\r\n onButtonClick(): void {\r\n this.buttonClick.emit();\r\n }\r\n}","<div class=\"action-card\" \r\n [class.extended-variant]=\"variant === 'extended'\"\r\n [style.--top-border-gradient]=\"topBorderGradient || buttonGradient\" \r\n [style.--top-border-height]=\"topBorderHeight + 'px'\"\r\n [style.border-right-color]=\"borderRightColor || borderColor\" \r\n [style.border-bottom-color]=\"borderBottomColor || borderColor\" \r\n [style.border-left-color]=\"borderLeftColor || borderColor\">\r\n <div class=\"card-content\" [class.extended-content]=\"variant === 'extended'\">\r\n <div class=\"main-content\" [class.extended-main]=\"variant === 'extended'\">\r\n <div class=\"header-section\" [class.extended-header]=\"variant === 'extended'\">\r\n <div class=\"header-top-wrapper\" *ngIf=\"variant === 'default'\">\r\n <div class=\"icon-wrapper\" \r\n [style.color]=\"iconColor\"\r\n [style.width.px]=\"iconSize\"\r\n [style.height.px]=\"iconSize\">\r\n <img *ngIf=\"iconSvg\" [src]=\"iconSvg\" alt=\"\" class=\"icon-svg\" [style.width.px]=\"iconSize\" [style.height.px]=\"iconSize\" />\r\n <mat-icon *ngIf=\"!iconSvg && icon\" [style.font-size.px]=\"iconSize\" [style.width.px]=\"iconSize\" [style.height.px]=\"iconSize\">{{ icon }}</mat-icon>\r\n </div>\r\n <div class=\"header-top\">\r\n <h2 class=\"card-title\">\r\n <span *ngIf=\"titleKey\">{{ titleKey | translate }}</span>\r\n <span *ngIf=\"!titleKey\">{{ title }}</span>\r\n </h2>\r\n </div>\r\n </div>\r\n <div class=\"icon-wrapper\" \r\n *ngIf=\"variant === 'extended'\"\r\n [style.color]=\"iconColor\"\r\n [style.width.px]=\"iconSize\"\r\n [style.height.px]=\"iconSize\">\r\n <img *ngIf=\"iconSvg\" [src]=\"iconSvg\" alt=\"\" class=\"icon-svg\" [style.width.px]=\"iconSize\" [style.height.px]=\"iconSize\" />\r\n <mat-icon *ngIf=\"!iconSvg && icon\" [style.font-size.px]=\"iconSize\" [style.width.px]=\"iconSize\" [style.height.px]=\"iconSize\">{{ icon }}</mat-icon>\r\n </div>\r\n <div class=\"title-description-wrapper\" *ngIf=\"variant === 'extended'\">\r\n <h2 class=\"card-title\">\r\n <span *ngIf=\"titleKey\">{{ titleKey | translate }}</span>\r\n <span *ngIf=\"!titleKey\">{{ title }}</span>\r\n </h2>\r\n <p class=\"card-description\">\r\n <span *ngIf=\"descriptionKey\">{{ descriptionKey | translate }}</span>\r\n <span *ngIf=\"!descriptionKey\">{{ description }}</span>\r\n </p>\r\n </div>\r\n <p class=\"card-description\" *ngIf=\"variant === 'default'\">\r\n <span *ngIf=\"descriptionKey\">{{ descriptionKey | translate }}</span>\r\n <span *ngIf=\"!descriptionKey\">{{ description }}</span>\r\n </p>\r\n </div>\r\n <lib-action-button\r\n [buttonText]=\"buttonText\"\r\n [buttonTextKey]=\"buttonTextKey\"\r\n [buttonGradient]=\"buttonGradient\"\r\n (buttonClick)=\"onButtonClick()\">\r\n </lib-action-button>\r\n <div class=\"features-divider\" *ngIf=\"showDivider && features && features.length > 0\"></div>\r\n \r\n <div class=\"features-section\" *ngIf=\"features && features.length > 0\">\r\n <h3 class=\"features-heading\" *ngIf=\"featuresHeading || featuresHeadingKey\">\r\n <span *ngIf=\"featuresHeadingKey\">{{ featuresHeadingKey | translate }}</span>\r\n <span *ngIf=\"!featuresHeadingKey\">{{ featuresHeading }}</span>\r\n </h3>\r\n <div class=\"feature-item\" *ngFor=\"let feature of features\">\r\n <mat-icon class=\"feature-check-icon\" [style.color]=\"featureCheckIconColor || iconColor\">check_circle</mat-icon>\r\n <span class=\"feature-text\">\r\n <span *ngIf=\"feature.textKey\">{{ feature.textKey | translate }}</span>\r\n <span *ngIf=\"!feature.textKey\">{{ feature.text }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"decorative-icon-wrapper\" *ngIf=\"variant === 'default' && (icon || iconSvg)\">\r\n <div class=\"decorative-icon\">\r\n <img *ngIf=\"iconSvg\" [src]=\"iconSvg\" alt=\"\" class=\"decorative-icon-svg\" [style.filter]=\"'opacity(0.3)'\" />\r\n <mat-icon *ngIf=\"!iconSvg && icon\" [style.color]=\"decorativeIconColor\">{{ icon }}</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';\r\nimport {AbstractControl, FormsModule} from \"@angular/forms\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {MatButtonModule} from \"@angular/material/button\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport {FieldInfo, EMPTY_PAGE_INFO, PageInfo} from \"../../base-model\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {LineItem} from \"../../base-model/line-item.model\";\r\nimport {ItemsTotal} from \"../../base-model/items-total.model\";\r\n@Component({\r\n selector: 'app-item-line-editor',\r\n templateUrl: './item-line-editor.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n BaseFormCanvasComponent,\r\n TranslateModule\r\n ],\r\n styleUrls: ['./item-line-editor.component.scss']\r\n})\r\n\r\n\r\nexport class ItemLineEditorComponent implements OnChanges {\r\n @Input() noDataFoundIcon: string;\r\n @Input() noDataFoundTitle: string;\r\n @Input() noDataFoundSubtitle: string;\r\n\r\n @Input() pageInfo: PageInfo;\r\n @Input() columnHeaderWidths: string[];\r\n @Input() title: string;\r\n @Input() subtitle: string;\r\n @Input() allowAdd: boolean = true;\r\n @Input() allowDelete: boolean = true;\r\n @Input() editable: boolean = true;\r\n @Input() currency: string;\r\n @Input() fields: FieldInfo[] = [];\r\n\r\n private baseFieldsSnapshot: FieldInfo[] | undefined;\r\n\r\n\r\n @Input() items: LineItem[] = [this.blankItem()];\r\n\r\n @Output() itemsChange = new EventEmitter<LineItem[]>();\r\n @Output() itemSaved = new EventEmitter<{ index: number, item: any }>();\r\n @Output() itemDeleted = new EventEmitter<{ index: number }>();\r\n @Output() totalsChange = new EventEmitter<ItemsTotal>();\r\n @Output() editStateChange = new EventEmitter<{ index: number, editing: boolean }>();\r\n formRefs: (FormGroup | undefined)[] = [];\r\n\r\n editing: boolean[] = [true];\r\n noDataFound: boolean = false\r\n\r\n get headerFields(): FieldInfo[] {\r\n return (this.fields || []).filter(f => f.visible && f.row === 1 && f.type !== 'spacer');\r\n }\r\n\r\n get hasInvalidEditingForm(): boolean {\r\n if (!this.formRefs || !this.editing) return false;\r\n for (let i = 0; i < this.formRefs.length; i++) {\r\n const frm = this.formRefs[i];\r\n if (this.editing[i] && frm && frm.invalid) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n get canAddNew(): boolean {\r\n return !this.hasInvalidEditingForm;\r\n }\r\n\r\n canSave(index: number): boolean {\r\n const frm = this.formRefs?.[index];\r\n if (!this.editing?.[index]) return true;\r\n return !!frm && frm.valid;\r\n }\r\n\r\n labelOf(field: FieldInfo): string {\r\n const configuredKey = field.label ? field.label : field.property;\r\n return configuredKey.startsWith(this.pageInfo.labelsSection)\r\n ? configuredKey\r\n : `${this.pageInfo.labelsSection}.${configuredKey}`;\r\n }\r\n\r\n private blankItem() {\r\n return { itemLine: '', description: '', unitPrice: 0, quantity: 1, discount: 0, totalAmount: 0 };\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['items'] && changes['items'].currentValue) {\r\n const len = (this.items || []).length;\r\n this.noDataFound = len <= 0;\r\n if (changes['items'].firstChange) {\r\n this.formRefs = new Array(len).fill(undefined);\r\n this.editing = len > 0 ? new Array(len).fill(false) : [true];\r\n } else {\r\n const oldLen = this.editing?.length || 0;\r\n\r\n\r\n if (!this.formRefs) this.formRefs = [];\r\n if (this.formRefs.length > len) {\r\n this.formRefs = this.formRefs.slice(0, len);\r\n } else {\r\n while (this.formRefs.length < len) this.formRefs.push(undefined);\r\n }\r\n\r\n\r\n if (!this.editing) this.editing = [];\r\n if (this.editing.length > len) {\r\n this.editing = this.editing.slice(0, len);\r\n } else {\r\n for (let i = this.editing.length; i < len; i++) {\r\n this.editing[i] = true;\r\n }\r\n }\r\n\r\n\r\n if (oldLen === 0 && len > 0 && this.editing[0] === undefined) {\r\n this.editing[0] = true;\r\n }\r\n }\r\n this.emitTotals();\r\n }\r\n if (changes['fields'] && changes['fields'].currentValue) {\r\n this.baseFieldsSnapshot = (this.fields || []).map(f => ({...f}));\r\n }\r\n }\r\n\r\n onFormUpdated(form: FormGroup, index: number) {\r\n const discountCtrl = form.get('discount');\r\n\r\n if (discountCtrl) {\r\n\r\n const existing = discountCtrl.validator ? [discountCtrl.validator] : [];\r\n discountCtrl.setValidators([\r\n ...existing,\r\n this.discountValidator(index)\r\n ]);\r\n\r\n discountCtrl.updateValueAndValidity({ emitEvent: false });\r\n }\r\n\r\n this.formRefs[index] = form;\r\n try {\r\n const emittedItems = this.items.map((it, i) => {\r\n if (i !== index) return it;\r\n const v = this.getCurrentValues(i) || it || {};\r\n const up = Number(v?.unitPrice || 0);\r\n const q = Number(v?.quantity || 0);\r\n const disc = Number(v?.discount || 0);\r\n const total = Math.max(0, up * q - disc);\r\n return { ...it, ...v, total };\r\n });\r\n this.itemsChange.emit(emittedItems);\r\n } catch (_e) {\r\n\r\n }\r\n this.emitTotals();\r\n }\r\n\r\n addNewItem() {\r\n this.items.push(this.blankItem());\r\n this.formRefs.push(undefined);\r\n this.editing.push(true);\r\n\r\n this.restoreFieldsFromSnapshot();\r\n this.itemsChange.emit([...this.items]);\r\n this.editStateChange.emit({ index: this.items.length - 1, editing: true });\r\n this.emitTotals();\r\n }\r\n\r\n saveRow(index: number) {\r\n\r\n const frm = this.formRefs?.[index];\r\n if (this.editing[index] && frm && frm.invalid) {\r\n\r\n Object.values(frm.controls).forEach(c => c.markAsTouched());\r\n return;\r\n }\r\n const v = this.getCurrentValues(index);\r\n if (!v) return;\r\n this.items[index] = { ...v, total: this.calcLineTotal(index) };\r\n\r\n this.editing[index] = false;\r\n\r\n this.setFieldsReadonly(true);\r\n this.itemsChange.emit([...this.items]);\r\n this.itemSaved.emit({ index, item: this.items[index] });\r\n this.editStateChange.emit({ index, editing: false });\r\n this.emitTotals();\r\n }\r\n\r\n deleteItem(index: number) {\r\n if (index < 0 || index >= this.items.length) return;\r\n this.items.splice(index, 1);\r\n this.formRefs.splice(index, 1);\r\n this.editing.splice(index, 1);\r\n\r\n this.itemsChange.emit([...this.items]);\r\n this.itemDeleted.emit({ index });\r\n this.emitTotals();\r\n }\r\n\r\n clearAll() {\r\n this.items = [this.blankItem()];\r\n this.formRefs = [undefined];\r\n this.editing = [true];\r\n this.itemsChange.emit([...this.items]);\r\n this.emitTotals();\r\n }\r\n\r\n getCurrentValues(index: number) {\r\n const isEditing = this.editing[index];\r\n const frm = this.formRefs[index];\r\n\r\n const base = this.items[index] || {};\r\n const src = (isEditing && frm) ? { ...base, ...frm.value } : { ...base };\r\n if (!src) return null;\r\n const val: any = { ...src };\r\n val.unitPrice = val.unitPrice === null || val.unitPrice === '' ? null : Number(val.unitPrice);\r\n val.quantity = val.quantity === null || val.quantity === '' ? null : Number(val.quantity);\r\n val.discount = val.discount === null || val.discount === '' ? null : Number(val.discount);\r\n return val;\r\n }\r\n\r\n calcLineTotal(index: number): number {\r\n const val = this.getCurrentValues(index);\r\n if (!val) return Number(this.items[index]?.totalAmount || 0);\r\n return Math.max(0, (val.unitPrice || 0) * (val.quantity || 0) - (val.discount || 0));\r\n }\r\n\r\n get subtotal(): number {\r\n return this.items.reduce((s, _it, i) => {\r\n const v = this.getCurrentValues(i);\r\n const up = Number(v?.unitPrice || 0);\r\n const q = Number(v?.quantity || 0);\r\n return s + (up * q);\r\n }, 0);\r\n }\r\n\r\n get discountTotal(): number {\r\n return this.items.reduce((s, _it, i) => {\r\n const v = this.getCurrentValues(i);\r\n return s + Number(v?.discount || 0);\r\n }, 0);\r\n }\r\n\r\n get grandTotal(): number {\r\n return this.items.reduce((s, _it, i) => s + this.calcLineTotal(i), 0);\r\n }\r\n\r\n trackByIndex(index: number, _item: any) {\r\n return index;\r\n }\r\n\r\n editRow(index: number) {\r\n this.editing[index] = true;\r\n this.restoreFieldsFromSnapshot();\r\n this.editStateChange.emit({ index, editing: true });\r\n }\r\n\r\n private emitTotals() {\r\n this.totalsChange.emit({\r\n subtotal: this.subtotal,\r\n discount: this.discountTotal,\r\n grandTotal: this.grandTotal\r\n });\r\n }\r\n\r\n private setFieldsReadonly(state: boolean) {\r\n this.fields = (this.fields || []).map(f => ({ ...f, readonly: state }));\r\n }\r\n\r\n private restoreFieldsFromSnapshot() {\r\n if (this.baseFieldsSnapshot && this.baseFieldsSnapshot.length) {\r\n this.fields = this.baseFieldsSnapshot.map(f => ({...f}));\r\n } else {\r\n this.setFieldsReadonly(false);\r\n }\r\n }\r\n\r\n get gridTemplate() {\r\n return this.columnHeaderWidths.join(' ');\r\n }\r\n\r\n private discountValidator(index: number) {\r\n return (control: AbstractControl) => {\r\n const val = this.getCurrentValues(index);\r\n if (!val) return null;\r\n\r\n const totalBeforeDiscount = (val.unitPrice ?? 0) * (val.quantity ?? 0);\r\n const discount = val.discount ?? null;\r\n\r\n if (discount != null && discount > totalBeforeDiscount) {\r\n return { discountTooHigh: true };\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n}\r\n","<div class=\"item-line-editor\">\r\n\r\n <h3 class=\"title\">{{ title | translate }}</h3>\r\n <p class=\"subtitle\">{{ subtitle | translate }}</p>\r\n\r\n <div class=\"table-header\" [ngStyle]=\"{ 'grid-template-columns': gridTemplate }\">\r\n <ng-container *ngFor=\"let f of headerFields; let idx = index\">\r\n <div class=\"col\">\r\n {{ labelOf(f) | translate }}\r\n <span *ngIf=\"f.required\" class=\"required-asterisk\"> * </span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n @if (!noDataFound) {\r\n <div class=\"table-body\" *ngFor=\"let it of items; let i = index; trackBy: trackByIndex\">\r\n\r\n <div class=\"table-row\">\r\n\r\n <div class=\"row-inputs\">\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editing[i]\"\r\n [emitOnValueChanges]=\"true\"\r\n [item]=\"it\"\r\n [currency]=\"currency\"\r\n (formUpdated)=\"onFormUpdated($event, i)\">\r\n </app-base-form-canvas>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"row-actions\">\r\n\r\n <button *ngIf=\"editing[i]\" mat-stroked-button class=\"btn-none-background-primary save-btn\" (click)=\"saveRow(i)\"\r\n [disabled]=\"!canSave(i)\">\r\n <div class=\"button-text\">\r\n <mat-icon>check</mat-icon>\r\n <span>{{ 'item-line.save' | translate }}</span>\r\n </div>\r\n </button>\r\n\r\n <button *ngIf=\"!editing[i] && editable\" mat-stroked-button class=\"btn-none-background-primary edit-btn\"\r\n (click)=\"editRow(i)\">\r\n <div class=\"button-text\">\r\n <mat-icon>edit</mat-icon>\r\n <span>{{ 'item-line.edit' | translate }}</span>\r\n </div>\r\n </button>\r\n\r\n <button *ngIf=\"allowDelete && editable\" mat-stroked-button class=\"btn-none-background-primary delete-btn\"\r\n (click)=\"deleteItem(i)\" type=\"button\">\r\n <div class=\"button-text\">\r\n <mat-icon>delete</mat-icon>\r\n <span>{{ 'item-line.delete' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n @if (noDataFound) {\r\n <div class=\"dataNotFound flex-column\">\r\n <mat-icon class=\"dataNotFound__icon\">{{ noDataFoundIcon }}</mat-icon>\r\n <span class=\"dataNotFound__title\">{{ noDataFoundTitle | translate }}</span>\r\n <span class=\"dataNotFound__subtitle\">{{ noDataFoundSubtitle | translate }}</span>\r\n </div>\r\n\r\n }\r\n <div class=\"add-item\" *ngIf=\"allowAdd && editable\">\r\n <div class=\"divider\" style=\"border-top: 1px solid var(--primary-color-3nd)\"></div>\r\n <button mat-stroked-button color=\"primary\" class=\"btn-none-background-primary\" (click)=\"addNewItem()\"\r\n [disabled]=\"!canAddNew\">\r\n <div class=\"button-text\">\r\n <mat-icon>add</mat-icon>\r\n <span> {{ 'item-line.addNewItem' | translate }}</span>\r\n </div>\r\n </button>\r\n\r\n </div>\r\n\r\n @if (!noDataFound) {\r\n <div class=\"totals-box\">\r\n\r\n <div class=\"total-row\">\r\n <span class=\"label\">{{ 'item-line.discount' | translate }}</span>\r\n <span class=\"value red\">{{ discountTotal | currency:currency }}</span>\r\n </div>\r\n\r\n <div class=\"total-row\">\r\n <span class=\"label\">{{ 'item-line.amount' | translate }}</span>\r\n <span class=\"value\">{{ subtotal | currency:currency }}</span>\r\n </div>\r\n\r\n <div class=\"divider\"></div>\r\n\r\n <div class=\"total-row grand\">\r\n <span class=\"label\">{{ 'item-line.grandTotal' | translate }}</span>\r\n <span class=\"value strong green\">{{ grandTotal | currency:currency }}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n</div>\r\n","/*\r\n * Public API Surface of invoiceq-lib\r\n */\r\n\r\nexport * from './lib/components/action-confirmation/action-confirmation.component'\r\nexport * from './lib/components/base-table/base-table.component'\r\nexport * from './lib/components/audit-log-list/audit-log.component'\r\nexport * from './lib/components/editable-base-table/editable-base-table.component'\r\nexport * from './lib/components/title-bar/title-bar.component'\r\nexport * from './lib/components/shared-list/shared-list.component'\r\nexport * from './lib/components/base-form-canvas/base-form-canvas.component'\r\nexport * from './lib/components/section-form-canvas/section-form-canvas.component'\r\nexport * from './lib/components/base-form/base-form.component'\r\nexport * from './lib/components/audit-log-details-dialog/audit-log-details-dialog.component'\r\nexport * from './lib/components/report-form/report-form.component'\r\nexport * from './lib/components/activity-report-form/activity-report-form.component'\r\nexport * from './lib/components/report-details-dialog/report-details-dialog.component'\r\nexport * from './lib/base-model';\r\nexport * from './lib/base-model/line-item.model';\r\nexport * from './lib/base-model/items-total.model';\r\nexport * from './lib/services';\r\nexport * from './lib/validators';\r\nexport * from './lib/components/base-input-dialog/base-input-dialog.component'\r\nexport * from './lib/components/search-bar/search-bar.component'\r\nexport * from './lib/components/snackbar-static/snackbar-static.component'\r\nexport * from './lib/components/shared/action-card/action-card.component'\r\nexport * from './lib/components/shared/action-button/action-button.component'\r\nexport * from './lib/components/action-comment/action-comment.component'\r\nexport * from './lib/components/item-line-editor/item-line-editor.component'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i4","i2.TopPanel","i5","i1.BackendService","i3.BackendService","i7","MatOption","i6.BackendService","MatFormField","moment","i8","i9","MatLabel","i5.BackendService","i6","NON_REPORT_COLUMNS","i2.BackendService"],"mappings":"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AI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpG,YAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpG,YAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpG,YAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpG,YAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpG,YAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpG,YAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,E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"}
1
+ {"version":3,"file":"unifylib-ui-lib.mjs","sources":["../../../../projects/invoiceq/ui-lib/src/lib/components/action-confirmation/action-confirmation.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/action-confirmation/action-confirmation.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/action-comment/action-comment.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/action-comment/action-comment.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/button-actions/button-actions.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/button-actions/button-actions.component.html","../../../../projects/invoiceq/ui-lib/src/lib/base-model/button-action-settings.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/table-column.interface.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/field-info.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/page-info.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/report-request.model.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/filter-request.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/filter.model.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/lookupItem.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/snack-message.model.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/table-page-user-action.interface.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/do-action-request.ts","../../../../projects/invoiceq/ui-lib/src/lib/utils/base-utils.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/response-envelop.model.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/title-bar/title-bar.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/title-bar/title-bar.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/paginator/paginator.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/paginator/paginator.component.html","../../../../projects/invoiceq/ui-lib/src/lib/validators/match-list.validator.ts","../../../../projects/invoiceq/ui-lib/src/lib/validators/multi-email-validator.ts","../../../../projects/invoiceq/ui-lib/src/lib/validators/date-range-validator.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/column-def.model.ts","../../../../projects/invoiceq/ui-lib/src/lib/services/top-panel.ts","../../../../projects/invoiceq/ui-lib/src/lib/services/backend-service.ts","../../../../projects/invoiceq/ui-lib/src/lib/services/trigger-form.service.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/multi-auto-complete/multi-auto-complete.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/multi-auto-complete/multi-auto-complete.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/auto-complete/auto-complete.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/auto-complete/auto-complete.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/base-form-canvas/base-form-canvas.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/base-form-canvas/base-form-canvas.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/advanced-filter/field-filter/field-filter.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/advanced-filter/field-filter/field-filter.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/advanced-filter/filter-builder/filter-builder.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/advanced-filter/filter-builder/filter-builder.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/base-table/base-table.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/base-table/base-table.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/audit-log-list/audit-log.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/audit-log-list/audit-log.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/shared/attachment-uploader/attachment-uploader.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/shared/attachment-uploader/attachment-uploader.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/equation-builder/equation-builder.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/equation-builder/equation-builder.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/editable-base-table/editable-base-table.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/editable-base-table/editable-base-table.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/shared-list/shared-list.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/shared-list/shared-list.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/base-form/base-form.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/base-form/base-form.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/section-form-canvas/section-form-canvas.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/section-form-canvas/section-form-canvas.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/report-details-dialog/report-details-dialog.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/report-details-dialog/report-details-dialog.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/report-form/report-form.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/report-form/report-form.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/activity-report-form/activity-report-form.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/activity-report-form/activity-report-form.component.html","../../../../projects/invoiceq/ui-lib/src/lib/base-model/line-item.model.ts","../../../../projects/invoiceq/ui-lib/src/lib/base-model/items-total.model.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/base-input-dialog/base-input-dialog.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/base-input-dialog/base-input-dialog.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/search-bar/search-bar.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/search-bar/search-bar.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/snackbar-static/snackbar-static.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/snackbar-static/snackbar-static.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/shared/action-button/action-button.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/shared/action-button/action-button.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/shared/action-card/action-card.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/shared/action-card/action-card.component.html","../../../../projects/invoiceq/ui-lib/src/lib/components/item-line-editor/item-line-editor.component.ts","../../../../projects/invoiceq/ui-lib/src/lib/components/item-line-editor/item-line-editor.component.html","../../../../projects/invoiceq/ui-lib/src/public-api.ts","../../../../projects/invoiceq/ui-lib/src/unifylib-ui-lib.ts"],"sourcesContent":["import {Component, HostBinding, HostListener, Inject, Input, OnInit} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {\r\n MAT_DIALOG_DATA,\r\n MatDialogActions,\r\n MatDialogContent,\r\n MatDialogRef,\r\n MatDialogTitle\r\n} from \"@angular/material/dialog\";\r\nimport {MatFormField} from \"@angular/material/form-field\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {MatButton, MatIconButton} from \"@angular/material/button\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\n\r\nexport interface IconConfig {\r\n name: string;\r\n color: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-action-confirmation',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n MatButton,\r\n MatIconButton,\r\n MatIcon\r\n ],\r\n templateUrl: './action-confirmation.component.html',\r\n styleUrl: './action-confirmation.component.css'\r\n})\r\nexport class ActionConfirmationComponent implements OnInit {\r\n @Input() icon: IconConfig = { name: 'check_circle', color: '#0d7d6a' };\r\n acceptActionLabel : string =''\r\n rejectActionLabel : string =''\r\n subMsg : string = '';\r\n titleMsg : string = '';\r\n listTitle: string = '';\r\n listMessages: string[] = [];\r\n extraWarningMsg: string = '';\r\n currentDirection: 'ltr' | 'rtl' = 'ltr';\r\n constructor(public dialogRef: MatDialogRef<ActionConfirmationComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n dialogRef.disableClose = true;\r\n }\r\n @HostListener('window:keyup.esc') onKeyUp() {\r\n this.dialogRef.close();\r\n }\r\n ngOnInit(): void {\r\n this.acceptActionLabel = this.data.acceptActionLabel || 'accept' ;\r\n this.rejectActionLabel = this.data.rejectActionLabel || 'reject';\r\n this.subMsg = this.data.warningMsg || '';\r\n this.titleMsg = this.data.confirmMsg || '';\r\n this.listTitle = this.data.listTitle || '';\r\n this.listMessages = this.data.listMessages || [];\r\n this.extraWarningMsg = this.data.extraWarningMsg || '';\r\n this.currentDirection = this.data.direction;\r\n this.icon = this.data.icon || { name: 'check_circle', color: '#0d7d6a' };\r\n }\r\n\r\n\r\n commentAndClose() {\r\n this.dialogRef.close('accept');\r\n\r\n return \"\";\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","<div class=\"confirm-dialog\" [dir]=\"currentDirection\">\r\n\r\n <div class=\"header-section\">\r\n <div class=\"header-row\">\r\n <div class=\"icon-container\">\r\n <mat-icon class=\"check-icon\" [style.color]=\"icon.color\">{{ icon.name }}</mat-icon>\r\n </div>\r\n\r\n </div>\r\n <div class=\"title-container\">\r\n <h2 class=\"title\">{{ titleMsg | translate }}</h2>\r\n </div>\r\n </div>\r\n\r\n <div class=\"message-container\">\r\n <p class=\"message\" *ngIf=\"subMsg\">\r\n {{ subMsg | translate }}\r\n </p>\r\n\r\n <div class=\"list-section\" *ngIf=\"listTitle || listMessages.length > 0\">\r\n <p class=\"list-title\" *ngIf=\"listTitle\"><strong>{{ listTitle | translate }}</strong></p>\r\n <ul class=\"list-messages\" *ngIf=\"listMessages.length > 0\">\r\n <li *ngFor=\"let message of listMessages\" class=\"list-item\">\r\n {{ message | translate }}\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <p class=\"extra-warning\" *ngIf=\"extraWarningMsg\">\r\n {{ extraWarningMsg | translate }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <button\r\n mat-stroked-button\r\n class=\"btn-cancel\"\r\n (click)=\"cancel()\"\r\n id=\"rejectActionLabel\">\r\n {{ rejectActionLabel | translate }}\r\n </button>\r\n\r\n <button\r\n mat-flat-button\r\n class=\"btn-confirm\"\r\n (click)=\"commentAndClose()\"\r\n id=\"acceptActionLabel\">\r\n {{ acceptActionLabel | translate }}\r\n </button>\r\n </div>\r\n\r\n</div>\r\n","import {Component, HostListener, Inject, Input, OnInit} from '@angular/core';\r\nimport {\r\n MAT_DIALOG_DATA,\r\n MatDialogActions,\r\n MatDialogContent,\r\n MatDialogRef,\r\n MatDialogTitle\r\n} from \"@angular/material/dialog\";\r\nimport {MatFormField} from \"@angular/material/form-field\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {CdkTextareaAutosize} from \"@angular/cdk/text-field\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {MatButton} from \"@angular/material/button\";\r\nimport {MatInput} from \"@angular/material/input\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\n\r\n@Component({\r\n selector: 'app-action-comment',\r\n standalone: true,\r\n imports: [\r\n MatDialogTitle,\r\n MatFormField,\r\n MatDialogContent,\r\n FormsModule,\r\n CdkTextareaAutosize,\r\n TranslateModule,\r\n MatDialogActions,\r\n MatButton,\r\n MatInput,\r\n MatIcon\r\n ],\r\n templateUrl: './action-comment.component.html',\r\n styleUrl: './action-comment.component.css'\r\n})\r\nexport class ActionCommentComponent implements OnInit {\r\n itemName: string = '';\r\n titleKey: string = '';\r\n subtitleKey: string = '';\r\n reasonLabelKey: string = '';\r\n placeholderKey: string = '';\r\n warningKey: string = '';\r\n cancelKey: string = '';\r\n actionKey: string = '';\r\n currentDirection: 'ltr' | 'rtl' = 'ltr';\r\n\r\n actionLabel : string =''\r\n isTermination : boolean=false;\r\n comment: string = '';\r\n external: boolean = false;\r\n signingRequired: boolean = false;\r\n tokenReference: string = \"\";\r\n otp: string = \"\";\r\n isSubmitted: boolean = false;\r\n warningMsg = false;\r\n\r\n constructor(public dialogRef: MatDialogRef<ActionCommentComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n dialogRef.disableClose = true;\r\n }\r\n @HostListener('window:keyup.esc') onKeyUp() {\r\n this.dialogRef.close();\r\n }\r\n ngOnInit(): void {\r\n this.actionLabel = this.data.label;\r\n this.isTermination = this.data.isTermination ;\r\n this.signingRequired = this.data.signingRequired;\r\n this.tokenReference = this.data.tokenReference;\r\n this.warningMsg = this.data.warningMsg || false;\r\n\r\n this.itemName = this.data.deviceName;\r\n this.titleKey = this.data.titleKey;\r\n this.subtitleKey = this.data.subtitleKey;\r\n this.reasonLabelKey = this.data.reasonLabelKey;\r\n this.placeholderKey = this.data.placeholderKey;\r\n this.warningKey = this.data.warningKey;\r\n this.cancelKey = this.data.cancelKey;\r\n this.actionKey = this.data.actionKey;\r\n this.currentDirection = this.data.direction;\r\n }\r\n\r\n\r\n commentAndClose() {\r\n this.isSubmitted = true;\r\n if (this.signingRequired && !this.otp) return false;\r\n let obj:{[key: string]:any} = {\r\n comment: this.comment,\r\n shareExternal : this.external\r\n };\r\n //\r\n if(this.signingRequired) obj[\"token\"] = this.otp;\r\n if(this.signingRequired) obj[\"tokenReference\"] = this.tokenReference;\r\n //\r\n this.dialogRef.close(obj);\r\n\r\n return \"\";\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","<div class=\"dialog-container\" [dir]=\"currentDirection\">\r\n\r\n <h2 mat-dialog-title class=\"dialog-title\" >\r\n {{ titleKey | translate}} {{itemName}}\r\n </h2>\r\n\r\n <p class=\"dialog-subtitle\">\r\n {{ subtitleKey | translate }}\r\n </p>\r\n\r\n\r\n <p class=\"textarea-label\">\r\n {{ reasonLabelKey | translate }}\r\n </p>\r\n\r\n\r\n <mat-dialog-content class=\"content-section\">\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <textarea\r\n matInput\r\n [(ngModel)]=\"comment\"\r\n placeholder=\"{{ placeholderKey | translate }}\"\r\n cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"4\"\r\n cdkAutosizeMaxRows=\"5\"\r\n ></textarea>\r\n </mat-form-field>\r\n\r\n\r\n <div class=\"info-box\">\r\n <mat-icon>info</mat-icon>\r\n <span class=\"info-text\">\r\n {{ warningKey | translate }}\r\n </span>\r\n </div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions align=\"end\" class=\"footer-actions\">\r\n <button mat-stroked-button class=\"btn-none-background-primary cancel-btn\" (click)=\"cancel()\">\r\n {{ cancelKey | translate }}\r\n </button>\r\n\r\n <button mat-flat-button class=\"btn-background-primary warn-btn\" (click)=\"commentAndClose()\" [disabled]=\"!comment\">\r\n {{ actionKey | translate }}\r\n </button>\r\n </mat-dialog-actions>\r\n</div>\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {ButtonActionSettings} from \"../../base-model/button-action-settings\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {ActionCommentComponent} from \"../action-comment/action-comment.component\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\r\nimport {MatIconButton} from \"@angular/material/button\";\r\nimport {NgClass, NgForOf, NgIf} from \"@angular/common\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\n\r\n@Component({\r\n selector: 'app-button-actions',\r\n standalone: true,\r\n imports: [\r\n MatIcon,\r\n MatMenuTrigger,\r\n MatIconButton,\r\n MatMenu,\r\n MatMenuItem,\r\n NgIf,\r\n NgClass,\r\n NgForOf,\r\n TranslateModule\r\n ],\r\n templateUrl: './button-actions.component.html',\r\n styleUrl: './button-actions.component.scss'\r\n})\r\nexport class ButtonActionsComponent {\r\n constructor(public dialog: MatDialog) { }\r\n\r\n @Input()\r\n actions: ButtonActionSettings[] =[];\r\n @Input()\r\n disabled?: boolean = false;\r\n\r\n @Output()\r\n clickedButton: EventEmitter<any> = new EventEmitter();\r\n\r\n @Input()\r\n buttonsAction: boolean = false;\r\n\r\n @Input()\r\n listAction: ButtonActionSettings[] = [];\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n getClickedAction(action: ButtonActionSettings) {\r\n if (action.showCommentDialog === true) {\r\n const dialogRef = this.dialog.open(ActionCommentComponent, {\r\n data: {label: action.label, isTermination: action.commentRequired, external: false,\r\n warningMsg: false},\r\n width: '600px',\r\n height: 'auto',\r\n direction: 'ltr' // this.authService.dir === 'rtl' ? 'rtl': 'ltr'\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n action.comment = result.comment;\r\n action.shareExternal = result.shareExternal;\r\n this.clickedButton.emit(action);\r\n }\r\n });\r\n\r\n } else {\r\n this.clickedButton.emit(action);\r\n }\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"buttonsAction; else list_Action\">\r\n <div class=\"action-buttons-container\" *ngIf=\"(actions?.length ? actions : listAction)?.length > 0\">\r\n <button\r\n *ngFor=\"let action of (actions?.length ? actions : listAction); let i = index\"\r\n class=\"action-button\"\r\n (click)=\"getClickedAction(action)\"\r\n [disabled]=\"disabled\"\r\n [attr.id]=\"action.id || ('actions-btn-' + action.label)\"\r\n [title]=\"action.label | translate\"\r\n >\r\n <mat-icon *ngIf=\"action.icon?.length\" class=\"action-icon\">{{ action.icon }}</mat-icon>\r\n </button>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #list_Action>\r\n <div *ngIf=\"listAction?.length > 0\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\" style=\"justify-content: center; color: grey\" id=\"actions-menu-trigger\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item *ngFor=\"let list_Action of listAction\" (click)=\"getClickedAction(list_Action)\" [attr.id]=\"list_Action.id || ('actions-menu-item-' + list_Action.label)\">\r\n <span>{{ list_Action.label | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n","\r\nexport class ButtonActionSettings {\r\n constructor(buttonActionSettings: ButtonActionSettings) {\r\n this.key = buttonActionSettings.key;\r\n this.id = buttonActionSettings.id;\r\n this.action = buttonActionSettings.action;\r\n this.label = buttonActionSettings.label;\r\n this.color = buttonActionSettings.color;\r\n this.isPrimary = buttonActionSettings.isPrimary;\r\n this.icon = buttonActionSettings.icon;\r\n this.showCommentDialog = buttonActionSettings.showCommentDialog;\r\n this.comment = buttonActionSettings.comment;\r\n this.shareExternal = buttonActionSettings.shareExternal;\r\n this.commentRequired = buttonActionSettings.commentRequired || false;\r\n }\r\n\r\n label: string;\r\n id: string;\r\n action?: any;\r\n key: number;\r\n isPrimary?: boolean;\r\n icon?: any;\r\n showCommentDialog?:boolean;\r\n comment?: any;\r\n shareExternal?: boolean;\r\n selectedId?: number;\r\n commentRequired? : boolean;\r\n color?: string;\r\n}\r\n","export interface TableColumn<T> {\r\n property: string;\r\n type: 'text' | 'croppedText' | 'image' | 'netAmount' | 'workflowStatus' | 'onOff' | 'progress' | 'checkbox' | 'button' | 'date' | 'number'| 'icon' |'bigdecimal'|'builder'|'localDateTime'|'report-sequence' | 'listAction' | 'info' | 'stateType' | 'hyper-text'|'year' | 'reportType' | 'status'\r\n viewType?:string;\r\n enableSorting: boolean;\r\n visible?: boolean;\r\n cssClasses?: string[];\r\n reportVisible?:boolean | true;\r\n reportProperty?: string;\r\n reportType?: string;\r\n showSum?:boolean;\r\n showCount?:boolean;\r\n translate?: boolean;\r\n width?:number;\r\n label?:string;\r\n reportwidth?:number;\r\n langDrivenName?:boolean;\r\n additionalProperty?: string;\r\n currency?: string;\r\n orderByProperty?: string;\r\n advancedFilter?: boolean;\r\n enableQuickFilter?: boolean;\r\n format?:string;\r\n group?:string;\r\n arraySubProperty?: string;\r\n digitInfo?:string;\r\n}\r\n\r\nexport const FRONT_END_COLUMN_TYPES = ['listAction', 'button','hyper-text'];\r\n","import {ValidatorFn} from \"@angular/forms\";\r\nimport {Filter} from \"./filter.model\";\r\n\r\nexport class FieldInfo {\r\n property: string = \"\";\r\n targetProperty?: string = \"\";\r\n row: number;\r\n required: boolean = false;\r\n type: 'text' | 'amount' |'color-picker' | 'currency' | 'date' | 'number' | 'sequence' | 'list' |'lookup'| 'multi-select' | 'password'| 'rich-text'|'radio-button'| 'phone-number'| 'iban-text'|'checkbox' |'textarea' |'button'|'spacer' | 'attachment'| 'section-title'| 'chip-list' |'time' | 'divider' | 'hyper-text' |'stateType'|'status' | 'year' | 'equation-builder' = 'text';\r\n textFormat?: 'json';\r\n readonly?: boolean = false;\r\n viewonly?: boolean ;\r\n label?: string = '';\r\n currency?: string;\r\n lookupApiPath?: string;\r\n multi?:boolean;\r\n supportedTypes?:string;\r\n cascadedBy?: string;\r\n cascadedByProperty?: string;\r\n pathParams?: string;\r\n listOptions?: any[];\r\n operators?: any[];\r\n fieldsApi?: string;\r\n reportFilter?:string;\r\n updateOnly?: boolean;\r\n fieldSize ?: number ;\r\n includeAllOption?: boolean;\r\n defaultListOption?: any;\r\n acceptNewItem?: boolean;\r\n translate?: boolean = false;\r\n validators?: ValidatorFn[];\r\n placeholder?: any;\r\n visible?: boolean = true;\r\n pattern?: string;\r\n disabled?: boolean;\r\n advancedFilter?: boolean;\r\n filterOperator?: 'GREATER_THAN_EQUAL'|'GREATER_THAN'| 'LESS_THAN'|'LESS_THAN_EQUAL'| 'EQUALS'| 'LIKE'| 'NOT_EQ'| 'IN' ;\r\n workflowManaged?: boolean;\r\n workflowCascadingField?: string;\r\n attachmentType?: string;\r\n lookupFilterList?: Filter[];\r\n buttonType?: string;\r\n hideFiles?: boolean;\r\n behavioralName?: string;\r\n flattenBySubAttribute?: string;\r\n defaultValue?:any;\r\n extraLookupsColumns?: string[];\r\n displayColumn?: string;\r\n searchAttribute?:string;\r\n validationMessages?: any;\r\n hideLabel?:boolean;\r\n searchOperator?:\"GREATER_THAN_EQUAL\" | \"GREATER_THAN\" | \"LESS_THAN\" | \"LESS_THAN_EQUAL\" | \"EQUALS\" | \"LIKE\" | \"NOT_EQ\" | \"IN\" | \"NOT_NULL\";\r\n showSearchIcon?: boolean;\r\n\r\n\r\n constructor(fieldInfo: FieldInfo) {\r\n this.property = fieldInfo.property;\r\n this.targetProperty = fieldInfo.targetProperty;\r\n this.required = fieldInfo.required;\r\n this.type = fieldInfo.type;\r\n this.readonly = fieldInfo.readonly;\r\n this.label = fieldInfo.label;\r\n this.fieldSize = fieldInfo.fieldSize;\r\n this.lookupApiPath = fieldInfo.lookupApiPath ? fieldInfo.lookupApiPath : fieldInfo.property;\r\n this.row = fieldInfo.row;\r\n this.supportedTypes = fieldInfo.supportedTypes;\r\n this.listOptions = fieldInfo.listOptions;\r\n this.pathParams = fieldInfo.pathParams;\r\n this.viewonly = fieldInfo.viewonly;\r\n this.multi = fieldInfo.multi;\r\n this.updateOnly = fieldInfo.updateOnly;\r\n this.includeAllOption = fieldInfo.includeAllOption;\r\n this.defaultListOption = fieldInfo.defaultListOption;\r\n this.acceptNewItem = fieldInfo.acceptNewItem;\r\n this.cascadedBy = fieldInfo.cascadedBy;\r\n this.cascadedByProperty = fieldInfo.cascadedByProperty ? fieldInfo.cascadedByProperty : fieldInfo.cascadedBy;\r\n this.currency = fieldInfo.currency;\r\n this.translate = fieldInfo.translate;\r\n this.advancedFilter = fieldInfo.advancedFilter;\r\n this.placeholder = fieldInfo.placeholder;\r\n this.validators = fieldInfo.validators;\r\n this.filterOperator = fieldInfo.filterOperator;\r\n this.pattern = fieldInfo.pattern;\r\n this.workflowManaged = fieldInfo.workflowManaged;\r\n this.workflowCascadingField = fieldInfo.workflowCascadingField;\r\n this.visible = fieldInfo.visible === undefined || fieldInfo.visible;\r\n this.attachmentType = fieldInfo.attachmentType;\r\n this.lookupFilterList = fieldInfo.lookupFilterList;\r\n this.extraLookupsColumns = fieldInfo.extraLookupsColumns;\r\n this.displayColumn = fieldInfo.displayColumn;\r\n this.textFormat = fieldInfo.textFormat;\r\n this.buttonType = fieldInfo.buttonType;\r\n this.hideFiles = fieldInfo.hideFiles;\r\n this.behavioralName = fieldInfo.behavioralName;\r\n this.flattenBySubAttribute = fieldInfo.flattenBySubAttribute;\r\n this.defaultValue = fieldInfo.defaultValue;\r\n this.searchAttribute = fieldInfo.searchAttribute || this.property;\r\n this.validationMessages = fieldInfo.validationMessages;\r\n this.hideLabel = fieldInfo.hideLabel;\r\n this.searchOperator = fieldInfo.searchOperator || 'EQUALS';\r\n this.showSearchIcon = fieldInfo.showSearchIcon;\r\n }\r\n\r\n}\r\n","export interface PageInfo {\r\n hasHint?: boolean;\r\n id: string;\r\n labelsSection: string;\r\n hasAddButton: boolean;\r\n apiUri?: string;\r\n selfRouting?: boolean;\r\n addNewRoutePath?: string;\r\n editRoutePath?: string;\r\n listRoutePath?: string;\r\n hideTitle?: boolean;\r\n saveLabel?: string;\r\n pageHeight?: 'full' | 'match',\r\n processId?: number,\r\n draftSupported: boolean;\r\n hasExtraTabs?: boolean;\r\n attachmentEnabled?: boolean;\r\n attachmentDefaultExternal?: boolean;\r\n printAction?: boolean;\r\n completedStatusFilterLabel?: string;\r\n enableHideTerminated?: boolean;\r\n embededTableOnly?: boolean;\r\n hasCustomFields?: boolean;\r\n hidePagination?: boolean;\r\n hideExtractButton?: boolean;\r\n hideReportsExtractButton?: boolean;\r\n externalPropertyName?: string;\r\n lazyLoadData?: boolean;\r\n groupByProperty?: string;\r\n groupByValue?: string[];\r\n supportGroupingInExport?: boolean;\r\n pageSize?: number;\r\n hideAuditLog?: boolean;\r\n stayOnPage?: boolean;\r\n hideAdvancedFilter?: boolean;\r\n}\r\n\r\nexport const EMPTY_PAGE_INFO = {\r\n id: \"\",\r\n labelsSection: \"\",\r\n hasAddButton: false,\r\n selfRouting: true,\r\n draftSupported: false,\r\n hasExtraTabs: false,\r\n attachmentEnabled: false,\r\n printAction: false,\r\n hidePagination: false,\r\n attachmentDefaultExternal: false,\r\n supportGroupingInExport: false,\r\n hideReportsExtractButton: false,\r\n hideAuditLog: false,\r\n stayOnPage: true\r\n\r\n}\r\n","import {ColumnDef} from \"./column-def.model\";\r\nimport {FieldPredicate} from \"./field-predicate.model\";\r\nimport {FilterRequest} from \"./filter-request\";\r\n\r\nexport class ReportRequest {\r\n sessionId: string;\r\n title: string;\r\n prefLang: string;\r\n columns: ColumnDef[];\r\n filter: string;\r\n reportType: 'pdf' | 'xlsx'\r\n dataset: any[];\r\n orientation: string;\r\n searchStr?: string;\r\n filtersList?: FieldPredicate[];\r\n filterRequest?: FilterRequest;\r\n reportCode?: string;\r\n constructor(br : any) {\r\n this.sessionId = br.sessionId;\r\n this.title = br.title;\r\n this.prefLang = br.prefLang;\r\n this.searchStr = br.searchStr;\r\n this.filter = br.filter;\r\n this.columns = br.columns;\r\n this.reportType=br.reportType;\r\n this.dataset = br.dataset;\r\n this.orientation = br.orientation;\r\n this.filtersList = br.filtersList;\r\n this.filterRequest = br.filterRequest;\r\n this.reportCode = br.reportCode;\r\n }\r\n\r\n}\r\n","import {Filter} from \"./filter.model\";\r\nimport {MATCH_TYPE} from \"./SearchStrConfig\";\r\n\r\nexport class FilterRequest {\r\n filters?: Filter[];\r\n searchStr: string;\r\n pageIndex: number;\r\n pageSize: number;\r\n sortKey: string;\r\n sortDirection: 'ASC'|'DESC';\r\n apiUri: string;\r\n columns: string[];\r\n pendingPage: boolean;\r\n matchType?: MATCH_TYPE;\r\n\r\n constructor(pageSize: number = 10) {\r\n this.apiUri = '';\r\n this.searchStr = '';\r\n this.pageIndex = 0;\r\n this.pageSize = pageSize;\r\n this.sortKey = 'id';\r\n this.sortDirection = \"DESC\";\r\n this.columns = [];\r\n this.pendingPage = false;\r\n }\r\n}\r\n\r\n","export class Filter {\r\n id?: any;\r\n key?: any;\r\n label?: string;\r\n fieldName?: string;\r\n joinObjectName?: string;\r\n valueObject?: any;\r\n fieldType?: string;\r\n objectFieldName?: string;\r\n filterType?: 'ASSIGNED_TO_ME'|'FILED_FILTER' | 'CLEAR_FILTERS' | 'CUSTOMER_ID'| 'VENDOR_ID' | 'INVOICE_CUSTOMER_ID'|\r\n 'INVOICE_VENDOR_ID' | 'DATE' | 'ASSIGNED_DEPARTMENT'| 'ASSIGNED_DEPARTMENT_MANAGER_STEPS';\r\n operator?: 'GREATER_THAN_EQUAL'|'GREATER_THAN'| 'LESS_THAN'|'LESS_THAN_EQUAL'| 'EQUALS'| 'LIKE'| 'NOT_EQ'| 'IN' | 'NOT_NULL';\r\n firstValue?: any;\r\n secondValue?: string;\r\n values?: string[];\r\n autoSelect?: boolean = false;\r\n\r\n constructor(filter : Filter) {\r\n this.id = filter.id;\r\n this.key = filter.key;\r\n this.label = filter.label;\r\n this.fieldName = filter.fieldName;\r\n this.joinObjectName = filter.joinObjectName;\r\n this.objectFieldName = filter.objectFieldName;\r\n this.valueObject = filter.valueObject;\r\n this.filterType = filter.filterType || 'FILED_FILTER';\r\n this.fieldType = filter.fieldType;\r\n this.operator = filter.operator || 'EQUALS';\r\n this.firstValue = filter.firstValue;\r\n this.secondValue = filter.secondValue;\r\n this.values = filter.values;\r\n this.autoSelect = filter.autoSelect;\r\n }\r\n}\r\n\r\nexport const HIDE_TERMINATED: Filter = new Filter(\r\n {key: 2, label: 'hideTerminated', filterType: 'FILED_FILTER', fieldType: 'number' , fieldName: 'statusId', firstValue: '3' , operator: 'NOT_EQ' , autoSelect:true});\r\n\r\nexport const ASSIGNED_TO_ME_FILTER: Filter = new Filter(\r\n {key: -1, label: 'Assigned to me', fieldName: 'stepId', filterType: 'ASSIGNED_TO_ME', autoSelect: true});\r\n\r\nexport const PENDING_STATUS_FILTER: Filter = new Filter(\r\n {key: -2, label: 'Pending Items', fieldName: 'statusId', firstValue: '2', filterType: 'FILED_FILTER'});\r\n\r\nexport const CLEAR_FILTERS: Filter = new Filter(\r\n {key: -3, label: 'clear', filterType:'CLEAR_FILTERS'});\r\n\r\nexport const ASSIGNED_DEPARTMENT_FILTER : Filter = new Filter(\r\n {key: -4, label: 'ASSIGNED_DEPARTMENT', filterType:'ASSIGNED_DEPARTMENT'});\r\n","export class LookupItem {\r\n id: number;\r\n arabicName: string;\r\n englishName: string;\r\n defaultValue?: boolean = false;\r\n\r\n constructor(lookup: LookupItem) {\r\n this.id = lookup.id;\r\n this.englishName = lookup.englishName;\r\n this.arabicName = lookup.arabicName;\r\n this.defaultValue = lookup.defaultValue;\r\n }\r\n}\r\n\r\nexport const ALL_ITEM= {\r\n id: -100,\r\n arabicName:'Select All',\r\n englishName:'Select All',\r\n defaultValue: false\r\n}\r\n\r\n","export class SnackMessage {\r\n message: string='';\r\n translate: boolean=false;\r\n type: 'info' | 'success' | 'error' | 'warning';\r\n translateParams: any;\r\n\r\n\r\n constructor(message: string, translate=false , type?:any , translateParams: any = {}) {\r\n this.message = message;\r\n this.translate = translate;\r\n this.type = type;\r\n this.translateParams = translateParams;\r\n }\r\n}\r\n","import {PageInfo} from \"./page-info\";\r\n\r\nexport interface TablePageUserAction {\r\n type: 'add' | 'select' | 'extra';\r\n id?:number;\r\n item?:any;\r\n actionKey?: string;\r\n pageInfo?:PageInfo\r\n}\r\n\r\nexport const SELECT_RECORD_ACTION: TablePageUserAction = {\r\n type:'select'\r\n}\r\nexport const EXTRA_ACTION: TablePageUserAction = {\r\n type:'extra'\r\n}\r\n\r\nexport const DRILL_DOWN_ACTION: TablePageUserAction = {\r\n type:'extra'\r\n}\r\nexport const JUNIOR_DOWN_ACTION: TablePageUserAction = {\r\n type:'extra'\r\n}\r\n\r\nexport const ADD_NEW_RECORD_ACTION: TablePageUserAction = {\r\n type:'add',\r\n id: -1\r\n}\r\n\r\nexport const TABLE_RECORD_ACTION: TablePageUserAction = {\r\n type:'extra',\r\n id: -1\r\n}\r\n","export const NEW =1;\r\nexport const SAVE =2;\r\nexport const REJECT =3;\r\nexport const APPROVE =4;\r\nexport const SAVE_AND_COMPLETE =5;\r\n\r\nexport class DoActionRequest {\r\n actionId: number;\r\n comment: string;\r\n subject: any;\r\n}\r\n","import {FieldInfo, EMPTY_PAGE_INFO, PageInfo, FilterRequest, SAVE_AND_COMPLETE} from \"../base-model\";\r\nimport {APPROVE, NEW, SAVE} from \"../base-model/do-action-request\";\r\nimport {Validators} from \"@angular/forms\";\r\n\r\nexport class BaseUtils {\r\n\r\n pageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n\r\n labelKey(column: any) {\r\n if (column.type === 'workflowStatus') {\r\n return 'INVENTORY.workflowStatus'\r\n }\r\n if (!column.property.length) {\r\n return \"\";\r\n }\r\n const configuredKey = column.label ? column.label : column.property\r\n return configuredKey.startsWith(this.pageInfo.labelsSection) ? `${configuredKey}` : `${this.pageInfo.labelsSection}.${configuredKey}`;\r\n }\r\n\r\n labelKeyByValue(column: any, element) {\r\n if (!column.property.length) {\r\n return \"\";\r\n }\r\n return `${this.pageInfo.labelsSection}.${element[column.property]}`\r\n }\r\n\r\n formatTimeToDate(v: any){\r\n const fromTime: Date = new Date();\r\n if (v) {\r\n let split = v.split(\":\");\r\n fromTime.setHours(split[0], split[1]);\r\n }\r\n return new Date(fromTime.getTime());\r\n }\r\n}\r\n\r\nexport function buildFormFields(fields: FieldInfo[], item:any){\r\n let fieldsControls: string[] = [];\r\n for (let field of fields) {\r\n if (field.type !== 'spacer') {\r\n const emptyValue = field.type === 'lookup' || field.type === 'multi-select' ? null : '';\r\n const extractedValue = item ? extractFieldName(item, field.property) : undefined;\r\n const validators = field.required\r\n ? [...(field.validators || []), Validators.required]\r\n : field.validators || [];\r\n\r\n fieldsControls[field.property] = extractedValue !== undefined && extractedValue !== null\r\n ? [extractedValue, validators]\r\n : [emptyValue, validators];\r\n }\r\n }\r\n return fieldsControls;\r\n}\r\nexport function buildItemsList(searchStr: string, apiPath?: string, cascadedByProperty?:string){\r\n const filterRequest : FilterRequest = new FilterRequest();\r\n // return {\r\n filterRequest.apiUri = cascadedByProperty ? `${apiPath}/${cascadedByProperty}` :apiPath;\r\n filterRequest.searchStr= searchStr\r\n filterRequest.pageIndex = 0;\r\n filterRequest.pageSize= 10;\r\n filterRequest.sortKey= 'id';\r\n filterRequest.sortDirection = \"DESC\" as const;\r\n // }\r\n return filterRequest;\r\n}\r\n\r\nexport function extractFieldName(element: any, property: string) {\r\n if (property.includes('.')) {\r\n return property.split('.').reduce((acc, part) => acc && acc[part], element);\r\n } else {\r\n return element[property];\r\n }\r\n}\r\n\r\nexport function getPositiveWfActionKey(stateType: any) {\r\n if (stateType === \"COMPLETED\") {\r\n return \"save\";\r\n } else if (stateType === \"PENDING\" || stateType === \"NEW\") {\r\n return \"approve\";\r\n }\r\n return \"save\";\r\n}\r\n\r\nexport function getNegativeWfActionKey(stateType: any) {\r\n if (stateType === \"COMPLETED\" ) {\r\n return \"cancel\";\r\n } else if (stateType === \"PENDING\"|| stateType === \"NEW\") {\r\n return \"reject\";\r\n }\r\n return \"cancel\";\r\n}\r\n\r\nexport function getWfActionId(stateType) {\r\n let actionId = NEW;\r\n if (stateType === \"COMPLETED\") {\r\n actionId = SAVE;\r\n } else if (stateType === \"PENDING\" || stateType === \"NEW\") {\r\n actionId = APPROVE;\r\n }\r\n return actionId;\r\n}\r\n\r\n","export class ResponseEnvelop {\r\n valid: boolean;\r\n message: string[];\r\n body: any;\r\n pagesCount: number;\r\n totalSize: number;\r\n\r\n constructor(responseEnvelop:ResponseEnvelop) {\r\n this.valid = responseEnvelop.valid;\r\n this.message = responseEnvelop.message;\r\n this.body = responseEnvelop.body;\r\n this.pagesCount = responseEnvelop.pagesCount;\r\n this.totalSize = responseEnvelop.totalSize;\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\r\nimport {Location, NgForOf, NgIf} from \"@angular/common\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {MatButton} from \"@angular/material/button\";\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {Directionality} from \"@angular/cdk/bidi\";\r\nimport {ButtonActionSettings} from \"../../base-model\";\r\n\r\n@Component({\r\n selector: 'app-title-bar',\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n MatIconModule,\r\n MatButton,\r\n MatMenuItem,\r\n MatMenu,\r\n NgForOf,\r\n MatMenuTrigger,\r\n TranslateModule,\r\n\r\n ],\r\n templateUrl: './title-bar.component.html',\r\n styleUrls: ['./title-bar.component.css', 'title-bar.component.scss']\r\n})\r\nexport class TitleBarComponent implements OnInit, OnChanges {\r\n @Input()\r\n pageTitle: string = \"\";\r\n\r\n @Input()\r\n showExtractButton: boolean = false;\r\n\r\n @Input()\r\n totalElements?: number;\r\n\r\n @Input()\r\n titleMode: string = '';\r\n @Input()\r\n subTitle: string = '';\r\n\r\n @Input()\r\n statusDesc?: string;\r\n\r\n @Input()\r\n newAction: boolean = false;\r\n\r\n\r\n @Input() // @ts-ignore\r\n extraButton: string;\r\n\r\n\r\n @Input()\r\n showDetails: any = [];\r\n\r\n @Input()\r\n showImport = false;\r\n\r\n @Input()\r\n showButton = false;\r\n\r\n @Output()\r\n newActionClicked = new EventEmitter();\r\n\r\n @Output()\r\n extraButtonClicked = new EventEmitter();\r\n\r\n\r\n @Output()\r\n extractReport = new EventEmitter();\r\n\r\n @Input()\r\n extraData = '';\r\n\r\n listTitle = '';\r\n newButton = '';\r\n\r\n @Input()\r\n titleCorporateAdmin: string = '';\r\n\r\n isRoot: boolean = false;\r\n @Input()\r\n hideBackButton: boolean = true;\r\n\r\n @Input() buttons: ButtonActionSettings[] = [];\r\n @Input() buttonsDisplayMode: 'dropdown' | 'list' = 'dropdown';\r\n @Output() buttonClicked = new EventEmitter<ButtonActionSettings>();\r\n constructor(private location:Location,\r\n private dir: Directionality) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.listTitle = this.pageTitle;\r\n this.newButton = this.extraButton;\r\n // this.isRoot = this.authService.isRootOrg();\r\n this.isRoot = false;\r\n }\r\n get backIcon(): string {\r\n return this.dir.value === 'rtl' ? 'arrow_back' : 'arrow_forward';\r\n }\r\n\r\n publishEvent() {\r\n this.newActionClicked.emit(true);\r\n }\r\n\r\n\r\n doExtractReport(value: any) {\r\n this.extractReport.emit(value);\r\n }\r\n publishExtraButtonEvent() {\r\n this.extraButtonClicked.emit(true);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"pageTitle\"] && !changes[\"pageTitle\"].isFirstChange() ) {\r\n this.listTitle = this.pageTitle;\r\n }\r\n }\r\n\r\n goBack() {\r\n this.location.back()\r\n }\r\n\r\n onButtonClick(btn: ButtonActionSettings) {\r\n this.buttonClicked.emit(btn);\r\n }\r\n}\r\n","<div class=\"row mainTitleBar gap-20 default-align\">\r\n\r\n <div class=\"column flex-auto textTitle\" >\r\n <h2 *ngIf=\"pageTitle\">\r\n <span class=\"textTitle__titleMode\">{{ titleMode | translate }}</span>\r\n {{ listTitle | translate }}\r\n <span *ngIf=\"titleCorporateAdmin && isRoot\">({{ titleCorporateAdmin }})</span>\r\n {{ extraData }}\r\n </h2>\r\n <span *ngIf=\"subTitle\" class=\"textTitle__subTitle\">{{ subTitle | translate }}</span>\r\n </div>\r\n\r\n <div class=\"column end-items gap-20\">\r\n <button mat-flat-button color=\"primary\" style=\"width: 100px\" *ngIf=\"!hideBackButton\" (click)=\"goBack()\" id=\"title-bar-back-btn\">\r\n <mat-icon color=\"second\">{{ backIcon }}</mat-icon>\r\n <span style=\"font-weight: bold\">{{ 'back' | translate }}</span>\r\n </button>\r\n\r\n <div class=\"row flex-auto gap-20 buttons-wrapper\">\r\n <ng-container *ngIf=\"buttonsDisplayMode === 'dropdown'\">\r\n <button\r\n *ngIf=\"buttons && buttons.length > 0\"\r\n mat-flat-button\r\n [matMenuTriggerFor]=\"actionMenu\"\r\n class=\"title-bar-action-button\"\r\n [attr.id]=\"'title-bar-action-button'\">\r\n <div class=\"button-content\">\r\n <mat-icon class=\"button-icon\">{{ buttons[0].icon }}</mat-icon>\r\n <span class=\"button-label\">{{ buttons[0].label | translate }}</span>\r\n <mat-icon class=\"button-arrow\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n </button>\r\n <mat-menu #actionMenu=\"matMenu\" class=\"title-bar-action-menu\">\r\n <button\r\n mat-menu-item\r\n *ngFor=\"let btn of buttons\"\r\n (click)=\"onButtonClick(btn)\"\r\n [attr.id]=\"btn.id || ('title-bar-menu-btn-' + (btn.action || btn.label || btn.key))\">\r\n <mat-icon>{{ btn.icon }}</mat-icon>\r\n <span>{{ btn.label | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"buttonsDisplayMode === 'list'\">\r\n <button\r\n *ngFor=\"let btn of buttons\"\r\n mat-flat-button\r\n color=\"primary\"\r\n class=\"title-bar-list-button\"\r\n (click)=\"onButtonClick(btn)\"\r\n [attr.id]=\"btn.id || ('title-bar-list-btn-' + (btn.action || btn.label || btn.key))\">\r\n <mat-icon>{{ btn.icon }}</mat-icon>\r\n <span>{{ btn.label | translate }}</span>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, OnInit, OnChanges } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { NgIf, NgForOf } from '@angular/common';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\n\r\n@Component({\r\n selector: 'app-paginator',\r\n templateUrl: './paginator.component.html',\r\n styleUrls: ['./paginator.component.css'],\r\n standalone: true,\r\n imports: [MatIconModule, MatButtonModule, NgIf, NgForOf],\r\n})\r\nexport class PaginatorComponent implements OnInit, OnChanges {\r\n @Input() currentPage = 1;\r\n @Input() totalItems = 0;\r\n @Input() pageSize = 10;\r\n @Input() pageSizeOptions: number[] = [5, 10, 25, 50];\r\n\r\n @Output() pageChange = new EventEmitter<number>();\r\n @Output() pageSizeChange = new EventEmitter<number>();\r\n\r\n currentDirection: 'ltr' | 'rtl' = 'ltr';\r\n\r\n constructor(private directionality: Directionality) {}\r\n\r\n ngOnInit() {\r\n this.currentDirection = this.directionality.value;\r\n this.directionality.change?.subscribe((value) => {\r\n this.currentDirection = value;\r\n });\r\n if (!this.pageSizeOptions.includes(this.pageSize)) {\r\n Promise.resolve().then(() => {\r\n this.pageSize = this.pageSizeOptions[1];\r\n this.pageSizeChange.emit(this.pageSize);\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.currentPage > this.totalPages) {\r\n this.currentPage = this.totalPages || 1;\r\n }\r\n }\r\n\r\n get totalPages(): number {\r\n return Math.ceil(this.totalItems / this.pageSize);\r\n }\r\n\r\n get startIndex(): number {\r\n return this.totalItems === 0 ? 0 : (this.currentPage - 1) * this.pageSize + 1;\r\n }\r\n\r\n get endIndex(): number {\r\n return Math.min(this.currentPage * this.pageSize, this.totalItems);\r\n }\r\n\r\n goToPage(page: number) {\r\n if (page >= 1 && page <= this.totalPages) {\r\n this.currentPage = page;\r\n this.pageChange.emit(this.currentPage);\r\n }\r\n }\r\n\r\n nextPage() {\r\n if (this.currentPage < this.totalPages) {\r\n this.goToPage(this.currentPage + 1);\r\n }\r\n }\r\n\r\n previousPage() {\r\n if (this.currentPage > 1) {\r\n this.goToPage(this.currentPage - 1);\r\n }\r\n }\r\n\r\n onPageSizeChange(size: number) {\r\n this.pageSize = size;\r\n this.currentPage = 1;\r\n this.pageSizeChange.emit(this.pageSize);\r\n this.pageChange.emit(this.currentPage);\r\n }\r\n\r\n getPageNumbers(): (number | string)[] {\r\n const TOTAL = this.totalPages;\r\n const CURRENT = this.currentPage;\r\n const PAGES: (number | string)[] = [];\r\n\r\n if (TOTAL <= 7) {\r\n for (let i = 1; i <= TOTAL; i++) {\r\n PAGES.push(i);\r\n }\r\n } else {\r\n PAGES.push(1);\r\n\r\n if (CURRENT <= 3) {\r\n for (let i = 2; i <= 4; i++) {\r\n PAGES.push(i);\r\n }\r\n PAGES.push('...');\r\n PAGES.push(TOTAL - 1);\r\n PAGES.push(TOTAL);\r\n } else if (CURRENT >= TOTAL - 2) {\r\n PAGES.push(2);\r\n PAGES.push('...');\r\n for (let i = TOTAL - 3; i <= TOTAL; i++) {\r\n PAGES.push(i);\r\n }\r\n } else {\r\n PAGES.push(2);\r\n PAGES.push('...');\r\n PAGES.push(CURRENT - 1);\r\n PAGES.push(CURRENT);\r\n PAGES.push(CURRENT + 1);\r\n PAGES.push('...');\r\n PAGES.push(TOTAL - 1);\r\n PAGES.push(TOTAL);\r\n }\r\n }\r\n\r\n return PAGES;\r\n }\r\n\r\n isEllipsis(page: number | string): boolean {\r\n return page === '...';\r\n }\r\n\r\n isActive(page: number | string): boolean {\r\n return typeof page === 'number' && page === this.currentPage;\r\n }\r\n\r\n protected readonly Math = Math;\r\n}\r\n","<div class=\"paginator-container\" [dir]=\"currentDirection\" [class.rtl]=\"currentDirection === 'rtl'\">\r\n <button\r\n class=\"paginator-button paginator-nav-button\"\r\n [class.disabled]=\"currentPage === 1\"\r\n [disabled]=\"currentPage === 1\"\r\n (click)=\"previousPage()\"\r\n type=\"button\">\r\n <mat-icon class=\"paginator-icon paginator-icon-left\">chevron_left</mat-icon>\r\n </button>\r\n\r\n <ng-container *ngFor=\"let page of getPageNumbers()\">\r\n <button\r\n *ngIf=\"!isEllipsis(page)\"\r\n class=\"paginator-button paginator-page-button\"\r\n [class.active]=\"isActive(page)\"\r\n [disabled]=\"isActive(page)\"\r\n (click)=\"goToPage(+page)\"\r\n type=\"button\">\r\n <span class=\"paginator-page-number\">{{ page }}</span>\r\n </button>\r\n <div *ngIf=\"isEllipsis(page)\" class=\"paginator-button paginator-ellipsis\">\r\n <span class=\"paginator-ellipsis-text\">...</span>\r\n </div>\r\n </ng-container>\r\n\r\n <button\r\n class=\"paginator-button paginator-nav-button\"\r\n [class.disabled]=\"currentPage === totalPages\"\r\n [disabled]=\"currentPage === totalPages\"\r\n (click)=\"nextPage()\"\r\n type=\"button\">\r\n <mat-icon class=\"paginator-icon paginator-icon-right\">chevron_right</mat-icon>\r\n </button>\r\n</div>\r\n","import {FormGroup} from \"@angular/forms\";\r\nimport {LookupItem} from \"../base-model\";\r\n\r\nexport function RequireMatch(control: FormGroup) {\r\n const selection: any = control.value;\r\n if (typeof selection === 'string' || (selection instanceof LookupItem && selection.id === -1)) {\r\n return { incorrect: true };\r\n }\r\n return null;\r\n}\r\n","import { FormGroup } from '@angular/forms';\r\n\r\nexport function MultiEmailValidator(control: FormGroup) {\r\n if (!control.value) {\r\n return null;\r\n }\r\n const emails = control.value.split(';').map(email => email.trim());\r\n\r\n for (let email of emails) {\r\n if (!email.match(/^([\\w+-.%]+@[\\w-.]+\\.[A-Za-z]{2,7};?)*$/)) {\r\n return { 'invalidEmail': { value: control.value } };\r\n }\r\n }\r\n return null;\r\n}\r\n","import { AbstractControl, ValidationErrors, FormArray, FormGroup } from '@angular/forms';\r\n\r\nexport function DateRangeValidator(group: AbstractControl): ValidationErrors | null {\r\n let fromDateControl: AbstractControl | null = null;\r\n let toDateControl: AbstractControl | null = null;\r\n\r\n if (group.parent instanceof FormGroup && group.parent.parent instanceof FormArray) {\r\n const formGroup = group.parent;\r\n fromDateControl = formGroup.get('from');\r\n toDateControl = formGroup.get('to');\r\n } else {\r\n fromDateControl = group.root.get('from');\r\n toDateControl = group.root.get('to');\r\n }\r\n\r\n if (fromDateControl && toDateControl) {\r\n const fromDateValue = fromDateControl.value;\r\n const toDateValue = toDateControl.value;\r\n\r\n if (fromDateValue && toDateValue) {\r\n const fromDate = new Date(fromDateValue);\r\n const toDate = new Date(toDateValue);\r\n\r\n if (fromDate > toDate) {\r\n return { dateRangeInvalid: 'Invalid Date Range: To date must be after from date' };\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n","export class ColumnDef {\r\n order: number;\r\n label: string;\r\n fieldName: string;\r\n datatype: string;\r\n groupLabel: string;\r\n width: number;\r\n showSum: boolean=false;\r\n showCount: boolean=false;\r\n\r\n constructor(tableColumn: any, order: number, transLabel :string, lang?:string, groupLabel?:string) {\r\n this.order = order;\r\n this.label = transLabel;\r\n if (tableColumn.reportProperty) {\r\n this.fieldName = tableColumn.reportProperty;\r\n } else {\r\n this.fieldName = tableColumn.property.toString();\r\n }\r\n\r\n if (tableColumn.langDrivenName){\r\n this.fieldName = this.fieldName + \".\" + (lang === 'en'? \"englishName\": \"arabicName\");\r\n }\r\n\r\n if (tableColumn.reportType) {\r\n this.datatype = tableColumn.reportType;\r\n } else {\r\n this.datatype = tableColumn.type === 'number' ? 'long' : tableColumn.type;\r\n }\r\n this.width = tableColumn.reportwidth ? tableColumn.reportwidth : null;\r\n this.showSum = tableColumn.showSum;\r\n this.showCount = tableColumn.showCount;\r\n this.groupLabel = groupLabel;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {BehaviorSubject} from \"rxjs\";\r\nimport {SnackMessage} from \"../base-model/snack-message.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TopPanel {\r\n\r\n public topPanelMessage$ = new BehaviorSubject<SnackMessage>({\r\n message: '',\r\n translate: false,\r\n type: 'info',\r\n translateParams: {}\r\n });\r\n\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {HttpClient, HttpErrorResponse, HttpHeaders, HttpParams} from \"@angular/common/http\";\r\nimport {Observable, of, Subject} from \"rxjs\";\r\nimport {catchError, distinctUntilChanged} from \"rxjs/operators\";\r\nimport {SnackMessage} from \"../base-model/snack-message.model\";\r\nimport {PageInfo} from \"../base-model/page-info\";\r\nimport {TranslateService} from \"@ngx-translate/core\";\r\nimport {ColumnDef} from \"../base-model/column-def.model\";\r\nimport {TableColumn} from \"../base-model/table-column.interface\";\r\nimport {GetItemsList} from \"../base-model/get-items-list\";\r\nimport {FieldAction} from \"../base-model/field-action\";\r\nimport {Workflow} from \"../base-model/workflow/workflow.model\";\r\nimport {ReportRequest} from \"../base-model/report-request.model\";\r\nimport {FilterRequest} from \"../base-model/filter-request\";\r\nimport {ResponseEnvelop} from \"../base-model/response-envelop.model\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport {TopPanel} from \"./top-panel\";\r\nimport {DoActionRequest} from \"../base-model/do-action-request\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {ActionConfirmationComponent} from \"../components/action-confirmation/action-confirmation.component\";\r\n\r\nconst WORKFLOW_STATES_MAP: Record<number, string> = {\r\n 1: 'New',\r\n 2: 'Pending',\r\n 3: 'Terminated',\r\n 4: 'Completed',\r\n 5: 'Updated',\r\n 6: 'Default'\r\n};\r\n\r\nconst EXCLUDED_REPORT_COLUMNS = ['listAction','button', 'checkbox'];\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BackendService {\r\n public topPanelMessage$ = new Subject<SnackMessage>();\r\n // @ts-ignore\r\n public parentForm: FormGroup;\r\n public childForm: FormGroup;\r\n public fieldAction$ = new Subject<FieldAction>();\r\n public isEmptyItems: boolean = true;\r\n\r\n constructor(private http: HttpClient,\r\n private topPanel: TopPanel,\r\n private translateService: TranslateService,\r\n private route: ActivatedRoute,\r\n private dialog: MatDialog,\r\n @Inject('config') private config: any,\r\n @Inject('secretsManager') private secretsManager: any) {\r\n\r\n this.topPanelMessage$.subscribe(msg => {\r\n this.topPanel.topPanelMessage$.next(msg);\r\n })\r\n }\r\n\r\n set defaults(value: any | undefined) {\r\n }\r\n\r\n get defaults(): any | undefined {\r\n return {};\r\n }\r\n\r\n getStatusDescription(element: any, workflow: Workflow) {\r\n if (element?.stepId) {\r\n\r\n let index = workflow?.workflowSteps?.findIndex(s => s.stepId === element.stepId);\r\n if (index > -1) {\r\n return this.translateService.getDefaultLang() === 'ar' ?\r\n workflow?.workflowSteps[index].stepNameAr || workflow?.workflowSteps[index].stepName:\r\n workflow?.workflowSteps[index].stepName;\r\n // return this.translateService.instant(workflow?.workflowSteps[index].stepName);\r\n } else {\r\n return this.translateService.instant('INVENTORY.inprocessStatus');\r\n }\r\n } else {\r\n if (element.statusId === 4 && element.statusDescription) {\r\n return element.statusDescription;\r\n } else if (element.statusId) {\r\n return this.translateService.instant(WORKFLOW_STATES_MAP[element.statusId]);\r\n } else {\r\n return \"unknown\";\r\n }\r\n }\r\n }\r\n//sss\r\n getItemsByFilter(reportRequest: any, apiUrl: string): Observable<any> {\r\n const url = `${this.getApiBasePath()}/api/v1${apiUrl}/list`;\r\n return this.http.post(url, reportRequest, { headers: this.buildSecuredHeader()}).pipe(\r\n distinctUntilChanged(),\r\n catchError(err => of(err.message || err)));\r\n }\r\n\r\n getItemAuditLog(reportRequest: any, apiUrl: string): Observable<any> {\r\n const url = `${this.getApiBasePath()}/api/v1${apiUrl}/audit-log`;\r\n return this.http.post(url, reportRequest, { headers: this.buildSecuredHeader()}).pipe(\r\n distinctUntilChanged(),\r\n catchError(err => of(err.message || err)));\r\n }\r\n\r\n\r\n private buildSecuredHeader() {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n Authorization: this.config.getAuthToken()\r\n });\r\n return headers;\r\n }\r\n\r\n public buildFormSecuredHeader() {\r\n const headers = new HttpHeaders({\r\n Authorization: this.config.getAuthToken()\r\n });\r\n return headers;\r\n }\r\n\r\n labelKey(column: any, pageInfo: PageInfo) {\r\n const configuredKey = column.label ? column.label : column.property;\r\n\r\n if (configuredKey && configuredKey.trim() !== '' && configuredKey.startsWith(pageInfo.labelsSection)) {\r\n return configuredKey;\r\n }\r\n\r\n return `${pageInfo.labelsSection}.${configuredKey}`;\r\n }\r\n\r\n\r\n private buildReportColumn(columns: TableColumn<any>[], pageInfo: PageInfo): ColumnDef[] {\r\n let columnDef: ColumnDef[] = [];\r\n\r\n columns.filter(x => !EXCLUDED_REPORT_COLUMNS.includes(x.type)).forEach((c, index) => {\r\n let transLabel = this.translateService.instant(this.labelKey(c,pageInfo));\r\n let transGroup = pageInfo.supportGroupingInExport ?\r\n c.group.trim() ? this.translateService.instant(c.group) : ' ' : null;\r\n if (c.type === 'workflowStatus') {\r\n transLabel = this.translateService.instant('workflowStatus');\r\n }\r\n if ((c.reportVisible === true) || (c.visible === true && c.reportVisible !== false)) {\r\n columnDef.push(new ColumnDef(c, index, transLabel, this.translateService.getDefaultLang(),transGroup));\r\n }\r\n });\r\n return columnDef;\r\n }\r\n\r\n private base64ToArrayBuffer(base64: string) {\r\n const binaryString = window.atob(base64); // Comment this if not using base64\r\n const bytes = new Uint8Array(binaryString.length);\r\n return bytes.map((byte, i) => binaryString.charCodeAt(i));\r\n }\r\n\r\n buildReportRequest(columns: TableColumn<any>[], title: string | string[], filterRequest: FilterRequest, reportType: any, pageInfo: PageInfo, searchStr: string ,orientation='PORTRAIT'): ReportRequest {\r\n const columnDef = this.buildReportColumn(columns, pageInfo);\r\n const reportRequest = new ReportRequest({\r\n dataset: [], filter: \"\",\r\n columns: columnDef,\r\n // sessionId: this.topPanel.userSession().sessionId,\r\n sessionId: this.config.getAuthToken(),\r\n title: this.translateService.instant(title),\r\n prefLang: this.translateService.getDefaultLang(),\r\n reportType: reportType,\r\n searchStr: searchStr,\r\n filterRequest: filterRequest,\r\n orientation: orientation});\r\n return reportRequest;\r\n }\r\n\r\n getLookupItemsByMultiFilter(listItems: GetItemsList, filterRequest?: FilterRequest): Observable<any> {\r\n listItems.pageSize = 100;\r\n filterRequest.pageSize = 100;\r\n const params = new HttpParams().set('searchStr', listItems.searchStr);\r\n let url = `${this.getApiBasePath()}/api/v1/${listItems.apiUri}`;\r\n return this.http.post(url, filterRequest, { headers: this.buildSecuredHeader(), params: params}).pipe(\r\n distinctUntilChanged(),\r\n catchError(err => of(err.message || err)));\r\n }\r\n getLookupItemsByFilter(listItems: GetItemsList, cascadedId?: any): Observable<any> {\r\n listItems.pageSize = 500;\r\n const params = new HttpParams().set('searchStr', listItems.searchStr);\r\n let url = `${this.getApiBasePath()}/api/v1/${listItems.apiUri}`;\r\n if (cascadedId) {\r\n url = url + `/${cascadedId}`\r\n }\r\n\r\n return this.http.post(url, listItems,{ headers: this.buildSecuredHeader()}).pipe(\r\n distinctUntilChanged(),\r\n catchError(err => of(err.message || err)));\r\n }\r\n\r\n\r\n\r\n downloadReport(reportRequest: ReportRequest, pageApiPath : string, readyPath? : boolean ) {\r\n const s = readyPath === true ? `/api/v1${pageApiPath}` : `/api/v1${pageApiPath}/extractAndDownloadListReport`;\r\n return this.http.post<ResponseEnvelop>(this.getApiBasePath() + s, reportRequest, {headers: this.buildSecuredHeader()}).subscribe(\r\n (resp:ResponseEnvelop) => {\r\n if (resp.valid) {\r\n if (resp.body) {\r\n const filename = reportRequest.title + \".\" + reportRequest.reportType;\r\n const blob = new Blob([this.base64ToArrayBuffer(resp.body)]);\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, filename);\r\n } else {\r\n const link = document.createElement('a');\r\n // Browsers that support HTML5 download attribute\r\n if (link.download !== undefined) {\r\n const url = URL.createObjectURL(blob);\r\n link.setAttribute('href', url);\r\n link.setAttribute('download', filename);\r\n link.style.visibility = 'hidden';\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n }\r\n } else {\r\n this.topPanel.topPanelMessage$.next(new SnackMessage(resp.message.toString(), true, 'info'));\r\n }\r\n } else {\r\n this.topPanel.topPanelMessage$.next(new SnackMessage(resp.message.toString(), false, 'error'));\r\n }\r\n }\r\n );\r\n\r\n }\r\n\r\n private getApiBasePath(){\r\n return this.config.getBaseApi();\r\n }\r\n\r\n doActionWithAttachments(request: DoActionRequest, param2: any[], pageInfo: PageInfo) {\r\n const url = `${this.getApiBasePath()}/api/v1${pageInfo.apiUri}/doActionWithAttachments`;\r\n const formData: FormData = new FormData();\r\n formData.set('doActionRequest', new Blob([JSON.stringify(request)], {\r\n type: \"application/json\"\r\n }));\r\n\r\n return this.http.post(url, formData, { headers: this.buildFormSecuredHeader() }).pipe(\r\n distinctUntilChanged(),\r\n catchError((error: HttpErrorResponse) => {\r\n return of(error.error);\r\n })\r\n );\r\n\r\n }\r\n doActionWithAttachment(request: DoActionRequest, file: File, pageInfo: PageInfo) {\r\n const url = `${this.getApiBasePath()}/api/v1${pageInfo.apiUri}/doActionWithAttachments`;\r\n const formData: FormData = new FormData();\r\n\r\n formData.append('files', file);\r\n formData.set('doActionRequest', new Blob([JSON.stringify(request)], {\r\n type: \"application/json\"\r\n }));\r\n\r\n return this.http.post<any>(url, formData, {\r\n headers: this.buildFormSecuredHeader()\r\n }).pipe(\r\n distinctUntilChanged(),\r\n catchError((error: HttpErrorResponse) => {\r\n // Transform the error into a fake success-like response\r\n return of(error.error); // This will now be passed to `next` in subscribe()\r\n })\r\n );\r\n }\r\n\r\n encrypt(message: any) {\r\n return this.secretsManager.encryptSecret(message);\r\n }\r\n\r\n decrypt(secret: any) {\r\n return this.secretsManager.decryptSecret(secret);\r\n }\r\n\r\n public getConfirmation(): Observable<any> {\r\n const dialogRef = this.dialog.open(ActionConfirmationComponent, {\r\n data: {acceptActionLabel: 'accept',rejectActionLabel:'return', warningMsg: 'confirmation_message'},\r\n width: '600px',\r\n height: 'auto'\r\n });\r\n return dialogRef.afterClosed();\r\n }\r\n\r\n}\r\n\r\ndeclare global {\r\n interface Navigator {\r\n msSaveBlob: (blobOrBase64: Blob | string, filename: string) => void\r\n }\r\n}\r\n","import {Injectable, signal} from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\n\r\nexport class ShareDataService {\r\n trigger = signal<boolean>(true);\r\n enableTrigger = (() => (() => this.trigger.update((val) => val = !val)))\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, Output, SimpleChanges, ViewChild} from '@angular/core';\r\nimport {ALL_ITEM, LookupItem} from \"../../base-model\";\r\nimport {MatAutocomplete, MatAutocompleteTrigger, MatOption} from \"@angular/material/autocomplete\";\r\nimport {Observable, of} from \"rxjs\";\r\nimport {FieldInfo} from \"../../base-model\";\r\nimport {FormControl, FormGroup, ReactiveFormsModule, Validators} from \"@angular/forms\";\r\nimport {BackendService} from \"../../services\";\r\nimport {TranslateService} from \"@ngx-translate/core\";\r\nimport {GetItemsList} from \"../../base-model/get-items-list\";\r\nimport {MatFormField} from \"@angular/material/form-field\";\r\nimport {MatChip, MatChipGrid, MatChipInput, MatChipListbox} from \"@angular/material/chips\";\r\nimport {AsyncPipe, NgForOf, NgIf} from \"@angular/common\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {MatInput} from \"@angular/material/input\";\r\nimport { MatLabel } from '@angular/material/form-field';\r\nimport {buildItemsList} from \"../../utils/base-utils\";\r\nimport {FilterRequest} from \"../../base-model\";\r\nimport {Filter} from \"../../base-model\";\r\nimport {RequireMatch} from \"../../validators\";\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n\r\n@Component({\r\n selector: 'app-multi-auto-complete',\r\n standalone: true,\r\n imports: [\r\n MatFormField,\r\n MatChip,\r\n MatIconModule,\r\n MatChipsModule,\r\n NgForOf,\r\n MatIcon,\r\n ReactiveFormsModule,\r\n MatAutocompleteTrigger,\r\n MatChipInput,\r\n MatInput,\r\n MatAutocomplete,\r\n MatOption,\r\n AsyncPipe,\r\n NgIf,\r\n MatChipGrid,\r\n MatChipListbox,\r\n MatLabel\r\n ],\r\n templateUrl: './multi-auto-complete.component.html',\r\n styleUrl: './multi-auto-complete.component.css'\r\n})\r\nexport class MultiAutoCompleteComponent {\r\n// @ts-ignore\r\n @ViewChild('itemInput') itemInput: ElementRef<HTMLInputElement>;\r\n @ViewChild('autocompleteTrigger') matACTrigger: MatAutocompleteTrigger;\r\n\r\n lookupItems$: Observable<LookupItem[]> | undefined;\r\n private lookupItems: LookupItem[] = [];\r\n\r\n selectedItems: LookupItem[] = [];\r\n cascadedIdz: number[] = [];\r\n isRequired: boolean= false;\r\n private timer: any;\r\n\r\n @Input()// @ts-ignore\r\n field: FieldInfo;\r\n //\r\n @Input()// @ts-ignore\r\n form: FormGroup;\r\n\r\n @Input()// @ts-ignore\r\n defaultValue: any;\r\n\r\n @Input()\r\n pathParam: any;\r\n\r\n @Input()\r\n readonly : boolean=false;\r\n\r\n @Output()\r\n selectedValue: EventEmitter<LookupItem[]> = new EventEmitter();\r\n\r\n question = 'Would you like to add ?\"';\r\n\r\n multiControl = new FormControl();\r\n\r\n constructor(private backendService: BackendService, private translateService: TranslateService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n // this.form = this.rootFormGroup.control;\r\n this.selectedItems = [];\r\n this.multiControl = new FormControl(this.form?.controls[this.field?.property]);\r\n\r\n this.multiControl.enable();\r\n this.updateFieldAttributes();\r\n\r\n if (!this.field.acceptNewItem){\r\n // @ts-ignore\r\n this.multiControl.setValidators([RequireMatch]);\r\n }\r\n\r\n this.multiControl.setValue(this.form?.controls[this.field?.property]?.value);\r\n\r\n this.multiControl.valueChanges.subscribe( v => {\r\n if (typeof v === 'string') {\r\n clearTimeout(this.timer);\r\n this.timer = setTimeout(() => {\r\n this.filterLookupItems(v, null);}, 700);\r\n }\r\n }\r\n );\r\n\r\n // this.multiControl.valueChanges.subscribe(v => {\r\n // if (typeof v === 'string') this.filterLookupItems(v, null);\r\n // })\r\n // this.filterAutoCompleteData(this.field.property);\r\n\r\n this.getLookupData();\r\n if (this.field.cascadedBy) {\r\n this.form?.get(this.field.cascadedBy)?.valueChanges.subscribe(v => {\r\n this.removeChildItemsIfCascadedByRemoved(v);\r\n });\r\n }\r\n\r\n }\r\n\r\n private updateFieldAttributes() {\r\n if (this.field.readonly) {\r\n this.multiControl.disable();\r\n this.isRequired = false;\r\n } else if (this.field.required) {\r\n this.form?.controls[this.field?.property].setValidators([Validators.required]);\r\n this.form?.controls[this.field?.property].updateValueAndValidity();\r\n this.multiControl.setValidators([Validators.required]);\r\n this.isRequired = true;\r\n }\r\n this.multiControl.updateValueAndValidity();\r\n }\r\n\r\n private removeChildItemsIfCascadedByRemoved(v) {\r\n this.cascadedIdz = [];\r\n v.forEach(a => {\r\n this.cascadedIdz.push(a.id);\r\n });\r\n let toDeleteIdz = [];\r\n this.selectedItems?.forEach(x => {\r\n const del = this.cascadedIdz.findIndex(y => y === x[this.field.cascadedBy]?.id);\r\n if (del < 0) {\r\n toDeleteIdz.push(x['id']);\r\n }\r\n });\r\n\r\n if (toDeleteIdz) {\r\n this.selectedItems = this.selectedItems.filter(s => !toDeleteIdz.includes(s.id));\r\n this.form.get(this.field.property).patchValue(this.selectedItems, {emitEvent: true});\r\n }\r\n }\r\n\r\n ngOnChanges({defaultValue, field}: SimpleChanges): void {\r\n this.patchLookupValue(defaultValue?.currentValue);\r\n if (field?.currentValue) {\r\n this.field = field.currentValue;\r\n this.updateFieldAttributes();\r\n }\r\n }\r\n\r\n private getLookupData() {\r\n const listItems: GetItemsList = buildItemsList('', this.field.lookupApiPath);\r\n\r\n const filterRequest: FilterRequest = new FilterRequest();\r\n filterRequest.filters = [];\r\n this.cascadedIdz = [];\r\n if (this.field.cascadedBy) {\r\n this.form.get(this.field.cascadedBy)?.value?.forEach(a => {\r\n this.cascadedIdz.push(a.id);\r\n })\r\n }\r\n if (this.field.cascadedBy && this.cascadedIdz?.length > 0) {\r\n filterRequest.filters.push(new Filter({\r\n key: 'id', fieldName: this.field.cascadedBy, label: '',\r\n filterType: 'FILED_FILTER', operator: 'IN',\r\n valueObject: this.cascadedIdz\r\n }));\r\n }\r\n\r\n filterRequest.columns = ['id','code','englishName','arabicName'];\r\n this.backendService.getLookupItemsByMultiFilter(listItems, filterRequest).subscribe((resp => {\r\n if (resp.valid) {\r\n this.lookupItems = this.field.includeAllOption ? [ALL_ITEM].concat(resp.body) : resp.body;\r\n if (!this.form.get('id')?.value) {\r\n this.patchLookupValue(this.lookupItems?.find(l => l.defaultValue));\r\n }\r\n this.patchLookupValue(this.multiControl.value);\r\n\r\n }\r\n\r\n }));\r\n }\r\n\r\n\r\n selected(value: any): void {\r\n if (value.id !== -1 && this.selectedItems.findIndex(i => i.id === value.id) === -1) {\r\n this.selectedItems?.push(value);\r\n this.itemInput.nativeElement.value = '';\r\n this.form.get(this.field.property)?.setValue(this.selectedItems);\r\n // @ts-ignore\r\n this.selectedValue.emit(this.selectedItems);\r\n this.multiControl.setValue(null);\r\n }\r\n }\r\n\r\n displayFn(selected: any): string {\r\n return selected ? selected.englishName : undefined;\r\n\r\n }\r\n isSelected(item: any): boolean {\r\n return this.selectedItems?.some(selected => selected.id === item.id); // Use your unique identifier\r\n }\r\n\r\n _allowSelection(option: LookupItem): { [className: string]: boolean } {\r\n return {\r\n 'prevent-selection': option.id === -1,\r\n }\r\n }\r\n\r\n itemNameByLag(item: any): string {\r\n // return item.arabicName;\r\n return this.translateService.getDefaultLang() === 'en' ? item.englishName : item.arabicName\r\n }\r\n\r\n private readonly _columns = ['id','code','englishName','arabicName'];\r\n\r\n filterLookupItems(name: any, trigger: MatAutocompleteTrigger) {\r\n if (trigger) {\r\n trigger.openPanel();\r\n }\r\n if (name === undefined) {\r\n name = '';\r\n }\r\n\r\n const listItems: GetItemsList = buildItemsList(name, this.field.lookupApiPath);\r\n\r\n const filterRequest: FilterRequest = new FilterRequest();\r\n filterRequest.filters = this.field.lookupFilterList || [];\r\n filterRequest.searchStr = name;\r\n this.cascadedIdz = [];\r\n if (this.field.cascadedBy) {\r\n this.form.get(this.field.cascadedBy)?.value?.forEach(a => {\r\n this.cascadedIdz.push(a.id);\r\n })\r\n }\r\n if (this.field.cascadedBy && this.cascadedIdz?.length > 0) {\r\n filterRequest.filters.push(new Filter({\r\n key: 'id',joinObjectName: this.field.cascadedBy, fieldName: this.field.cascadedBy, label: '',\r\n filterType: 'FILED_FILTER', operator: 'IN',\r\n valueObject: this.cascadedIdz\r\n }));\r\n }\r\n\r\n filterRequest.columns = [...this._columns, ...(this.field.extraLookupsColumns ?? [])];\r\n\r\n this.backendService.getLookupItemsByMultiFilter(listItems, filterRequest).subscribe(resp => {\r\n // console.log('result -->', resp);\r\n let items: LookupItem[] = [];\r\n if (resp.valid) {\r\n // resp.body.forEach(r => items.push(r));\r\n items = resp.body.filter(item =>\r\n // (item.englishName.toLowerCase().includes(name.toLowerCase()) ||\r\n // item.arabicName.toLowerCase().includes(name.toLowerCase())) &&\r\n this.selectedItems?.findIndex( i=> i.id ===item.id ) ===-1 );\r\n if (!items?.length) {\r\n this.field.acceptNewItem ?\r\n items?.push(new LookupItem({id: -2, englishName: this.question + name, arabicName: this.question + name})):\r\n items?.push(new LookupItem({id: -1, englishName: 'No match ...', arabicName: 'غير موجود ... '})) ;\r\n\r\n }\r\n } else {\r\n this.field.acceptNewItem ?\r\n items?.push(new LookupItem({id: -2, englishName: this.question + name, arabicName: this.question + name})):\r\n items?.push(new LookupItem({id: -1, englishName: 'No match ...', arabicName: 'غير موجود ... '})) ;\r\n }\r\n this.lookupItems$ = of(items);\r\n });\r\n return;\r\n }\r\n\r\n private patchLookupValue(defaultValue: any) {\r\n if (defaultValue) {\r\n // this.form?.get(this.field.property)?.patchValue(defaultValue);\r\n this.selectedItems = defaultValue;\r\n this.multiControl.setValue(defaultValue);\r\n this.multiControl.patchValue(defaultValue, {emitEvent: true});\r\n }\r\n }\r\n\r\n remove(item: LookupItem) {\r\n const index = this.selectedItems.indexOf(item);\r\n if (index >= 0) {\r\n this.selectedItems.splice(index, 1);\r\n this.form.get(this.field.property).patchValue(this.selectedItems, {emitEvent: true});\r\n }\r\n }\r\n\r\n getLabel() {\r\n return this.translateService.instant(this.field.label);\r\n }\r\n onKeydown(event: KeyboardEvent, autocompleteTrigger: MatAutocompleteTrigger) {\r\n if (event.key === 'Enter') {\r\n this.filterLookupItems('', autocompleteTrigger);\r\n autocompleteTrigger.openPanel();\r\n event.preventDefault();\r\n }\r\n }\r\n getId() {\r\n return this.field.property;\r\n }\r\n}\r\n","<ng-container *ngIf=\"this.field\" class=\"main-multi-auto\">\r\n <div class=\"matField\" (click)=\"this.filterLookupItems('', autocompleteTrigger)\">\r\n <mat-form-field class=\"full-width\" appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label>{{ getLabel() }}</mat-label>\r\n <mat-chip-listbox #chipList [selectable]=\"true\">\r\n <mat-chip\r\n *ngFor=\"let item of selectedItems\"\r\n [removable]=\"true\"\r\n (removed)=\"remove(item)\">\r\n {{ itemNameByLag(item) }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input class=\"chip-input\" type=\"text\"\r\n [id]=\"getId()\" #itemInput\r\n [formControl]=\"multiControl\"\r\n [matAutocomplete]=\"auto\" matInput\r\n [readonly]=\"readonly\"\r\n [required]=\"isRequired\"\r\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\r\n [disabled]=\"field.readonly\"\r\n #autocompleteTrigger=\"matAutocompleteTrigger\"\r\n >\r\n </mat-chip-listbox>\r\n\r\n <mat-icon class=\"arrow_drop_down_autocomplete\">arrow_drop_down</mat-icon>\r\n <mat-autocomplete #auto=\"matAutocomplete\" autoActiveFirstOption [displayWith]=\"displayFn\"\r\n (optionSelected)=\"selected($event.option.value)\">\r\n <ng-container *ngIf=\"!field.readonly\">\r\n <mat-option *ngFor=\"let item of lookupItems$ | async\" [value]=\"item\"\r\n [disabled]=\"field.readonly || isSelected(item)\"\r\n (click)=\"$event.stopPropagation(); autocompleteTrigger.openPanel()\">\r\n {{ itemNameByLag(item) }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n</ng-container>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {FieldInfo, Filter, LookupItem} from \"../../base-model\";\r\nimport {MatAutocomplete, MatAutocompleteTrigger, MatOption} from \"@angular/material/autocomplete\";\r\nimport {Observable, of} from \"rxjs\";\r\nimport {FormControl, FormGroup, ReactiveFormsModule, Validators} from \"@angular/forms\";\r\nimport {BackendService} from \"../../services\";\r\nimport {GetItemsList} from \"../../base-model/get-items-list\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {MatFormFieldModule} from \"@angular/material/form-field\";\r\nimport {MatInputModule} from \"@angular/material/input\";\r\nimport {AsyncPipe, NgClass, NgForOf, NgIf} from \"@angular/common\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {buildItemsList} from \"../../utils/base-utils\";\r\nimport {RequireMatch} from \"../../validators\";\r\nimport {MatButton, MatIconButton} from \"@angular/material/button\";\r\n\r\n@Component({\r\n selector: 'app-auto-complete',\r\n standalone: true,\r\n imports: [\r\n TranslateModule,\r\n MatFormFieldModule,\r\n MatAutocompleteTrigger,\r\n MatInputModule,\r\n ReactiveFormsModule,\r\n NgIf,\r\n MatAutocomplete,\r\n AsyncPipe,\r\n MatOption,\r\n NgClass,\r\n MatIcon,\r\n NgForOf,\r\n MatIconButton,\r\n MatButton,\r\n\r\n ],\r\n templateUrl: './auto-complete.component.html',\r\n styleUrl: './auto-complete.component.css'\r\n})\r\nexport class AutoCompleteComponent implements OnInit, OnChanges {\r\n @ViewChild('autocompleteTrigger') matACTrigger: MatAutocompleteTrigger;\r\n\r\n lookupItems$: Observable<LookupItem[]> | undefined;\r\n lookupItems: LookupItem[] = [];\r\n items: LookupItem[] = [];\r\n\r\n // @ts-ignore\r\n // form: FormGroup;\r\n\r\n @Input()// @ts-ignore\r\n field: FieldInfo;\r\n\r\n @Input()// @ts-ignore\r\n form: FormGroup;\r\n @Input()// @ts-ignore\r\n defaultValue: any;\r\n\r\n @Input()\r\n readonly:boolean = false;\r\n\r\n @Input()\r\n supportingAttributes: any;\r\n\r\n @Output()\r\n selectedValue: EventEmitter<LookupItem> = new EventEmitter();\r\n\r\n @ViewChild(MatAutocompleteTrigger) autocompleteTrigger!: MatAutocompleteTrigger;\r\n\r\n question = 'Would you like to add ?\"';\r\n cascadedId: number = 0;\r\n isRequired:boolean = false;\r\n\r\n private timer: any;\r\n myControl = new FormControl();\r\n\r\n constructor(private backendService: BackendService,\r\n protected translateService: TranslateService,\r\n @Inject('secretsManager') private secretsManager: any) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.buildControl();\r\n this.extractWorkflowGuidedCascading();\r\n this.getLookupData();\r\n // this.myControl.valueChanges.subscribe(v => {\r\n // if (typeof v === 'string') this.filterLookupItems(v, null);\r\n // });\r\n\r\n this.form.get(this.field.property).valueChanges.subscribe(x => {\r\n if (x?.id === -100) {\r\n this.myControl.reset()\r\n }\r\n })\r\n if (this.field.cascadedBy) {\r\n this.form.get(this.field.cascadedByProperty)?.valueChanges.subscribe(v => {\r\n this.cascadedId = this.form.get(this.field.cascadedByProperty).value?.id;\r\n this.lookupItems = [];\r\n this.myControl.setValue(undefined);\r\n this.myControl.patchValue(undefined, {emitEvent: true});\r\n this.form.get(this.field.property)?.setValue(undefined);\r\n this.form.get(this.field.property)?.patchValue(undefined, {emitEvent: true});\r\n this.getLookupData();\r\n });\r\n }\r\n\r\n }\r\n\r\n private extractWorkflowGuidedCascading() {\r\n if (this.supportingAttributes && this.field.workflowCascadingField && this.supportingAttributes[this.field.workflowCascadingField]) {\r\n this.cascadedId = this.supportingAttributes[this.field.workflowCascadingField];\r\n }\r\n }\r\n\r\n private buildControl() {\r\n this.myControl = new FormControl(this.form?.controls[this.field?.property]);\r\n this.backendService.fieldAction$.subscribe( e => {\r\n if (e.property === this.field?.property) {\r\n this.field.readonly = e.fieldInfo.readonly;\r\n this.updateAttributes();\r\n }\r\n });\r\n this.updateAttributes();\r\n\r\n this.myControl.valueChanges.subscribe( v => {\r\n if (typeof v === 'string') {\r\n clearTimeout(this.timer);\r\n this.timer = setTimeout(() => {\r\n this.filterLookupItems(v, null); }, 700);\r\n }\r\n }\r\n );\r\n }\r\n\r\n private updateAttributes() {\r\n this.myControl.enable();\r\n if (this.field.readonly) {\r\n this.myControl.disable();\r\n this.isRequired = false;\r\n } else if (this.field.required) {\r\n this.form?.controls[this.field?.property].setValidators([Validators.required]);\r\n this.myControl.setValidators([Validators.required]);\r\n this.isRequired = true;\r\n }\r\n\r\n if (!this.field.acceptNewItem) {\r\n // @ts-ignore\r\n this.myControl.setValidators(RequireMatch);\r\n }\r\n\r\n this.myControl.setValue(this.form?.get(this.field?.property)?.value);\r\n }\r\n\r\n ngOnChanges({defaultValue}: SimpleChanges): void {\r\n this.patchLookupValue(defaultValue?.currentValue);\r\n }\r\n\r\n private getLookupData() {\r\n if (this.field.cascadedBy && !this.cascadedId) {\r\n } else {\r\n const listItems = buildItemsList('', this.field.lookupApiPath, this.field.cascadedBy);\r\n listItems.columns = ['id','code','englishName','arabicName'];\r\n\r\n this.backendService.getLookupItemsByFilter(listItems, this.cascadedId).subscribe((resp => {\r\n if (resp.valid) {\r\n this.lookupItems = resp.body;\r\n this.lookupItems = [];\r\n resp.body.forEach((r: LookupItem) => this.lookupItems.push(r));\r\n if (!this.form?.get('id')?.value) {\r\n this.patchLookupValue(this.lookupItems?.find(l => l.defaultValue));\r\n }\r\n this.patchLookupValue(this.myControl.value);\r\n }\r\n\r\n }));\r\n }\r\n }\r\n\r\n itemSelected(value: any) {\r\n if (value && value.id !== -1) {\r\n if (value.englishName.indexOf(this.question) === 0) {\r\n value.englishName = value.englishName.substring(this.question.length).split('\"?')[0];\r\n }\r\n if (value.arabicName && value.arabicName.indexOf(this.question) === 0) {\r\n value.arabicName = value.arabicName.substring(this.question.length).split('\"?')[0];\r\n }\r\n this.form.get(this.field.property)?.setValue(value);\r\n // @ts-ignore\r\n this.selectedValue.emit(this.myControl.value);\r\n }\r\n setTimeout(() => {\r\n this.autocompleteTrigger.closePanel();\r\n });\r\n\r\n }\r\n\r\n displayFn(selected: any): string | undefined {\r\n if (selected?.id < 0) {\r\n return null;\r\n }\r\n\r\n if (Array.isArray(selected))\r\n selected = this.defaultValue\r\n return this.translateService.getDefaultLang() === 'en'\r\n ? selected?.englishName\r\n : selected?.arabicName;\r\n }\r\n\r\n\r\n _allowSelection(option: LookupItem): { [className: string]: boolean } {\r\n return {\r\n 'prevent-selection': option.id === -1,\r\n };\r\n }\r\n\r\n itemNameByLag(item: any): string {\r\n return this.translateService.getDefaultLang() === 'en' ? item.englishName : item.arabicName\r\n\r\n }\r\n\r\n filterLookupItems(name: any, trigger: MatAutocompleteTrigger) {\r\n if (this.myControl.enabled) {\r\n if (trigger) {\r\n trigger.openPanel();\r\n }\r\n if (name === undefined) {\r\n name = '';\r\n }\r\n\r\n if (name === '' && !this.myControl.value) {\r\n this.myControl.setValue(undefined);\r\n this.myControl.updateValueAndValidity();\r\n }\r\n\r\n const listItems: GetItemsList = buildItemsList(name, this.field.lookupApiPath, this.field.cascadedBy);\r\n listItems.filters = this.field.lookupFilterList;\r\n this.addLookupFilterByAnotherProperties(listItems);\r\n listItems.columns = ['id','code','englishName','arabicName'];\r\n this.backendService.getLookupItemsByFilter(listItems);\r\n if (this.field.cascadedBy) {\r\n this.cascadedId = this.form.get(this.field.cascadedByProperty).value?.id;\r\n } else {\r\n this.extractWorkflowGuidedCascading();\r\n }\r\n listItems.columns = ['id','code','englishName','arabicName'];\r\n this.backendService.getLookupItemsByFilter(listItems, this.cascadedId).subscribe(resp => {\r\n if (resp.valid) {\r\n this.items = resp.body.filter((item: { id: any; }) => this.myControl.value?.id !== item.id);\r\n if (!this.items?.length) {\r\n this.field.acceptNewItem ?\r\n this.items?.push(new LookupItem({id: -2, englishName: this.question + name, arabicName: this.question + name})) :\r\n this.items?.push(new LookupItem({id: -1, englishName: 'No match ...', arabicName: 'غير موجود ... '}));\r\n }\r\n } else {\r\n if (this.items?.length == 0)\r\n this.field.acceptNewItem && this.backendService.parentForm.get(this.field.cascadedBy).value != null ?\r\n this.items?.push(new LookupItem({id: -2, englishName: this.question + name, arabicName: this.question + name})) :\r\n this.items?.push(new LookupItem({id: -1, englishName: 'No match ...', arabicName: 'غير موجود ... '}));\r\n }\r\n this.lookupItems$ = of(this.items);\r\n });\r\n return;\r\n }\r\n }\r\n\r\n addLookupFilterByAnotherProperties(listItems: GetItemsList) {\r\n const properties = this.field.lookupFilterList;\r\n if (!Array.isArray(properties)) return;\r\n\r\n const newFilters: Filter[] = [];\r\n\r\n for (const prop of properties) {\r\n const fieldValue = this.form?.value?.[prop.fieldName];\r\n const finalValue = typeof fieldValue === 'object' && fieldValue !== null ? fieldValue.code : fieldValue;\r\n if (!finalValue) continue;\r\n\r\n const fieldName =typeof fieldValue === 'object' && fieldValue !== null ? prop.fieldName + \".\" + this.field.flattenBySubAttribute : prop.fieldName;\r\n const filter = new Filter({\r\n fieldType: 'FILED_FILTER',\r\n filterType: undefined,\r\n operator: prop.operator,\r\n valueObject: finalValue,\r\n fieldName: fieldName\r\n });\r\n\r\n newFilters.push(filter);\r\n }\r\n\r\n if (newFilters.length) {\r\n listItems.filters = [...(listItems.filters || []), ...newFilters];\r\n }\r\n listItems.filters = listItems.filters.filter(f => f.valueObject);\r\n }\r\n\r\n private patchLookupValue(defaultValue: any) {\r\n if (defaultValue) {\r\n\r\n // this.form?.get(this.field.property)?.patchValue(defaultValue);\r\n this.myControl.setValue(defaultValue);\r\n this.myControl.patchValue(defaultValue, {emitEvent: true});\r\n }\r\n }\r\n getId() {\r\n return this.field.property;\r\n }\r\n onKeydown(event: KeyboardEvent, autocompleteTrigger: MatAutocompleteTrigger) {\r\n if (event.key === 'Enter') {\r\n this.filterLookupItems('', autocompleteTrigger);\r\n autocompleteTrigger.openPanel();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n closed() {\r\n if (!this.myControl.value){\r\n this.form.get(this.field.property)?.setValue(this.myControl.value);\r\n this.selectedValue.emit(this.myControl.value);\r\n } else if (typeof this.myControl.value === 'string') {\r\n this.myControl.setValue(null);\r\n }\r\n }\r\n}\r\n","<ng-container *ngIf=\"field\" class=\"main-auto-complete\">\r\n <div class=\"mat-field-wrapper\" [formGroup]=\"form\">\r\n\r\n <div class=\"label-and-asterisk-container\">\r\n <span class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n\r\n <mat-form-field class=\"autocomplete-field\" appearance=\"outline\">\r\n <input type=\"text\"\r\n [placeholder]=\"'search_placeholder' | translate\"\r\n [id]=\"getId()\"\r\n [formControl]=\"myControl\"\r\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\r\n [matAutocomplete]=\"auto\"\r\n matInput\r\n [required]=\"isRequired\"\r\n #autocompleteTrigger=\"matAutocompleteTrigger\"\r\n [readonly]=\"readonly\"\r\n >\r\n\r\n <button mat-button matSuffix\r\n color=\"primary\"\r\n class=\"autocomplete-button\"\r\n (click)=\"autocompleteTrigger.openPanel(); filterLookupItems('', autocompleteTrigger); $event.stopPropagation()\"\r\n [attr.id]=\"'autocomplete-trigger-' + field.property\">\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" autoActiveFirstOption [displayWith]=\"displayFn.bind(this)\"\r\n (optionSelected)=\"itemSelected($event.option.value)\"\r\n (closed)=\"closed()\">\r\n <ng-container *ngIf=\"!field.readonly\">\r\n <mat-option *ngIf=\"items.length > 1 && lookupItems$\" [value]=\"null\">{{ \"none\" | translate }}</mat-option>\r\n <mat-option *ngFor=\"let item of lookupItems$ | async\" [value]=\"item\" [ngClass]=\"_allowSelection(item)\">\r\n {{ itemNameByLag(item) }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n\r\n </div>\r\n</ng-container>\r\n","import {\r\n Component, ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n computed,\r\n model,\r\n signal\r\n} from '@angular/core';\r\nimport {FormBuilder, FormGroup, ReactiveFormsModule, FormsModule, FormControl} from \"@angular/forms\";\r\nimport {\r\n MatChip,\r\n MatChipGrid,\r\n MatChipInput,\r\n MatChipInputEvent,\r\n MatChipListbox, MatChipOption, MatChipRemove,\r\n MatChipRow\r\n} from \"@angular/material/chips\";\r\nimport {FieldInfo} from \"../../base-model/field-info\";\r\nimport {ActivatedRoute} from \"@angular/router\";\r\nimport {BackendService} from \"../../services/backend-service\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {PageInfo} from \"../../base-model/page-info\";\r\nimport {COMMA, ENTER, SEMICOLON} from \"@angular/cdk/keycodes\";\r\nimport {LookupItem} from \"../../base-model/lookupItem\";\r\nimport {FieldMessage} from \"../../base-model/api-response\";\r\nimport {\r\n AsyncPipe,\r\n CurrencyPipe,\r\n DatePipe,\r\n KeyValuePipe,\r\n NgForOf,\r\n NgIf, NgStyle,\r\n NgSwitch,\r\n NgSwitchCase,\r\n NgTemplateOutlet\r\n} from \"@angular/common\";\r\nimport {MatError, MatFormFieldModule, MatLabel} from \"@angular/material/form-field\";\r\nimport {MatInputModule} from \"@angular/material/input\";\r\nimport {MatDatepicker, MatDatepickerInput, MatDatepickerToggle, MatDateRangeInput} from \"@angular/material/datepicker\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {CdkTextareaAutosize} from \"@angular/cdk/text-field\";\r\nimport {MatRadioButton, MatRadioGroup} from \"@angular/material/radio\";\r\nimport {MatCheckbox} from \"@angular/material/checkbox\";\r\nimport {MatOption, MatSelect} from \"@angular/material/select\";\r\nimport {MatDivider} from \"@angular/material/divider\";\r\nimport {NgxJsonViewerModule} from \"ngx-json-viewer\";\r\nimport {CKEditorModule} from \"@ckeditor/ckeditor5-angular\";\r\nimport {NgxMatIntlTelInputComponent} from \"ngx-mat-intl-tel-input\";\r\nimport {MultiAutoCompleteComponent} from \"../multi-auto-complete/multi-auto-complete.component\";\r\nimport {AutoCompleteComponent} from \"../auto-complete/auto-complete.component\";\r\nimport {MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger} from \"@angular/material/autocomplete\";\r\nimport {BehaviorSubject, map} from \"rxjs\";\r\nimport {LiveAnnouncer} from \"@angular/cdk/a11y\";\r\nimport {buildFormFields, extractFieldName} from \"../../utils/base-utils\";\r\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\"\r\nimport moment, {Moment} from \"moment/moment\";\r\nimport {MatCell, MatCellDef, MatHeaderCell, MatHeaderCellDef} from \"@angular/material/table\";\r\nimport {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE} from \"@angular/material/core\";\r\nimport {MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter} from \"@angular/material-moment-adapter\";\r\nexport const DD_MM_YYYY_Format = {\r\n parse: { dateInput: 'DD/MM/YYYY' },\r\n display: {\r\n dateInput: 'DD/MM/YYYY',\r\n monthYearLabel: 'MMM YYYY',\r\n dateA11yLabel: 'DD/MM/YYYY',\r\n monthYearA11yLabel: 'MMMM YYYY',\r\n },\r\n};\r\n@Component({\r\n selector: 'app-base-form-canvas',\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n NgSwitch,\r\n FormsModule,\r\n NgForOf,\r\n NgTemplateOutlet,\r\n KeyValuePipe,\r\n NgIf,\r\n MatLabel,\r\n MatFormFieldModule,\r\n TranslateModule,\r\n MatInputModule,\r\n MatDatepickerInput,\r\n MatDatepicker,\r\n MatDatepickerToggle,\r\n MatError,\r\n NgSwitchCase,\r\n MatIcon,\r\n MatAutocomplete,\r\n MatAutocompleteTrigger,\r\n MatChip,\r\n CdkTextareaAutosize,\r\n MatRadioGroup,\r\n MatCheckbox,\r\n MatRadioButton,\r\n MatSelect,\r\n MatOption,\r\n MatDivider,\r\n DatePipe,\r\n NgxJsonViewerModule,\r\n CurrencyPipe,\r\n CKEditorModule,\r\n NgxMatIntlTelInputComponent,\r\n MatChipGrid,\r\n MatChipInput,\r\n MatChipRow,\r\n MatChipListbox,\r\n MatChipOption,\r\n MultiAutoCompleteComponent,\r\n AutoCompleteComponent,\r\n MatDateRangeInput,\r\n AsyncPipe,\r\n MatChipRemove,\r\n MatCell,\r\n MatCellDef,\r\n MatHeaderCell,\r\n MatHeaderCellDef,\r\n NgStyle\r\n ],\r\n templateUrl: './base-form-canvas.component.html',\r\n styleUrl: './base-form-canvas.component.css',\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS]\r\n },\r\n { provide: MAT_DATE_FORMATS, useValue: DD_MM_YYYY_Format },\r\n { provide: MAT_DATE_LOCALE, useValue: 'en-GB' }\r\n ]\r\n\r\n})\r\nexport class BaseFormCanvasComponent implements OnInit, OnChanges, OnDestroy {\r\n public Editor = ClassicEditor;\r\n public hide: boolean = true;\r\n dateViewMode: 'month' | 'year' | 'multi-year' = 'month';\r\n @Input()\r\n pageInfo!: PageInfo;\r\n\r\n\r\n @Input()\r\n currency: string;\r\n\r\n @Input()// @ts-ignore\r\n fields: FieldInfo[] = [];\r\n\r\n @Input()// @ts-ignore\r\n errors: FieldMessage[] = [];\r\n\r\n @Input()\r\n workflowEditableFields: string[]=[];\r\n @Input()\r\n isWorkflowEditableManaged: boolean = false;\r\n\r\n @Input()\r\n supportingAttributes: any;\r\n\r\n @Input()\r\n editable: boolean = false;\r\n\r\n // When true, emit formUpdated on every value change. Default is false to avoid\r\n // noisy emissions for all consumers. Item-line-editor will enable this explicitly.\r\n @Input()\r\n emitOnValueChanges: boolean = false;\r\n\r\n @Input()\r\n item: any = {};\r\n\r\n _defaults: any = {};\r\n\r\n @Output() attachmentEmitter: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output() actionEmitter: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\r\n @Output()\r\n formUpdated: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();\r\n\r\n @Output()\r\n hyperTextEvent: EventEmitter<boolean> = new EventEmitter();\r\n\r\n\r\n formParam!: FormGroup;\r\n screenFields = new Map<number, FieldInfo[]>();\r\n removable = true;\r\n selectable = true;\r\n addOnBlur = true;\r\n\r\n readonly separatorKeysCodes: number[] = [ENTER, COMMA, SEMICOLON];\r\n\r\n\r\n public isPending: boolean = false;\r\n public isNew: boolean = false;\r\n itemId: number | undefined;\r\n\r\n equationOperators : string[] = ['+','-','(' ];\r\n @Input() equationSuggestedFields: { name: string, id: string }[] = [];\r\n allEquationFields: BehaviorSubject<string[]>;\r\n readonly equationValues = signal<string[]>([]);\r\n currentEquationValue = model<string>('');\r\n\r\n readonly equationFilteredFields = computed(() => {\r\n const currentEquationValue = this.currentEquationValue().toLowerCase();\r\n return this.allEquationFields.pipe(\r\n map(fields =>\r\n currentEquationValue ? fields?.filter(field => field.toLowerCase().includes(currentEquationValue)) : fields?.slice()\r\n )\r\n );\r\n });\r\n @ViewChild('EquationValueInput') fieldsInput: ElementRef<HTMLInputElement>;\r\n\r\n set defaults(value: any | undefined) {\r\n // this.backendService._defaults = value;\r\n this._defaults = value;\r\n this.buildForm();\r\n // this.myCallback = value;\r\n }\r\n\r\n get defaults(): any | undefined {\r\n // this.myCallback;\r\n return this._defaults;\r\n // return this.backendService._defaults;\r\n }\r\n\r\n constructor(protected translateService: TranslateService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected backendService: BackendService,\r\n private fb: FormBuilder,\r\n private announcer: LiveAnnouncer) {\r\n ClassicEditor.defaultConfig = {\r\n toolbar: {\r\n items: ['heading', '|', 'bold', 'italic', '|', 'bulletedList', 'numberedList']\r\n },\r\n image: {\r\n toolbar: ['imageStyle:side', '|', 'imageTextAlternative']\r\n },\r\n table: {\r\n contentToolbar: [ 'tableColumn', 'tableRow', 'mergeTableCells' ]\r\n },\r\n language: 'en'\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n if(this.item && this.item.fieldValue){\r\n this.equationValues.update(value => this.item.fieldValue)\r\n }\r\n this.defaults = this.item;\r\n this.extractLables();\r\n this.buildForm();\r\n this.activatedRoute.data.subscribe(data => {\r\n this.isPending = data['mode'] === 'pending';\r\n this.isNew = data['mode'] === 'new';\r\n });\r\n // this.authService.summaryPanelState$.next(Constants.SUMMARY_PANEL_CLOSED);\r\n // this.defaults = {};\r\n // this.invoiceQInit();\r\n this.allEquationFields = new BehaviorSubject<string[]>([]);\r\n\r\n this.updateEquationOptions();\r\n }\r\n\r\n formatTimeToDate(v: any){\r\n const fromTime: Date = new Date();\r\n if (v) {\r\n let split = v.split(\":\");\r\n fromTime.setHours(split[0], split[1]);\r\n }\r\n return new Date(fromTime.getTime());\r\n }\r\n\r\n patchLookupValue($event: LookupItem, fieldName: string) {\r\n if ($event?.id !== -1 && this.defaults) {\r\n // @ts-ignore\r\n this.defaults[fieldName] = this.formParam.get(fieldName).value;\r\n }\r\n }\r\n getBankName(fieldName: string) {\r\n //TODO Batool do we need this here ?\r\n if (this.formParam.get(fieldName).value?.length > 10 && !isNaN(this.formParam.get(fieldName).value) ) {\r\n return ' / ' + this.translateService.instant('BANK.' + this.formParam.get(fieldName).value?.substr(4, 4));\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n patchMultiSelectValue($event: LookupItem[], fieldName: string) {\r\n if ($event?.length >= 0 && this.defaults) {\r\n this.defaults[fieldName] = this.formParam.get(fieldName).value;\r\n }\r\n }\r\n\r\n ngOnChanges({item, errors, fields}: SimpleChanges): void {\r\n errors?.currentValue?.forEach((msg: FieldMessage) => {\r\n this.formParam.get(msg.fieldName)?.setErrors({serverError: msg.message});\r\n });\r\n\r\n if (item?.currentValue && !item.isFirstChange()){\r\n this.defaults = item.currentValue;\r\n }\r\n\r\n if (fields?.currentValue && !fields.isFirstChange()){\r\n this.buildForm();\r\n }\r\n }\r\n\r\n showField(item: any, field: any) {\r\n return (item.id || (!item.id && !field.updateOnly)) && field.visible\r\n }\r\n\r\n workflowEditableField(field: { property: string; }) {\r\n const x = this.isWorkflowEditableManaged ? this.workflowEditableFields?.findIndex(d => d === field.property) > -1 : true;\r\n return x;\r\n }\r\n\r\n showMultiSelectValuesAsReadonly(field: FieldInfo) {\r\n const viewProp = this.translateService.getDefaultLang() === 'en' ? 'englishName' : 'arabicName';\r\n return this.extractFieldName(this.defaults,field.property)?.map((a: { [x: string]: any; }) => a[viewProp]);\r\n }\r\n\r\n splitReadonly(values: any) {\r\n return !values || values === '' ? []: values.split(';');\r\n }\r\n\r\n\r\n referenceAttributeTrue(fieldName: string, attribute: any) {\r\n // return this.authService.referenceAttributeTrue(fieldName, this.pageInfo.processId, attribute);\r\n }\r\n\r\n translateLable(itemElement: any) {\r\n return this.translateService.instant(itemElement)\r\n }\r\n\r\n buildForm() {\r\n if (!this.fields || this.fields.length === 0 || !this.defaults) return;\r\n\r\n if (!this.formParam) {\r\n this.formParam = this.fb.group(buildFormFields(this.fields, this.defaults));\r\n // Emit initial form reference\r\n this.formUpdated.next(this.formParam);\r\n // Emit on every value change so parent components can react live\r\n if (this.emitOnValueChanges) {\r\n this.formParam.valueChanges.subscribe(() => {\r\n this.formUpdated.emit(this.formParam);\r\n });\r\n }\r\n return;\r\n }\r\n\r\n const patchValues: any = {};\r\n for (const field of this.fields) {\r\n if (field.readonly) {\r\n this.formParam.get(field.property)?.disable({ emitEvent: false });\r\n } else {\r\n this.formParam.get(field.property)?.enable({ emitEvent: false });\r\n }\r\n if (field.type !== 'spacer') {\r\n patchValues[field.property] = extractFieldName(this.defaults, field.property);\r\n }\r\n }\r\n\r\n this.formParam.patchValue(patchValues, { emitEvent: false });\r\n }\r\n\r\n labelKey(column: any) {\r\n const configuredKey = column.label ? column.label : column.property\r\n return configuredKey.startsWith(this.pageInfo.labelsSection) ? `${configuredKey}` : `${this.pageInfo.labelsSection}.${configuredKey}`;\r\n }\r\n\r\n labelKeyPlaceHolder(column: any) {\r\n const configuredKey = column.placeholder ? column.placeholder : column.property\r\n return configuredKey.startsWith(this.pageInfo.labelsSection) ? `${configuredKey}` : `${this.pageInfo.labelsSection}.${configuredKey}`;\r\n }\r\n\r\n getErrors(prop: string): string {\r\n const control = this.formParam.get(prop);\r\n if (!control || control.disabled) return '';\r\n\r\n const field = this.fields.find(f => f.property === prop);\r\n\r\n if (!field?.validationMessages) {\r\n if (control.value && control.status !== 'VALID' && this.getFirstErrorKey) {\r\n return this.getFirstErrorKey(prop);\r\n }\r\n return '';\r\n }\r\n\r\n if (control.invalid) {\r\n const errors = control.errors || {};\r\n const prefix = this.pageInfo.labelsSection + \".\";\r\n\r\n if (errors['required']) return prefix + 'REQUIRED';\r\n if (errors['min']) return prefix + (field.validationMessages?.min || 'NUMBER_MIN');\r\n if (errors['max']) return prefix + (field.validationMessages?.max || 'NUMBER_MAX');\r\n if (errors['maxlength']) return prefix + (field.validationMessages?.maxlength || 'MAX_LENGTH');\r\n if (errors['decimalMin']) return prefix + (field.validationMessages?.decimalMin || 'DECIMAL_MIN');\r\n if (errors['decimalMax']) return prefix + (field.validationMessages?.decimalMax || 'DECIMAL_MAX');\r\n if (errors['pattern']) return prefix + (field.validationMessages?.pattern || 'INVALID_FORMAT');\r\n if (errors['invalidMathExpression']) return prefix + 'INVALID_MATH';\r\n if (errors['serverError']) return prefix + errors['serverError'];\r\n\r\n return prefix + 'INVALID_VALUE';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n\r\n getFirstErrorKey(prop: string): string {\r\n const errors = this.formParam.get(prop)?.errors;\r\n\r\n if (!errors || Object.keys(errors).length === 0) {\r\n return errors?.['serverError'] || 'INVALID_FORMAT';\r\n }\r\n\r\n return Object.keys(errors)[0];\r\n }\r\n\r\n public getCountryCodeList() {\r\n return ['af', 'ax', 'al', 'dz', 'as', 'ad', 'ao', 'ai', 'aq', 'ag', 'ar', 'am', 'aw', 'au', 'at', 'az',\r\n 'bs', 'bh', 'bd', 'bb', 'by', 'be', 'bz', 'bj', 'bm', 'bt', 'bo', 'ba', 'bw', 'bv', 'br', 'io', 'bn',\r\n 'bg', 'bf', 'bi', 'kh', 'cm', 'ca', 'cv', 'ky', 'cf', 'td', 'cl', 'cn', 'cx', 'cc', 'co', 'km', 'cg',\r\n 'cd', 'ck', 'cr', 'ci', 'hr', 'cu', 'cy', 'cz', 'dk', 'dj', 'dm', 'do', 'ec', 'eg', 'sv', 'gq', 'er',\r\n 'ee', 'et', 'fk', 'fo', 'fj', 'fi', 'fr', 'gf', 'pf', 'tf', 'ga', 'gm', 'ge', 'de', 'gh', 'gi', 'gr',\r\n 'gl', 'gd', 'gp', 'gu', 'gt', 'gg', 'gn', 'gw', 'gy', 'ht', 'hm', 'va', 'hn', 'hk', 'hu', 'is', 'in',\r\n 'id', 'ir', 'iq', 'ie', 'im', 'it', 'jm', 'jp', 'je', 'jo', 'kz', 'ke', 'ki', 'kr', 'kw', 'kg', 'la',\r\n 'lv', 'lb', 'ls', 'lr', 'ly', 'li', 'lt', 'lu', 'mo', 'mk', 'mg', 'mw', 'my', 'mv', 'ml', 'mt', 'mh',\r\n 'mq', 'mr', 'mu', 'yt', 'mx', 'fm', 'md', 'mc', 'mn', 'me', 'ms', 'ma', 'mz', 'mm', 'na', 'nr', 'np',\r\n 'nl', 'an', 'nc', 'nz', 'ni', 'ne', 'ng', 'nu', 'nf', 'mp', 'no', 'om', 'pk', 'pw', 'ps', 'pa', 'pg',\r\n 'py', 'pe', 'ph', 'pn', 'pl', 'pt', 'pr', 'qa', 're', 'ro', 'ru', 'rw', 'bl', 'sh', 'kn', 'lc', 'mf',\r\n 'pm', 'vc', 'ws', 'sm', 'st', 'sa', 'sn', 'rs', 'sc', 'sl', 'sg', 'sk', 'si', 'sb', 'so', 'za', 'gs',\r\n 'es', 'lk', 'sd', 'sr', 'sj', 'sz', 'se', 'ch', 'sy', 'tw', 'tj', 'tz', 'th', 'tl', 'tg', 'tk', 'to',\r\n 'tt', 'tn', 'tr', 'tm', 'tc', 'tv', 'ug', 'ua', 'ae', 'gb', 'us', 'um', 'uy', 'uz', 'vu', 've', 'vn',\r\n 'vg', 'vi', 'wf', 'eh', 'ye', 'zm', 'zw'];\r\n }\r\n\r\n\r\n friendlyName(fullPath: string , subPath: string , item: string){\r\n return fullPath.substring(0, fullPath.indexOf(subPath)) + item ;\r\n }\r\n\r\n showValue(defaults, field){\r\n return this.friendlyName(field.label , field.property , defaults[field.property]);\r\n }\r\n\r\n showError(prop: string) {\r\n const CONTROL = this.formParam?.get(prop);\r\n return (CONTROL?.value || CONTROL?.value === 0) && CONTROL?.status === 'INVALID';\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.defaults = null;\r\n }\r\n\r\n private extractLables() {\r\n this.fields.forEach(f => {\r\n if (f.visible) {\r\n f.label = this.labelKey(f);\r\n\r\n if (!this.screenFields.has(f.row)) {\r\n this.screenFields.set(f.row, []);\r\n }\r\n this.screenFields.get(f.row)!.push(f);\r\n\r\n if (f.cascadedBy) {\r\n this.formParam?.get(f.cascadedBy)?.valueChanges.subscribe(() => {\r\n this.formParam?.get(f.property)?.patchValue(null);\r\n })\r\n }\r\n }\r\n });\r\n\r\n for (let i = 1; i < this.screenFields.size; i++) {\r\n this.calcFlexSize(i);\r\n }\r\n // console.log(this.screenFields)\r\n }\r\n\r\n private calcFlexSize(i: number){\r\n // Preserve explicit fieldSize values only. For fields without fieldSize, allow\r\n // the layout to auto-size via flex (handled in the template/CSS).\r\n // Intentionally do nothing here so that unspecified fields remain flexible.\r\n return;\r\n }\r\n\r\n getCurrencyPattern(field: FieldInfo) {\r\n // const decimalPlaces = this.authService?.myCurrencies?.find(c => c.key === this.formParam.get(field.currency)?.value)?.currencyNumOfDecimalPattern || 3;\r\n const decimalPlaces = 3;\r\n return '^\\\\d*(?:[.,]\\\\d{1,' + decimalPlaces + '})?$';\r\n }\r\n\r\n splittedChips(form: FormGroup, fieldName: string):string[] {\r\n return form.get(fieldName).value === '' ? []: form.get(fieldName).value.trim().split(';');\r\n }\r\n\r\n\r\n fixArabicNumbers(str: any) {\r\n // if(typeof str === 'string') {\r\n // str = str.replace(/([٠١٢٣٤٥٦٧٨٩])|([۰۱۲۳۴۵۶۷۸۹])/g, (m, $1, $2) => m.charCodeAt(0) - ($1 ? 1632 : 1776));\r\n // }\r\n // console.log(str);\r\n }\r\n\r\n listShowValue(defaults: any, field: FieldInfo) {\r\n return defaults[field.property] ? this.showValue(defaults, field) : '';\r\n }\r\n\r\n removeChipsItem(form: FormGroup, fieldName: string, idx: number) {\r\n const emails = this.splittedChips(form, fieldName);\r\n if (emails.length >= 1){\r\n emails.splice(idx,1);\r\n }\r\n let cleanedEmails = emails.join(\";\");\r\n form.get(fieldName).setValue(cleanedEmails);\r\n }\r\n\r\n extractFieldName(element: any, property: string) {\r\n if (property?.includes('.')) {\r\n return property.split('.').reduce((acc, part) => acc && acc[part], element);\r\n } else {\r\n return element[property];\r\n }\r\n }\r\n\r\n getMultiValue(field: FieldInfo) {\r\n return this.formParam.get(field.property)?.value;\r\n }\r\n\r\n private validateEmail(email) {\r\n var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(String(email).toLowerCase());\r\n }\r\n\r\n addEmailToChips(event: MatChipInputEvent, form: FormGroup, fieldName: string) {\r\n\r\n const input = event.input;\r\n const value = event.value;\r\n const items = value.split(';');\r\n // value.split(' ');\r\n items.forEach(itm => {\r\n if (this.validateEmail((itm || '').trim())) {\r\n const x = this.splittedChips(form, fieldName);\r\n x.push(itm);\r\n form.get(fieldName).patchValue(x.join(';'));\r\n if (input) {\r\n input.value = '';\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n extractJsonFieldName(defaults: any, property: string) {\r\n const x= this.extractFieldName(defaults, property);\r\n if (x?.length > 0)\r\n return JSON.parse(x);\r\n else return '{}';\r\n }\r\n\r\n getOptionValue(item: any) {\r\n const value = typeof item === 'object' ?\r\n this.translateService.getDefaultLang() === 'en' ? item.englishName : item.arabicName\r\n : item;\r\n return value;\r\n }\r\n\r\n getHyperTextEvent() {\r\n this.hyperTextEvent.emit(true);\r\n }\r\n\r\n add(event: MatChipInputEvent): void {\r\n const value = (event.value || '').trim();\r\n if (value) {\r\n if (this.equationOperators.includes(value) || !this.equationValues().includes(value)) {\r\n this.equationValues.update(equationValues => [...equationValues, value]);\r\n }\r\n }\r\n\r\n this.fieldsInput.nativeElement.value = '';\r\n this.currentEquationValue.set('');\r\n this.updateEquationOptions();\r\n\r\n }\r\n\r\n remove(item: string, index: number): void {\r\n this.equationValues.update(equationValues => {\r\n if (index < 0) {\r\n return equationValues;\r\n }\r\n\r\n equationValues.splice(index, 1);\r\n this.announcer.announce(`Removed ${item}`);\r\n return [...equationValues];\r\n });\r\n this.updateEquationOptions();\r\n }\r\n\r\n selected(event: MatAutocompleteSelectedEvent): void{\r\n const selectedValue = event.option.viewValue.trim();\r\n\r\n if (!this.equationOperators.includes(selectedValue) && !this.equationValues().includes(selectedValue)) {\r\n this.equationValues.update(equationValues => [...equationValues, selectedValue]);\r\n } else if (this.equationOperators.includes(selectedValue)) {\r\n this.equationValues.update(equationValues => [...equationValues, selectedValue]);\r\n }\r\n\r\n this.currentEquationValue.set('');\r\n event.option.deselect();\r\n this.fieldsInput.nativeElement.value = '';\r\n this.updateEquationOptions();\r\n }\r\n\r\n updateEquationOptions(){\r\n this.reflectEquationValueOnForm();\r\n\r\n let updatedFields: string[];\r\n if (this.equationValues().length === 0) {\r\n updatedFields = this.getNamesFromSuggestedEquationFields();\r\n } else {\r\n let lastElement = this.equationValues()[this.equationValues().length - 1];\r\n if (this.equationOperators.includes(lastElement)) {\r\n updatedFields = this.getNamesFromSuggestedEquationFields();\r\n } else {\r\n updatedFields = this.equationOperators;\r\n }\r\n }\r\n // console.log('*****', updatedFields);\r\n this.allEquationFields.next(updatedFields);\r\n }\r\n\r\n getNamesFromSuggestedEquationFields(): string[] {\r\n return this.equationSuggestedFields?.map(field => field.name);\r\n }\r\n\r\n reflectEquationValueOnForm() {\r\n if (this.formParam && this.formParam.get('fieldValue')) {\r\n this.formParam.get('fieldValue').setValue(this.equationValues());\r\n } else {\r\n // console.log('Form or fieldValue is not available.');\r\n }\r\n }\r\n\r\n checkEquation(field: FieldInfo, $event: Event) {\r\n // console.log('$event', $event);\r\n // try {\r\n // evaluate(equation.replace(/[a-zA-Z0-9]+/g, '1')); // Replace variables with dummy values\r\n // this.formGroups[index].get('xyz').setErrors(null);\r\n // console.log('valid ', equation)\r\n // } catch (e) {\r\n // this.formGroups[index].get('xyz').setErrors({serverError: 'incomplete '});\r\n // console.log('bad ', equation)\r\n // }\r\n }\r\n\r\n getView(field): 'month' | 'year' | 'multi-year' {\r\n return field.pattern || 'month';\r\n }\r\n\r\n setMonthAndYear(normalizedMonthAndYear: Moment, picker: MatDatepicker<Moment>, field) {\r\n console.log('field.pattern', field.pattern)\r\n if (field.pattern === 'multi-year') {\r\n console.log('hi')\r\n const date = new FormControl(moment());\r\n const ctrlValue = date.value;\r\n ctrlValue.year(normalizedMonthAndYear.year());\r\n ctrlValue.month(1);\r\n ctrlValue.dayOfYear(1);\r\n this.formParam.get(field.property).setValue(ctrlValue)\r\n picker.close();\r\n }\r\n }\r\n}\r\n\r\n","<div class=\"main-form-canvas\">\r\n <div class=\"form-wrapper\">\r\n <ng-container *ngIf=\"defaults\">\r\n <ng-container *ngIf=\"editable; else readonlyView\" class=\"form-container\">\r\n <form [formGroup]=\"formParam\" class=\"form-content\">\r\n <div class=\"form-row\">\r\n <div class=\"form-column\">\r\n <ng-container *ngFor=\"let row of screenFields | keyvalue\">\r\n <div class=\"row-container\">\r\n <ng-container *ngFor=\"let field of row.value\">\r\n <div class=\"field-column\" [style.flex]=\"field.fieldSize ? ('0 0 ' + field.fieldSize + '%') : '1 1 0'\">\r\n <ng-container [ngSwitch]=\"field.type\">\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n\r\n <mat-form-field appearance=\"outline\">\r\n <input matInput\r\n [matDatepicker]=\"picker\"\r\n [value]=\"formParam.get(field.property)?.value\"\r\n (dateChange)=\"formParam.get(field.property).setValue($event.value)\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n formControlName=\"{{field.property}}\"\r\n [required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n\r\n <mat-datepicker #picker\r\n [startView]=\"getView(field)\"\r\n (yearSelected)=\"setMonthAndYear($event, picker, field)\"\r\n panelClass=\"example-month-picker\">\r\n </mat-datepicker>\r\n\r\n <mat-error *ngIf=\"showError(field.property)\" aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'phone-number'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container class=\"custom-ngx-mat-intl-tel-input\" *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <div class=\"phone-input-wrapper\">\r\n <ngx-mat-intl-tel-input\r\n formControlName=\"{{ field.property }}\"\r\n [inputPlaceholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [preferredCountries]=\"['qa']\"\r\n [enablePlaceholder]=\"true\"\r\n [enableSearch]=\"true\"\r\n [onlyCountries]=\"getCountryCodeList()\"\r\n [required]=\"field.required\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n </ngx-mat-intl-tel-input>\r\n </div>\r\n\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'iban-text'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"textReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [required]=\"field.required\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'password'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input matInput\r\n class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n [type]=\"hide && !field.disabled ? 'password' : 'text'\"\r\n [readonly]=\"field.readonly\"\r\n [required]=\"field.required\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n <!-- <mat-icon matSuffix-->\r\n <!-- (click)=\"hide = !hide\">-->\r\n <!-- {{ hide ? 'visibility_off' : 'visibility' }}-->\r\n <!-- </mat-icon>-->\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"textReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-icon *ngIf=\"field.showSearchIcon\" matPrefix>search</mat-icon>\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [required]=\"field.required\"\r\n (keyup)=\"fixArabicNumbers($event.target)\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'chip-list'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n\r\n <mat-chip-grid [attr.aria-labelledby]=\"'label-' + field.property\"\r\n formControlName=\"{{ field.property }}\">\r\n <mat-chip-row\r\n *ngFor=\"let mail of splittedChips(formParam, field.property); let idx = index\"\r\n [removable]=\"removable\"\r\n (removed)=\"removeChipsItem(formParam, field.property, idx)\">\r\n {{ mail }}\r\n <mat-icon matChipRemove *ngIf=\"removable\">cancel</mat-icon>\r\n </mat-chip-row>\r\n\r\n <input [attr.aria-labelledby]=\"'label-' + field.property\" [matChipInputFor]=\"null\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"addOnBlur\"\r\n (matChipInputTokenEnd)=\"addEmailToChips($event, formParam, field.property)\">\r\n </mat-chip-grid>\r\n <mat-error id=\"error-{{ field.property }}\" *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'amount'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"amountReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n type=\"number\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [required]=\"field.required\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'sequence'\">\r\n <ng-container\r\n *ngIf=\"referenceAttributeTrue(field.property, 'autoGenerated'); else noSequence\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"true\"\r\n [disabled]=\"true\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #noSequence>\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n [readonly]=\"false\"\r\n [disabled]=\"false\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [required]=\"field.required\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-template>\r\n\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"textareaReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <textarea cdkFocusInitial\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"3\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-describedby]=\"'error-' + field.property\"\r\n [readonly]=\"field.readonly\"\r\n [required]=\"field.required\"></textarea>\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"numberReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n type=\"number\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-describedby]=\"'error-' + field.property\"\r\n [required]=\"field.readonly ? false : field.required\"\r\n [readonly]=\"field.readonly\"\r\n [pattern]=\"field.pattern\">\r\n <mat-error id=\"error-{{ field.property }}\" *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"timeReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input\r\n matInput\r\n class=\"app-input\"\r\n formControlName=\"{{ field.property }}\"\r\n type=\"time\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-describedby]=\"'error-' + field.property\"\r\n [required]=\"field.required\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"checkboxReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <mat-checkbox\r\n appearance=\"outline\"\r\n style=\"padding-bottom: 14px; padding-top: 14px;\"\r\n [disabled]=\"field.readonly\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n formControlName=\"{{ field.property }}\">\r\n {{ field.label! | translate }}\r\n <mat-error *ngIf=\"showError(field.property)\" aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-checkbox>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'color-picker'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center\">\r\n <h4 style=\"margin-right: 10px\">{{ field.label! | translate }}</h4>\r\n <input\r\n ejs-colorpicker\r\n type=\"color\"\r\n id=\"colorpicker\"\r\n formControlName=\"{{ field.property }}\"\r\n [attr.aria-label]=\"field.label! | translate\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n />\r\n </div>\r\n <mat-error *ngIf=\"showError(field.property)\" aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'radio-button'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"radioButtonReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <mat-radio-group\r\n formControlName=\"{{field.property}}\"\r\n class=\"app-radio\"\r\n [attr.aria-label]=\"field.label! | translate\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\">\r\n <div class=\"field-row\">\r\n <div class=\"field-label\">\r\n <span class=\"custom-label\">{{ field.label! | translate }}</span>\r\n </div>\r\n <div class=\"field-input\">\r\n <div class=\"radio-group-custom\">\r\n <mat-radio-button\r\n *ngFor=\"let option of field.listOptions\"\r\n [value]=\"option\"\r\n [attr.aria-labelledby]=\"option\">\r\n {{ option | translate }}\r\n </mat-radio-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-error\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-radio-group>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"listReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\r\n <mat-select\r\n formControlName=\"{{field.property}}\"\r\n [attr.aria-label]=\"field.label! | translate\"\r\n [attr.aria-required]=\"field.required\"\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [disabled]=\"field.readonly\"\r\n [multiple]=\"field.multi || false\"\r\n [required]=\"field.readonly ? false : field.required\"\r\n [(value)]=\"field.defaultListOption\">\r\n <ng-container *ngIf=\"field.translate; else lookup_no_translation\">\r\n <mat-option\r\n *ngFor=\"let item of field.listOptions; let i = index\"\r\n [value]=\"item\">\r\n {{ friendlyName(field.label, field.property, item) | translate }}\r\n </mat-option>\r\n </ng-container>\r\n <ng-template #lookup_no_translation>\r\n <mat-option\r\n *ngFor=\"let item of field.listOptions\"\r\n [value]=\"item\">\r\n {{ getOptionValue(item) }}\r\n </mat-option>\r\n </ng-template>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'attachment'\" [formGroup]=\"formParam\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <!-- Uncomment and use the attachment control when ready -->\r\n <!-- <ag-attachment-control\r\n [allowMulti]=\"field.multi\"\r\n [attachmentDefaultExternal]=\"pageInfo?.attachmentDefaultExternal\"\r\n [supportedTypes]=\"field.supportedTypes\"\r\n [buttonType]=\"field.buttonType\"\r\n [hideListOfFiles]=\"field.hideFiles\"\r\n (filesList)=\"updateFilesList($event, field)\"\r\n (actionExecuted)=\"actionExecuted($event, field)\"\r\n style=\"margin-top: 5px\"\r\n label=\"{{field.label! | translate}}\">\r\n </ag-attachment-control> -->\r\n <mat-error class=\"iq-error\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'lookup'\" [formGroup]=\"formParam\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"lookupReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <app-auto-complete\r\n [form]=\"formParam\"\r\n [field]=\"field\"\r\n [supportingAttributes]=\"supportingAttributes\"\r\n [defaultValue]=\"this.formParam.get(field.property)?.value\"\r\n (selectedValue)=\"patchLookupValue($event, field.property)\">\r\n <mat-error\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </app-auto-complete>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'currency'\" [formGroup]=\"formParam\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"currencyReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <!-- Uncomment and use the currency control when ready -->\r\n <!-- <app-currency\r\n [form]=\"formParam\"\r\n [field]=\"field\"\r\n [defaultValue]=\"this.formParam.get(field.property)?.value\"\r\n (selectedValue)=\"patchCurrencyValue($event, field.property)\">\r\n </app-currency> -->\r\n <mat-error\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'multi-select'\" [formGroup]=\"formParam\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"multiSelectReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <app-multi-auto-complete\r\n [form]=\"formParam\"\r\n [field]=\"field\"\r\n [defaultValue]=\"getMultiValue(field)\"\r\n (selectedValue)=\"patchMultiSelectValue($event, field.property)\">\r\n <mat-error\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </app-multi-auto-complete>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'rich-text'\" [formGroup]=\"formParam\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <!-- Uncomment and use the rich text editor when ready -->\r\n <!-- <ckeditor\r\n [editor]=\"Editor\"\r\n [disabled]=\"field.readonly\"\r\n formControlName=\"{{field.property}}\">\r\n </ckeditor> -->\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'divider'\">\r\n <mat-divider></mat-divider>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'hyper-text'\">\r\n <div>\r\n <mat-label\r\n (click)=\"getHyperTextEvent()\"\r\n class=\"hyper-link\">\r\n {{ field.label! | translate }}\r\n </mat-label>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'section-title'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <div class=\"hrdivider-mid\">\r\n <span>{{ field.label | translate }}</span>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'equation-builder'\">\r\n <ng-container *ngIf=\"showField(defaults, field)\">\r\n <ng-container *ngIf=\"!workflowEditableField(field)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"textReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"workflowEditableField(field)\">\r\n <div class=\"label-and-asterisk-container\">\r\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n <mat-form-field appearance=\"outline\">\r\n <input class=\"app-input\" dir=\"ltr\"\r\n formControlName=\"{{ field.property }}\"\r\n matInput\r\n [placeholder]=\"field.placeholder ? (labelKeyPlaceHolder(field) | translate) : ''\"\r\n [readonly]=\"field.readonly\"\r\n [required]=\"field.required\"\r\n [attr.aria-required]=\"field.required\"\r\n [attr.aria-invalid]=\"showError(field.property)\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"'error-' + field.property\">\r\n <mat-error\r\n id=\"error-{{ field.property }}\"\r\n *ngIf=\"showError(field.property)\"\r\n aria-live=\"assertive\">\r\n {{ getErrors(field.property) | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- <ng-container *ngSwitchCase=\"'equation-builder'\" [formGroup]=\"formParam\">-->\r\n <!-- <ng-container *ngIf=\"showField(defaults, field)\">-->\r\n <!-- <ng-container *ngIf=\"!workflowEditableField(field)\">-->\r\n <!-- <ng-container-->\r\n <!-- [ngTemplateOutlet]=\"dateReadonly\"-->\r\n <!-- [ngTemplateOutletContext]=\"{ field: field }\">-->\r\n <!-- </ng-container>-->\r\n <!-- </ng-container>-->\r\n <!-- <ng-container *ngIf=\"workflowEditableField(field)\">-->\r\n <!-- <div style=\"display: flex; width: 350%\">-->\r\n <!-- <mat-label>{{ field.label! | translate }}</mat-label>-->\r\n <!-- <mat-form-field style=\"width: 400%\" appearance=\"outline\">-->\r\n <!-- <mat-chip-grid #chipGrid>-->\r\n <!-- <ng-container *ngFor=\"let equationValue of equationValues(); let i = index\">-->\r\n <!-- <mat-chip-row (removed)=\"remove(equationValue, i)\">-->\r\n <!-- {{ equationValue }}-->\r\n <!-- <button-->\r\n <!-- matChipRemove-->\r\n <!-- [attr.aria-label]=\"'remove ' + equationValue\">-->\r\n <!-- <mat-icon>cancel</mat-icon>-->\r\n <!-- </button>-->\r\n <!-- </mat-chip-row>-->\r\n <!-- </ng-container>-->\r\n <!-- </mat-chip-grid>-->\r\n <!-- <input-->\r\n <!-- [(ngModel)]=\"currentEquationValue\"-->\r\n <!-- [matChipInputFor]=\"chipGrid\"-->\r\n <!-- [matAutocomplete]=\"auto\"-->\r\n <!-- [ngModelOptions]=\"{ standalone: true }\"-->\r\n <!-- [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"-->\r\n <!-- (matChipInputTokenEnd)=\"add($event)\"-->\r\n <!-- aria-label=\"Add equation value\" />-->\r\n <!-- <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">-->\r\n <!-- <ng-container *ngFor=\"let filteredField of (equationFilteredFields() | async)\">-->\r\n <!-- <mat-option [value]=\"filteredField\">{{ filteredField }}</mat-option>-->\r\n <!-- </ng-container>-->\r\n <!-- </mat-autocomplete>-->\r\n <!-- </mat-form-field>-->\r\n <!-- </div>-->\r\n <!-- <mat-error class=\"iq-error\" *ngIf=\"showError(field.property)\" aria-live=\"assertive\">-->\r\n <!-- {{ getErrors(field.property) | translate }}-->\r\n <!-- </mat-error>-->\r\n <!-- </ng-container>-->\r\n <!-- </ng-container>-->\r\n <!-- </ng-container>-->\r\n\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n</div>\r\n<ng-template #dateReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) | date: 'dd/MM/yyyy' }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #timeReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ formatTimeToDate(defaults[field.property]) | date: 'shortTime' }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #phoneNumberReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #textReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\" *ngIf=\"!field.advancedFilter\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #textareaReadonly let-field=\"field\">\r\n <ng-container *ngIf=\"field.textFormat === 'json'; else normalText\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <div class=\"readonly-value json-viewer\">\r\n <ngx-json-viewer [json]=\"extractJsonFieldName(defaults, field.property)\" [expanded]=\"true\"></ngx-json-viewer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-template #normalText>\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n </ng-template>\r\n</ng-template>\r\n\r\n<ng-template #numberReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #currencyReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #radioButtonReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ translateLable(defaults[field.property]) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #richTextReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\" [innerHtml]=\"extractFieldName(defaults, field.property)\"></span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #checkboxReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">\r\n <mat-icon color=\"warn\" *ngIf=\"extractFieldName(defaults, field.property); else showNo\">done</mat-icon>\r\n <ng-template #showNo>\r\n <mat-icon color=\"warn\">close</mat-icon>\r\n </ng-template>\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #listReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\" *ngIf=\"field.translate; else noTranslate\">\r\n {{ listShowValue(defaults, field) | translate }}\r\n </span>\r\n <ng-template #noTranslate>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </ng-template>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #sequenceReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">{{ extractFieldName(defaults, field.property) }}</span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #lookupReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">\r\n {{ extractFieldName(defaults, field.property)?.[translateService.getDefaultLang() === 'en' ? 'englishName' : 'arabicName'] }}\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #amountReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <span class=\"readonly-value\">\r\n {{ extractFieldName(defaults, field.property) | currency: currency }}\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #multiSelectReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></label>\r\n <mat-chip-grid class=\"readonly-value chipList\">\r\n <mat-chip *ngFor=\"let filedProp of showMultiSelectValuesAsReadonly(field)\">\r\n {{ filedProp }}\r\n </mat-chip>\r\n </mat-chip-grid>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #chipListReadonly let-field=\"field\">\r\n <div class=\"readonly-item\">\r\n <label class=\"readonly-label\" [innerHTML]=\"field.label | translate\"></label>\r\n <mat-chip-listbox class=\"readonly-value chipList\">\r\n <mat-chip-option *ngFor=\"let loc of splitReadonly(extractFieldName(defaults, field.property))\"\r\n [selectable]=\"true\"\r\n color=\"warn\"\r\n [removable]=\"false\">\r\n {{ loc }}\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #readonlyView>\r\n <div class=\"row-wrapper\">\r\n <div class=\"column-wrapper\">\r\n <ng-container *ngFor=\"let row of screenFields | keyvalue\">\r\n <div class=\"row-container\">\r\n <ng-container *ngFor=\"let field of row.value\">\r\n <div class=\"field-column readonly-item\" [style.flex]=\"field.fieldSize ? ('0 0 ' + field.fieldSize + '%') : '1 1 0'\">\r\n\r\n <ng-container [ngSwitch]=\"field.type\">\r\n\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ng-container [ngTemplateOutlet]=\"dateReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <ng-container [ngTemplateOutlet]=\"timeReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'phone-number'\">\r\n <ng-container [ngTemplateOutlet]=\"phoneNumberReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <ng-container [ngTemplateOutlet]=\"textReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <ng-container [ngTemplateOutlet]=\"textareaReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <ng-container [ngTemplateOutlet]=\"numberReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'currency'\">\r\n <ng-container [ngTemplateOutlet]=\"currencyReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'radio-button'\">\r\n <ng-container [ngTemplateOutlet]=\"radioButtonReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <ng-container [ngTemplateOutlet]=\"checkboxReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'status'\">\r\n <ng-container [ngTemplateOutlet]=\"checkboxReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'lookup'\">\r\n <ng-container [ngTemplateOutlet]=\"lookupReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'amount'\">\r\n <ng-container [ngTemplateOutlet]=\"amountReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'multi-select'\">\r\n <ng-container [ngTemplateOutlet]=\"multiSelectReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'chip-list'\">\r\n <ng-container [ngTemplateOutlet]=\"chipListReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'sequence'\">\r\n <ng-container [ngTemplateOutlet]=\"sequenceReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <ng-container [ngTemplateOutlet]=\"listReadonly\"\r\n [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'iban-text'\">\r\n <p class=\"label\">\r\n <span [innerHtml]=\"!field.hideLabel ? (field.label | translate) : ''\"></span>\r\n <span> : </span>\r\n <span class=\"value\" [innerHtml]=\"extractFieldName(defaults, field.property)\"></span>\r\n </p>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'section-title'\">\r\n <div class=\"hrdivider-mid\">\r\n <span>{{ field.label | translate }}</span>\r\n </div>\r\n </ng-container>\r\n\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n","import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {FieldFilter} from \"../../../base-model/field-filter.model\";\r\nimport {FieldInfo, PageInfo} from \"../../../base-model\";\r\nimport {BaseFormCanvasComponent} from \"../../base-form-canvas/base-form-canvas.component\";\r\n\r\n@Component({\r\n selector: 'app-field-filter',\r\n templateUrl: './field-filter.component.html',\r\n standalone: true,\r\n imports: [\r\n BaseFormCanvasComponent\r\n ],\r\n styleUrls: ['./field-filter.component.scss']\r\n})\r\n\r\nexport class FieldFilterComponent implements OnInit {\r\n\r\n @Input()\r\n filter: FieldFilter;\r\n\r\n @Input()\r\n pageInfo: PageInfo;\r\n\r\n @Input()\r\n filterFields: FieldInfo[];\r\n\r\n filterForm: FormGroup;\r\n\r\n @Input()\r\n item: any;\r\n\r\n @Input()\r\n editable = false;\r\n\r\n @Output()\r\n selectedValue: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n filterFieldInformation: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n\r\n formChanges($event: FormGroup) {\r\n this.filterForm = $event;\r\n this.filterForm.valueChanges.subscribe(v => {\r\n this.filterFieldInformation.emit(this.filterForm.value);\r\n });\r\n }\r\n}\r\n","\r\n<app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"filterFields\"\r\n [editable]=\"editable\"\r\n (formUpdated)=\"formChanges($event)\"\r\n>\r\n</app-base-form-canvas>\r\n","import {Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport {CommonModule, formatDate} from '@angular/common';\r\nimport {FieldInfo, PageInfo, TableColumn} from \"../../../base-model\";\r\nimport {FieldFilter} from \"../../../base-model/field-filter.model\";\r\nimport {FieldFilterComponent} from \"../field-filter/field-filter.component\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {MatButtonModule} from \"@angular/material/button\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\n\r\n@Component({\r\n selector: 'app-filter-builder',\r\n templateUrl: './filter-builder.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FieldFilterComponent,\r\n TranslateModule,\r\n MatButtonModule,\r\n MatIcon\r\n ],\r\n styleUrls: ['./filter-builder.component.scss']\r\n})\r\nexport class FilterBuilderComponent implements OnInit, OnDestroy {\r\n\r\n @Input()\r\n columns: TableColumn<any>[];\r\n\r\n @Input()\r\n isChecked: boolean;\r\n @Input()\r\n filterFields: FieldInfo[];\r\n @Input()\r\n pageInfo: PageInfo;\r\n @Input()\r\n pendingFilters: FieldFilter[] = [];\r\n\r\n filter: FieldFilter;\r\n filters: FieldFilter[] = [];\r\n\r\n private searchTimeout: any;\r\n private autoApplyTimeout: any;\r\n\r\n @Output()\r\n filterInformation: EventEmitter<FieldFilter[]> = new EventEmitter<FieldFilter[]>();\r\n\r\n @Output()\r\n isEmpty: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @Output()\r\n applyFilter: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n\r\n this.switchToAdvanced();\r\n if (!this.filter) {\r\n this.filter = this.createDefaultFieldFilter();\r\n }\r\n if (this.filterFields && this.filterFields.length) {\r\n this.filters = this.filterFields.map(() => this.createDefaultFieldFilter());\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.searchTimeout) {\r\n clearTimeout(this.searchTimeout);\r\n this.searchTimeout = null;\r\n }\r\n if (this.autoApplyTimeout) {\r\n clearTimeout(this.autoApplyTimeout);\r\n this.autoApplyTimeout = null;\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (event.key === 'Enter' && !event.shiftKey && !event.ctrlKey && !event.metaKey) {\r\n const target = event.target as HTMLElement;\r\n const isInputElement = target.tagName === 'INPUT' ||\r\n target.tagName === 'TEXTAREA' ||\r\n target.tagName === 'SELECT' ||\r\n target.isContentEditable;\r\n\r\n if (isInputElement) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n this.onApplyFilter();\r\n }\r\n }\r\n\r\n\r\n doSearch() {\r\n const filtersArray = (this.filters || [])\r\n .filter(f => !!f && f.fieldName && f.valueObject !== undefined && f.valueObject !== null && f.valueObject !== '')\r\n .map(f => ({...f}));\r\n this.filterInformation.emit(filtersArray);\r\n }\r\n\r\n onApplyFilter(): void {\r\n if (this.autoApplyTimeout) {\r\n clearTimeout(this.autoApplyTimeout);\r\n this.autoApplyTimeout = null;\r\n }\r\n this.applyFilter.emit();\r\n }\r\n\r\n private scheduleAutoApply(): void {\r\n if (this.autoApplyTimeout) {\r\n clearTimeout(this.autoApplyTimeout);\r\n this.autoApplyTimeout = null;\r\n }\r\n this.autoApplyTimeout = setTimeout(() => {\r\n this.onApplyFilter();\r\n this.autoApplyTimeout = null;\r\n }, 10000);\r\n }\r\n\r\n private scheduleSearch(delayMs: number = 800) {\r\n if (this.searchTimeout) {\r\n clearTimeout(this.searchTimeout);\r\n }\r\n this.searchTimeout = setTimeout(() => {\r\n this.doSearch();\r\n }, delayMs);\r\n }\r\n\r\n formChanges($event: any, index?: number, fieldInfo?: FieldInfo) {\r\n if (this.autoApplyTimeout) {\r\n clearTimeout(this.autoApplyTimeout);\r\n this.autoApplyTimeout = null;\r\n }\r\n\r\n const formatIfDate = (type?: string, value?: any) => {\r\n if (!type || value === undefined || value === null || value === '') return value;\r\n if ((type || '').toLowerCase().includes('date')) {\r\n return formatDate(value, 'yyyy-MM-dd', 'en_US');\r\n }\r\n return value;\r\n };\r\n\r\n if (index === undefined || !fieldInfo) {\r\n if (!this.filterFields || !this.filterFields.length) {\r\n this.filters = [];\r\n this.doSearch();\r\n return;\r\n }\r\n\r\n this.filters = this.filterFields.map((fi) => {\r\n const controlName = fi.property;\r\n let value = $event ? $event[controlName] : undefined;\r\n if (value === undefined || value === null || value === '') {\r\n return this.createDefaultFieldFilter();\r\n }\r\n const fieldName = controlName === 'from' || controlName === 'to' ? fi.targetProperty : controlName;\r\n\r\n return {\r\n fieldName: fieldName,\r\n operator: fi.filterOperator || 'EQUALS',\r\n filterType: 'FILED_FILTER',\r\n fieldType: this.typeMap(fi.type) as any,\r\n valueObject: formatIfDate(fi.type, value) as any\r\n } as FieldFilter;\r\n });\r\n\r\n const hasTextField = (this.filterFields || []).some(fi => ((fi.type || '').toLowerCase() === 'text'));\r\n if (hasTextField) {\r\n this.scheduleSearch();\r\n } else {\r\n this.doSearch();\r\n }\r\n this.scheduleAutoApply();\r\n return;\r\n }\r\n\r\n if (!this.filters) {\r\n this.filters = [];\r\n }\r\n if (this.filters.length < index + 1) {\r\n this.filters.length = index + 1;\r\n }\r\n\r\n let controlName = fieldInfo.property;\r\n let value = $event ? $event[controlName] : undefined;\r\n if ($event && $event.filterField !== undefined && $event.fromValue !== undefined) {\r\n controlName = $event.filterField || controlName;\r\n value = $event.fromValue;\r\n }\r\n\r\n if (value === undefined || value === null || value === '') {\r\n this.filters[index] = this.createDefaultFieldFilter();\r\n } else {\r\n this.filters[index] = {\r\n fieldName: controlName,\r\n operator: fieldInfo.filterOperator || 'EQUALS',\r\n filterType: 'FILED_FILTER',\r\n fieldType: this.typeMap(fieldInfo.type) as any,\r\n valueObject: formatIfDate(fieldInfo.type, value) as any\r\n } as FieldFilter;\r\n }\r\n const isTextField = ((fieldInfo.type || '').toLowerCase() === 'text');\r\n if (isTextField) {\r\n this.scheduleSearch();\r\n } else {\r\n this.doSearch();\r\n }\r\n this.scheduleAutoApply();\r\n }\r\n typeMap(colType?: string): string {\r\n const t = (colType || '').toLowerCase();\r\n if (t.includes('number') || t.includes('int') || t === 'long') return 'Long';\r\n if (t.includes('date') || t.includes('time')) return 'Date';\r\n if (t.includes('bool')) return 'Boolean';\r\n return 'String';\r\n }\r\n\r\n isEditable(_index?: number) {\r\n return true;\r\n }\r\n\r\n\r\n deleteAll() {\r\n this.filter = this.createDefaultFieldFilter();\r\n this.filters = this.filterFields ? this.filterFields.map(() => this.createDefaultFieldFilter()) : [];\r\n this.isEmpty.emit(true);\r\n }\r\n\r\n\r\n switchToAdvanced() {\r\n if (this.isChecked) {\r\n if (!this.filter || Object.keys(this.filter).length === 0) {\r\n this.filter = this.createDefaultFieldFilter();\r\n }\r\n }\r\n }\r\n\r\n\r\n private createDefaultFieldFilter(): FieldFilter {\r\n return {\r\n fieldName: '',\r\n operator: '',\r\n filterType: '',\r\n fieldType: '',\r\n valueObject: ''\r\n } as FieldFilter;\r\n }\r\n}\r\n","<div class=\"main-filter-builder\">\r\n\r\n <div class=\"filterForm\">\r\n <div class=\"filterForm__row\">\r\n <div class=\"filterForm__col\">\r\n <app-field-filter\r\n [editable]=\"isEditable()\"\r\n [filter]=\"filter\"\r\n [pageInfo]=\"pageInfo\"\r\n *ngIf=\"isEditable()\"\r\n [filterFields]=\"filterFields\"\r\n (filterFieldInformation)=\"formChanges($event)\"\r\n class=\"filterForm__filed-filter\"\r\n >\r\n </app-field-filter>\r\n </div>\r\n <div class=\"button-group\">\r\n <button\r\n mat-flat-button\r\n class=\"btn-apply-filter\"\r\n (click)=\"onApplyFilter()\">\r\n <div class=\"button-text\">\r\n <mat-icon>filter_list</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n<!-- <div *ngIf=\"checkIsEmpty()\" class=\"line-top\">-->\r\n<!-- <mat-divider></mat-divider>-->\r\n<!-- </div>-->\r\n\r\n<!-- <div class=\"line-bottom\">-->\r\n<!-- <mat-divider></mat-divider>-->\r\n<!-- </div>-->\r\n\r\n<!-- <div class=\"action\">-->\r\n<!-- <button class=\"btn-none-background-primary action__clear\" mat-button (click)=\"deleteAll()\">-->\r\n<!-- {{'FILTER-BUILDER.clearAllFilters' | translate}}-->\r\n<!-- </button>-->\r\n<!-- <button class=\"btn-background-primary\" mat-button (click)=\"doSearch()\">-->\r\n<!-- {{'FILTER-BUILDER.search' | translate}}-->\r\n<!-- </button>-->\r\n<!-- </div>-->\r\n</div>\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n effect,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnChanges, OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\nimport {\r\n MatCell,\r\n MatCellDef,\r\n MatColumnDef,\r\n MatHeaderCell,\r\n MatHeaderCellDef,\r\n MatHeaderRow,\r\n MatHeaderRowDef,\r\n MatRow,\r\n MatRowDef,\r\n MatTable,\r\n MatTableDataSource\r\n} from \"@angular/material/table\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {MatSortModule, Sort} from \"@angular/material/sort\";\r\nimport {\r\n CurrencyPipe,\r\n DatePipe, DecimalPipe,\r\n JsonPipe,\r\n NgClass,\r\n NgForOf,\r\n NgIf,\r\n NgStyle,\r\n NgSwitch,\r\n NgSwitchCase,\r\n NgSwitchDefault, UpperCasePipe\r\n} from \"@angular/common\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {MatButton, MatButtonModule, MatIconButton} from \"@angular/material/button\";\r\nimport {NgxPaginationModule} from \"ngx-pagination\";\r\nimport {ButtonActionsComponent} from \"../button-actions/button-actions.component\";\r\nimport {ShareDataService} from \"../../services/trigger-form.service\";\r\nimport {BaseUtils} from \"../../utils/base-utils\";\r\nimport {BackendService} from \"../../services/backend-service\";\r\nimport {Filter} from \"../../base-model/filter.model\";\r\nimport {FilterRequest} from \"../../base-model/filter-request\";\r\nimport {\r\n ADD_NEW_RECORD_ACTION,\r\n ButtonActionSettings,\r\n EMPTY_PAGE_INFO, FieldInfo,\r\n FRONT_END_COLUMN_TYPES,\r\n PageInfo,\r\n SELECT_RECORD_ACTION, TABLE_RECORD_ACTION,\r\n TableColumn\r\n} from \"../../base-model\";\r\nimport {ReportRequest} from \"../../base-model/report-request.model\";\r\nimport {TablePageUserAction} from \"../../base-model/table-page-user-action.interface\";\r\nimport {Workflow} from \"../../base-model/workflow/workflow.model\";\r\nimport {ResponseEnvelop} from \"../../base-model/response-envelop.model\";\r\nimport {Router} from \"@angular/router\";\r\nimport {MatLabel} from \"@angular/material/form-field\";\r\nimport {MatChipListbox, MatChipOption} from \"@angular/material/chips\";\r\nimport {MatButtonToggle, MatButtonToggleGroup} from \"@angular/material/button-toggle\";\r\nimport {TitleBarComponent} from \"../title-bar/title-bar.component\";\r\nimport {PaginatorComponent} from \"../paginator/paginator.component\";\r\nimport {MatCheckbox} from \"@angular/material/checkbox\";\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport {FilterBuilderComponent} from \"../advanced-filter/filter-builder/filter-builder.component\";\r\nimport {FieldFilter} from \"../../base-model/field-filter.model\";\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\r\n\r\n@Component({\r\n selector: 'app-base-table',\r\n standalone: true,\r\n templateUrl: './base-table.component.html',\r\n styleUrls: ['./base-table.component.scss'],\r\n animations: [],\r\n imports: [\r\n NgStyle,\r\n NgClass,\r\n TranslateModule,\r\n MatIcon,\r\n MatSortModule,\r\n MatColumnDef,\r\n MatHeaderCellDef,\r\n NgIf,\r\n MatTable,\r\n MatHeaderCell,\r\n NgSwitch,\r\n MatButtonModule,\r\n MatCell,\r\n MatCellDef,\r\n DatePipe,\r\n CurrencyPipe,\r\n NgxPaginationModule,\r\n MatRow,\r\n MatRowDef,\r\n MatHeaderRow,\r\n NgSwitchCase,\r\n NgSwitchDefault,\r\n MatHeaderRowDef,\r\n MatIconButton,\r\n NgForOf,\r\n JsonPipe,\r\n MatButton,\r\n ButtonActionsComponent,\r\n MatLabel,\r\n MatChipListbox,\r\n MatChipOption,\r\n MatButtonToggleGroup,\r\n MatButtonToggle,\r\n TitleBarComponent,\r\n PaginatorComponent,\r\n DecimalPipe,\r\n MatCheckbox,\r\n BaseFormCanvasComponent,\r\n FilterBuilderComponent,\r\n MatMenuTrigger,\r\n MatMenu,\r\n MatMenuItem,\r\n UpperCasePipe,\r\n ]\r\n})\r\nexport class BaseTableComponent extends BaseUtils implements OnInit, OnChanges, OnDestroy {\r\n types: string[] = [\"pdf\", \"csv\", \"xlsx\"]\r\n collection = {count: 60, data: []};\r\n config = {\r\n itemsPerPage: 15,\r\n currentPage: 1,\r\n totalItems: this.collection.count\r\n };\r\n public maxSize: number = 7;\r\n public directionLinks: boolean = true;\r\n public autoHide: boolean = false;\r\n public responsive: boolean = true;\r\n public labels: any = {\r\n previousLabel: '<',\r\n nextLabel: '>',\r\n screenReaderPaginationLabel: 'Pagination',\r\n screenReaderPageLabel: 'page',\r\n screenReaderCurrentLabel: `You're on page`\r\n };\r\n\r\n @Input()\r\n filterFields: FieldInfo[];\r\n @Input() noDataFoundIcon = 'close';\r\n @Input() noDataFoundTitle = 'noDataFoundTitle';\r\n @Input() noDataFoundSubtitle = 'noDataFoundSubtitle';\r\n totalElements = 0;\r\n pagesCount = 0;\r\n pageIndex = 1;\r\n pageSize = 15;\r\n private selectedStatusFilter: Filter[] = [];\r\n advancedAppliedFilter: any[] = [];\r\n pendingFilters: any[] = [];\r\n searchStr: string = '';\r\n private filterRequest: FilterRequest = new FilterRequest();\r\n private timer: any;\r\n @Input()\r\n override pageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n\r\n @Input()\r\n enablePagination: boolean = true;\r\n\r\n @Input() data?: MatTableDataSource<any>;\r\n @Input()\r\n listAction: ButtonActionSettings[] = [];\r\n\r\n @Input()\r\n columns: TableColumn<any>[];\r\n\r\n @Input()\r\n filters: Filter[] = [];\r\n\r\n @Input() //@ts-ignore\r\n pathParam: number;\r\n\r\n @Input() //@ts-ignore\r\n extraButton: string;\r\n\r\n @Input() //@ts-ignore\r\n enforceRefresh: boolean = false;\r\n\r\n @Input()\r\n isPending: boolean = false;\r\n\r\n @Input()\r\n trigger: boolean = false;\r\n\r\n @Input()\r\n reportRequest: ReportRequest = new ReportRequest({});\r\n\r\n @Input()\r\n separateEndpointData: any;\r\n @Input()\r\n manageablePages: boolean = false;\r\n @Input()\r\n totalPagesCount: number = 0;\r\n @Input()\r\n currentPageIndex: number = 0;\r\n\r\n @Output()\r\n pageChange: EventEmitter<any> = new EventEmitter();\r\n\r\n\r\n @Output()\r\n userAction: EventEmitter<TablePageUserAction> = new EventEmitter<TablePageUserAction>();\r\n @Output()\r\n hyperLinkAction: EventEmitter<TablePageUserAction> = new EventEmitter<TablePageUserAction>();\r\n\r\n @Output()\r\n extraAction: EventEmitter<TablePageUserAction> = new EventEmitter<TablePageUserAction>();\r\n\r\n @Output()\r\n selectedColumn: EventEmitter<Sort> = new EventEmitter<Sort>();\r\n\r\n @Output()\r\n listActionClicked: EventEmitter<{ action: ButtonActionSettings, row: any }> = new EventEmitter<{\r\n action: ButtonActionSettings,\r\n row: any\r\n }>();\r\n\r\n @Output()\r\n showDialog: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n usedWorkflow!: Workflow;\r\n\r\n mode:any;\r\n\r\n @Input()\r\n customizedData?: MatTableDataSource<any>;\r\n dataSource: MatTableDataSource<any>;\r\n selectedRowIndex = -1;\r\n noDataFound = false;\r\n totalRequiredCountItem = 0;\r\n\r\n\r\n @Output()\r\n clickRoutePage: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n constructor(\r\n private backendService: BackendService,\r\n public translateService: TranslateService,\r\n public shareDataService: ShareDataService,\r\n @Inject('securityManager') private securityManager: any,\r\n private router: Router,\r\n ) {\r\n super();\r\n this.dataSource = new MatTableDataSource();\r\n this.columns = [];\r\n this.filterRequest = new FilterRequest();\r\n\r\n effect(() => {\r\n if (this.pageInfo.lazyLoadData !== true || this.enforceRefresh === true) {\r\n this.loadData();\r\n }\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.backendService.isEmptyItems = this.dataSource.data.length <= 0;\r\n if (this.customizedData) {\r\n this.dataSource = this.customizedData;\r\n }\r\n if(this.manageablePages) {\r\n this.pagesCount = this.totalPagesCount;\r\n this.pageIndex = this.currentPageIndex;\r\n }\r\n\r\n }\r\n\r\n onPageChange(event: number) {\r\n this.pageIndex = event;\r\n this.getNext(this.pageIndex - 1);\r\n if (this.manageablePages) {\r\n this.pageChange.emit(this.pageIndex);\r\n }\r\n }\r\n\r\n\r\n extractFieldName(element: any, property: string) {\r\n if (property?.includes('.')) {\r\n return property.split('.').reduce((acc, part) => acc && acc[part], element);\r\n } else {\r\n const c = this.columns.find(c => c.property === property);\r\n if (Array.isArray(element[property]) && c.arraySubProperty ) {\r\n const fieldValues = element[property].map(f => f[c.arraySubProperty]);\r\n return fieldValues.join(', ');\r\n }else {\r\n return element[property];\r\n }\r\n }\r\n }\r\n\r\n get visibleColumns() {\r\n this.buildGroups()\r\n return this.columns.filter(column => column.visible).map(column => column.property);\r\n }\r\n\r\n get visibleColumnsArray() {\r\n return this.visibleColumns;\r\n }\r\n\r\n getColumn(property: string): TableColumn<any> | undefined {\r\n return this.columns.find(c => c.property === property);\r\n }\r\n\r\n getSortDirection(property: string): 'asc' | 'desc' | '' {\r\n if (this.reportRequest?.filterRequest?.sortKey === property) {\r\n return this.reportRequest.filterRequest.sortDirection === 'ASC' ? 'asc' : 'desc';\r\n }\r\n return '';\r\n }\r\n\r\n handleSortClick(property: string): void {\r\n const COLUMN = this.getColumn(property);\r\n if (!COLUMN || !COLUMN.enableSorting) {\r\n return;\r\n }\r\n\r\n const CURRENT_DIRECTION = this.getSortDirection(property);\r\n let NEW_DIRECTION: 'asc' | 'desc' = 'asc';\r\n\r\n if (CURRENT_DIRECTION === 'asc') {\r\n NEW_DIRECTION = 'desc';\r\n }\r\n\r\n this.onSortAction({\r\n active: property,\r\n direction: NEW_DIRECTION\r\n });\r\n }\r\n\r\n sortState: any = {};\r\n\r\n getNext(pageIndex: number) {\r\n this.reportRequest.filterRequest.pageIndex = pageIndex;\r\n this.reportRequest.filterRequest.pageSize = this.pageSize;\r\n this.loadData();\r\n }\r\n onPageSizeChange(event: number) {\r\n this.pageSize = event;\r\n this.pageIndex = 1; // reset to first page on page size change\r\n this.reportRequest.filterRequest.pageSize = this.pageSize;\r\n this.getNext(0);\r\n }\r\n\r\n\r\n\r\n private loadData() {\r\n clearTimeout(this.timer);\r\n if (!this.reportRequest.filterRequest) {\r\n this.reportRequest.filterRequest = new FilterRequest(this.pageInfo.pageSize);\r\n this.reportRequest.filterRequest.filters = this.advancedAppliedFilter;\r\n }\r\n if (this.separateEndpointData || !this.pageInfo.apiUri || this.pageInfo.apiUri.length === 0) {\r\n this.dataSource.data = this.separateEndpointData;\r\n } else if(this.reportRequest == undefined){\r\n return;\r\n } else if(!this.manageablePages) {\r\n this.timer = setTimeout(() => {\r\n this.reportRequest.filterRequest.columns = this.columns?.filter(c => FRONT_END_COLUMN_TYPES.indexOf(c.type) < 0 ).map(c => c.property) || [];\r\n this.reportRequest.filterRequest.pendingPage = this.isPending;\r\n this.reportRequest.filterRequest.filters = this.advancedAppliedFilter;\r\n this.backendService.getItemsByFilter(this.reportRequest?.filterRequest, this.pageInfo.apiUri).subscribe(resp => {\r\n const responseEnvelope = new ResponseEnvelop(resp);\r\n if (responseEnvelope.valid) {\r\n this.totalRequiredCountItem = this.reportRequest.filterRequest.pageSize\r\n this.noDataFound = responseEnvelope.body.length < 1;\r\n this.dataSource.data = responseEnvelope.body;\r\n this.backendService.isEmptyItems = this.dataSource.data.length <= 0;\r\n this.totalElements = responseEnvelope.totalSize || 0;\r\n this.pagesCount = Math.ceil(this.totalElements / this.pageSize) || 1;\r\n this.pageIndex = (this.reportRequest.filterRequest.pageIndex || 0) + 1;\r\n this.config.totalItems = responseEnvelope.totalSize || 0;\r\n this.config.currentPage = this.pageIndex + 1;\r\n // this.pageSize = this.reportRequest.filterRequest.pageSize;\r\n }\r\n });\r\n }\r\n , 300);\r\n }\r\n }\r\n\r\n getStatusDescription(element: any) {\r\n return this.backendService.getStatusDescription(element, this.usedWorkflow);\r\n }\r\n\r\n getStateType(element: any) {\r\n return element.stateType\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"customizedData\"] && !changes[\"customizedData\"].isFirstChange()) {\r\n this.dataSource.data = changes[\"customizedData\"].currentValue?.data || []; // Update data source with new data\r\n this.pagesCount=this.totalPagesCount;\r\n this.pageIndex=this.currentPageIndex;\r\n }\r\n if (changes[\"enforceRefresh\"] && !changes[\"enforceRefresh\"].isFirstChange()) {\r\n this.loadData();\r\n }\r\n }\r\n getCroppedText(elementValue: any, subWidth: number = 20) {\r\n return elementValue && elementValue.length > subWidth ? elementValue.substring(0, subWidth) + \"...\" : elementValue;\r\n }\r\n\r\n emitEvent(element: any) {\r\n this.showDialog.emit(element);\r\n }\r\n\r\n extractFormat(column: TableColumn<any>) {\r\n return column?.format || 'd/M/yyyy, h:mm a';\r\n }\r\n\r\n actionListClicked(listAction: ButtonActionSettings, element: any) {\r\n this.listActionClicked.emit({action:listAction, row: element});\r\n }\r\n\r\n hyperLinkClicked(actionName: string, element: any) {\r\n const action = TABLE_RECORD_ACTION;\r\n action.actionKey = actionName;\r\n action.item = element;\r\n action.pageInfo = this.pageInfo;\r\n this.hyperLinkAction.emit(action)\r\n }\r\n\r\n\r\n emitRoutePage(element: any){\r\n this.clickRoutePage.emit(element);\r\n }\r\n\r\n onSelectItem(row: any) {\r\n if (this.pageInfo.selfRouting) {\r\n const mode = this.isPending ? 'pending' : 'view';\r\n const url = `${this.pageInfo.listRoutePath || this.router.url}/view`;\r\n\r\n const encryptedId = this.backendService.encrypt(String(row.id));\r\n const encryptedMode = this.backendService.encrypt(mode);\r\n\r\n const encryptedRow = this.backendService.encrypt(JSON.stringify(row));\r\n\r\n this.router.navigate([url], {\r\n queryParams: { token: encryptedId, mode: encryptedMode },\r\n state: { raw: encryptedRow },\r\n });\r\n return;\r\n }\r\n // const action = SELECT_RECORD_ACTION;\r\n // action.id = row?.id;\r\n // action.item = row;\r\n // this.userAction.emit(action)\r\n }\r\n\r\n openNewTab(row) {\r\n if (!this.pageInfo.embededTableOnly) {\r\n const mode = this.isPending ? 'pending' : 'view';\r\n window.open(`${this.pageInfo.listRoutePath}/${mode}` + '/' + row?.id);\r\n }\r\n }\r\n\r\n switchViewMode(b: boolean) {\r\n this.isPending = !this.isPending;\r\n this.loadData();\r\n }\r\n\r\n onAddNewAction($event: any) {\r\n const url = `${this.pageInfo.listRoutePath || this.router.url}/view`;\r\n const encryptedId = this.backendService.encrypt(\"-1\");\r\n const encryptedMode = this.backendService.encrypt(\"pending\");\r\n this.router.navigate([`${url}`],\r\n { queryParams: { token: encryptedId , mode : encryptedMode } });\r\n\r\n // const action = SELECT_RECORD_ACTION;\r\n // action.id = row?.id;\r\n // action.item = row;\r\n // this.userAction.emit(action)\r\n }\r\n\r\n showAddNew() {\r\n return this.pageInfo.hasAddButton ;\r\n }\r\n\r\n onExtraButtionAction($event: any) {\r\n this.extraAction.emit($event);\r\n\r\n }\r\n\r\n hasGroups() {\r\n let b = this.columns.findIndex(p => p.group);\r\n return b >= 0;\r\n }\r\n groupNames: any = []\r\n groupSpans: Map<string, number> = new Map();\r\n\r\n buildGroups(){\r\n let count = 0;\r\n this.groupNames = [];\r\n this.groupSpans.clear();\r\n if(this.hasGroups() === false){\r\n return;\r\n }\r\n this.columns\r\n .filter(column => column.visible === true)\r\n .forEach((column) => {\r\n if (column.group === \"-\") {\r\n this.groupNames.push(count.toString());\r\n this.insertInMap(count);\r\n count++;\r\n return;\r\n } else if (!this.groupNames.includes(column.group)) {\r\n this.groupNames.push(column.group);\r\n this.insertInMap(column.group);\r\n return;\r\n }\r\n this.insertInMap(column.group);\r\n });\r\n }\r\n\r\n insertInMap(key){\r\n if(this.groupSpans.has(key)){\r\n this.groupSpans.set(key.toString(), this.groupSpans.get(key) + 1);\r\n } else {\r\n this.groupSpans.set(key.toString(), 1);\r\n }\r\n }\r\n\r\n isHumanMade(str){\r\n return isNaN(str);\r\n }\r\n\r\n actionButtonClicked(actionKey: string, item: any): void {\r\n if (actionKey === 'navigate') {\r\n this.handleNavigateAction(item);\r\n return;\r\n }\r\n\r\n this.emitTableAction(actionKey, item);\r\n }\r\n\r\n private handleNavigateAction(item: any): void {\r\n const mode = this.isPending ? 'pending' : 'view';\r\n const basePath = this.pageInfo.listRoutePath || this.router.url;\r\n const url = `${basePath}/view`;\r\n\r\n const encryptedId = this.backendService.encrypt(item.id.toString());\r\n const encryptedMode = this.backendService.encrypt(mode);\r\n\r\n this.router.navigate([url], {\r\n queryParams: { token: encryptedId, mode: encryptedMode }\r\n });\r\n }\r\n\r\n private emitTableAction(actionKey: string, item: any): void {\r\n const action = TABLE_RECORD_ACTION;\r\n action.actionKey = actionKey;\r\n action.item = item;\r\n action.pageInfo = this.pageInfo;\r\n this.userAction.emit(action);\r\n }\r\n\r\n extractReport(reportType: any) {\r\n const myFilters = this.reportRequest.filterRequest;\r\n const reportRequest = this.backendService.buildReportRequest(this.columns, this.pageInfo.labelsSection + '.list_title',\r\n myFilters, reportType, this.pageInfo, this.searchStr, 'LANDSCAPE');\r\n this.backendService.downloadReport(reportRequest, this.pageInfo.apiUri);\r\n }\r\n\r\n getIcon(status: string): string {\r\n switch (status) {\r\n case 'pass': return 'check_circle';\r\n case 'warning': return 'warning';\r\n case 'error': return 'error';\r\n default: return 'help';\r\n }\r\n }\r\n\r\n actionCheckedClicked(property: string, element) {\r\n element[property]= !element[property];\r\n this.actionButtonClicked(property, element);\r\n }\r\n\r\n\r\n isDarkHighlight(row: any): boolean {\r\n const groupByProp = this.pageInfo?.groupByProperty;\r\n const groupByValues = this.pageInfo?.groupByValue;\r\n\r\n if (!groupByProp || !groupByValues || !row[groupByProp]) {\r\n return false;\r\n }\r\n\r\n const cellValue = row[groupByProp].toString();\r\n\r\n return groupByValues.some(val =>\r\n cellValue.includes(val) && cellValue.length > val.length\r\n );\r\n }\r\n\r\n shouldRenderAsHyperLink(element: any): boolean {\r\n const groupByProp = this.pageInfo?.groupByProperty;\r\n const groupByValues = this.pageInfo?.groupByValue;\r\n\r\n if (!groupByProp || !groupByValues || !element[groupByProp]) {\r\n return false;\r\n }\r\n\r\n const value = element[groupByProp].toString();\r\n\r\n return !groupByValues.some(v => value.includes(v) && value.length >= v.length);\r\n }\r\n\r\n\r\n onSortAction($event: Sort) {\r\n this.reportRequest.filterRequest.sortKey = $event.active && $event.direction ?\r\n this.columns.find(c => c.property === $event.active)?.orderByProperty || $event.active\r\n : 'id';\r\n this.reportRequest.filterRequest.sortDirection = $event.direction === 'asc' ? 'ASC' : 'DESC';\r\n this.reportRequest.filterRequest.pageIndex = 0;\r\n this.selectedColumn.emit($event);\r\n this.loadData();\r\n }\r\n\r\n shouldShowButton(element: any): boolean {\r\n const groupByProp = this.pageInfo?.groupByProperty;\r\n const groupByValues = this.pageInfo?.groupByValue;\r\n\r\n if (!groupByProp || !groupByValues || !element[groupByProp]) {\r\n return true;\r\n }\r\n\r\n const value = element[groupByProp].toString();\r\n\r\n return !groupByValues.some(v => value.includes(v) && value.length >= v.length);\r\n }\r\n doAdvancedSearch($event: FieldFilter[]) {\r\n this.advancedAppliedFilter = [];\r\n if ($event.length === 0) {\r\n this.advancedAppliedFilter = [];\r\n this.loadData();\r\n // this.paginator.firstPage();\r\n } else {\r\n this.advancedAppliedFilter = $event;\r\n this.loadData();\r\n }\r\n }\r\n\r\n storePendingFilters($event: FieldFilter[]): void {\r\n this.pendingFilters = $event || [];\r\n }\r\n\r\n applyPendingFilters(): void {\r\n this.advancedAppliedFilter = this.pendingFilters || [];\r\n this.loadData();\r\n }\r\n\r\n handleFilterEmpty($event: boolean): void {\r\n if ($event) {\r\n this.pendingFilters = [];\r\n this.advancedAppliedFilter = [];\r\n this.loadData();\r\n }\r\n }\r\n\r\n resetData($event: boolean) {\r\n if ($event) {\r\n this.advancedAppliedFilter = [];\r\n this.pendingFilters = [];\r\n this.loadData();\r\n // this.paginator.firstPage();\r\n }\r\n }\r\n}\r\n","<div class=\"flex-column baseTable\">\r\n <div class=\"flex-row flex-100\" *ngIf=\"!pageInfo.hideTitle\">\r\n <div [class.flex-50]=\"pageInfo.draftSupported\" [class.flex-100]=\"!pageInfo.draftSupported\" class=\"flex-column align-start\">\r\n <app-title-bar\r\n [pageTitle]=\"pageInfo.hideTitle ? '' : pageInfo.labelsSection+'.list_title'\"\r\n [titleMode]=\"''\"\r\n [newAction]=\"showAddNew()\"\r\n [showExtractButton]=\"!pageInfo.hideExtractButton\"\r\n [extraButton]=\"extraButton\"\r\n (newActionClicked)=\"onAddNewAction($event)\"\r\n (extractReport)=\"extractReport($event)\"\r\n [totalElements]=\"pageInfo.hideTitle ? undefined : totalElements\">\r\n </app-title-bar>\r\n </div>\r\n <div class=\"flex-50 flex-column align-end\" *ngIf=\"pageInfo.draftSupported\">\r\n <mat-chip-listbox aria-label=\"Color selection\" [multiple]=\"false\">\r\n <mat-chip-option [selected]=\"!this.isPending\" [color]=\"'accent'\" [value]=\"'COMPLETED'\" (click)=\"switchViewMode(false)\">\r\n {{'finished' | translate}}\r\n </mat-chip-option>\r\n <mat-chip-option [selected]=\"this.isPending\" [color]=\"'accent'\" [value]=\"'PENDING'\" (click)=\"switchViewMode(true)\">\r\n {{'todo' | translate}}\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"filter-row\" *ngIf=\"!pageInfo.hideAdvancedFilter\">\r\n <app-filter-builder\r\n *ngIf=\"!pageInfo.hideAdvancedFilter\"\r\n [pageInfo]=\"pageInfo\"\r\n [columns]=\"columns\"\r\n [filterFields]=\"filterFields\"\r\n [pendingFilters]=\"pendingFilters\"\r\n (filterInformation)=\"storePendingFilters($event)\"\r\n (isEmpty)=\"handleFilterEmpty($event)\"\r\n (applyFilter)=\"applyPendingFilters()\">\r\n </app-filter-builder>\r\n\r\n <div class=\"button-group\" *ngIf=\"!pageInfo.hideExtractButton\">\r\n <button *ngIf=\"!pageInfo.hideExtractButton\"\r\n mat-flat-button\r\n [matMenuTriggerFor]=\"exportMenu\"\r\n class=\"btn-export\"\r\n >\r\n <div class=\"button-text\">\r\n <mat-icon>file_export</mat-icon>\r\n <span>{{ 'export' | translate }}</span>\r\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n </button>\r\n\r\n <mat-menu #exportMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"extractReport('pdf')\">PDF</button>\r\n <button mat-menu-item (click)=\"extractReport('xlsx')\">Excel</button>\r\n <button mat-menu-item (click)=\"extractReport('csv')\">CSV</button>\r\n </mat-menu>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"flex-row flex-100 baseTable__detailsColumn\">\r\n <div class=\"flex-100\">\r\n <div class=\"flex-row flex-100 mainTable\">\r\n <div class=\"table-container\">\r\n <div class=\"table-header\" [attr.data-sort]=\"sortState\">\r\n <div *ngFor=\"let columnProp of visibleColumnsArray; let i = index\"\r\n class=\"table-header-cell\"\r\n [class.sortable]=\"getColumn(columnProp)?.enableSorting\"\r\n [class.first-cell]=\"i === 0\"\r\n [class.last-cell]=\"i === visibleColumnsArray.length - 1\"\r\n [class.actions-cell]=\"i === visibleColumnsArray.length - 1 && columnProp === 'actions'\"\r\n [class.has-width]=\"getColumn(columnProp)?.width\"\r\n [ngStyle]=\"getColumn(columnProp)?.width ? {'width': getColumn(columnProp)?.width + '%', 'flex-basis': getColumn(columnProp)?.width + '%'} : {}\"\r\n (click)=\"getColumn(columnProp)?.enableSorting && handleSortClick(columnProp)\">\r\n <div class=\"table-header-content\">\r\n <span class=\"table-header-label\">{{ labelKey(getColumn(columnProp)) | translate }}</span>\r\n <ng-container *ngIf=\"getColumn(columnProp)?.enableSorting\">\r\n <mat-icon *ngIf=\"getSortDirection(columnProp) === 'asc'\"\r\n class=\"sort-icon sort-asc\">arrow_drop_up</mat-icon>\r\n <mat-icon *ngIf=\"getSortDirection(columnProp) === 'desc'\"\r\n class=\"sort-icon sort-desc\">arrow_drop_down</mat-icon>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"table-body\">\r\n <div *ngFor=\"let row of dataSource.data; let rowIndex = index\"\r\n class=\"table-row\"\r\n [attr.id]=\"'table-row-' + (row?.id || row?.key || '')\"\r\n [ngClass]=\"{\r\n 'table-row--highlight': selectedRowIndex == row.id || (pageInfo.groupByProperty && pageInfo.groupByValue?.includes(row[pageInfo.groupByProperty])),\r\n 'table-row--dark-highlight': isDarkHighlight(row)\r\n }\"\r\n (auxclick)=\"openNewTab(row)\"\r\n (click)=\"$event.stopPropagation(); onSelectItem(row)\">\r\n <div *ngFor=\"let columnProp of visibleColumnsArray; let i = index\"\r\n class=\"table-cell\"\r\n [class.first-cell]=\"i === 0\"\r\n [class.last-cell]=\"i === visibleColumnsArray.length - 1\"\r\n [class.actions-cell]=\"i === visibleColumnsArray.length - 1 && columnProp === 'actions'\"\r\n [class.has-width]=\"getColumn(columnProp)?.width\"\r\n [ngStyle]=\"getColumn(columnProp)?.width ? {'width': getColumn(columnProp)?.width + '%', 'flex-basis': getColumn(columnProp)?.width + '%'} : {}\">\r\n <ng-container [ngSwitch]=\"getColumn(columnProp)?.type\">\r\n <ng-container *ngSwitchCase=\"'workflowStatus'\">\r\n <button mat-button class=\"wfStatus {{ getStatusDescription(row)}}\" [attr.id]=\"'table-btn-wf-'+columnProp+'-'+(row.id || row.key || '')\">{{ getStatusDescription(row) }}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'hyper-text'\">\r\n <mat-label (click)=\"hyperLinkClicked(columnProp, row)\" [ngClass]=\"{'hyper-link': shouldRenderAsHyperLink(row)}\">\r\n {{ extractFieldName(row, columnProp) }}\r\n </mat-label>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <button *ngIf=\"shouldShowButton(row)\" mat-button class=\"primary\" (click)=\"$event.stopPropagation(); actionButtonClicked(columnProp, row)\" [attr.id]=\"'table-btn-action-'+columnProp\">\r\n {{ labelKey(getColumn(columnProp)) + '_title' | translate }}\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <mat-icon [ngClass]=\"{\r\n 'mainTable__td__icon-green': row[columnProp] === 'pass',\r\n 'mainTable__td__icon-orange': row[columnProp] === 'warning',\r\n 'mainTable__td__icon-red': row[columnProp] === 'error'\r\n }\">\r\n {{ getIcon(row[columnProp]) }}\r\n </mat-icon>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <mat-checkbox class=\"primary\" [checked]=\"row[columnProp]\" (click)=\"$event.stopPropagation();actionCheckedClicked(columnProp,row)\"></mat-checkbox>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'stateType'\">\r\n <button mat-button class=\"stateType {{ row[columnProp]}}\" [attr.id]=\"'table-btn-state-'+columnProp\">{{ labelKeyByValue(getColumn(columnProp), row) | translate}}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n {{ extractFieldName(row, columnProp) | date:'yyyy-MM-dd' }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'croppedText'\">\r\n {{ getCroppedText(row[columnProp], row[getColumn(columnProp)?.width]) }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'download'\">\r\n <mat-icon class=\"mainTable__td__icon-blue\">system_update_alt</mat-icon>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'onOff'\">\r\n <mat-icon *ngIf=\"row[columnProp] === null\" class=\"mainTable__td__icon-darkorange\">flag</mat-icon>\r\n <mat-icon *ngIf=\"row[columnProp] === false\" class=\"mainTable__td__icon-red\">flag</mat-icon>\r\n <mat-icon *ngIf=\"row[columnProp] === true\" class=\"mainTable__td__icon-green\">flag</mat-icon>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'status'\">\r\n <span *ngIf=\"row[columnProp] === null || row[columnProp] === false\">\r\n {{ pageInfo.labelsSection + '.' + getColumn(columnProp)?.label + 'InActive' | translate }}\r\n </span>\r\n <span *ngIf=\"row[columnProp] === true\">\r\n {{ pageInfo.labelsSection + '.' + getColumn(columnProp)?.label + 'Active' | translate }}\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'info'\">\r\n <button mat-icon-button (click)=\"$event.stopPropagation();emitEvent(row)\" [attr.id]=\"'table-btn-info-'+row.id\">\r\n <mat-icon>info</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'netAmount'\">\r\n <div class=\"mainTable__td__currency\" style=\"display:inline-block;\">{{ row[getColumn(columnProp)?.currency] }}</div>\r\n <span class=\"mainTable__td__property\" style=\"display:inline-block; margin-left:6px; margin-right:6px;\">\r\n {{ extractFieldName(row, columnProp) | currency:'':'' }}</span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'localDateTime'\">\r\n {{ extractFieldName(row, columnProp) | date : extractFormat(getColumn(columnProp)) }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'bigdecimal'\">\r\n <small><sup class=\"mainTable__td__currency\">{{row[getColumn(columnProp)?.currency]}}</sup></small>\r\n {{ extractFieldName(row, columnProp) | number : (getColumn(columnProp)?.digitInfo || '1.3-5') }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'listAction'\">\r\n <app-button-actions\r\n [buttonsAction]=\"getColumn(columnProp)?.viewType === 'buttonsAction'\"\r\n [listAction]=\"listAction\"\r\n [actions]=\"listAction\"\r\n (clickedButton)=\"actionListClicked($event,row)\">\r\n </app-button-actions>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"getColumn(columnProp)?.translate; else noTranslate\">\r\n <span (click)=\"emitRoutePage(row)\">\r\n {{ extractFieldName(row, columnProp) | translate }}\r\n </span>\r\n </ng-container>\r\n <ng-template #noTranslate>\r\n <span (click)=\"emitRoutePage(row)\" [innerHtml]='extractFieldName(row, columnProp)'></span>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"noDataFound\" class=\"dataNotFound flex-column\">\r\n <mat-icon class=\"dataNotFound__icon\">{{ noDataFoundIcon }}</mat-icon>\r\n <span class=\"dataNotFound__title\">{{ noDataFoundTitle | translate}}</span>\r\n <span class=\"dataNotFound__subtitle\">{{ noDataFoundSubtitle | translate}}</span>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"(dataSource.data?.length > 0 || customizedData) && !pageInfo.hidePagination\" class=\"main-pagination flex-row\">\r\n <ng-container *ngIf=\"enablePagination\">\r\n <div class=\"flex-column flex-100\">\r\n <app-paginator\r\n [currentPage]=\"pageIndex\"\r\n [totalItems]=\"totalElements\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"[5, 10, 25, 50]\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\">\r\n </app-paginator>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import {Component, HostListener, Inject, OnInit} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogContent, MatDialogRef, MatDialogTitle} from \"@angular/material/dialog\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {MatButton} from \"@angular/material/button\";\r\nimport {FieldInfo, PageInfo} from \"../../base-model\";\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport {MatDivider} from \"@angular/material/divider\";\r\n\r\n@Component({\r\n selector: 'app-audit-log-details-dialog',\r\n standalone: true,\r\n imports: [\r\n MatDialogTitle,\r\n MatDialogContent,\r\n FormsModule,\r\n TranslateModule,\r\n MatButton,\r\n BaseFormCanvasComponent,\r\n MatDivider\r\n ],\r\n templateUrl: './audit-log-details-dialog.component.html',\r\n styleUrl: './audit-log-details-dialog.component.css'\r\n})\r\nexport class AuditLogDetailsDialogComponent implements OnInit {\r\n pageInfo: PageInfo;\r\n fields: FieldInfo[] = [];\r\n\r\n actionLabel : string =''\r\n isTermination : boolean=false;\r\n comment: string = '';\r\n external: boolean = false;\r\n signingRequired: boolean = false;\r\n tokenReference: string = \"\";\r\n warningMsg = false;\r\n item: any = {};\r\n constructor(public dialogRef: MatDialogRef<AuditLogDetailsDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n dialogRef.disableClose = true;\r\n }\r\n @HostListener('window:keyup.esc') onKeyUp() {\r\n this.dialogRef.close();\r\n }\r\n ngOnInit(): void {\r\n this.pageInfo = this.data.pageInfo;\r\n this.fields = this.data.fields;\r\n\r\n this.fields = this.data.fields.map((f: any) => ({ ...f }));\r\n\r\n const showHiddenFields: string[] = this.data.showHiddenFields || [];\r\n this.fields.forEach(field => {\r\n if (showHiddenFields.includes(field.property)) {\r\n field.visible = true;\r\n }\r\n });\r\n this.item = this.data.item;\r\n this.comment = this.data.comment;\r\n this.warningMsg = this.data.warningMsg || false;\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n\r\n getTitle() {\r\n return `${this.pageInfo.labelsSection}.${this.pageInfo.id}`;\r\n }\r\n}\r\n","<mat-dialog-content class=\"mat-typography overflow-hidden\">\r\n <div style=\"'padding': '10px 30px 10px 0'\">\r\n <h2 mat-dialog-title>{{ getTitle()| translate }}</h2>\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"false\"\r\n [item]=\"item\"\r\n ></app-base-form-canvas>\r\n\r\n <p>\r\n <span class=\"invoice-label\">{{ 'audit-log.reason_dialog' | translate }} :</span>\r\n <span class=\"invoice-label-text\">{{ comment }}</span>\r\n </p>\r\n <mat-divider style=\"width: 97%\"></mat-divider>\r\n <br>\r\n <button mat-stroked-button color='accent' style=\"margin: 5px\"\r\n (click)=\"cancel()\" id=\"acceptActionLabel\">\r\n {{ 'audit-log.close' | translate }}\r\n </button>\r\n <br>\r\n </div>\r\n</mat-dialog-content>\r\n","import {Component, Inject, Input, OnInit} from '@angular/core';\r\nimport {FieldInfo, Filter, FilterRequest, PageInfo, TableColumn} from \"../../base-model\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {BackendService} from \"../../services\";\r\nimport {DatePipe, NgForOf, NgIf} from \"@angular/common\";\r\nimport {MatButton, MatButtonModule} from \"@angular/material/button\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {AuditLogEntry} from \"../../base-model/audit-log-entry\";\r\nimport {AuditLogDetailsDialogComponent} from \"../audit-log-details-dialog/audit-log-details-dialog.component\";\r\nimport {Directionality} from \"@angular/cdk/bidi\";\r\n\r\n@Component({\r\n selector: 'app-audit-log',\r\n standalone: true,\r\n imports: [\r\n NgForOf,\r\n MatButtonModule,\r\n TranslateModule,\r\n NgIf,\r\n MatIconModule,\r\n MatButton\r\n ],\r\n providers: [DatePipe],\r\n templateUrl: './audit-log.component.html',\r\n styleUrl: './audit-log.component.scss'\r\n})\r\nexport class AuditLogComponent implements OnInit {\r\n auditLogEntries: AuditLogEntry[] = [];\r\n\r\n @Input()\r\n pageInfo!: PageInfo;\r\n\r\n @Input()\r\n fields: FieldInfo[];\r\n\r\n @Input()\r\n showHiddenFields : string[];\r\n\r\n\r\n itemId: number;\r\n\r\n item : any = {};\r\n isLoaded : boolean = false;\r\n columnsDefinition: TableColumn<any>[];\r\n\r\n currentDirection: 'ltr' | 'rtl';\r\n\r\n\r\n constructor(public dialog: MatDialog,\r\n private activatedRoute: ActivatedRoute,\r\n private datePipe: DatePipe,\r\n private translateService:TranslateService,\r\n private router:Router,\r\n private directionality: Directionality,\r\n @Inject('securityManager') private securityManager: any,\r\n public backendService: BackendService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.currentDirection = this.directionality.value;\r\n this.directionality.change.subscribe((value) => {\r\n this.currentDirection = value;\r\n })\r\n\r\n this.loadItem();\r\n }\r\n\r\n\r\n private loadItem() {\r\n if (this.activatedRoute.snapshot.queryParams['token']) {\r\n this.itemId = this.backendService.decrypt(this.activatedRoute.snapshot.queryParams['token']);\r\n }\r\n const filterRequest = new FilterRequest;\r\n if (this.itemId > 0) {\r\n filterRequest.filters = [];\r\n filterRequest.sortDirection = \"DESC\";\r\n // TODO\r\n // add pagination support here.\r\n filterRequest.pageSize = 1000;\r\n filterRequest.filters.push(new Filter({\r\n key: 0,\r\n fieldType: 'Long',\r\n fieldName: 'id',\r\n valueObject: this.itemId,\r\n filterType: 'FILED_FILTER',\r\n operator: 'EQUALS'\r\n }));\r\n }\r\n this.backendService.getItemAuditLog(filterRequest, this.pageInfo!.apiUri).subscribe(resp => {\r\n this.auditLogEntries = resp.body;\r\n });\r\n }\r\n\r\n\r\n viewObject(auditLog: AuditLogEntry) {\r\n const dialogRef = this.dialog.open(AuditLogDetailsDialogComponent, {\r\n data: {pageInfo: this.pageInfo, fields: this.fields, item:auditLog.subject, comment: auditLog.comment, showHiddenFields:this.showHiddenFields},\r\n width: '800px',\r\n height: 'auto',\r\n direction: this.currentDirection\r\n });\r\n\r\n }\r\n\r\n getDescription(auditLog: AuditLogEntry) {\r\n return `\r\n ${auditLog.createdBy || this.translateService.instant('system')}\r\n ${this.translateService.instant('on')}\r\n ${this.datePipe.transform(auditLog.createdOn, 'medium')}\r\n ${this.translateService.instant('audit-log.executed')} ${this.translateService.instant(auditLog.action.toString())}`\r\n }\r\n}\r\n","<h4>\r\n <span class=\"audit-log-title\">{{ 'audit-log.title' | translate }}</span>\r\n</h4>\r\n\r\n<div class=\"hrdivider-mini\">\r\n <hr class=\"header-hr\" />\r\n</div>\r\n\r\n<div class=\"audit-log-container\" *ngFor=\"let auditLog of auditLogEntries; let i = index\">\r\n <div class=\"audit-log-entry\">\r\n <p *ngIf=\"i === 0\" class=\"audit-log-spacer\"></p>\r\n\r\n <p class=\"audit-log-text\">\r\n {{ getDescription(auditLog) }}\r\n <button mat-stroked-button color=\"secondary\" (click)=\"viewObject(auditLog)\" [attr.id]=\"'audit-view-details-' + i\">\r\n {{ 'audit-log.view_details' | translate }}\r\n </button>\r\n </p>\r\n\r\n <p class=\"invoice-label-text\"></p>\r\n\r\n <div class=\"hrdivider-mini\">\r\n <hr class=\"header-hr\" />\r\n </div>\r\n </div>\r\n</div>\r\n","import {Component, ElementRef, EventEmitter, Output, ViewChild} from '@angular/core';\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {MatButton, MatIconButton} from \"@angular/material/button\";\r\nimport {NgIf} from \"@angular/common\";\r\nimport {MatTooltip} from \"@angular/material/tooltip\";\r\n\r\n@Component({\r\n selector: 'app-attachment-uploader',\r\n standalone: true,\r\n imports: [\r\n MatIcon,\r\n TranslateModule,\r\n MatButton,\r\n NgIf,\r\n MatTooltip,\r\n MatIconButton,\r\n ],\r\n templateUrl: './attachment-uploader.component.html',\r\n styleUrl: './attachment-uploader.component.css'\r\n})\r\nexport class AttachmentUploaderComponent {\r\n @ViewChild('fileUpload') fileUpload!: ElementRef<HTMLInputElement>;\r\n @Output() fileSelected = new EventEmitter<File | null>();\r\n\r\n selectedFile: File | null = null;\r\n isDragOver = false;\r\n\r\n triggerAttachmentUpload(): void {\r\n this.fileUpload.nativeElement.click();\r\n }\r\n\r\n uploadFileToServer(): void {\r\n const file = this.fileUpload.nativeElement.files?.[0];\r\n if (file) {\r\n this.selectedFile = file;\r\n this.fileSelected.emit(file);\r\n }\r\n }\r\n\r\n clearFile(): void {\r\n this.selectedFile = null;\r\n this.fileUpload.nativeElement.value = '';\r\n this.fileSelected.emit(null);\r\n }\r\n\r\n onDragOver(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDragOver = true;\r\n }\r\n\r\n onDragLeave(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDragOver = false;\r\n }\r\n\r\n onDrop(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDragOver = false;\r\n\r\n const files = event.dataTransfer?.files;\r\n if (files && files.length > 0) {\r\n const file = files[0];\r\n this.selectedFile = file;\r\n this.fileSelected.emit(file);\r\n }\r\n }\r\n}","<div class=\"attachment-uploader\"\r\n [class.drag-over]=\"isDragOver\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\">\r\n <div class=\"upload-content\">\r\n <div class=\"upload-icon\">\r\n <mat-icon>upload_file</mat-icon>\r\n </div>\r\n\r\n <p class=\"main-text\">{{ 'attachmentUploader.dragAndDrop' | translate }}</p>\r\n\r\n <p class=\"info-text\">{{ 'attachmentUploader.fileInfo' | translate }}</p>\r\n\r\n <button mat-stroked-button\r\n class=\"browse-button\"\r\n (click)=\"triggerAttachmentUpload()\">\r\n {{ 'attachmentUploader.browseFiles' | translate }}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"selectedFile\" class=\"selected-file\">\r\n <div class=\"file-info\">\r\n <mat-icon class=\"file-icon\">description</mat-icon>\r\n <span class=\"file-name\">{{ selectedFile.name }}</span>\r\n </div>\r\n <button mat-icon-button\r\n class=\"clear-button\"\r\n (click)=\"clearFile()\"\r\n matTooltip=\"{{ 'attachmentUploader.removeFile' | translate }}\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <input #fileUpload type=\"file\" class=\"hidden-input\" (change)=\"uploadFileToServer()\" />\r\n</div>\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport { FormGroup } from \"@angular/forms\";\r\nimport { AutoCompleteComponent } from \"../auto-complete/auto-complete.component\";\r\nimport { MatFormField, MatOption, MatSelect } from \"@angular/material/select\";\r\nimport {NgForOf, NgIf, NgSwitch, NgSwitchCase} from \"@angular/common\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {MatIconButton} from \"@angular/material/button\";\r\n\r\n@Component({\r\n selector: 'lib-equation-builder',\r\n standalone: true,\r\n imports: [\r\n AutoCompleteComponent,\r\n MatSelect,\r\n MatOption,\r\n MatFormField,\r\n NgSwitch,\r\n NgForOf,\r\n NgSwitchCase,\r\n MatIcon,\r\n MatIconButton,\r\n NgIf\r\n ],\r\n templateUrl: './equation-builder.component.html',\r\n styleUrl: './equation-builder.component.css'\r\n})\r\nexport class EquationBuilderComponent implements OnInit {\r\n @Input() form!: FormGroup;\r\n @Input() field!: any;\r\n @Input() isPending!: boolean;\r\n @Output() valueChanged = new EventEmitter<any>();\r\n\r\n operators = [\r\n { label: '+', value: '+' },\r\n { label: '-', value: '-' },\r\n { label: '=', value: '=' }\r\n ];\r\n\r\n items: any[] = [];\r\n @Input() readOnly!: boolean;\r\n\r\n ngOnInit() {\r\n const fieldValues: any[] = this.form.get('fieldValue')?.value;\r\n\r\n if (Array.isArray(fieldValues) && fieldValues.length > 0) {\r\n this.items = fieldValues.map(val => {\r\n if (this.operators.some(op => op.value === val)) {\r\n return { type: 'dropdown', value: val };\r\n } else {\r\n return {\r\n type: 'lookup',\r\n value: this.getLookupByCode(val)\r\n };\r\n }\r\n });\r\n } else {\r\n this.items = [{ type: 'lookup', value: null }];\r\n }\r\n\r\n }\r\n\r\n getLookupByCode(code: string): any {\r\n return { code: code, id: 1, englishName: code, arabicName: code }\r\n }\r\n\r\n onLookupChange(index: number, value: any) {\r\n this.items[index].value = value;\r\n\r\n if (index === this.items.length - 1) {\r\n this.items.push({ type: 'dropdown', value: null});\r\n }\r\n\r\n this.emitChange();\r\n }\r\n\r\n onDropdownChange(index: number, value: any) {\r\n this.items[index].value = value;\r\n\r\n if (index !== this.items.length - 1) {\r\n this.emitChange();\r\n return;\r\n }\r\n\r\n if (value === '=') {\r\n this.items = this.items.slice(0, index + 1);\r\n } else if (value != null && value !== '') {\r\n const lastItem = this.items[this.items.length - 1];\r\n if (lastItem.type !== 'lookup') {\r\n this.items.push({ type: 'lookup', value: null });\r\n }\r\n }\r\n\r\n this.emitChange();\r\n }\r\n\r\n emitChange() {\r\n const simplifiedItems = this.items.map(item => {\r\n if (item?.type === 'lookup') {\r\n return item.value?.code ?? null;\r\n } else if (item?.type === 'dropdown') {\r\n return item.value ?? null;\r\n }\r\n return null;\r\n });\r\n const isValid = simplifiedItems[simplifiedItems.length - 1] === '=';\r\n\r\n this.valueChanged.emit({\r\n value: simplifiedItems.filter(val => val !== '='),\r\n valid: isValid\r\n });\r\n }\r\n\r\n onClearAll(): void {\r\n this.items = [{ type: 'lookup', value: null }];\r\n this.emitChange();\r\n }\r\n\r\n\r\n}\r\n","<div class=\"flex-row gap-10 fill align-start-center\">\r\n <ng-container *ngFor=\"let item of items; let i = index\">\r\n <div class=\"flex-row align-start-center gap-5\">\r\n <ng-container [ngSwitch]=\"item.type\">\r\n <ng-container *ngSwitchCase=\"'lookup'\">\r\n <app-auto-complete\r\n class=\"flex-full\"\r\n [field]=\"field\"\r\n [form]=\"form\"\r\n [defaultValue]=\"item.value\"\r\n (selectedValue)=\"onLookupChange(i, $event)\">\r\n </app-auto-complete>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'dropdown'\">\r\n <mat-form-field class=\"flex-none\" appearance=\"outline\" style=\"width: 100px\">\r\n <mat-select [disabled]=\"readOnly\" [value]=\"item.value\" (selectionChange)=\"onDropdownChange(i, $event.value)\">\r\n <mat-option *ngFor=\"let opt of operators\" [value]=\"opt.value\">\r\n {{ opt.label }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <button [disabled]=\"isPending\" mat-icon-button color=\"warn\" (click)=\"onClearAll()\" *ngIf=\"items.length > 0\" id=\"equation-clear-all-btn\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n</div>\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from \"@angular/core\";\r\nimport {\r\n MatCell,\r\n MatCellDef,\r\n MatColumnDef,\r\n MatHeaderCell,\r\n MatHeaderCellDef,\r\n MatHeaderRow,\r\n MatHeaderRowDef,\r\n MatRow,\r\n MatRowDef,\r\n MatTable\r\n} from \"@angular/material/table\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {MatSortModule} from \"@angular/material/sort\";\r\nimport {NgClass, NgForOf, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault} from \"@angular/common\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {MatButton, MatButtonModule} from \"@angular/material/button\";\r\nimport {NgxPaginationModule} from \"ngx-pagination\";\r\nimport {Router} from \"@angular/router\";\r\nimport {AbstractControl, FormArray, FormBuilder, FormControl, FormGroup, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {MatError, MatFormField, MatInput, MatLabel, MatSuffix} from \"@angular/material/input\";\r\nimport {BackendService} from \"../../services\";\r\nimport {\r\n BaseUtils,\r\n buildFormFields,\r\n getNegativeWfActionKey,\r\n getPositiveWfActionKey,\r\n getWfActionId\r\n} from \"../../utils/base-utils\";\r\nimport {\r\n EMPTY_PAGE_INFO,\r\n FieldInfo,\r\n Filter,\r\n FilterRequest,\r\n LookupItem,\r\n PageInfo,\r\n SELECT_RECORD_ACTION,\r\n SnackMessage,\r\n TableColumn\r\n} from \"../../base-model\";\r\nimport {DoActionRequest, REJECT, SAVE} from \"../../base-model/do-action-request\";\r\nimport {ActionCommentComponent} from \"../action-comment/action-comment.component\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {MatDatepicker, MatDatepickerInput, MatDatepickerToggle} from \"@angular/material/datepicker\";\r\nimport moment, {Moment} from 'moment';\r\nimport {AutoCompleteComponent} from \"../auto-complete/auto-complete.component\";\r\nimport {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatOption} from \"@angular/material/core\";\r\nimport {MatChipListbox, MatChipOption} from \"@angular/material/chips\";\r\nimport {TitleBarComponent} from \"../title-bar/title-bar.component\";\r\nimport {PaginatorComponent} from \"../paginator/paginator.component\";\r\nimport {Directionality} from \"@angular/cdk/bidi\";\r\nimport {AttachmentUploaderComponent} from \"../shared/attachment-uploader/attachment-uploader.component\";\r\nimport {EquationBuilderComponent} from \"../equation-builder/equation-builder.component\";\r\nimport {MatSelect} from \"@angular/material/select\";\r\n\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport {MatCheckbox} from \"@angular/material/checkbox\";\r\n@Component({\r\n selector: 'app-editable-base-table',\r\n standalone: true,\r\n templateUrl: './editable-base-table.component.html',\r\n styleUrls: ['./editable-base-table.component.scss'],\r\n animations: [],\r\n imports: [\r\n NgClass,\r\n TranslateModule,\r\n MatIcon,\r\n MatSortModule,\r\n MatColumnDef,\r\n MatHeaderCellDef,\r\n NgIf,\r\n MatTable,\r\n MatHeaderCell,\r\n NgSwitch,\r\n MatButtonModule,\r\n MatCell,\r\n MatCellDef,\r\n NgxPaginationModule,\r\n MatRow,\r\n MatRowDef,\r\n MatHeaderRow,\r\n NgSwitchCase,\r\n NgSwitchDefault,\r\n MatHeaderRowDef,\r\n NgForOf,\r\n MatButton,\r\n ReactiveFormsModule,\r\n MatInput,\r\n AutoCompleteComponent,\r\n MatFormField,\r\n MatDatepicker,\r\n MatDatepickerInput,\r\n MatDatepickerToggle,\r\n MatLabel,\r\n MatSuffix,\r\n MatChipListbox,\r\n MatChipOption,\r\n TitleBarComponent,\r\n PaginatorComponent,\r\n AttachmentUploaderComponent,\r\n EquationBuilderComponent,\r\n MatSelect,\r\n MatOption,\r\n BaseFormCanvasComponent,\r\n MatCheckbox,\r\n ],\r\n providers: [\r\n // `MomentDateAdapter` can be automatically provided by importing `MomentDateModule` in your\r\n // application's root module. We provide it at the component level here, due to limitations of\r\n // our example generation script.\r\n // {\r\n // provide: DateAdapter,\r\n // useClass: MomentDateAdapter,\r\n // deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n // },\r\n\r\n // { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },\r\n ],\r\n})\r\n\r\nexport class EditableBaseTableComponent extends BaseUtils implements OnInit, OnChanges {\r\n\r\n collection = {count: 60, data: []};\r\n config = {\r\n itemsPerPage: 10,\r\n currentPage: 1,\r\n totalItems: this.collection.count\r\n };\r\n public maxSize: number = 7;\r\n public directionLinks: boolean = true;\r\n public autoHide: boolean = false;\r\n public responsive: boolean = true;\r\n public labels: any = {\r\n previousLabel: '<',\r\n nextLabel: '>',\r\n screenReaderPaginationLabel: 'Pagination',\r\n screenReaderPageLabel: 'page',\r\n screenReaderCurrentLabel: `You're on page`\r\n };\r\n\r\n private timer: any;\r\n dataElements: any[] = [];\r\n noDataFound = false;\r\n isLoaded: boolean = false;\r\n totalElements = 0;\r\n pagesCount = 0;\r\n pageIndex = 1;\r\n pageSize = 10;\r\n formParam: FormGroup;\r\n searchForm: FormGroup;\r\n\r\n @Input()\r\n filterRequest: FilterRequest;\r\n\r\n @Input()\r\n superDataElements: any[];\r\n\r\n @Input()\r\n override pageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n\r\n @Input() //@ts-ignore\r\n enforceRefresh: boolean = false;\r\n\r\n @Input()\r\n isPending: boolean = false;\r\n\r\n @Input()\r\n isBulkItemsSupported: boolean = false;\r\n\r\n @Input()// @ts-ignore\r\n public fields: FieldInfo[] = [];\r\n\r\n @Input()// @ts-ignore\r\n public searchFormFields: FieldInfo[] = [];\r\n\r\n @Input() translationKey: string = 'addNew';\r\n\r\n @Output()\r\n formUpdated: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();\r\n\r\n @Output()\r\n saveActionEmitter: EventEmitter<any> = new EventEmitter<any>();\r\n @Output()\r\n saveAttachmentEmitter: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Input() actionRequestCallback!: (actionRequest: DoActionRequest) => DoActionRequest;\r\n\r\n @ViewChild('uploader') uploaderComponent!: AttachmentUploaderComponent;\r\n\r\n currentDirection: 'ltr' | 'rtl';\r\n selectedFileFromUploader: File | null = null;\r\n private selectedItem: any;\r\n\r\n\r\n constructor(\r\n private backendService: BackendService,\r\n private router: Router,\r\n private fb: FormBuilder,\r\n public dialog: MatDialog,\r\n private directionality: Directionality\r\n ) {\r\n super();\r\n }\r\n\r\n get dataFormArray(): FormArray {\r\n return this.formParam.get('dataFormArray') as FormArray;\r\n }\r\n\r\n extractFormat(column: TableColumn<any>) {\r\n return column?.format || 'd/M/yyyy, h:mm a';\r\n }\r\n\r\n get dataSource() {\r\n return this.dataFormArray.value;\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.currentDirection = this.directionality.value;\r\n this.directionality.change.subscribe((value) => {\r\n this.currentDirection = value;\r\n })\r\n\r\n if(this.superDataElements?.length>0){\r\n this.dataElements=this.superDataElements;\r\n this.buildForm();\r\n this.isLoaded = true;\r\n }else {\r\n this.loadData();\r\n }\r\n }\r\n\r\n private loadData() {\r\n this.fields.forEach(field => field.readonly = this.isPending);\r\n\r\n this.dataElements = [];\r\n this.totalElements = 0;\r\n this.pagesCount = 1;\r\n this.pageIndex = 1;\r\n this.noDataFound = true;\r\n this.isLoaded = true;\r\n\r\n this.filterRequest.pendingPage = this.isPending;\r\n\r\n if (!this.pageInfo.lazyLoadData) {\r\n this.backendService.getItemsByFilter(this.filterRequest, this.pageInfo.apiUri)\r\n .subscribe(resp => {\r\n this.dataElements = resp.body || [];\r\n this.totalElements = resp.totalSize || 0;\r\n this.pagesCount = Math.max(Math.ceil(this.totalElements / this.pageSize), 1);\r\n this.pageIndex = (this.filterRequest.pageIndex || 0) + 1;\r\n this.noDataFound = this.dataElements.length === 0;\r\n this.isLoaded = true;\r\n });\r\n }\r\n\r\n this.buildForm();\r\n }\r\n\r\n private buildForm() {\r\n this.formParam = this.fb.group({\r\n dataFormArray: this.fb.array(this.dataElements.map(item => this.fb.group(buildFormFields(this.fields, item)))),\r\n });\r\n this.formUpdated.next(this.formParam);\r\n }\r\n\r\n onPageChange(event: number) {\r\n this.pageIndex = event;\r\n this.getNext(this.pageIndex - 1);\r\n }\r\n getNext(pageIndex: number) {\r\n this.filterRequest.pageIndex = pageIndex;\r\n this.filterRequest.pageSize = this.pageSize;\r\n this.loadData();\r\n }\r\n\r\n onPageSizeChange(event: number) {\r\n this.pageSize = event;\r\n this.pageIndex = 1;\r\n this.filterRequest.pageSize = this.pageSize;\r\n this.getNext(0);\r\n }\r\n\r\n\r\n extractFieldName(element: any, property: string) {\r\n if (property.includes('.')) {\r\n return property.split('.').reduce((acc, part) => acc && acc[part], element);\r\n } else {\r\n return element[property];\r\n }\r\n }\r\n\r\n get visibleColumns() {\r\n return this.fields.filter(column => column.visible).map(column => column.property);\r\n }\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"enforceRefresh\"] && !changes[\"enforceRefresh\"].isFirstChange() && changes[\"enforceRefresh\"].currentValue === true) {\r\n // this.loadData();\r\n }\r\n }\r\n\r\n onSelectItem(row: any) {\r\n if (this.pageInfo.selfRouting) {\r\n const mode = this.isPending ? 'pending' : 'view';\r\n const url = `${this.pageInfo.listRoutePath || this.router.url}/${mode}`;\r\n this.router.navigate([`${url}`, row?.id]);\r\n }\r\n const action = SELECT_RECORD_ACTION;\r\n action.id = row?.id;\r\n // this.userAction.emit(action)\r\n this.selectedItem = row;\r\n }\r\n\r\n openNewTab(row) {\r\n if (!this.pageInfo.embededTableOnly) {\r\n const mode = this.isPending ? 'pending' : 'view';\r\n window.open(`${this.pageInfo.listRoutePath}/${mode}` + '/' + row?.id);\r\n }\r\n }\r\n\r\n\r\n getField(element, column: FieldInfo) {\r\n return element.controls[column.property];\r\n }\r\n\r\n fieldButtonEvent(column, element, actionId: number) {\r\n this.doSaveApproveAction(element, actionId);\r\n }\r\n\r\n patchLookupValue($event: LookupItem, property: string) {\r\n this.formUpdated.emit(this.selectedItem)\r\n }\r\n\r\n addNewItem() {\r\n const currentValues = this.formParam?.get('dataFormArray')?.value;\r\n if (currentValues) {\r\n this.dataElements = [...currentValues];\r\n }\r\n this.dataElements.push({});\r\n this.buildForm();\r\n }\r\n\r\n\r\n doSaveApproveAction(element, userActionId) {\r\n let actionId = getWfActionId(element.value.stateType);\r\n if (userActionId === REJECT && this.isPending) {\r\n actionId =3\r\n }\r\n let request = new DoActionRequest();\r\n request.actionId = actionId;\r\n request.subject = element.value;\r\n\r\n if (this.actionRequestCallback) {\r\n request = this.actionRequestCallback(request);\r\n if (request.subject.id === \"\") {\r\n request.subject.id = null;\r\n request.subject.stateType = \"NEW\";\r\n }\r\n }\r\n\r\n if (request.subject.id === \"\") {\r\n request.subject.id = null;\r\n request.subject.stateType = \"NEW\";\r\n }\r\n\r\n\r\n const dialogRef = this.dialog.open(ActionCommentComponent, {\r\n data: {label: userActionId === 2 ? 'save' : 'reject', isTermination: false},\r\n width: '600px',\r\n height: 'auto',\r\n direction: this.currentDirection\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n request.comment = result.comment;\r\n this.backendService.doActionWithAttachments(request, [], this.pageInfo!).subscribe(resp => {\r\n if (resp.valid) {\r\n this.loadData();\r\n let message = '';\r\n if (actionId === 1 ) {\r\n message = 'saved_successfully' ;\r\n } else if (actionId ===2 ) {\r\n message = 'updated_successfully';\r\n } else if (actionId ===3 ) {\r\n message = 'successful_reject_message';\r\n } else if (actionId ===4 ) {\r\n message = 'approve_successfully';\r\n }\r\n this.backendService.topPanelMessage$.next(new SnackMessage(message, true, 'success'));\r\n }else {\r\n const x = resp.message?.length >0 ? resp.message[0].errorMessage : 'FAILED_CONTACT_ADMIN';\r\n this.backendService.topPanelMessage$.next(new SnackMessage(x, true, 'error'));\r\n }\r\n this.saveActionEmitter.emit({item:request.subject, resp});\r\n });\r\n }\r\n });\r\n }\r\n protected readonly getPositiveWfActionKey = getPositiveWfActionKey;\r\n protected readonly getNegativeWfActionKey = getNegativeWfActionKey;\r\n protected readonly SAVE = SAVE;\r\n protected readonly REJECT = REJECT;\r\n\r\n\r\n setMonthAndYear(normalizedMonthAndYear: Moment, picker: MatDatepicker<Moment>, element, column) {\r\n const date = new FormControl(moment());\r\n const ctrlValue = date.value;\r\n ctrlValue.year(normalizedMonthAndYear.year());\r\n ctrlValue.month(1);\r\n ctrlValue.dayOfYear(1);\r\n element.controls[column.property].setValue(ctrlValue);\r\n picker.close();\r\n }\r\n\r\n switchViewMode(b: boolean) {\r\n this.isPending = b;\r\n this.loadData();\r\n }\r\n\r\n addBulkItems() {\r\n const merged: any[] = [];\r\n\r\n this.dataFormArray.controls.forEach((group: AbstractControl) => {\r\n merged.push(group.value);\r\n });\r\n\r\n let request = new DoActionRequest();\r\n request.actionId = 1;\r\n\r\n request.subject = { invoices: merged };\r\n\r\n if (this.actionRequestCallback) {\r\n request = this.actionRequestCallback(request);\r\n\r\n request.subject.invoices = request.subject.invoices.map((item: any) => {\r\n if (item.id === \"\") {\r\n item.id = null;\r\n item.stateType = \"NEW\";\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n request.subject.invoices = request.subject.invoices.map((item: any) => {\r\n if (item.id === \"\") {\r\n item.id = null;\r\n item.stateType = \"NEW\";\r\n }\r\n return item;\r\n });\r\n\r\n\r\n\r\n const dialogRef = this.dialog.open(ActionCommentComponent, {\r\n data: {label: 'save' , isTermination: false},\r\n width: '600px',\r\n height: 'auto',\r\n direction: this.currentDirection\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n request.comment = result.comment;\r\n this.backendService.doActionWithAttachment(request, this.selectedFileFromUploader, this.pageInfo!).subscribe(resp => {\r\n if (resp.valid) {\r\n this.clearBulkItems();\r\n this.backendService.topPanelMessage$.next(new SnackMessage('saved_successfully', true, 'success'));\r\n this.loadData();\r\n }else {\r\n this.backendService.topPanelMessage$.next(new SnackMessage(this.pageInfo.labelsSection + '.' + resp.message?.[0]?.errorCode, true, 'error'));\r\n }\r\n this.saveAttachmentEmitter.emit({item:request.subject, resp});\r\n });\r\n }\r\n }); }\r\n\r\n @ViewChild('fileUpload') fileUpload: ElementRef<HTMLInputElement>;\r\n\r\n handleFileUpload($event: File) {\r\n let actionId = getWfActionId('NEW');\r\n let request = new DoActionRequest();\r\n request.actionId = actionId;\r\n\r\n this.selectedFileFromUploader = $event;\r\n\r\n }\r\n\r\n shouldDisableBulkAdd() {\r\n const hasFile = !!this.selectedFileFromUploader;\r\n return (!this.formParam?.valid || this.dataFormArray.controls.length === 0) && !hasFile;\r\n }\r\n handleEquationChange(event: { value: any[], valid: boolean }, element: FormGroup, column: any): void {\r\n element.value[column.property] = event.value;\r\n const { value, valid } = event;\r\n element.get(column.property)?.setValue(value);\r\n if (!valid) {\r\n element.get(column.property)?.setErrors({ invalidEquation: true });\r\n } else {\r\n element.get(column.property)?.setErrors(null);\r\n }\r\n }\r\n\r\n clearBulkItems() {\r\n this.dataElements = [];\r\n this.selectedFileFromUploader = null;\r\n this.uploaderComponent.clearFile();\r\n this.buildForm();\r\n this.formUpdated.emit(this.formParam);\r\n }\r\n\r\n hasDataToClear(): boolean {\r\n return (this.dataElements && this.dataElements.length > 0) || !!this.selectedFileFromUploader;\r\n }\r\ngetOptionValue(item: any) {\r\n const value = typeof item === 'object' ?\r\n item.englishName : item;\r\n return value;\r\n }\r\n\r\n disabledSaveButton(element) {\r\n return !element.valid || (!this.isPending && element.value.stateType == 'PENDING');\r\n }\r\n\r\n doSearch() {\r\n if (this.searchForm.valid) {\r\n const rawValues = this.searchForm.getRawValue();\r\n this.filterRequest.pageIndex=0;\r\n this.filterRequest.filters = [];\r\n this.searchFormFields.forEach(x => {\r\n const value = rawValues[x.property];\r\n if (value !== null && value !== undefined && value !== '') {\r\n const filter = new Filter({\r\n key: 0,\r\n label: x.property,\r\n fieldName: x.searchAttribute,\r\n valueObject : x.searchAttribute.includes('.') ? value[x.searchAttribute.split('.').pop()] : value,\r\n operator: x.searchOperator,\r\n filterType: 'FILED_FILTER'\r\n });\r\n this.filterRequest.filters.push(filter);\r\n }\r\n });\r\n this.loadData();\r\n } else {\r\n this.backendService.topPanelMessage$.next(new SnackMessage('INVALID_SEARCH_FORM', true, 'error'));\r\n }\r\n }\r\n\r\n showSearch() {\r\n return this.searchFormFields?.length > 0;\r\n }\r\n\r\n clearSearch() {\r\n this.searchForm.get('sectorType').setValue({id:-100, englishName:'aaa', code:'aaa', arabicName:'aaa'});\r\n this.searchForm.reset();\r\n this.doSearch();\r\n }\r\n\r\n updateSearchForm($event: FormGroup) {\r\n this.searchForm = $event\r\n }\r\n\r\n validSearchData() {\r\n return !this.searchForm.valid || true;\r\n }\r\n\r\n}\r\n","<div class=\"baseTable flex-column\">\r\n <div class=\"left-align\">\r\n <app-attachment-uploader #uploader\r\n *ngIf=\"isBulkItemsSupported\"\r\n (fileSelected)=\"handleFileUpload($event)\">\r\n </app-attachment-uploader>\r\n </div>\r\n\r\n <div class=\"flex-row full-width\">\r\n <div class=\"flex-half flex-column align-center-start\">\r\n <app-title-bar [pageTitle]=\"pageInfo.hideTitle ? '' : pageInfo.labelsSection+'.list_title'\"\r\n [titleMode]=\"''\"\r\n [newAction]=\"false\"\r\n [showExtractButton]=\"!pageInfo.hideExtractButton\">\r\n </app-title-bar>\r\n <span class=\"font-small\">{{ 'totalCountItem' | translate }} : {{ this.totalElements }}</span>\r\n </div>\r\n <div class=\"flex-half flex-column align-start-end\">\r\n <mat-chip-listbox aria-label=\"Color selection\" [multiple]=\"false\" *ngIf=\"pageInfo.draftSupported\">\r\n <mat-chip-option [selected]=\"!this.isPending\" [color]=\"'accent'\" [value]=\"'COMPLETED'\"\r\n (click)=\"switchViewMode(false)\">{{ 'finished' | translate }}\r\n </mat-chip-option>\r\n <mat-chip-option [selected]=\"this.isPending\" [color]=\"'accent'\" [value]=\"'PENDING'\"\r\n (click)=\"switchViewMode(true)\">{{ 'todo' | translate }}\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"showSearch()\">\r\n <div class=\"flex-row full-width\">\r\n <div class=\"flex-80 flex-column align-start-end\">\r\n <app-base-form-canvas class=\"flex-fill\"\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"searchFormFields\"\r\n [editable]=\"true\"\r\n (formUpdated)=\"updateSearchForm($event)\">\r\n </app-base-form-canvas>\r\n </div>\r\n <div class=\"flex-15 flex-column align-start-end\">\r\n <div class=\"flex-row align-center-center gap-8 full-width\">\r\n <button mat-button color=\"primary\" type=\"button\" (click)=\"doSearch()\" id=\"editable-search-btn\">\r\n <mat-icon>search</mat-icon>\r\n {{ 'search' | translate }}\r\n </button>\r\n <button mat-button color=\"primary\" type=\"button\" (click)=\"clearSearch()\" id=\"editable-clear-search-btn\">\r\n <mat-icon>clear</mat-icon>\r\n {{ 'clear' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"flex-row full-width baseTable__detailsColumn\">\r\n <div class=\"flex-full\">\r\n <ng-container *ngIf=\"isLoaded\">\r\n <div class=\"flex-row mainTable gap-0 align-start-start\">\r\n <form [formGroup]=\"formParam\" class=\"flex-fill\">\r\n <table [dataSource]=\"dataFormArray.controls\" class=\"flex-fill\" mat-table matSort>\r\n <ng-container *ngFor=\"let column of this.fields; let i = index\">\r\n <ng-container matColumnDef=\"{{column.property}}\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'equation-builder'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\" mat-cell>\r\n <lib-equation-builder\r\n [form]=\"element\"\r\n [field]=\"column\"\r\n [readOnly]=\"column.readonly\"\r\n [isPending]=\"isPending\"\r\n (valueChanged)=\"handleEquationChange($event, element, column)\">\r\n </lib-equation-builder>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'lookup'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <app-auto-complete\r\n [form]=\"element\"\r\n [field]=\"column\"\r\n [defaultValue]=\"element.get(column.property)?.value\"\r\n (selectedValue)=\"patchLookupValue($event, column.property)\">\r\n </app-auto-complete>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}</th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-label>{{element}}</mat-label>\r\n <mat-select\r\n formControlName=\"{{column.property}}\"\r\n [attr.aria-label]=\"column.label! | translate\"\r\n [multiple]=\"false\"\r\n [(value)]=\"element[column.property]\">\r\n <ng-container>\r\n <mat-option\r\n *ngFor=\"let item of column.listOptions\"\r\n [value]=\"item\">\r\n {{ getOptionValue(item) }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'stateType'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ 'action' | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td mainTable__td__text-secondary__td\" mat-cell>\r\n <div class=\"flex-column\">\r\n <div class=\"flex-row full-width\">\r\n <div class=\"flex-third flex-column align-center-center\">\r\n <button mat-button class=\"btn-none-background-primary\"\r\n color=\"primary\"\r\n [disabled]=\"disabledSaveButton(element)\"\r\n (click)=\"fieldButtonEvent(column,element,SAVE)\"\r\n [attr.id]=\"'editable-save-' + (element.value?.id || '')\">\r\n {{ getPositiveWfActionKey(element.value.stateType) | translate }}\r\n </button>\r\n </div>\r\n <div class=\"flex-third flex-column align-center-center\">\r\n <button *ngIf=\"isPending\" mat-button class=\"btn-none-background-primary\"\r\n color=\"accent\"\r\n (click)=\"fieldButtonEvent(column,element,REJECT)\"\r\n [attr.id]=\"'editable-reject-' + (element.value?.id || '')\">\r\n {{ getNegativeWfActionKey(element.value.stateType) | translate }}\r\n </button>\r\n </div>\r\n <div class=\"flex-third flex-column align-center-center\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'year'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <mat-label>{{ labelKey(column) | translate }}</mat-label>\r\n <input matInput\r\n [disabled]=\"column.readonly\"\r\n [readonly]=\"column.readonly\"\r\n [matDatepicker]=\"picker\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker startView=\"multi-year\"\r\n (yearSelected)=\"setMonthAndYear($event, picker, element,column)\"\r\n panelClass=\"example-month-picker\"></mat-datepicker>\r\n\r\n </mat-form-field>\r\n <!-- <mat-form-field class=\"flex-auto\" appearance=\"outline\" fxFlexFill>-->\r\n <!-- <input matInput [formControl]=\"getField(element, column)\">-->\r\n <!-- </mat-form-field>-->\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <!-- Visually hidden label just to trigger the floating label and asterisk -->\r\n <mat-label>\r\n </mat-label>\r\n\r\n <input matInput\r\n type=\"number\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [readonly]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'status'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-checkbox\r\n style=\"padding-bottom: 14px; padding-top: 14px;\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\"\r\n [style.pointer-events]=\"column.readonly ? 'none' : 'auto'\"\r\n [style.opacity]=\"column.readonly ? 0.7 : 1\"\r\n (click)=\"column.readonly ? $event.preventDefault() : null\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <mat-label>\r\n {{ labelKey(column) | translate }}\r\n </mat-label>\r\n <input matInput\r\n type=\"text\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [readonly]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>\r\n {{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <input matInput\r\n [matDatepicker]=\"xpicker\"\r\n [formControl]=\"getField(element, column)\"\r\n [required]=\"column.required\"\r\n [readonly]=\"column.readonly\"\r\n [disabled]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [attr.aria-labelledby]=\"'label-' + column.property\"\r\n [attr.aria-describedby]=\"'error-' + column.property\">\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"xpicker\"\r\n [disabled]=\"column.readonly\">\r\n </mat-datepicker-toggle>\r\n <mat-datepicker #xpicker></mat-datepicker>\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <th *matHeaderCellDef class=\"mainTable__th\" mat-header-cell>{{ labelKey(column) | translate }}\r\n </th>\r\n <td *matCellDef=\"let element\" class=\"mainTable__td\"\r\n [ngClass]=\"['mainTable__td__text-secondary__td']\"\r\n mat-cell>\r\n <mat-form-field class=\"flex-auto fx-flex-fill\" appearance=\"outline\">\r\n <input matInput\r\n [readonly]=\"column.readonly\"\r\n [attr.aria-required]=\"column.required\"\r\n [formControl]=\"getField(element, column)\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <tr *matHeaderRowDef=\"visibleColumns\" mat-header-row></tr>\r\n <tr (click)=\"onSelectItem(row)\" (auxclick)=\"openNewTab(row)\"\r\n *matRowDef=\"let row; columns: visibleColumns | paginate:config\"\r\n [attr.id]=\"'editable-row-' + (row?.value?.id || row?.value?.key || '')\"\r\n mat-row></tr>\r\n </table>\r\n </form>\r\n </div>\r\n\r\n <div *ngIf=\"noDataFound && !pageInfo.lazyLoadData\" class=\"flex-row dataNotFound\">\r\n <div class=\"flex-column flex-full\">\r\n <span class=\"dataNotFound__details\">\r\n <mat-icon class=\"dataNotFound__details__icon\">info</mat-icon>\r\n <span>{{ 'dataNotFound' | translate }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex-row mainTable\" *ngIf=\"!selectedFileFromUploader\">\r\n <div>\r\n <button *ngIf=\"!isPending && pageInfo.hasAddButton\" mat-button color=\"primary\" type=\"button\"\r\n (click)=\"addNewItem()\" id=\"editable-add-item-btn\">\r\n <mat-icon>add_box</mat-icon>\r\n {{ translationKey | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex-row flex-wrap align-center-center main-pagination\" *ngIf=\"totalElements > 0\">\r\n <div class=\"flex-column flex-full\">\r\n <app-paginator [currentPage]=\"pageIndex\" [totalItems]=\"totalElements\" [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"[5, 10, 25, 50]\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></app-paginator>\r\n </div>\r\n <div class=\"flex-column flex-full countItem hide-gt-xs\">\r\n <span class=\"countItem__totalElement\">{{ 'totalCountItem' | translate }} : {{ this.totalElements }}</span>\r\n </div>\r\n <div class=\"flex-column flex-2\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isBulkItemsSupported\" class=\"flex-row gap-10 align-start-start mainTable\">\r\n <div>\r\n <button mat-flat-button color=\"primary\" type=\"button\" (click)=\"addBulkItems()\" [disabled]=\"shouldDisableBulkAdd()\" id=\"editable-bulk-add-btn\">\r\n <mat-icon>add_box</mat-icon>\r\n {{ 'addAll' | translate }}\r\n </button>\r\n </div>\r\n <div>\r\n <button mat-flat-button color=\"warn\" type=\"button\" [disabled]=\"!hasDataToClear()\" (click)=\"clearBulkItems()\" id=\"editable-bulk-clear-btn\">\r\n <mat-icon>delete</mat-icon>\r\n {{ 'clearAll' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {ActivatedRoute} from \"@angular/router\";\r\nimport {NgIf} from \"@angular/common\";\r\nimport {BaseTableComponent} from \"../base-table/base-table.component\";\r\nimport {ButtonActionSettings, EMPTY_PAGE_INFO, FieldInfo, FilterRequest, PageInfo, TableColumn} from \"../../base-model\";\r\nimport {Filter} from \"../../base-model\";\r\nimport {EditableBaseTableComponent} from \"../editable-base-table/editable-base-table.component\";\r\n\r\n@Component({\r\n selector: 'app-shared-list',\r\n standalone: true,\r\n imports: [\r\n BaseTableComponent,\r\n NgIf,\r\n EditableBaseTableComponent\r\n ],\r\n templateUrl: './shared-list.component.html',\r\n styleUrls:[ './shared-list.component.css']\r\n})\r\nexport class SharedListComponent implements OnInit {\r\n pageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n columnsDefinition: TableColumn<any>[] = [];\r\n fields: FieldInfo[] = [];\r\n filters: Filter[] = [];\r\n readyToLoad: boolean = false;\r\n isPending: boolean = false;\r\n listAction: ButtonActionSettings[] = [];\r\n editableTable : boolean = false;\r\n filterRequest: FilterRequest = new FilterRequest();\r\n constructor(private activatedRoute: ActivatedRoute) { }\r\n\r\n ngOnInit(): void {\r\n this.activatedRoute.data.subscribe(data => {\r\n this.pageInfo = data['pageInfo'];\r\n this.columnsDefinition = data[\"columnsDefinition\"];\r\n this.filters = data[\"filters\"] || [];\r\n\r\n this.isPending = 'pending' === data[\"mode\"];\r\n this.listAction = data['actions'];\r\n this.editableTable = data['editableTable'] || false;\r\n this.fields = data['fields'];\r\n\r\n this.filterRequest = new FilterRequest();\r\n this.filterRequest.columns = this.fields?.filter(c => c.type !== 'button').map(c => c.property) || [];\r\n this.filterRequest.filters = this.filters;\r\n\r\n this.readyToLoad = true;\r\n\r\n });\r\n }\r\n\r\n\r\n}\r\n","<ng-container *ngIf=\"readyToLoad\">\r\n @if (editableTable) {\r\n <app-editable-base-table [filterRequest]=\"filterRequest\" [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [isPending]=\"isPending\"\r\n ></app-editable-base-table>\r\n\r\n } @else {\r\n\r\n <app-base-table [filters]=\"filters\" [pageInfo]=\"pageInfo\"\r\n [columns]=\"columnsDefinition\"\r\n [listAction]=\"listAction\"\r\n [isPending]=\"isPending\"\r\n ></app-base-table>\r\n\r\n }\r\n</ng-container>\r\n","import {Component, EventEmitter, Inject, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\r\nimport {FieldInfo, Filter, FilterRequest, NEW, PageInfo, SAVE_AND_COMPLETE, SnackMessage} from \"../../base-model\";\r\nimport {FieldMessage} from \"../../base-model/api-response\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {BackendService} from \"../../services\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {Location, NgIf} from \"@angular/common\";\r\nimport {MatButton, MatButtonModule} from \"@angular/material/button\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {TitleBarComponent} from \"../title-bar/title-bar.component\";\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\r\nimport {DoActionRequest, SAVE} from \"../../base-model/do-action-request\";\r\nimport {ActionCommentComponent} from \"../action-comment/action-comment.component\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {BaseUtils, getNegativeWfActionKey, getPositiveWfActionKey, getWfActionId} from \"../../utils/base-utils\";\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {AuditLogComponent} from \"../audit-log-list/audit-log.component\";\r\nimport {Directionality} from \"@angular/cdk/bidi\";\r\n\r\n@Component({\r\n selector: 'app-base-form',\r\n standalone: true,\r\n imports: [\r\n TitleBarComponent,\r\n BaseFormCanvasComponent,\r\n MatButtonModule,\r\n TranslateModule,\r\n NgIf,\r\n MatIconModule,\r\n MatButton,\r\n AuditLogComponent\r\n ],\r\n templateUrl: './base-form.component.html',\r\n styleUrl: './base-form.component.scss'\r\n})\r\nexport class BaseFormComponent extends BaseUtils implements OnInit, OnChanges {\r\n\r\n @Input()\r\n override pageInfo!: PageInfo;\r\n\r\n @Input()// @ts-ignore\r\n fields: FieldInfo[] = [];\r\n\r\n @Input()// @ts-ignore\r\n errors: FieldMessage[] = [];\r\n\r\n @Input()\r\n editable: boolean = false;\r\n\r\n @Input()\r\n itemId: number;\r\n\r\n @Output()\r\n actionResultEmitter: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n formUpdated: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();\r\n\r\n @Output()\r\n itemLoaded: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n extraAction: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n item : any = {};\r\n isLoaded : boolean = false;\r\n\r\n @Output()\r\n hyperTextEvent: EventEmitter<boolean> = new EventEmitter();\r\n\r\n currentDirection: 'ltr' | 'rtl';\r\n isSaveDisabled: boolean = true;\r\n isRejectDisabled: boolean = true;\r\n\r\n @Input()\r\n hideBackButton: boolean = true;\r\n protected readonly SAVE = SAVE;\r\n private isPending: boolean;\r\n\r\n constructor(public dialog: MatDialog,\r\n private activatedRoute: ActivatedRoute,\r\n private router:Router,\r\n private directionality: Directionality,\r\n private location:Location,\r\n @Inject('securityManager') private securityManager: any,\r\n public backendService: BackendService) {\r\n super();\r\n ClassicEditor.defaultConfig = {\r\n toolbar: {\r\n items: ['heading', '|', 'bold', 'italic', '|', 'bulletedList', 'numberedList']\r\n },\r\n image: {\r\n toolbar: ['imageStyle:side', '|', 'imageTextAlternative']\r\n },\r\n table: {\r\n contentToolbar: [ 'tableColumn', 'tableRow', 'mergeTableCells' ]\r\n },\r\n language: 'en'\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n this.currentDirection = this.directionality.value;\r\n this.directionality.change.subscribe((value) => {\r\n this.currentDirection = value;\r\n })\r\n\r\n // console.log('editable', this.editable)\r\n this.securityManager.loadPermissions().subscribe(x => {\r\n console.log(\"before edit\", this.editable);\r\n this.loadItem();\r\n console.log(\"after edit\", this.editable);\r\n });\r\n }\r\n\r\n ngOnChanges({item, errors, fields}: SimpleChanges): void {\r\n }\r\n\r\n isValid() {\r\n return this.backendService.parentForm?.valid;\r\n }\r\n\r\n isMatchHeight() {\r\n return this.pageInfo.pageHeight === 'match';\r\n }\r\n\r\n private loadItem() {\r\n this.editable = false;\r\n\r\n const modeEncrypted = this.activatedRoute.snapshot.queryParams['mode'];\r\n this.isPending = !!modeEncrypted && this.backendService.decrypt(modeEncrypted) === 'pending';\r\n\r\n if (this.activatedRoute.snapshot.queryParams['token'] && this.activatedRoute.snapshot.queryParams['mode']) {\r\n this.itemId = this.backendService.decrypt(this.activatedRoute.snapshot.queryParams['token']);\r\n } else {\r\n // console.log(' ****** ****** ****** ****** error in url ')\r\n }\r\n if (this.itemId > 0) {\r\n const filterRequest = new FilterRequest;\r\n filterRequest.columns = this.fields.filter(c => c.type !== 'spacer').map(c => c.property);\r\n filterRequest.pendingPage = this.isPending;\r\n\r\n filterRequest.filters = [];\r\n filterRequest.filters.push(new Filter({\r\n key: 0,\r\n fieldType: 'Long',\r\n fieldName: 'id',\r\n valueObject: this.itemId,\r\n filterType: 'FILED_FILTER',\r\n operator: 'EQUALS'\r\n }));\r\n ///audit-log\r\n this.backendService.getItemAuditLog(filterRequest, this.pageInfo!.apiUri).subscribe(resp => {\r\n // console.log('resp', resp);\r\n });\r\n this.backendService.getItemsByFilter(filterRequest, this.pageInfo!.apiUri).subscribe(resp => {\r\n if (resp?.valid && resp.body?.length >= 0) {\r\n this.item = resp.body[0];\r\n this.editable = (!this.pageInfo.draftSupported || !this.isPending) && this.securityManager.hasPagePermission(this.pageInfo.id, 'EDIT')\r\n && (!this.pageInfo.draftSupported ||this.item['stateType'] === 'COMPLETED' );\r\n this.itemLoaded.emit(this.item);\r\n this.isLoaded = true;\r\n }\r\n });\r\n } else {\r\n this.editable = this.securityManager.hasPagePermission(this.pageInfo.id, 'EDIT');\r\n this.item = {};\r\n this.itemLoaded.emit(this.item);\r\n this.isLoaded = true;\r\n }\r\n\r\n }\r\n\r\n buildDoActionSubject(): any {\r\n const newVar = this.editable ? Object.assign(this.item, this.backendService.parentForm.value) : this.item;\r\n if (this.itemId <= 0 && this.editable ) {\r\n //TODO this is like a hack and must be handled from backend\r\n newVar['stateType'] = 'NEW';\r\n }\r\n this.fields.forEach(field => {\r\n if (field.flattenBySubAttribute){\r\n newVar[field.property] = newVar[field.property][field.flattenBySubAttribute]\r\n }\r\n })\r\n if (!this.pageInfo.draftSupported){\r\n newVar['status'] = true;\r\n }\r\n return newVar;\r\n }\r\n\r\n\r\n doSaveApproveAction() {\r\n let actionId = getWfActionId(this.item.stateType);\r\n if (this.itemId <= 0 && this.editable ) {\r\n actionId = NEW\r\n }\r\n if (!this.pageInfo.draftSupported) {\r\n actionId = SAVE_AND_COMPLETE\r\n }\r\n if (this.editable && this.backendService.parentForm.valid !== true) {\r\n this.backendService.topPanelMessage$.next(new SnackMessage('INVALID_INPUT_FORM', true, 'error'));\r\n return;\r\n }\r\n const request = new DoActionRequest();\r\n request.actionId = actionId;\r\n request.subject = this.buildDoActionSubject();\r\n\r\n const dialogRef = this.dialog.open(ActionCommentComponent, {\r\n data: {label: 'save', isTermination: false},\r\n width: '600px',\r\n height: 'auto',\r\n direction: this.currentDirection\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n request.comment = result.comment;\r\n this.backendService.doActionWithAttachments(request, [], this.pageInfo!).subscribe(resp => {\r\n console.log('step',actionId);\r\n this.actionResultEmitter.emit({ valid: resp.valid, actionId: actionId });\r\n if (resp.valid ) {\r\n let message = 'approve_successfully';\r\n switch (actionId) {\r\n case 1:\r\n message = 'saved_successfully';\r\n break;\r\n case 2:\r\n message = 'updated_successfully';\r\n break;\r\n default:\r\n message = 'approve_successfully';\r\n }\r\n this.backendService.topPanelMessage$.next(new SnackMessage(message, true, 'success'));\r\n if(!this.pageInfo.stayOnPage){\r\n this.backToParent();\r\n }\r\n }\r\n else{\r\n request.subject['stateType'] = null;\r\n if (resp.message[0].errorMessage.toLowerCase().includes('duplic'))\r\n this.backendService.topPanelMessage$.next(new SnackMessage(this.pageInfo.labelsSection + '.' + resp.message[0].errorCode, true, 'error'));\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n backToParent() {\r\n const idIdx = this.router.url.lastIndexOf('/');\r\n this.router.navigateByUrl(this.router.url.substring(0, idIdx));\r\n }\r\n\r\n\r\n getTitle() {\r\n return `${this.pageInfo.labelsSection}.${this.pageInfo.id}` ;\r\n }\r\n\r\n updateForm($event: FormGroup) {\r\n this.backendService.parentForm = $event;\r\n this.formUpdated.emit($event);\r\n }\r\n\r\n doCancelRejectAction() {\r\n if (!this.editable){\r\n let actionId = 3;\r\n // console.log('actionId',actionId);\r\n const request = new DoActionRequest();\r\n request.actionId = actionId;\r\n request.subject = this.buildDoActionSubject();\r\n\r\n const dialogRef = this.dialog.open(ActionCommentComponent, {\r\n data: {label: 'reject', acceptActionLabel: 'accept', rejectActionLabel: 'return'},\r\n width: '600px',\r\n height: 'auto',\r\n direction: this.currentDirection\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n request.comment = result.comment;\r\n this.backendService.doActionWithAttachments(request, [], this.pageInfo!).subscribe(resp => {\r\n this.actionResultEmitter.emit({ valid: resp.valid, actionId: actionId });\r\n if (resp.valid) {\r\n this.backendService.topPanelMessage$.next(new SnackMessage('successful_reject_message', true, 'success'));\r\n if(!this.pageInfo.stayOnPage){\r\n this.backToParent();\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n this.location.back()\r\n }\r\n }\r\n\r\n hasWfPermission() {\r\n return (this.securityManager.hasPagePermission(this.pageInfo.id, 'EDIT')\r\n || this.securityManager.hasPagePermission(this.pageInfo.id, 'COMPLETE')\r\n || this.securityManager.hasPagePermission(this.pageInfo.id, 'TERMINATE'))\r\n }\r\n\r\n protected readonly getPositiveWfActionKey = getPositiveWfActionKey;\r\n protected readonly getNegativeWfActionKey = getNegativeWfActionKey;\r\n\r\n hasWfPositivePermission() {\r\n return (!this.editable && this.securityManager.hasPagePermission(this.pageInfo.id, 'COMPLETE')) ||\r\n (this.editable && this.securityManager.hasPagePermission(this.pageInfo.id, 'EDIT'))\r\n }\r\n\r\n hasWfNegativePermission() {\r\n return (!this.editable && this.securityManager.hasPagePermission(this.pageInfo.id, 'TERMINATE')) ||\r\n (this.editable && this.securityManager.hasPagePermission(this.pageInfo.id, 'EDIT'))\r\n }\r\n\r\n doExtraAction() {\r\n this.extraAction.emit()\r\n }\r\n disabledSaveButton(element) {\r\n return (!this.isPending && element.stateType == 'PENDING') && this.pageInfo.draftSupported ;\r\n }\r\n\r\n}\r\n","<div class=\"page-container\">\r\n\r\n <div class=\"row full-width mt-2vh\">\r\n <div class=\"column full-width\">\r\n <app-title-bar\r\n [pageTitle]=\"getTitle()\"\r\n [newAction]=\"false\"\r\n [hideBackButton]=\"hideBackButton\">\r\n </app-title-bar>\r\n </div>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editable\"\r\n [errors]=\"errors\"\r\n [item]=\"item\"\r\n (formUpdated)=\"updateForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-49\">\r\n <div class=\"row row-center-start\">\r\n <button *ngIf=\"hasWfPositivePermission()\" color=\"primary\" mat-flat-button\r\n (click)=\"doSaveApproveAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-positive-btn\">\r\n {{ getPositiveWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"hasWfNegativePermission()\" color=\"second\" mat-raised-button\r\n (click)=\"doCancelRejectAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-negative-btn\">\r\n {{ getNegativeWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"pageInfo.hideExtractButton === false && itemId > 0 && editable\" color=\"primary\" mat-raised-button\r\n (click)=\"doExtraAction()\"\r\n class=\"action-button\"\r\n id=\"base-form-extra-btn\">\r\n {{ pageInfo.labelsSection + \".\" + \"EXTRA_BUTTON_NAME\" | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"column flex-49\"></div>\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!pageInfo.hideAuditLog\">\r\n <div class=\"row main-form-canvas mt-4vh pb-5vh\">\r\n <div class=\"column flex-95\">\r\n <app-audit-log [pageInfo]=\"pageInfo\" [fields]=\"fields\"></app-audit-log>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {MatButton} from \"@angular/material/button\";\r\nimport {ButtonActionSettings, FieldInfo, PageInfo} from \"../../base-model\";\r\nimport {BaseFormComponent} from \"../base-form/base-form.component\";\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport {NgForOf, NgIf, NgClass} from \"@angular/common\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {\r\n MatExpansionPanel,\r\n MatExpansionPanelHeader,\r\n MatExpansionPanelDescription,\r\n MatExpansionPanelTitle\r\n} from \"@angular/material/expansion\";\r\n\r\n@Component({\r\n selector: 'lib-section-form-canvas',\r\n standalone: true,\r\n imports: [\r\n MatIcon,\r\n MatButton,\r\n BaseFormComponent,\r\n BaseFormCanvasComponent,\r\n NgIf,\r\n NgClass,\r\n TranslateModule,\r\n MatExpansionPanel,\r\n MatExpansionPanelTitle,\r\n MatExpansionPanelDescription,\r\n MatExpansionPanelHeader,\r\n NgForOf\r\n ],\r\n templateUrl: './section-form-canvas.component.html',\r\n styleUrl: './section-form-canvas.component.scss'\r\n})\r\nexport class SectionFormCanvasComponent{\r\n @Input() pageInfo: PageInfo;\r\n @Input() fields: FieldInfo[];\r\n @Input() itemId: number;\r\n @Input() editable: boolean;\r\n @Input() hideBackButton: boolean;\r\n @Input() item: any;\r\n @Input() title: string;\r\n @Input() isTranslateTitle: boolean;\r\n @Input() key: number;\r\n @Input() hideToggle: boolean = true;\r\n @Input() isExpanded: boolean = true;\r\n @Input() alwaysOpen: boolean = true;\r\n @Output() actionEdit: EventEmitter<any> = new EventEmitter();\r\n @Output() formEdit: EventEmitter<FormGroup> = new EventEmitter();\r\n @Input() buttons: ButtonActionSettings[] = [];\r\n @Input() itemStatus: string;\r\n @Output() buttonClicked = new EventEmitter<any>();\r\n\r\n formUpdated($event) {\r\n this.formEdit.emit($event);\r\n\r\n }\r\n\r\n toggleExpand() {\r\n this.isExpanded = !this.isExpanded;\r\n }\r\n\r\n onButtonClick(btn: ButtonActionSettings, sectionKey: number): void {\r\n this.buttonClicked.emit({...btn , sectionKey: sectionKey});\r\n }\r\n}\r\n","<mat-expansion-panel class=\"location-card\"\r\n #panel=\"matExpansionPanel\"\r\n [expanded]=\"isExpanded\"\r\n [hideToggle]=\"hideToggle\"\r\n (opened)=\"alwaysOpen ? panel.open() : null\"\r\n (closed)=\"alwaysOpen ? panel.open() : null\">\r\n <mat-expansion-panel-header class=\"card-header\" (click)=\"toggleExpand()\">\r\n <mat-panel-title>\r\n <div class=\"title-container\">\r\n <h3 class=\"card-title\" *ngIf=\"isTranslateTitle\">\r\n {{ pageInfo.labelsSection + '.' + title | translate }}\r\n </h3>\r\n <h3 class=\"card-title\" *ngIf=\"!isTranslateTitle\">{{ title }}</h3>\r\n <button mat-button *ngIf=\"itemStatus\" class=\"stateType\" [ngClass]=\"itemStatus\">\r\n {{ pageInfo.labelsSection + '.' + itemStatus | translate }}\r\n </button>\r\n </div>\r\n </mat-panel-title>\r\n\r\n <mat-panel-description class=\"panel-description\">\r\n <div class=\"row flex-auto buttons-wrapper\">\r\n <button\r\n mat-flat-button\r\n *ngFor=\"let btn of buttons\"\r\n type=\"button\"\r\n [color]=\"btn.color || 'primary'\"\r\n (click)=\"onButtonClick(btn , key); $event.stopPropagation()\"\r\n class=\"btn-none-background-primary action\"\r\n [attr.id]=\"btn.id || ('section-btn-' + (btn.action || btn.label || btn.key))\"\r\n >\r\n <div class=\"button-text\">\r\n <mat-icon *ngIf=\"btn.icon\">{{ btn.icon }}</mat-icon>\r\n <span>{{ btn.label | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div class=\"panel-body\">\r\n <hr class=\"divider\"/>\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editable\"\r\n [item]=\"item\"\r\n (formUpdated)=\"formUpdated($event)\"\r\n ></app-base-form-canvas>\r\n </div>\r\n</mat-expansion-panel>\r\n","import {AfterViewInit, Component, ElementRef, HostListener, Inject, OnInit} from '@angular/core';\r\nimport {\r\n MAT_DIALOG_DATA, MatDialogActions, MatDialogContent,\r\n MatDialogRef, MatDialogTitle,\r\n} from \"@angular/material/dialog\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {FieldInfo, PageInfo, ReportRequest, TableColumn} from \"../../base-model\";\r\nimport {BaseTableComponent} from \"../base-table/base-table.component\";\r\nimport {MatButton, MatIconButton} from \"@angular/material/button\";\r\nimport {BackendService} from \"../../services\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\n\r\n@Component({\r\n selector: 'app-audit-log-details-dialog',\r\n standalone: true,\r\n imports: [\r\n FormsModule,\r\n TranslateModule,\r\n BaseTableComponent,\r\n MatDialogContent,\r\n MatDialogTitle,\r\n MatIconButton,\r\n MatIcon\r\n ],\r\n templateUrl: './report-details-dialog.component.html',\r\n styleUrl: './report-details-dialog.component.css'\r\n})\r\nexport class ReportDetailsDialogComponent implements OnInit , AfterViewInit{\r\n dialogDirection: 'ltr' | 'rtl' = 'ltr';\r\n\r\n pageInfo: PageInfo;\r\n fields: FieldInfo[] = [];\r\n\r\n isTermination : boolean=false;\r\n comment: string = '';\r\n external: boolean = false;\r\n signingRequired: boolean = false;\r\n tokenReference: string = \"\";\r\n warningMsg = false;\r\n item: any = {};\r\n reportRequest: ReportRequest;\r\n columns: TableColumn<any>[];\r\n constructor(public dialogRef: MatDialogRef<ReportDetailsDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private translateService: TranslateService,\r\n public backendService:BackendService,\r\n private elRef: ElementRef) {\r\n dialogRef.disableClose = true;\r\n }\r\n @HostListener('window:keyup.esc') onKeyUp() {\r\n this.dialogRef.close();\r\n }\r\n ngOnInit(): void {\r\n this.pageInfo = this.data.pageInfo;\r\n this.pageInfo.hideTitle = true;\r\n this.item = this.data.item;\r\n this.pageInfo.hideExtractButton = false;\r\n this.columns = this.data.columns;\r\n this.reportRequest = this.data.request;\r\n this.warningMsg = this.data.warningMsg || false;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const container = this.elRef.nativeElement.closest('mat-dialog-container');\r\n if (container && container.getAttribute('dir')) {\r\n this.dialogDirection = container.getAttribute('dir') as 'ltr' | 'rtl';\r\n }\r\n }\r\n\r\n cancel() {\r\n this.reportRequest.filterRequest.filters = [];\r\n this.backendService.isEmptyItems = false;\r\n this.dialogRef.close();\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onBackdropClick(event: MouseEvent): void {\r\n const target = event.target as HTMLElement;\r\n if (target.classList.contains('cdk-overlay-backdrop')) {\r\n this.reportRequest.filterRequest.filters = [];\r\n this.backendService.isEmptyItems = false;\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n getTitle() {\r\n if (this.item?.isec_value_ar) {\r\n const isecLabel = this.translateService.instant('ISEC');\r\n return `<strong>${isecLabel} ${this.item.isec_value_ar}</strong>`;\r\n }\r\n\r\n const sectorLabel = this.translateService.instant('SECTOR');\r\n const periodLabel = this.translateService.instant('FOR_PERIOD');\r\n const directorateLabel = this.translateService.instant('DIRECTORATE');\r\n\r\n const sectorText = this.item.sector ? `${sectorLabel} ${this.item.sector}` : '';\r\n const periodText = this.item.period ? ` ${periodLabel} ${this.item.period}` : '';\r\n const yearText = this.item.year ? ` - ${this.item.year}` : '';\r\n const directorateLine = this.item.directorate ? `<br><strong>${directorateLabel} - ${this.item.directorate}</strong>` : '';\r\n\r\n const mainLine = (sectorText || periodText || yearText)\r\n ? `<strong>${[sectorText, periodText, yearText].filter(Boolean).join('')}</strong>`\r\n : '';\r\n\r\n return `${mainLine}${directorateLine}`;\r\n }\r\n\r\n\r\n\r\n}\r\n","<mat-dialog-content style=\"max-height: 70vh; overflow: auto; position: relative;\">\r\n <button mat-icon-button class=\"close-button\" (click)=\"cancel()\" [attr.dir]=\"dialogDirection\" id=\"report-details-close-btn\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n\r\n <h1 mat-dialog-title [innerHTML]=\"getTitle()\"></h1>\r\n\r\n <app-base-table\r\n [pageInfo]=\"pageInfo\"\r\n [columns]=\"columns\"\r\n id=\"junior\"\r\n [enforceRefresh]=\"true\"\r\n [reportRequest]=\"reportRequest\">\r\n </app-base-table>\r\n</mat-dialog-content>\r\n\r\n","import {ChangeDetectionStrategy, Component, EventEmitter, Injector, Input, OnInit, Output} from '@angular/core';\r\nimport {FieldInfo} from \"../../base-model/field-info\";\r\nimport {EMPTY_PAGE_INFO, PageInfo} from \"../../base-model/page-info\";\r\nimport {TableColumn} from \"../../base-model/table-column.interface\";\r\nimport {FieldMessage} from \"../../base-model/api-response\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {BackendService} from \"../../services/backend-service\";\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {FormBuilder, FormGroup} from \"@angular/forms\";\r\nimport {formatDate, NgForOf, NgIf} from \"@angular/common\";\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\r\nimport {MatButton, MatButtonModule} from \"@angular/material/button\";\r\nimport {BaseTableComponent} from \"../base-table/base-table.component\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {FilterRequest} from \"../../base-model/filter-request\";\r\nimport {ReportRequest} from \"../../base-model/report-request.model\";\r\nimport {Filter} from \"../../base-model/filter.model\";\r\nimport {TitleBarComponent} from \"../title-bar/title-bar.component\";\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\r\nimport {DRILL_DOWN_ACTION, JUNIOR_DOWN_ACTION, SnackMessage, TablePageUserAction} from \"../../base-model\";\r\nimport {} from \"../audit-log-details-dialog/audit-log-details-dialog.component\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {ReportDetailsDialogComponent} from \"../report-details-dialog/report-details-dialog.component\";\r\nimport { cloneDeep } from 'lodash';\r\nimport {MatTooltip} from \"@angular/material/tooltip\";\r\nimport {Directionality} from \"@angular/cdk/bidi\";\r\n\r\n\r\nconst NON_REPORT_COLUMNS = ['listAction', 'button', 'checkbox'];\r\n\r\n@Component({\r\n selector: 'app-report-form',\r\n standalone: true,\r\n imports: [\r\n TitleBarComponent,\r\n BaseFormCanvasComponent,\r\n MatMenu,\r\n MatMenuItem,\r\n NgForOf,\r\n MatMenuTrigger,\r\n MatButtonModule,\r\n TranslateModule,\r\n BaseTableComponent,\r\n NgIf,\r\n MatIconModule,\r\n MatButton,\r\n MatTooltip\r\n ],\r\n templateUrl: './report-form.component.html',\r\n styleUrl: './report-form.component.scss'\r\n})\r\nexport class ReportFormComponent implements OnInit {\r\n @Input()\r\n showDetails : any = [];\r\n\r\n @Input()\r\n showExtractButton: boolean = true;\r\n\r\n @Input()\r\n columns: TableColumn<any>[] =[];\r\n\r\n @Input() actionRequestCallback!: (actionRequest: TablePageUserAction) => TablePageUserAction;\r\n @Input() enrichDrillDownReportRequest!: (actionRequest: TablePageUserAction, reportRequest: ReportRequest) => TablePageUserAction;\r\n @Input() enrichHyperLinkReportRequest!: (actionRequest: TablePageUserAction, reportRequest: ReportRequest) => TablePageUserAction;\r\n @Input() enrichJuniorReportRequest!: (actionRequest: TablePageUserAction, reportRequest: ReportRequest) => TablePageUserAction;\r\n\r\n @Output()\r\n userAction: EventEmitter<TablePageUserAction> = new EventEmitter<TablePageUserAction>();\r\n activeLevel: number = 1;\r\n\r\n private filterRequest: FilterRequest;\r\n x: any;\r\n isEditable: boolean = true;\r\n fields: FieldInfo[] = [];\r\n pageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n drillDownPageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n drillDownColumns: TableColumn<any>[] = [];\r\n hideDrillDownButton: false;\r\n\r\n juniorPageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n juniorColumns: TableColumn<any>[] = [];\r\n\r\n columnsDefinition: TableColumn<any>[] = [];\r\n types: string[] = [\"pdf\", \"csv\", \"xlsx\"]\r\n searchStr: string = '';\r\n\r\n errors: FieldMessage[] = [];\r\n\r\n reloadData: boolean = false;\r\n backButtonEnabled: boolean = true;\r\n\r\n\r\n reportRequest: ReportRequest = new ReportRequest({});\r\n childReportRequest: ReportRequest = new ReportRequest({});\r\n juniorReportRequest: ReportRequest = new ReportRequest({});\r\n public reportForm: FormGroup;\r\n readyToSearch = false;\r\n private pageSize: any;\r\n private dialogReportRequest: any;\r\n currentDirection: 'ltr' | 'rtl';\r\n\r\n constructor(private translateService: TranslateService,\r\n public backendService: BackendService,\r\n private activatedRoute: ActivatedRoute,\r\n private injector: Injector,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private directionality: Directionality,\r\n public dialog: MatDialog,\r\n private fb: FormBuilder) {\r\n ClassicEditor.defaultConfig = {\r\n toolbar: {\r\n items: ['heading', '|', 'bold', 'italic', '|', 'bulletedList', 'numberedList']\r\n },\r\n image: {\r\n toolbar: ['imageStyle:side', '|', 'imageTextAlternative']\r\n },\r\n table: {\r\n contentToolbar: [ 'tableColumn', 'tableRow', 'mergeTableCells' ]\r\n },\r\n language: 'en'\r\n };\r\n }\r\n\r\n disableExportAction : boolean = false;\r\n\r\n ngOnInit(): void {\r\n this.currentDirection = this.directionality.value;\r\n this.directionality.change.subscribe((value) => {\r\n this.currentDirection = value;\r\n })\r\n\r\n this.activatedRoute.data.subscribe(data => {\r\n this.pageInfo = data['pageInfo'];\r\n this.pageSize = this.pageInfo.pageSize ?? 10;\r\n this.filterRequest = new FilterRequest(this.pageSize);\r\n data['pageInfo'].lazyLoadData = true;\r\n this.drillDownPageInfo = data['drillDownPageInfo'];\r\n this.drillDownColumns = data['drillDownColumns']?.filter(c => c.property !== 'selectItem');\r\n this.hideDrillDownButton = data['hideDrillDownButton'] ?? false;\r\n this.juniorPageInfo = data['juniorPageInfo'];\r\n this.juniorColumns = data['juniorColumns'];\r\n this.columnsDefinition = data['columnsDefinition'].filter(c => (this.drillDownPageInfo && this.drillDownColumns || (!NON_REPORT_COLUMNS.includes(c.type))));\r\n this.fields = data['fields'];\r\n if (data['enrichDrillDownReportRequest']) {\r\n this.enrichDrillDownReportRequest = data['enrichDrillDownReportRequest'](this.injector);\r\n }\r\n if (data['enrichJuniorReportRequest']) {\r\n this.enrichJuniorReportRequest = data['enrichJuniorReportRequest'](this.injector);\r\n }\r\n\r\n if (data['enrichHyperLinkReportRequest']) {\r\n this.enrichHyperLinkReportRequest = data['enrichHyperLinkReportRequest'](this.injector);\r\n }\r\n });\r\n this.route.queryParamMap.subscribe(params => {\r\n const isComparisonReport = params.get('comparisonReport') === 'true';\r\n\r\n if (isComparisonReport) {\r\n const comparisonStr = sessionStorage.getItem('comparisonReportPageInfo');\r\n\r\n if (comparisonStr) {\r\n const comparisonData = JSON.parse(comparisonStr);\r\n\r\n this.pageInfo.lazyLoadData = comparisonData.lazyLoadData ?? false;\r\n this.activeLevel = comparisonData.activeLevel ?? 2;\r\n this.isEditable = false;\r\n this.backButtonEnabled = false;\r\n this.drillDownPageInfo = comparisonData.drillDownPageInfo;\r\n this.drillDownColumns = comparisonData.drillDownColumns;\r\n this.reportForm = this.fb.group({\r\n directorate: [[]],\r\n fromDate: [''],\r\n toDate: [''],\r\n sector: [''],\r\n });\r\n\r\n this.reportForm.patchValue(comparisonData.form)\r\n this.fields = this.fields.filter(c => c.type !== 'checkbox');\r\n\r\n const reportRequest = comparisonData.reportRequest;\r\n\r\n this.childReportRequest = this.backendService.buildReportRequest(\r\n this.drillDownColumns,\r\n `${this.drillDownPageInfo.labelsSection}.${this.drillDownPageInfo.id}`,\r\n reportRequest,\r\n '',\r\n this.drillDownPageInfo,\r\n 'LANDSCAPE'\r\n );\r\n\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n // ngOnChanges({item, errors, fields}: SimpleChanges): void {\r\n // // errors?.currentValue?.forEach((msg: FieldMessage) => {\r\n // // this.backendService.parentForm.get(msg.fieldName)?.setErrors({serverError: msg.message});\r\n // // });\r\n // // if (fields?.currentValue && !fields.isFirstChange()){\r\n // // this.buildForm();\r\n // // }\r\n // // this.buildForm();\r\n // }\r\n\r\n isMatchHeight() {\r\n return this.pageInfo.pageHeight === 'match';\r\n }\r\n\r\n\r\n doAction(type: string) {\r\n if (this.backendService.parentForm.valid) {\r\n this.reloadData = !this.reloadData;\r\n const filterRequest: FilterRequest = new FilterRequest(this.pageSize);\r\n filterRequest.filters = [];\r\n let paramsString: string[] = [];\r\n this.fields.filter(x => x.type !== 'spacer').forEach(f => {\r\n if (this.getParamValue(f) != null && this.getParamValue(f).toString().trim() !== '')\r\n {\r\n if (f.type === 'multi-select' || f.type === 'lookup') {\r\n // do not filter if this field as cascading for another one and the other one got selected values\r\n const childFieldIdx = this.fields.findIndex(field => field.cascadedBy === f.property);\r\n if (childFieldIdx > -1 && this.backendService.parentForm.get(this.fields[childFieldIdx].property)?.value?.length > 0) {\r\n return;\r\n }\r\n const idz: number[] = [];\r\n const param: string[] = [];\r\n if (this.backendService.parentForm.get(f.property)?.value && Array.isArray(this.backendService.parentForm.get(f.property)?.value)\r\n && this.backendService.parentForm.get(f.property)?.value.length > 0) {\r\n this.backendService.parentForm.get(f.property)?.value.forEach((a: {\r\n channelId: number;\r\n englishName: string;\r\n id: number;\r\n }) => {\r\n if (f.flattenBySubAttribute) {\r\n idz.push(a[f.flattenBySubAttribute]);\r\n param.push(a[f.flattenBySubAttribute]);\r\n } else if (this.fields.find(s => s.property === 'terminalId')) {\r\n idz.push(a.channelId);\r\n param.push(a.englishName);\r\n } else {\r\n idz.push(a.id);\r\n param.push(a.englishName);\r\n }\r\n })\r\n filterRequest.filters?.push(new Filter({\r\n id: f.property, fieldName: f.property, label: this.translateService.instant(f.label),\r\n filterType: 'FILED_FILTER', operator: f.filterOperator,\r\n valueObject: idz\r\n }));\r\n paramsString.push(this.translateService.instant(f.label) + ' : ' + param.join(','));\r\n } else if (this.backendService.parentForm.get(f.property)?.value && f.flattenBySubAttribute) {\r\n filterRequest.filters?.push(new Filter({\r\n id: f.property, fieldName: f.property, label: this.translateService.instant(f.label),\r\n filterType: 'FILED_FILTER', operator: f.filterOperator,\r\n valueObject: this.getParamValue(f)[f.flattenBySubAttribute]\r\n }));\r\n }\r\n } else {\r\n if (this.backendService.parentForm.get(f.property)?.value !== null &&\r\n this.backendService.parentForm.get(f.property)?.value !== undefined &&\r\n this.backendService.parentForm.get(f.property)?.value !== \"\") {\r\n filterRequest.filters?.push(new Filter({\r\n id: f.property, fieldName: f.property, label: this.translateService.instant(f.label),\r\n filterType: 'FILED_FILTER', operator: f.filterOperator,\r\n valueObject: this.getParamValue(f)\r\n }));\r\n }\r\n paramsString.push(this.translateService.instant(f.label) + ' : ' + this.getParamValueLabel(f));\r\n }\r\n }})\r\n const reportRequest = this.backendService.buildReportRequest(this.columnsDefinition, this.pageInfo.labelsSection + '.' + this.pageInfo.id,\r\n filterRequest, type, this.pageInfo, 'LANDSCAPE');\r\n reportRequest.searchStr = paramsString.join(' , ');\r\n this.reportRequest = reportRequest;\r\n // this.activeLevel = 1;\r\n } else {\r\n this.backendService.topPanelMessage$.next(new SnackMessage('INVALID_REPORT_FORM', true, 'error'));\r\n }\r\n }\r\n\r\n private getParamValue(f: FieldInfo) {\r\n if (f.type === 'date' && this.backendService.parentForm.get(f.property)?.value) {\r\n return formatDate(this.backendService.parentForm.get(f.property)?.value, 'yyyy-MM-dd', 'en_US')\r\n }else if (f.type === 'checkbox') {\r\n return !!this.backendService.parentForm.get(f.property)?.value;\r\n }else {\r\n return this.backendService.parentForm.get(f.property)?.value;\r\n }\r\n }\r\n\r\n private getParamValueLabel(f: FieldInfo) {\r\n if (f.type === 'checkbox') {\r\n return this.backendService.parentForm.get(f.property)?.value ? this.translateService.instant('yes') : this.translateService.instant('no');\r\n }else {\r\n return this.backendService.parentForm.get(f.property)?.value;\r\n }\r\n }\r\n\r\n getTitle() {\r\n const pageInfoMap = {\r\n 1: this.pageInfo,\r\n 2: this.drillDownPageInfo,\r\n 3: this.juniorPageInfo\r\n };\r\n\r\n const currentInfo = pageInfoMap[this.activeLevel] || this.pageInfo;\r\n return `${currentInfo.labelsSection}.${currentInfo.id}`;\r\n }\r\n\r\n updateForm($event: FormGroup) {\r\n this.reportForm = $event;\r\n this.backendService.parentForm = $event;\r\n\r\n this.setupDependentFieldWatchers();\r\n\r\n this.backendService.parentForm.valueChanges.subscribe(x => {\r\n this.readyToSearch = this.backendService.parentForm.valid;\r\n }\r\n\r\n );\r\n }\r\n\r\n private setupDependentFieldWatchers() {\r\n this.fields\r\n .filter(field => field.lookupFilterList && field.lookupFilterList.length > 0)\r\n .forEach(field => {\r\n const dependentFields = field.lookupFilterList.map(f => f.fieldName);\r\n\r\n dependentFields.forEach(dependentFieldName => {\r\n const dependentControl = this.reportForm.get(dependentFieldName);\r\n if (dependentControl) {\r\n dependentControl.valueChanges.subscribe(() => {\r\n const targetControl = this.reportForm.get(field.property);\r\n if (targetControl) {\r\n targetControl.setValue([]);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n isValidForm() {\r\n return this.readyToSearch ;\r\n\r\n }\r\n\r\n\r\n\r\n emitUserAction($event: TablePageUserAction) {\r\n $event.pageInfo = this.pageInfo;\r\n this.doADrillDownAction($event);\r\n }\r\n\r\n emitHyperLinkAction($event: TablePageUserAction) {\r\n if (!this.shouldProcessEventItem($event.item)) return;\r\n\r\n const item = $event.item;\r\n this.prepareDialogReportRequest(item);\r\n const reportRequest = this.buildDialogReportRequest();\r\n reportRequest.filterRequest.pageIndex = 0\r\n const dialogRef = this.dialog.open(ReportDetailsDialogComponent, {\r\n data: {\r\n pageInfo: this.juniorPageInfo,\r\n request: reportRequest,\r\n columns: this.juniorColumns,\r\n item,\r\n },\r\n height: '50vw',\r\n maxWidth: '120vw',\r\n direction: this.currentDirection,\r\n disableClose: false,\r\n });\r\n\r\n dialogRef.afterOpened().subscribe(() => this.doHyperLinkAction($event));\r\n dialogRef.afterClosed().subscribe(() => {});\r\n }\r\n\r\n private prepareDialogReportRequest(item: any): void {\r\n this.dialogReportRequest = cloneDeep(this.reportRequest);\r\n this.dialogReportRequest.filterRequest = { filters: [] };\r\n\r\n this.addStandardFilters(item);\r\n this.addOrReplaceFilter('isec1', 'iSec', item['isec_value']);\r\n this.addFilterType();\r\n }\r\n\r\n private addStandardFilters(item: any): void {\r\n const standardFilters = [\r\n { key: 'period', value: item['period'] },\r\n { key: 'year', value: item['year'] },\r\n { key: 'sector', value: item['sectorCode'] },\r\n { key: 'directorate', value: item['directorateCode'] },\r\n { key: 'subTaxRate', value: item['tax_rate_code'] },\r\n ];\r\n\r\n standardFilters.forEach(({ key, value }) =>\r\n this.dialogReportRequest.filterRequest.filters.push(\r\n this.createFilter(key, key, value)\r\n )\r\n );\r\n }\r\n\r\n private addFilterType(): void {\r\n const isTax = this.dialogReportRequest.actionKey?.toLowerCase().includes('tax');\r\n const filterType = isTax ? 'TAX' : 'VALUE';\r\n\r\n this.dialogReportRequest.filterRequest.filters.push(\r\n this.createFilter('filterType', 'filterType', filterType)\r\n );\r\n }\r\n\r\n private buildDialogReportRequest(): any {\r\n return this.backendService.buildReportRequest(\r\n this.juniorColumns,\r\n `${this.juniorPageInfo.labelsSection}.${this.juniorPageInfo.id}`,\r\n { ...this.dialogReportRequest.filterRequest },\r\n '',\r\n this.juniorPageInfo,\r\n 'LANDSCAPE'\r\n );\r\n }\r\n\r\n private createFilter(key: string, fieldName: string, value: any): Filter {\r\n return new Filter({\r\n key,\r\n fieldName,\r\n label: '',\r\n filterType: 'FILED_FILTER',\r\n operator: 'EQUALS',\r\n valueObject: value,\r\n });\r\n }\r\n\r\n private addOrReplaceFilter(id: string, fieldName: string, value: any): void {\r\n const filter = new Filter({\r\n id,\r\n fieldName,\r\n label: '',\r\n filterType: 'FILED_FILTER',\r\n operator: 'EQUALS',\r\n valueObject: value,\r\n });\r\n\r\n const filters = this.dialogReportRequest.filterRequest.filters;\r\n const existingIndex = filters.findIndex((f: Filter) => f.id === id);\r\n\r\n if (existingIndex !== -1) {\r\n filters.splice(existingIndex, 1, filter);\r\n } else {\r\n filters.push(filter);\r\n }\r\n }\r\n\r\n\r\n\r\n emitJuniorAction($event: TablePageUserAction) {\r\n const juniorAction = JUNIOR_DOWN_ACTION;\r\n juniorAction.pageInfo = this.drillDownPageInfo;\r\n this.doJuniorAction($event);\r\n }\r\n\r\n drillDown() {\r\n const drilldownaction = DRILL_DOWN_ACTION;\r\n drilldownaction.pageInfo = this.drillDownPageInfo;\r\n this.doADrillDownAction(drilldownaction);\r\n }\r\n\r\n private doJuniorAction($event: TablePageUserAction) {\r\n if (this.juniorColumns && this.juniorPageInfo) {\r\n if (this.enrichJuniorReportRequest) {\r\n if (this.activeLevel === 2) {\r\n this.isEditable = false;\r\n this.disableExportAction = this.juniorPageInfo.hideReportsExtractButton || false;\r\n this.juniorReportRequest = this.backendService.buildReportRequest(this.juniorColumns,\r\n this.juniorPageInfo.labelsSection + '.' + this.juniorPageInfo.id,\r\n this.reportRequest.filterRequest, '', this.juniorPageInfo, 'LANDSCAPE');\r\n this.enrichJuniorReportRequest($event, this.juniorReportRequest);\r\n }\r\n }\r\n this.activeLevel = this.activeLevel +1;\r\n }\r\n }\r\n private doADrillDownAction($event: TablePageUserAction) {\r\n if (this.drillDownColumns && this.drillDownPageInfo) {\r\n if (this.enrichDrillDownReportRequest) {\r\n if (this.activeLevel === 1) {\r\n this.isEditable = false;\r\n this.childReportRequest = this.backendService.buildReportRequest(this.drillDownColumns,\r\n this.drillDownPageInfo.labelsSection + '.' + this.drillDownPageInfo.id,\r\n this.reportRequest.filterRequest, '', this.drillDownPageInfo, 'LANDSCAPE');\r\n this.disableExportAction = this.drillDownPageInfo.hideReportsExtractButton || false;\r\n this.enrichDrillDownReportRequest($event, this.childReportRequest);\r\n }\r\n }\r\n this.activeLevel = this.activeLevel +1;\r\n }\r\n }\r\n\r\n private doHyperLinkAction($event: TablePageUserAction) {\r\n if (this.enrichHyperLinkReportRequest) {\r\n this.juniorReportRequest = this.backendService.buildReportRequest(this.juniorColumns,\r\n this.juniorPageInfo.labelsSection + '.' + this.juniorPageInfo.id,\r\n this.dialogReportRequest.filterRequest, '', this.juniorPageInfo, 'LANDSCAPE');\r\n this.disableExportAction = this.juniorPageInfo.hideReportsExtractButton || false;\r\n this.enrichHyperLinkReportRequest($event, this.juniorReportRequest);\r\n }\r\n }\r\n\r\n extractReport(reportType: any) {\r\n if (this.activeLevel === 1) {\r\n this.reportRequest.reportType = reportType;\r\n this.backendService.downloadReport(this.reportRequest, this.pageInfo.apiUri );\r\n }\r\n else if (this.activeLevel === 2) {\r\n this.childReportRequest.reportType = reportType;\r\n this.backendService.downloadReport(this.childReportRequest, this.drillDownPageInfo.apiUri );\r\n }\r\n else if (this.activeLevel === 3) {\r\n this.juniorReportRequest.reportType = reportType;\r\n this.backendService.downloadReport(this.juniorReportRequest, this.juniorPageInfo.apiUri );\r\n }\r\n }\r\n\r\n goUp() {\r\n this.isEditable = true;\r\n this.activeLevel = this.activeLevel -1;\r\n this.doAction(this.x);\r\n this.reloadData = true;\r\n if (this.activeLevel >1) {\r\n this.isEditable = false;\r\n }\r\n this.disableExportAction = false\r\n }\r\n\r\n drillDownEnabled() {\r\n return this.drillDownPageInfo && !this.hideDrillDownButton && !this.getIsEmptyList();\r\n }\r\n\r\n drillDownLabel() {\r\n return `${this.pageInfo.labelsSection}.drillDownLabel` ;\r\n }\r\n getIsEmptyList() {\r\n return this.backendService.isEmptyItems || this.disableExportAction === true;\r\n }\r\n clear() {\r\n const currentUrl = this.router.url;\r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigate([currentUrl]);\r\n });\r\n\r\n // if (this.reportForm) {\r\n // this.reportForm.reset();\r\n //\r\n // this.fields.forEach(field => {\r\n // if (field.type === 'lookup' || field.type === 'multi-select') {\r\n // const control = this.reportForm.get(field.property);\r\n // if (control) {\r\n // control.setValue([]);\r\n // }\r\n // }\r\n // });\r\n // }\r\n\r\n }\r\n\r\n\r\n isFormEmpty(): boolean {\r\n if (!this.reportForm || !this.reportForm.value) {\r\n return true;\r\n }\r\n\r\n return Object.values(this.reportForm.value).every(value => {\r\n if (value === null || value === undefined || value === '') {\r\n return true;\r\n }\r\n return Array.isArray(value) && value.length === 0;\r\n\r\n\r\n });\r\n }\r\n\r\n shouldProcessEventItem(item: any): boolean {\r\n const groupByProp = this.pageInfo?.groupByProperty;\r\n const groupByValues = this.pageInfo?.groupByValue;\r\n\r\n if (!groupByProp || !groupByValues || !item[groupByProp]) {\r\n return true;\r\n }\r\n\r\n const value = item[groupByProp].toString();\r\n\r\n return !groupByValues.some(v => value.includes(v) && value.length >= v.length);\r\n }\r\n}\r\n","<div class=\"column full-width\">\r\n\r\n <div class=\"row align-start-center\" style=\"margin-bottom: 10px;\">\r\n <app-title-bar [pageTitle]=\"getTitle()\" [newAction]=\"false\"></app-title-bar>\r\n\r\n <mat-icon\r\n *ngIf=\"pageInfo?.hasHint\"\r\n [matTooltip]=\"pageInfo.labelsSection + '.hint' | translate\"\r\n matTooltipPosition=\"right\"\r\n color=\"primary\"\r\n class=\"hint-icon\"\r\n matTooltipClass=\"custom-tooltip\">\r\n help_outline\r\n </mat-icon>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"isEditable\"\r\n [errors]=\"errors\"\r\n [item]=\"this.reportForm?.value || {}\"\r\n (formUpdated)=\"updateForm($event)\"\r\n ></app-base-form-canvas>\r\n\r\n <br><br>\r\n\r\n <div class=\"column\">\r\n <div class=\"row gap-10 responsive-row\">\r\n <button *ngIf=\"activeLevel === 1\" color=\"primary\" mat-flat-button (click)=\"doAction(x)\" [disabled]=\"!isValidForm()\" id=\"report-generate-btn\">\r\n {{ 'REPORTS.generate' | translate }}\r\n </button>\r\n\r\n <button mat-raised-button [matMenuTriggerFor]=\"menu\" [disabled]=\"getIsEmptyList()\" color=\"primary\" id=\"report-extract-trigger\">\r\n {{ 'extract' | translate }}\r\n <mat-icon class=\"expand_more actionButton__expand\">expand_more</mat-icon>\r\n </button>\r\n\r\n <button mat-flat-button (click)=\"clear()\" [disabled]=\"isFormEmpty() || activeLevel > 1\" id=\"report-clear-btn\">\r\n {{ 'REPORTS.clear' | translate }}\r\n </button>\r\n\r\n <button *ngIf=\"activeLevel === 1 && drillDownEnabled()\" color=\"warn\" mat-flat-button (click)=\"drillDown()\" id=\"report-drilldown-btn\">\r\n {{ drillDownLabel() | translate }}\r\n </button>\r\n\r\n <button *ngIf=\"activeLevel > 1 && backButtonEnabled\" color=\"warn\" mat-flat-button (click)=\"goUp()\" id=\"report-up-btn\">\r\n {{ 'REPORTS.up' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"activeLevel >= 1\" class=\"main-form-canvas row align-start-start responsive-table\" style=\"margin-top: 3vh;\">\r\n <div class=\"column full-width\">\r\n <app-base-table\r\n *ngIf=\"activeLevel === 1\"\r\n [pageInfo]=\"pageInfo\"\r\n [columns]=\"columnsDefinition\"\r\n [enforceRefresh]=\"reloadData\"\r\n id=\"parent\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n\r\n <app-base-table\r\n *ngIf=\"activeLevel === 2\"\r\n [pageInfo]=\"drillDownPageInfo\"\r\n [columns]=\"drillDownColumns\"\r\n id=\"child\"\r\n [reportRequest]=\"childReportRequest\"\r\n (userAction)=\"emitJuniorAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n\r\n <app-base-table\r\n *ngIf=\"activeLevel === 3\"\r\n [pageInfo]=\"juniorPageInfo\"\r\n [columns]=\"juniorColumns\"\r\n id=\"junior\"\r\n [reportRequest]=\"juniorReportRequest\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<mat-menu #menu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item *ngFor=\"let type of types\" (click)=\"extractReport(type)\" [attr.id]=\"'report-extract-item-' + type\">\r\n {{ type }}\r\n </button>\r\n</mat-menu>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport {FieldInfo} from \"../../base-model/field-info\";\r\nimport {EMPTY_PAGE_INFO, PageInfo} from \"../../base-model/page-info\";\r\nimport {TableColumn} from \"../../base-model/table-column.interface\";\r\nimport {FieldMessage} from \"../../base-model/api-response\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {BackendService} from \"../../services/backend-service\";\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {FormBuilder, FormGroup} from \"@angular/forms\";\r\nimport {formatDate, NgForOf, NgIf} from \"@angular/common\";\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\r\nimport {MatButton, MatButtonModule} from \"@angular/material/button\";\r\nimport {BaseTableComponent} from \"../base-table/base-table.component\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {FilterRequest} from \"../../base-model/filter-request\";\r\nimport {ReportRequest} from \"../../base-model/report-request.model\";\r\nimport {Filter} from \"../../base-model/filter.model\";\r\nimport {TitleBarComponent} from \"../title-bar/title-bar.component\";\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\r\nimport {DRILL_DOWN_ACTION, JUNIOR_DOWN_ACTION, SnackMessage, TablePageUserAction} from \"../../base-model\";\r\nimport {} from \"../audit-log-details-dialog/audit-log-details-dialog.component\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {ReportDetailsDialogComponent} from \"../report-details-dialog/report-details-dialog.component\";\r\nimport { cloneDeep } from 'lodash';\r\nimport {Directionality} from \"@angular/cdk/bidi\";\r\nimport {MatTooltip} from \"@angular/material/tooltip\";\r\n\r\n\r\nconst NON_REPORT_COLUMNS = ['listAction', 'button', 'checkbox'];\r\n\r\n@Component({\r\n selector: 'app-report-form',\r\n standalone: true,\r\n imports: [\r\n TitleBarComponent,\r\n BaseFormCanvasComponent,\r\n MatMenu,\r\n MatMenuItem,\r\n NgForOf,\r\n MatMenuTrigger,\r\n MatButtonModule,\r\n TranslateModule,\r\n BaseTableComponent,\r\n NgIf,\r\n MatIconModule,\r\n MatButton,\r\n MatTooltip\r\n ],\r\n templateUrl: './activity-report-form.component.html',\r\n styleUrl: './activity-report-form.component.scss'\r\n})\r\nexport class ActivityReportFormComponent implements OnInit{\r\n @Input()\r\n showDetails : any = [];\r\n\r\n @Input()\r\n showExtractButton: boolean = true;\r\n\r\n @Input()\r\n columns: TableColumn<any>[] =[];\r\n private originalColumns: any[] = [];\r\n\r\n\r\n @Input() actionRequestCallback!: (actionRequest: TablePageUserAction) => TablePageUserAction;\r\n @Input() enrichDrillDownReportRequest!: (actionRequest: TablePageUserAction, reportRequest: ReportRequest) => TablePageUserAction;\r\n @Input() enrichHyperLinkReportRequest!: (actionRequest: TablePageUserAction, reportRequest: ReportRequest) => TablePageUserAction;\r\n @Input() enrichJuniorReportRequest!: (actionRequest: TablePageUserAction, reportRequest: ReportRequest) => TablePageUserAction;\r\n\r\n @Output()\r\n userAction: EventEmitter<TablePageUserAction> = new EventEmitter<TablePageUserAction>();\r\n activeLevel: number = 1;\r\n items = [4, 5,6,7];\r\n private filterRequest: FilterRequest;\r\n x: any;\r\n isEditable: boolean = true;\r\n fields: FieldInfo[] = [];\r\n pageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n drillDownPageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n drillDownColumns: TableColumn<any>[] = [];\r\n hideDrillDownButton: false;\r\n\r\n juniorPageInfo: PageInfo = EMPTY_PAGE_INFO;\r\n juniorColumns: TableColumn<any>[] = [];\r\n\r\n columnsDefinition: TableColumn<any>[] = [];\r\n types: string[] = [\"pdf\", \"csv\", \"xlsx\"]\r\n searchStr: string = '';\r\n\r\n errors: FieldMessage[] = [];\r\n\r\n reloadData: boolean = false;\r\n drillDownRequestStack: any[] = [];\r\n reportRequest: ReportRequest = new ReportRequest({});\r\n childReportRequest: ReportRequest = new ReportRequest({});\r\n juniorReportRequest: ReportRequest = new ReportRequest({});\r\n public reportForm: FormGroup;\r\n readyToSearch = false;\r\n private pageSize: any;\r\n private dialogReportRequest: any;\r\n currentDirection: 'ltr' | 'rtl';\r\n protected isComparisonReport: boolean = false;\r\n constructor(private translateService: TranslateService,\r\n public backendService: BackendService,\r\n private activatedRoute: ActivatedRoute,\r\n private injector: Injector,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n public dialog: MatDialog,\r\n private directionality: Directionality,\r\n private fb: FormBuilder) {\r\n ClassicEditor.defaultConfig = {\r\n toolbar: {\r\n items: ['heading', '|', 'bold', 'italic', '|', 'bulletedList', 'numberedList']\r\n },\r\n image: {\r\n toolbar: ['imageStyle:side', '|', 'imageTextAlternative']\r\n },\r\n table: {\r\n contentToolbar: [ 'tableColumn', 'tableRow', 'mergeTableCells' ]\r\n },\r\n language: 'en'\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.currentDirection = this.directionality.value;\r\n this.directionality.change.subscribe((value) => {\r\n this.currentDirection = value;\r\n })\r\n\r\n this.activatedRoute.data.subscribe(data => {\r\n this.pageInfo = data['pageInfo'];\r\n this.pageSize = this.pageInfo.pageSize ?? 10;\r\n this.filterRequest= new FilterRequest(this.pageSize);\r\n data['pageInfo'].lazyLoadData = true;\r\n this.drillDownPageInfo = data['drillDownPageInfo'];\r\n this.drillDownColumns = data['drillDownColumns'];\r\n this.originalColumns = [...this.drillDownColumns];\r\n this.hideDrillDownButton = data['hideDrillDownButton'] ?? false;\r\n this.juniorPageInfo = data['juniorPageInfo'];\r\n this.juniorColumns = data['juniorColumns'];\r\n this.columnsDefinition = data['columnsDefinition'].filter(c => (this.drillDownPageInfo && this.drillDownColumns || (!NON_REPORT_COLUMNS.includes(c.type))));\r\n this.fields = data['fields'];\r\n if (data['enrichDrillDownReportRequest']) {\r\n this.enrichDrillDownReportRequest = data['enrichDrillDownReportRequest'](this.injector);\r\n }\r\n if (data['enrichJuniorReportRequest']) {\r\n this.enrichJuniorReportRequest = data['enrichJuniorReportRequest'](this.injector);\r\n }\r\n\r\n if (data['enrichHyperLinkReportRequest']) {\r\n this.enrichHyperLinkReportRequest = data['enrichHyperLinkReportRequest'](this.injector);\r\n }\r\n });\r\n\r\n this.route.queryParamMap.subscribe(params => {\r\n this.isComparisonReport = params.get('comparisonReport') === 'true';\r\n if (!this.isComparisonReport) return;\r\n\r\n const comparisonStr = sessionStorage.getItem('comparisonReportPageInfo');\r\n if (!comparisonStr) return;\r\n\r\n const comparisonData = JSON.parse(comparisonStr);\r\n this.initializeComparisonReport(comparisonData);\r\n });\r\n }\r\n\r\n private initializeComparisonReport(data: any): void {\r\n this.pageInfo.lazyLoadData = data.lazyLoadData ?? false;\r\n this.activeLevel = data.activeLevel ?? 2;\r\n this.isEditable = false;\r\n this.drillDownPageInfo = data.drillDownPageInfo;\r\n this.drillDownColumns = data.drillDownColumns;\r\n\r\n const reportRequest = data.reportRequest;\r\n\r\n this.reportRequest = this.backendService.buildReportRequest(\r\n this.drillDownColumns,\r\n `${this.drillDownPageInfo.labelsSection}.${this.drillDownPageInfo.id}`,\r\n reportRequest,\r\n '',\r\n this.drillDownPageInfo,\r\n 'LANDSCAPE'\r\n );\r\n\r\n this.setupForm(data.form);\r\n this.removeCheckboxFields();\r\n this.setupFilters(data.reportRequest, data.item);\r\n this.setupJuniorReportRequest();\r\n }\r\n\r\n private setupForm(formData: any): void {\r\n this.reportForm = this.fb.group({\r\n directorate: [[]],\r\n fromDate: [''],\r\n toDate: [''],\r\n sector: {},\r\n });\r\n\r\n if (formData) {\r\n this.reportForm.patchValue(formData);\r\n }\r\n }\r\n\r\n private removeCheckboxFields(): void {\r\n this.fields = this.fields.filter(field => field.type !== 'checkbox');\r\n }\r\n\r\n private setupFilters(reportRequest: any, item: any): void {\r\n this.filterRequest.filters = [];\r\n\r\n this.addOrUpdateFilter(reportRequest, {\r\n key: 'iSecLevel',\r\n fieldName: 'iSecLevel',\r\n value: this.activeLevel\r\n });\r\n\r\n this.addOrUpdateFilter(reportRequest, {\r\n id: 'iSecValue',\r\n key: 'iSecValue',\r\n fieldName: 'iSecValue',\r\n value: item?.isec_value\r\n });\r\n\r\n this.addOrUpdateFilter(reportRequest, {\r\n id: 'period',\r\n key: 'period',\r\n fieldName: 'period',\r\n value: item?.period\r\n });\r\n\r\n this.addOrUpdateFilter(reportRequest, {\r\n id: 'year',\r\n key: 'year',\r\n fieldName: 'year',\r\n value: item?.year\r\n });\r\n\r\n this.reportRequest.filterRequest = reportRequest;\r\n }\r\n\r\n private setupJuniorReportRequest(): void {\r\n this.juniorReportRequest = this.backendService.buildReportRequest(\r\n this.juniorColumns,\r\n `${this.juniorPageInfo.labelsSection}.${this.juniorPageInfo.id}`,\r\n this.reportRequest.filterRequest,\r\n '',\r\n this.juniorPageInfo,\r\n 'LANDSCAPE'\r\n );\r\n\r\n this.juniorReportRequest.filterRequest.pageSize = 500;\r\n }\r\n\r\n isMatchHeight() {\r\n return this.pageInfo.pageHeight === 'match';\r\n }\r\n\r\n\r\n doAction(type: string) {\r\n if (this.backendService.parentForm.valid) {\r\n this.reloadData = !this.reloadData;\r\n const filterRequest: FilterRequest = new FilterRequest(this.pageSize);\r\n filterRequest.filters = [];\r\n this.addOrUpdateFilter(filterRequest, {\r\n key: 'iSecLevel',\r\n fieldName: 'iSecLevel',\r\n value: this.activeLevel\r\n });\r\n let paramsString: string[] = [];\r\n this.fields.filter(x => x.type !== 'spacer').forEach(f => {\r\n if (this.getParamValue(f) != null && this.getParamValue(f).toString().trim() !== '')\r\n {\r\n if (f.type === 'multi-select' || f.type === 'lookup') {\r\n // do not filter if this field as cascading for another one and the other one got selected values\r\n const childFieldIdx = this.fields.findIndex(field => field.cascadedBy === f.property);\r\n if (childFieldIdx > -1 && this.backendService.parentForm.get(this.fields[childFieldIdx].property)?.value?.length > 0) {\r\n return;\r\n }\r\n const idz: number[] = [];\r\n const param: string[] = [];\r\n if (this.backendService.parentForm.get(f.property)?.value && Array.isArray(this.backendService.parentForm.get(f.property)?.value)\r\n && this.backendService.parentForm.get(f.property)?.value.length > 0) {\r\n this.backendService.parentForm.get(f.property)?.value.forEach((a: {\r\n channelId: number;\r\n englishName: string;\r\n id: number;\r\n }) => {\r\n if (f.flattenBySubAttribute) {\r\n idz.push(a[f.flattenBySubAttribute]);\r\n param.push(a[f.flattenBySubAttribute]);\r\n } else if (this.fields.find(s => s.property === 'terminalId')) {\r\n idz.push(a.channelId);\r\n param.push(a.englishName);\r\n } else {\r\n idz.push(a.id);\r\n param.push(a.englishName);\r\n }\r\n })\r\n filterRequest.filters?.push(new Filter({\r\n id: f.property, fieldName: f.property, label: this.translateService.instant(f.label),\r\n filterType: 'FILED_FILTER', operator: f.filterOperator,\r\n valueObject: idz\r\n }));\r\n paramsString.push(this.translateService.instant(f.label) + ' : ' + param.join(','));\r\n } else if (this.backendService.parentForm.get(f.property)?.value && f.flattenBySubAttribute) {\r\n filterRequest.filters?.push(new Filter({\r\n id: f.property, fieldName: f.property, label: this.translateService.instant(f.label),\r\n filterType: 'FILED_FILTER', operator: f.filterOperator,\r\n valueObject: this.getParamValue(f)[f.flattenBySubAttribute]\r\n }));\r\n }\r\n } else {\r\n if (this.backendService.parentForm.get(f.property)?.value !== null &&\r\n this.backendService.parentForm.get(f.property)?.value !== undefined &&\r\n this.backendService.parentForm.get(f.property)?.value !== \"\") {\r\n filterRequest.filters?.push(new Filter({\r\n id: f.property, fieldName: f.property, label: this.translateService.instant(f.label),\r\n filterType: 'FILED_FILTER', operator: f.filterOperator,\r\n valueObject: this.getParamValue(f)\r\n }));\r\n }\r\n paramsString.push(this.translateService.instant(f.label) + ' : ' + this.getParamValueLabel(f));\r\n }\r\n }})\r\n const reportRequest = this.backendService.buildReportRequest(this.columnsDefinition, this.pageInfo.labelsSection + '.' + this.pageInfo.id,\r\n filterRequest, type, this.pageInfo, 'LANDSCAPE');\r\n reportRequest.searchStr = paramsString.join(' , ');\r\n this.reportRequest = reportRequest;\r\n // this.activeLevel = 1;\r\n } else {\r\n this.backendService.topPanelMessage$.next(new SnackMessage('INVALID_REPORT_FORM', true, 'error'));\r\n }\r\n }\r\n\r\n private getParamValue(f: FieldInfo) {\r\n if (f.type === 'date' && this.backendService.parentForm.get(f.property)?.value) {\r\n return formatDate(this.backendService.parentForm.get(f.property)?.value, 'yyyy-MM-dd', 'en_US')\r\n }else if (f.type === 'checkbox') {\r\n return !!this.backendService.parentForm.get(f.property)?.value;\r\n }else {\r\n return this.backendService.parentForm.get(f.property)?.value;\r\n }\r\n }\r\n\r\n private getParamValueLabel(f: FieldInfo) {\r\n if (f.type === 'checkbox') {\r\n return this.backendService.parentForm.get(f.property)?.value ? this.translateService.instant('yes') : this.translateService.instant('no');\r\n }else {\r\n return this.backendService.parentForm.get(f.property)?.value;\r\n }\r\n }\r\n\r\n getTitle() {\r\n const pageInfoMap = {\r\n 1: this.pageInfo,\r\n 2: this.drillDownPageInfo,\r\n 3: this.juniorPageInfo\r\n };\r\n\r\n const currentInfo = pageInfoMap[this.activeLevel] || this.pageInfo;\r\n return `${currentInfo.labelsSection}.${currentInfo.id}`;\r\n }\r\n\r\n updateForm($event: FormGroup) {\r\n this.reportForm = $event;\r\n this.backendService.parentForm = $event;\r\n this.backendService.parentForm.valueChanges.subscribe(x => {\r\n this.readyToSearch = this.backendService.parentForm.valid;\r\n }\r\n\r\n );\r\n }\r\n\r\n isValidForm() {\r\n return this.readyToSearch ;\r\n\r\n }\r\n\r\n\r\n\r\n emitUserAction($event: TablePageUserAction) {\r\n $event.pageInfo = this.pageInfo;\r\n this.doADrillDownAction($event);\r\n }\r\n\r\n emitHyperLinkAction($event: TablePageUserAction) {\r\n if (this.shouldProcessEventItem($event.item)) {\r\n this.dialogReportRequest = cloneDeep(this.reportRequest);\r\n const reportRequest1 = this.backendService.buildReportRequest(\r\n this.juniorColumns,\r\n this.juniorPageInfo.labelsSection + '.' + this.juniorPageInfo.id,\r\n { ...this.dialogReportRequest.filterRequest },\r\n '',\r\n this.juniorPageInfo,\r\n 'LANDSCAPE'\r\n );\r\n reportRequest1.filterRequest.pageIndex = 0\r\n const dialogRef = this.dialog.open(ReportDetailsDialogComponent, {\r\n data: {\r\n pageInfo: this.juniorPageInfo,\r\n request: reportRequest1,\r\n columns: this.juniorColumns,\r\n item :$event.item\r\n },\r\n height: '50vw',\r\n maxWidth: '120vw',\r\n direction: this.currentDirection,\r\n disableClose: false,\r\n });\r\n\r\n dialogRef.afterOpened().subscribe(() => {\r\n this.doHyperLinkAction($event);\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(() => {\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n emitJuniorAction($event: TablePageUserAction) {\r\n console.log('$event call junior', $event);\r\n const juniorAction = JUNIOR_DOWN_ACTION;\r\n juniorAction.pageInfo = this.drillDownPageInfo;\r\n this.doJuniorAction($event);\r\n }\r\n\r\n drillDown() {\r\n const drilldownaction = DRILL_DOWN_ACTION;\r\n drilldownaction.pageInfo = this.drillDownPageInfo;\r\n this.doADrillDownAction(drilldownaction);\r\n }\r\n\r\n private doJuniorAction($event: TablePageUserAction) {\r\n this.juniorColumns = this.originalColumns\r\n if (this.juniorColumns && this.juniorPageInfo) {\r\n if (this.enrichJuniorReportRequest) {\r\n\r\n this.isEditable = false;\r\n this.juniorReportRequest = this.backendService.buildReportRequest(this.juniorColumns,\r\n this.juniorPageInfo.labelsSection + '.' + this.juniorPageInfo.id,\r\n this.reportRequest.filterRequest, '', this.juniorPageInfo, 'LANDSCAPE');\r\n this.enrichJuniorReportRequest($event, this.juniorReportRequest);\r\n }\r\n this.activeLevel = this.activeLevel +1;\r\n this.addOrUpdateFilter(this.reportRequest.filterRequest, {\r\n key: 'iSecLevel',\r\n fieldName: 'iSecLevel',\r\n value: this.activeLevel\r\n });\r\n }\r\n }\r\n private doADrillDownAction($event: TablePageUserAction) {\r\n\r\n if (this.drillDownColumns && this.drillDownPageInfo) {\r\n this.drillDownRequestStack.push(cloneDeep(this.reportRequest));\r\n if (this.enrichDrillDownReportRequest) {\r\n this.isEditable = false;\r\n this.childReportRequest = this.backendService.buildReportRequest(this.drillDownColumns,\r\n this.drillDownPageInfo.labelsSection + '.' + this.drillDownPageInfo.id,\r\n this.reportRequest.filterRequest, '', this.drillDownPageInfo, 'LANDSCAPE');\r\n this.enrichDrillDownReportRequest($event, this.childReportRequest);\r\n\r\n }\r\n this.childReportRequest.filterRequest.pageSize = 500\r\n this.activeLevel = this.activeLevel +1;\r\n this.addOrUpdateFilter(this.reportRequest.filterRequest, {\r\n key: 'iSecLevel',\r\n fieldName: 'iSecLevel',\r\n value: this.activeLevel\r\n });\r\n if (this.isComparisonReport){\r\n this.addOrUpdateFilter(this.reportRequest.filterRequest, {\r\n id: 'iSecValue',\r\n key: 'iSecValue',\r\n fieldName: 'iSecValue',\r\n value: $event.item.isec_value\r\n });\r\n\r\n }\r\n if (this.activeLevel === 4) {\r\n this.drillDownColumns = this.drillDownColumns.filter(item => item.type !== 'button');\r\n }\r\n this.reloadData = true\r\n }\r\n }\r\n\r\n private addOrUpdateFilter(\r\n filterRequest: FilterRequest,\r\n options: {\r\n id?: string;\r\n key: string;\r\n fieldName: string;\r\n value: any;\r\n }\r\n ): void {\r\n const { id, key, fieldName, value } = options;\r\n\r\n const existingFilterIndex = filterRequest.filters.findIndex((filter: Filter) =>\r\n id ? filter.id === id : filter.key === key\r\n );\r\n\r\n const newFilter = new Filter({\r\n ...(id && { id }),\r\n key,\r\n fieldName,\r\n label: '',\r\n filterType: 'FILED_FILTER',\r\n operator: 'EQUALS',\r\n valueObject: value\r\n });\r\n\r\n if (existingFilterIndex !== -1) {\r\n filterRequest.filters[existingFilterIndex] = newFilter;\r\n } else {\r\n filterRequest.filters.push(newFilter);\r\n }\r\n }\r\n\r\n private doHyperLinkAction($event: TablePageUserAction) {\r\n if (this.enrichHyperLinkReportRequest) {\r\n this.juniorReportRequest = this.backendService.buildReportRequest(this.juniorColumns,\r\n this.juniorPageInfo.labelsSection + '.' + this.juniorPageInfo.id,\r\n this.dialogReportRequest.filterRequest, '', this.juniorPageInfo, 'LANDSCAPE');\r\n this.enrichHyperLinkReportRequest($event, this.juniorReportRequest);\r\n }\r\n }\r\n\r\n extractReport(reportType: any) {\r\n this.reportRequest.reportType = reportType;\r\n this.backendService.downloadReport(this.reportRequest, this.drillDownPageInfo.apiUri );\r\n\r\n }\r\n\r\n goUp() {\r\n Object.keys(this.reportForm.controls).forEach(controlName => {\r\n const control = this.reportForm.get(controlName);\r\n control?.clearValidators();\r\n control?.updateValueAndValidity();\r\n });\r\n this.isEditable = true;\r\n this.activeLevel = this.activeLevel - 1;\r\n if (this.activeLevel > 1 ) {\r\n this.isEditable = false;\r\n }\r\n this.doAction(this.x);\r\n this.reportRequest = this.drillDownRequestStack.pop();\r\n this.addOrUpdateFilter(this.reportRequest.filterRequest, {\r\n key: 'iSecLevel',\r\n fieldName: 'iSecLevel',\r\n value: this.activeLevel\r\n });\r\n this.reloadData = true;\r\n if (this.activeLevel !== 4) {\r\n this.drillDownColumns = [...this.originalColumns];\r\n }\r\n }\r\n\r\n\r\n drillDownEnabled() {\r\n return this.drillDownPageInfo && !this.hideDrillDownButton && !this.getIsEmptyList();\r\n }\r\n\r\n drillDownLabel() {\r\n return `${this.pageInfo.labelsSection}.drillDownLabel` ;\r\n }\r\n getIsEmptyList() {\r\n return this.backendService.isEmptyItems;\r\n }\r\n clear() {\r\n const currentUrl = this.router.url;\r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigate([currentUrl]);\r\n });\r\n }\r\n\r\n\r\n isFormEmpty(): boolean {\r\n if (!this.reportForm || !this.reportForm.value) {\r\n return true;\r\n }\r\n\r\n return Object.values(this.reportForm.value).every(value => {\r\n if (value === null || value === undefined || value === '') {\r\n return true;\r\n }\r\n return Array.isArray(value) && value.length === 0;\r\n\r\n });\r\n }\r\n\r\n shouldProcessEventItem(item: any): boolean {\r\n const groupByProp = this.pageInfo?.groupByProperty;\r\n const groupByValues = this.pageInfo?.groupByValue;\r\n\r\n if (!groupByProp || !groupByValues || !item[groupByProp]) {\r\n return true;\r\n }\r\n\r\n const value = item[groupByProp].toString();\r\n\r\n return !groupByValues.some(v => value.includes(v) && value.length >= v.length);\r\n }\r\n\r\n}\r\n","<div class=\"page-container\">\r\n\r\n <div class=\"row row-center-start mb-10px full-width\">\r\n <app-title-bar [pageTitle]=\"getTitle()\" [newAction]=\"false\"></app-title-bar>\r\n <mat-icon *ngIf=\"pageInfo?.hasHint\"\r\n [matTooltip]=\"pageInfo.labelsSection + '.hint' | translate\"\r\n matTooltipPosition=\"right\"\r\n color=\"primary\"\r\n class=\"help-icon\"\r\n matTooltipClass=\"custom-tooltip\">\r\n help_outline\r\n </mat-icon>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"isEditable\"\r\n [errors]=\"errors\"\r\n [item]=\"reportForm?.value || {}\"\r\n (formUpdated)=\"updateForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-49\">\r\n <div class=\"row row-center-start\">\r\n <button *ngIf=\"activeLevel === 1\" color=\"primary\" mat-flat-button (click)=\"doAction(x)\"\r\n [disabled]=\"!isValidForm()\" class=\"action-button\" id=\"activity-generate-btn\">\r\n {{ 'REPORTS.generate' | translate }}\r\n </button>\r\n <button mat-raised-button [matMenuTriggerFor]=\"menu\" [disabled]=\"getIsEmptyList()\"\r\n color=\"primary\" class=\"btn-none-background-primary action-button\" id=\"activity-extract-trigger\">\r\n {{ 'extract' | translate }}\r\n <mat-icon class=\"expand_more actionButton__expand\">expand_more</mat-icon>\r\n </button>\r\n <button mat-flat-button (click)=\"clear()\"\r\n [disabled]=\"isFormEmpty() || activeLevel > 1\"\r\n class=\"action-button\" id=\"activity-clear-btn\">\r\n {{ 'REPORTS.clear' | translate }}\r\n </button>\r\n <button *ngIf=\"activeLevel === 1 && drillDownEnabled()\" color=\"warn\" mat-flat-button\r\n (click)=\"drillDown()\" class=\"action-button\" id=\"activity-drilldown-btn\">\r\n {{ drillDownLabel() | translate }}\r\n </button>\r\n <button *ngIf=\"activeLevel > 1 && !(isComparisonReport && activeLevel == 2)\" color=\"warn\"\r\n mat-flat-button (click)=\"goUp()\" class=\"action-button\" id=\"activity-up-btn\">\r\n {{ 'REPORTS.up' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"column flex-49\"></div>\r\n </div>\r\n\r\n <!-- Base tables -->\r\n <ng-container *ngIf=\"activeLevel === 1\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"pageInfo\" [columns]=\"columnsDefinition\" [enforceRefresh]=\"reloadData\"\r\n id=\"parent\" [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 2\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\" id=\"child\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 3\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\" id=\"junior\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 4\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n\r\n<!-- Menu -->\r\n<mat-menu #menu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item *ngFor=\"let type of types\" (click)=\"extractReport(type)\" [attr.id]=\"'activity-extract-item-' + type\">\r\n {{ type }}\r\n </button>\r\n</mat-menu>\r\n","export class LineItem {\r\n itemType?: string | null;\r\n itemLine: string | null;\r\n description: string | null;\r\n unitPrice: number | null;\r\n discount: number | null;\r\n totalAmount: number | null;\r\n quantity: number | null;\r\n\r\n constructor(\r\n itemType: string | null,\r\n itemLine: string | null,\r\n description: string | null,\r\n unitPrice: number | null,\r\n quantity: number | null,\r\n discount: number | null,\r\n totalAmount: number | null\r\n ) {\r\n this.itemType = itemType;\r\n this.itemLine = itemLine;\r\n this.description = description;\r\n this.unitPrice = unitPrice;\r\n this.quantity = quantity;\r\n this.discount = discount;\r\n this.totalAmount = totalAmount;\r\n }\r\n}\r\n","export class ItemsTotal {\r\n subtotal: number;\r\n discount: number;\r\n grandTotal: number;\r\n\r\n\r\n constructor(subtotal: number, discount: number, grandTotal: number) {\r\n this.subtotal = subtotal;\r\n this.discount = discount;\r\n this.grandTotal = grandTotal;\r\n }\r\n}\r\n","import {Component, Inject, Input, OnInit} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from \"@angular/material/dialog\";\r\nimport {FormGroup, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {NgClass, NgIf} from \"@angular/common\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {MatSelectModule} from \"@angular/material/select\";\r\nimport {MatInputModule} from \"@angular/material/input\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport { BaseFormCanvasComponent } from '../base-form-canvas/base-form-canvas.component';\r\nimport {TitleBarComponent} from \"../title-bar/title-bar.component\";\r\nimport {FieldInfo, PageInfo} from \"../../base-model\";\r\nimport {BaseUtils} from \"../../utils/base-utils\";\r\nimport {MatButton} from \"@angular/material/button\";\r\n\r\n@Component({\r\n selector: 'lib-base-input-dialog',\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n NgClass,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatSelectModule,\r\n MatInputModule,\r\n BaseFormCanvasComponent,\r\n TranslateModule,\r\n NgIf,\r\n TranslateModule,\r\n TitleBarComponent,\r\n MatButton\r\n ],\r\n templateUrl: './base-input-dialog.component.html',\r\n styleUrl: './base-input-dialog.component.css'\r\n})\r\nexport class BaseInputDialogComponent extends BaseUtils implements OnInit {\r\n fieldsInfo: FieldInfo[];\r\n default: any;\r\n isLoaded: boolean = false;\r\n formGroup: FormGroup;\r\n\r\n constructor(public dialogRef: MatDialogRef<BaseInputDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n super()\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log('data' ,this.data);\r\n this.fieldsInfo = this.data.fieldsInfo;\r\n this.pageInfo = this.data.pageInfo;\r\n this.default = this.data.element;\r\n this.isLoaded = true;\r\n }\r\n captureForm($event: FormGroup) {\r\n this.formGroup = $event;\r\n }\r\n\r\n saveDisabled() {\r\n return !this.formGroup?.valid;\r\n }\r\n\r\n getTitle() {\r\n return this.pageInfo.labelsSection + '.pop_up_title';\r\n }\r\n\r\n doSave(save: string) {\r\n if (this.formGroup.valid) {\r\n let id = this.default?.id;\r\n this.default = this.formGroup.value;\r\n this.default.id = id;\r\n this.dialogRef.close(this.default);\r\n }\r\n }\r\n\r\n doCancel(cancel: string) {\r\n this.dialogRef.close(null);\r\n }\r\n}\r\n","<div class=\"container\">\r\n <div class=\"title-row\">\r\n <div class=\"full-column\">\r\n <app-title-bar [pageTitle]=\"getTitle()\"></app-title-bar>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"isLoaded\">\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fieldsInfo\"\r\n [editable]=\"true\"\r\n [item]=\"default\"\r\n (formUpdated)=\"captureForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"button-row\">\r\n <div class=\"half-column\"></div>\r\n <div class=\"half-column right-align\">\r\n <div class=\"button-group\">\r\n <ng-container>\r\n <button\r\n mat-stroked-button\r\n class=\"btn-none-background-primary\"\r\n type=\"button\"\r\n (click)=\"doCancel('cancel')\"\r\n id=\"base-input-cancel-btn\">\r\n Cancel\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container>\r\n <button\r\n [ngClass]=\"saveDisabled() ? 'btn-none-background-primary' : 'btn-background-primary'\"\r\n [disabled]=\"saveDisabled()\"\r\n mat-stroked-button\r\n type=\"button\"\r\n (click)=\"doSave('save')\"\r\n id=\"base-input-save-btn\">\r\n Save\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {MatFormField, MatLabel} from \"@angular/material/form-field\";\r\nimport {MatOption, MatSelect} from \"@angular/material/select\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {MatIcon} from \"@angular/material/icon\";\r\nimport {MatInput} from \"@angular/material/input\";\r\nimport {MatIconButton} from \"@angular/material/button\";\r\nimport {NgForOf} from \"@angular/common\";\r\nimport {TableColumn} from \"../../base-model\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\ntype SearchType = 'exact' | 'like';\r\ntype SortType = 'ASC' | 'DESC';\r\n@Component({\r\n selector: 'ag-search-bar',\r\n templateUrl: './search-bar.component.html',\r\n standalone: true,\r\n imports: [\r\n MatFormField,\r\n MatSelect,\r\n MatOption,\r\n FormsModule,\r\n MatIcon,\r\n MatInput,\r\n MatIconButton,\r\n NgForOf,\r\n TranslateModule\r\n ],\r\n styleUrls: ['./search-bar.component.scss']\r\n})\r\nexport class SearchBarComponent implements OnInit {\r\n @Input() columns: TableColumn<any>[];\r\n @Input() defaultSortKey: string = '';\r\n\r\n searchValue: string = '';\r\n searchType: SearchType = 'like';\r\n selectedSortKey: string = '';\r\n selectedSortType: SortType = 'ASC';\r\n @Output() searchTriggered = new EventEmitter<{\r\n searchValue: string;\r\n searchType: SearchType;\r\n sortKey: string;\r\n sortType: string;\r\n }>();\r\n\r\n onSearch() {\r\n this.selectedSortKey ||= this.defaultSortKey || this.columns[0]?.property;\r\n\r\n this.searchTriggered.emit({\r\n searchValue: this.searchValue,\r\n searchType: this.searchType,\r\n sortKey: this.selectedSortKey,\r\n sortType: this.selectedSortType\r\n });\r\n }\r\n\r\n labelKey(column: { label?: string; property: string }): string {\r\n return column.label || column.property;\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n getColumns() {\r\n return this.columns.filter(\r\n (column) => ['text', 'date', 'localDateTime'].includes(column.type)\r\n );\r\n }\r\n}\r\n","<div class=\"mainSearchBar\">\r\n <div class=\"search row align-start-center gap-16\">\r\n\r\n <mat-form-field appearance=\"outline\" class=\"search__field flex-50\">\r\n <input\r\n matInput\r\n class=\"search__input\"\r\n placeholder=\"Search...\"\r\n (keydown.enter)=\"onSearch()\"\r\n [(ngModel)]=\"searchValue\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\" class=\"search__field flex-15\">\r\n <mat-select\r\n class=\"search__toggle\"\r\n [(ngModel)]=\"searchType\"\r\n placeholder=\"Type\">\r\n <mat-option value=\"exact\">Exact</mat-option>\r\n <mat-option value=\"like\">Like</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\" class=\"search__field flex-15\">\r\n <mat-select\r\n class=\"search__toggle\"\r\n [(ngModel)]=\"selectedSortKey\"\r\n placeholder=\"Sort By\">\r\n <mat-option *ngFor=\"let col of getColumns()\" [value]=\"col.property\">\r\n {{ labelKey(col) | translate }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\" class=\"search__field flex-10\">\r\n <mat-select\r\n class=\"search__toggle\"\r\n [(ngModel)]=\"selectedSortType\"\r\n placeholder=\"Type\">\r\n <mat-option value=\"ASC\">ASC</mat-option>\r\n <mat-option value=\"DESC\">DESC</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <div class=\"search__button row align-center-center\">\r\n <div class=\"icon-design\" (click)=\"onSearch()\">\r\n <mat-icon class=\"icon-search\" color=\"primary\">search</mat-icon>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {MatButton, MatIconButton} from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport {NgIf, NgStyle} from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-snackbar-static',\r\n standalone: true,\r\n imports: [MatIcon, NgIf, TranslateModule, MatIconButton, MatButton, NgStyle],\r\n templateUrl: './snackbar-static.component.html',\r\n styleUrls: ['./snackbar-static.component.scss']\r\n})\r\nexport class SnackbarStaticComponent {\r\n @Input() messageKey = '';\r\n @Input() titleKey = '';\r\n @Input() params: Record<string, any> = {};\r\n @Input() paramsTitle: Record<string, any> = {};\r\n @Input() type: 'error' | 'success' | 'warning' | 'info' | 'help'\r\n @Output() actionBtn: EventEmitter<void> = new EventEmitter();\r\n @Input() width: string = 'auto';\r\n @Input() textBtn: string;\r\n submit() {\r\n this.actionBtn.emit()\r\n }\r\n}\r\n","<div class=\"snackbar snackbar-{{type}}\" [ngStyle]=\"{'width': width == 'auto' ? 'auto' : width}\">\r\n <div class=\"sub-snackbar\">\r\n <mat-icon *ngIf=\"type === 'error'\">error</mat-icon>\r\n <mat-icon *ngIf=\"type === 'success'\">check_box</mat-icon>\r\n <mat-icon *ngIf=\"type === 'warning'\">warning</mat-icon>\r\n <mat-icon *ngIf=\"type === 'info'\">info</mat-icon>\r\n <mat-icon *ngIf=\"type === 'help'\">help</mat-icon>\r\n\r\n <div class=\"text-content\">\r\n <div class=\"title\">{{ titleKey | translate : paramsTitle }}</div>\r\n <div class=\"subtitle\">{{ messageKey | translate: params }}</div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"action\" *ngIf=\"textBtn\">\r\n <button mat-stroked-button class=\"btn-none-background-primary action-btn\" (click)=\"submit()\" id=\"snackbar-action-btn\">\r\n {{ textBtn | translate}}\r\n </button>\r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output, inject, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { Subject, takeUntil, startWith } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-action-button',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n TranslateModule\r\n ],\r\n templateUrl: './action-button.component.html',\r\n styleUrl: './action-button.component.scss'\r\n})\r\nexport class ActionButtonComponent implements OnInit, OnDestroy {\r\n private readonly translateService = inject(TranslateService);\r\n private readonly destroy$ = new Subject<void>();\r\n\r\n @Input() buttonText: string = '';\r\n @Input() buttonTextKey?: string;\r\n @Input() buttonGradient: string = 'linear-gradient(90deg, #E4C9D0 0%, #8A1538 100%)';\r\n @Input() id?: string;\r\n @Output() buttonClick = new EventEmitter<void>();\r\n\r\n get isArabic(): boolean {\r\n const currentLang = this.translateService.currentLang\r\n || this.translateService.defaultLang\r\n || this.translateService.getBrowserLang()\r\n || 'en';\r\n return currentLang === 'ar';\r\n }\r\n\r\n ngOnInit(): void {\r\n this.translateService.onLangChange\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n onButtonClick(): void {\r\n this.buttonClick.emit();\r\n }\r\n}\r\n","<button\r\n class=\"action-button\"\r\n (click)=\"onButtonClick()\"\r\n [style.background]=\"buttonGradient\"\r\n [attr.id]=\"id || (buttonTextKey ? ('action-button-' + buttonTextKey) : 'action-button')\"\r\n type=\"button\">\r\n <span class=\"button-texts\">\r\n <span *ngIf=\"buttonTextKey\">{{ buttonTextKey | translate }}</span>\r\n <span *ngIf=\"!buttonTextKey\">{{ buttonText }}</span>\r\n </span>\r\n <mat-icon class=\"arrow-icon\" [class.arrow-rtl]=\"isArabic\">arrow_forward</mat-icon>\r\n</button>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ActionButtonComponent } from '../action-button/action-button.component';\r\n\r\nexport interface FeatureItem {\r\n text?: string;\r\n textKey?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-action-card',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n TranslateModule,\r\n ActionButtonComponent\r\n ],\r\n templateUrl: './action-card.component.html',\r\n styleUrl: './action-card.component.scss'\r\n})\r\nexport class ActionCardComponent {\r\n\r\n @Input() icon: string = '';\r\n @Input() iconSvg?: string;\r\n @Input() title: string = '';\r\n @Input() description: string = '';\r\n @Input() buttonText: string = '';\r\n @Input() buttonTextKey?: string;\r\n @Input() titleKey?: string;\r\n @Input() descriptionKey?: string;\r\n @Input() iconColor: string = '#8A1538';\r\n @Input() borderColor: string = '#d1d1d1';\r\n @Input() borderLeftColor?: string;\r\n @Input() borderRightColor?: string;\r\n @Input() borderBottomColor?: string;\r\n @Input() topBorderColor?: string;\r\n @Input() topBorderGradient?: string;\r\n @Input() buttonGradient: string = 'linear-gradient(90deg, #E4C9D0 0%, #8A1538 100%)';\r\n @Input() decorativeIconColor: string = 'rgba(209, 203, 216, 1)';\r\n @Input() featureCheckIconColor?: string;\r\n @Input() variant: 'default' | 'extended' = 'default';\r\n @Input() iconSize: number = 40;\r\n @Input() features?: FeatureItem[];\r\n @Input() featuresHeading?: string;\r\n @Input() featuresHeadingKey?: string;\r\n @Input() showDivider: boolean = false;\r\n @Input() topBorderHeight: number = 12;\r\n @Output() buttonClick = new EventEmitter<void>();\r\n\r\n onButtonClick(): void {\r\n this.buttonClick.emit();\r\n }\r\n}","<div class=\"action-card\" \r\n [class.extended-variant]=\"variant === 'extended'\"\r\n [style.--top-border-gradient]=\"topBorderGradient || buttonGradient\" \r\n [style.--top-border-height]=\"topBorderHeight + 'px'\"\r\n [style.border-right-color]=\"borderRightColor || borderColor\" \r\n [style.border-bottom-color]=\"borderBottomColor || borderColor\" \r\n [style.border-left-color]=\"borderLeftColor || borderColor\">\r\n <div class=\"card-content\" [class.extended-content]=\"variant === 'extended'\">\r\n <div class=\"main-content\" [class.extended-main]=\"variant === 'extended'\">\r\n <div class=\"header-section\" [class.extended-header]=\"variant === 'extended'\">\r\n <div class=\"header-top-wrapper\" *ngIf=\"variant === 'default'\">\r\n <div class=\"icon-wrapper\" \r\n [style.color]=\"iconColor\"\r\n [style.width.px]=\"iconSize\"\r\n [style.height.px]=\"iconSize\">\r\n <img *ngIf=\"iconSvg\" [src]=\"iconSvg\" alt=\"\" class=\"icon-svg\" [style.width.px]=\"iconSize\" [style.height.px]=\"iconSize\" />\r\n <mat-icon *ngIf=\"!iconSvg && icon\" [style.font-size.px]=\"iconSize\" [style.width.px]=\"iconSize\" [style.height.px]=\"iconSize\">{{ icon }}</mat-icon>\r\n </div>\r\n <div class=\"header-top\">\r\n <h2 class=\"card-title\">\r\n <span *ngIf=\"titleKey\">{{ titleKey | translate }}</span>\r\n <span *ngIf=\"!titleKey\">{{ title }}</span>\r\n </h2>\r\n </div>\r\n </div>\r\n <div class=\"icon-wrapper\" \r\n *ngIf=\"variant === 'extended'\"\r\n [style.color]=\"iconColor\"\r\n [style.width.px]=\"iconSize\"\r\n [style.height.px]=\"iconSize\">\r\n <img *ngIf=\"iconSvg\" [src]=\"iconSvg\" alt=\"\" class=\"icon-svg\" [style.width.px]=\"iconSize\" [style.height.px]=\"iconSize\" />\r\n <mat-icon *ngIf=\"!iconSvg && icon\" [style.font-size.px]=\"iconSize\" [style.width.px]=\"iconSize\" [style.height.px]=\"iconSize\">{{ icon }}</mat-icon>\r\n </div>\r\n <div class=\"title-description-wrapper\" *ngIf=\"variant === 'extended'\">\r\n <h2 class=\"card-title\">\r\n <span *ngIf=\"titleKey\">{{ titleKey | translate }}</span>\r\n <span *ngIf=\"!titleKey\">{{ title }}</span>\r\n </h2>\r\n <p class=\"card-description\">\r\n <span *ngIf=\"descriptionKey\">{{ descriptionKey | translate }}</span>\r\n <span *ngIf=\"!descriptionKey\">{{ description }}</span>\r\n </p>\r\n </div>\r\n <p class=\"card-description\" *ngIf=\"variant === 'default'\">\r\n <span *ngIf=\"descriptionKey\">{{ descriptionKey | translate }}</span>\r\n <span *ngIf=\"!descriptionKey\">{{ description }}</span>\r\n </p>\r\n </div>\r\n <lib-action-button\r\n [buttonText]=\"buttonText\"\r\n [buttonTextKey]=\"buttonTextKey\"\r\n [buttonGradient]=\"buttonGradient\"\r\n (buttonClick)=\"onButtonClick()\">\r\n </lib-action-button>\r\n <div class=\"features-divider\" *ngIf=\"showDivider && features && features.length > 0\"></div>\r\n \r\n <div class=\"features-section\" *ngIf=\"features && features.length > 0\">\r\n <h3 class=\"features-heading\" *ngIf=\"featuresHeading || featuresHeadingKey\">\r\n <span *ngIf=\"featuresHeadingKey\">{{ featuresHeadingKey | translate }}</span>\r\n <span *ngIf=\"!featuresHeadingKey\">{{ featuresHeading }}</span>\r\n </h3>\r\n <div class=\"feature-item\" *ngFor=\"let feature of features\">\r\n <mat-icon class=\"feature-check-icon\" [style.color]=\"featureCheckIconColor || iconColor\">check_circle</mat-icon>\r\n <span class=\"feature-text\">\r\n <span *ngIf=\"feature.textKey\">{{ feature.textKey | translate }}</span>\r\n <span *ngIf=\"!feature.textKey\">{{ feature.text }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"decorative-icon-wrapper\" *ngIf=\"variant === 'default' && (icon || iconSvg)\">\r\n <div class=\"decorative-icon\">\r\n <img *ngIf=\"iconSvg\" [src]=\"iconSvg\" alt=\"\" class=\"decorative-icon-svg\" [style.filter]=\"'opacity(0.3)'\" />\r\n <mat-icon *ngIf=\"!iconSvg && icon\" [style.color]=\"decorativeIconColor\">{{ icon }}</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';\r\nimport {AbstractControl, FormsModule} from \"@angular/forms\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {MatButtonModule} from \"@angular/material/button\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {BaseFormCanvasComponent} from \"../base-form-canvas/base-form-canvas.component\";\r\nimport {FieldInfo, EMPTY_PAGE_INFO, PageInfo} from \"../../base-model\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\nimport {LineItem} from \"../../base-model/line-item.model\";\r\nimport {ItemsTotal} from \"../../base-model/items-total.model\";\r\n@Component({\r\n selector: 'app-item-line-editor',\r\n templateUrl: './item-line-editor.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n BaseFormCanvasComponent,\r\n TranslateModule\r\n ],\r\n styleUrls: ['./item-line-editor.component.scss']\r\n})\r\n\r\n\r\nexport class ItemLineEditorComponent implements OnChanges {\r\n @Input() noDataFoundIcon: string;\r\n @Input() noDataFoundTitle: string;\r\n @Input() noDataFoundSubtitle: string;\r\n\r\n @Input() pageInfo: PageInfo;\r\n @Input() columnHeaderWidths: string[];\r\n @Input() title: string;\r\n @Input() subtitle: string;\r\n @Input() allowAdd: boolean = true;\r\n @Input() allowDelete: boolean = true;\r\n @Input() editable: boolean = true;\r\n @Input() currency: string;\r\n @Input() fields: FieldInfo[] = [];\r\n\r\n private baseFieldsSnapshot: FieldInfo[] | undefined;\r\n\r\n\r\n @Input() items: LineItem[] = [this.blankItem()];\r\n\r\n @Output() itemsChange = new EventEmitter<LineItem[]>();\r\n @Output() itemSaved = new EventEmitter<{ index: number, item: any }>();\r\n @Output() itemDeleted = new EventEmitter<{ index: number }>();\r\n @Output() totalsChange = new EventEmitter<ItemsTotal>();\r\n @Output() editStateChange = new EventEmitter<{ index: number, editing: boolean }>();\r\n formRefs: (FormGroup | undefined)[] = [];\r\n\r\n editing: boolean[] = [true];\r\n noDataFound: boolean = false\r\n\r\n get headerFields(): FieldInfo[] {\r\n return (this.fields || []).filter(f => f.visible && f.row === 1 && f.type !== 'spacer');\r\n }\r\n\r\n get hasInvalidEditingForm(): boolean {\r\n if (!this.formRefs || !this.editing) return false;\r\n for (let i = 0; i < this.formRefs.length; i++) {\r\n const frm = this.formRefs[i];\r\n if (this.editing[i] && frm && frm.invalid) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n get canAddNew(): boolean {\r\n return !this.hasInvalidEditingForm;\r\n }\r\n\r\n canSave(index: number): boolean {\r\n const frm = this.formRefs?.[index];\r\n if (!this.editing?.[index]) return true;\r\n return !!frm && frm.valid;\r\n }\r\n\r\n labelOf(field: FieldInfo): string {\r\n const configuredKey = field.label ? field.label : field.property;\r\n return configuredKey.startsWith(this.pageInfo.labelsSection)\r\n ? configuredKey\r\n : `${this.pageInfo.labelsSection}.${configuredKey}`;\r\n }\r\n\r\n private blankItem() {\r\n return { itemLine: '', description: '', unitPrice: 0, quantity: 1, discount: 0, totalAmount: 0 };\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['items'] && changes['items'].currentValue) {\r\n const len = (this.items || []).length;\r\n this.noDataFound = len <= 0;\r\n if (changes['items'].firstChange) {\r\n this.formRefs = new Array(len).fill(undefined);\r\n this.editing = len > 0 ? new Array(len).fill(false) : [true];\r\n } else {\r\n const oldLen = this.editing?.length || 0;\r\n\r\n\r\n if (!this.formRefs) this.formRefs = [];\r\n if (this.formRefs.length > len) {\r\n this.formRefs = this.formRefs.slice(0, len);\r\n } else {\r\n while (this.formRefs.length < len) this.formRefs.push(undefined);\r\n }\r\n\r\n\r\n if (!this.editing) this.editing = [];\r\n if (this.editing.length > len) {\r\n this.editing = this.editing.slice(0, len);\r\n } else {\r\n for (let i = this.editing.length; i < len; i++) {\r\n this.editing[i] = true;\r\n }\r\n }\r\n\r\n\r\n if (oldLen === 0 && len > 0 && this.editing[0] === undefined) {\r\n this.editing[0] = true;\r\n }\r\n }\r\n this.emitTotals();\r\n }\r\n if (changes['fields'] && changes['fields'].currentValue) {\r\n this.baseFieldsSnapshot = (this.fields || []).map(f => ({...f}));\r\n }\r\n }\r\n\r\n onFormUpdated(form: FormGroup, index: number) {\r\n const discountCtrl = form.get('discount');\r\n\r\n if (discountCtrl) {\r\n\r\n const existing = discountCtrl.validator ? [discountCtrl.validator] : [];\r\n discountCtrl.setValidators([\r\n ...existing,\r\n this.discountValidator(index)\r\n ]);\r\n\r\n discountCtrl.updateValueAndValidity({ emitEvent: false });\r\n }\r\n\r\n this.formRefs[index] = form;\r\n try {\r\n const emittedItems = this.items.map((it, i) => {\r\n if (i !== index) return it;\r\n const v = this.getCurrentValues(i) || it || {};\r\n const up = Number(v?.unitPrice || 0);\r\n const q = Number(v?.quantity || 0);\r\n const disc = Number(v?.discount || 0);\r\n const total = Math.max(0, up * q - disc);\r\n return { ...it, ...v, total };\r\n });\r\n this.itemsChange.emit(emittedItems);\r\n } catch (_e) {\r\n\r\n }\r\n this.emitTotals();\r\n }\r\n\r\n addNewItem() {\r\n this.items.push(this.blankItem());\r\n this.formRefs.push(undefined);\r\n this.editing.push(true);\r\n\r\n this.restoreFieldsFromSnapshot();\r\n this.itemsChange.emit([...this.items]);\r\n this.editStateChange.emit({ index: this.items.length - 1, editing: true });\r\n this.emitTotals();\r\n }\r\n\r\n saveRow(index: number) {\r\n\r\n const frm = this.formRefs?.[index];\r\n if (this.editing[index] && frm && frm.invalid) {\r\n\r\n Object.values(frm.controls).forEach(c => c.markAsTouched());\r\n return;\r\n }\r\n const v = this.getCurrentValues(index);\r\n if (!v) return;\r\n this.items[index] = { ...v, total: this.calcLineTotal(index) };\r\n\r\n this.editing[index] = false;\r\n\r\n this.setFieldsReadonly(true);\r\n this.itemsChange.emit([...this.items]);\r\n this.itemSaved.emit({ index, item: this.items[index] });\r\n this.editStateChange.emit({ index, editing: false });\r\n this.emitTotals();\r\n }\r\n\r\n deleteItem(index: number) {\r\n if (index < 0 || index >= this.items.length) return;\r\n this.items.splice(index, 1);\r\n this.formRefs.splice(index, 1);\r\n this.editing.splice(index, 1);\r\n\r\n this.itemsChange.emit([...this.items]);\r\n this.itemDeleted.emit({ index });\r\n this.emitTotals();\r\n }\r\n\r\n clearAll() {\r\n this.items = [this.blankItem()];\r\n this.formRefs = [undefined];\r\n this.editing = [true];\r\n this.itemsChange.emit([...this.items]);\r\n this.emitTotals();\r\n }\r\n\r\n getCurrentValues(index: number) {\r\n const isEditing = this.editing[index];\r\n const frm = this.formRefs[index];\r\n\r\n const base = this.items[index] || {};\r\n const src = (isEditing && frm) ? { ...base, ...frm.value } : { ...base };\r\n if (!src) return null;\r\n const val: any = { ...src };\r\n val.unitPrice = val.unitPrice === null || val.unitPrice === '' ? null : Number(val.unitPrice);\r\n val.quantity = val.quantity === null || val.quantity === '' ? null : Number(val.quantity);\r\n val.discount = val.discount === null || val.discount === '' ? null : Number(val.discount);\r\n return val;\r\n }\r\n\r\n calcLineTotal(index: number): number {\r\n const val = this.getCurrentValues(index);\r\n if (!val) return Number(this.items[index]?.totalAmount || 0);\r\n return Math.max(0, (val.unitPrice || 0) * (val.quantity || 0) - (val.discount || 0));\r\n }\r\n\r\n get subtotal(): number {\r\n return this.items.reduce((s, _it, i) => {\r\n const v = this.getCurrentValues(i);\r\n const up = Number(v?.unitPrice || 0);\r\n const q = Number(v?.quantity || 0);\r\n return s + (up * q);\r\n }, 0);\r\n }\r\n\r\n get discountTotal(): number {\r\n return this.items.reduce((s, _it, i) => {\r\n const v = this.getCurrentValues(i);\r\n return s + Number(v?.discount || 0);\r\n }, 0);\r\n }\r\n\r\n get grandTotal(): number {\r\n return this.items.reduce((s, _it, i) => s + this.calcLineTotal(i), 0);\r\n }\r\n\r\n trackByIndex(index: number, _item: any) {\r\n return index;\r\n }\r\n\r\n editRow(index: number) {\r\n this.editing[index] = true;\r\n this.restoreFieldsFromSnapshot();\r\n this.editStateChange.emit({ index, editing: true });\r\n }\r\n\r\n private emitTotals() {\r\n this.totalsChange.emit({\r\n subtotal: this.subtotal,\r\n discount: this.discountTotal,\r\n grandTotal: this.grandTotal\r\n });\r\n }\r\n\r\n private setFieldsReadonly(state: boolean) {\r\n this.fields = (this.fields || []).map(f => ({ ...f, readonly: state }));\r\n }\r\n\r\n private restoreFieldsFromSnapshot() {\r\n if (this.baseFieldsSnapshot && this.baseFieldsSnapshot.length) {\r\n this.fields = this.baseFieldsSnapshot.map(f => ({...f}));\r\n } else {\r\n this.setFieldsReadonly(false);\r\n }\r\n }\r\n\r\n get gridTemplate() {\r\n return this.columnHeaderWidths.join(' ');\r\n }\r\n\r\n private discountValidator(index: number) {\r\n return (control: AbstractControl) => {\r\n const val = this.getCurrentValues(index);\r\n if (!val) return null;\r\n\r\n const totalBeforeDiscount = (val.unitPrice ?? 0) * (val.quantity ?? 0);\r\n const discount = val.discount ?? null;\r\n\r\n if (discount != null && discount > totalBeforeDiscount) {\r\n return { discountTooHigh: true };\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n}\r\n","<div class=\"item-line-editor\">\r\n\r\n <h3 class=\"title\">{{ title | translate }}</h3>\r\n <p class=\"subtitle\">{{ subtitle | translate }}</p>\r\n\r\n <div class=\"table-header\" [ngStyle]=\"{ 'grid-template-columns': gridTemplate }\">\r\n <ng-container *ngFor=\"let f of headerFields; let idx = index\">\r\n <div class=\"col\">\r\n {{ labelOf(f) | translate }}\r\n <span *ngIf=\"f.required\" class=\"required-asterisk\"> * </span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n @if (!noDataFound) {\r\n <div class=\"table-body\" *ngFor=\"let it of items; let i = index; trackBy: trackByIndex\">\r\n\r\n <div class=\"table-row\">\r\n\r\n <div class=\"row-inputs\">\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editing[i]\"\r\n [emitOnValueChanges]=\"true\"\r\n [item]=\"it\"\r\n [currency]=\"currency\"\r\n (formUpdated)=\"onFormUpdated($event, i)\">\r\n </app-base-form-canvas>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"row-actions\">\r\n\r\n <button *ngIf=\"editing[i]\" mat-stroked-button class=\"btn-none-background-primary save-btn\" (click)=\"saveRow(i)\"\r\n [disabled]=\"!canSave(i)\">\r\n <div class=\"button-text\">\r\n <mat-icon>check</mat-icon>\r\n <span>{{ 'item-line.save' | translate }}</span>\r\n </div>\r\n </button>\r\n\r\n <button *ngIf=\"!editing[i] && editable\" mat-stroked-button class=\"btn-none-background-primary edit-btn\"\r\n (click)=\"editRow(i)\">\r\n <div class=\"button-text\">\r\n <mat-icon>edit</mat-icon>\r\n <span>{{ 'item-line.edit' | translate }}</span>\r\n </div>\r\n </button>\r\n\r\n <button *ngIf=\"allowDelete && editable\" mat-stroked-button class=\"btn-none-background-primary delete-btn\"\r\n (click)=\"deleteItem(i)\" type=\"button\">\r\n <div class=\"button-text\">\r\n <mat-icon>delete</mat-icon>\r\n <span>{{ 'item-line.delete' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n @if (noDataFound) {\r\n <div class=\"dataNotFound flex-column\">\r\n <mat-icon class=\"dataNotFound__icon\">{{ noDataFoundIcon }}</mat-icon>\r\n <span class=\"dataNotFound__title\">{{ noDataFoundTitle | translate }}</span>\r\n <span class=\"dataNotFound__subtitle\">{{ noDataFoundSubtitle | translate }}</span>\r\n </div>\r\n\r\n }\r\n <div class=\"add-item\" *ngIf=\"allowAdd && editable\">\r\n <div class=\"divider\" style=\"border-top: 1px solid var(--primary-color-3nd)\"></div>\r\n <button mat-stroked-button color=\"primary\" class=\"btn-none-background-primary\" (click)=\"addNewItem()\"\r\n [disabled]=\"!canAddNew\">\r\n <div class=\"button-text\">\r\n <mat-icon>add</mat-icon>\r\n <span> {{ 'item-line.addNewItem' | translate }}</span>\r\n </div>\r\n </button>\r\n\r\n </div>\r\n\r\n @if (!noDataFound) {\r\n <div class=\"totals-box\">\r\n\r\n <div class=\"total-row\">\r\n <span class=\"label\">{{ 'item-line.discount' | translate }}</span>\r\n <span class=\"value red\">{{ discountTotal | currency:currency }}</span>\r\n </div>\r\n\r\n <div class=\"total-row\">\r\n <span class=\"label\">{{ 'item-line.amount' | translate }}</span>\r\n <span class=\"value\">{{ subtotal | currency:currency }}</span>\r\n </div>\r\n\r\n <div class=\"divider\"></div>\r\n\r\n <div class=\"total-row grand\">\r\n <span class=\"label\">{{ 'item-line.grandTotal' | translate }}</span>\r\n <span class=\"value strong green\">{{ grandTotal | currency:currency }}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n</div>\r\n","/*\r\n * Public API Surface of invoiceq-lib\r\n */\r\n\r\nexport * from './lib/components/action-confirmation/action-confirmation.component'\r\nexport * from './lib/components/base-table/base-table.component'\r\nexport * from './lib/components/audit-log-list/audit-log.component'\r\nexport * from './lib/components/editable-base-table/editable-base-table.component'\r\nexport * from './lib/components/title-bar/title-bar.component'\r\nexport * from './lib/components/shared-list/shared-list.component'\r\nexport * from './lib/components/base-form-canvas/base-form-canvas.component'\r\nexport * from './lib/components/section-form-canvas/section-form-canvas.component'\r\nexport * from './lib/components/base-form/base-form.component'\r\nexport * from './lib/components/audit-log-details-dialog/audit-log-details-dialog.component'\r\nexport * from './lib/components/report-form/report-form.component'\r\nexport * from './lib/components/activity-report-form/activity-report-form.component'\r\nexport * from './lib/components/report-details-dialog/report-details-dialog.component'\r\nexport * from './lib/base-model';\r\nexport * from './lib/base-model/line-item.model';\r\nexport * from './lib/base-model/items-total.model';\r\nexport * from './lib/services';\r\nexport * from './lib/validators';\r\nexport * from './lib/components/base-input-dialog/base-input-dialog.component'\r\nexport * from './lib/components/search-bar/search-bar.component'\r\nexport * from './lib/components/snackbar-static/snackbar-static.component'\r\nexport * from './lib/components/shared/action-card/action-card.component'\r\nexport * from './lib/components/shared/action-button/action-button.component'\r\nexport * from './lib/components/action-comment/action-comment.component'\r\nexport * from './lib/components/item-line-editor/item-line-editor.component'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i1","i2","i4","i2.TopPanel","i5","i1.BackendService","i3.BackendService","i7","MatOption","i6.BackendService","MatFormField","moment","i8","i9","MatLabel","i5.BackendService","i6","NON_REPORT_COLUMNS","i2.BackendService"],"mappings":"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I,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpG,YAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpG,YAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpG,YAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpG,YAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpG,YAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpG,YAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpG,YAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,I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"}