cat-documents-ng 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ng-package.json +10 -0
- package/package.json +5 -11
- package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.html +3 -0
- package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.scss +13 -0
- package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.spec.ts +70 -0
- package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.ts +133 -0
- package/src/Shared/components/table-primary/table-primary.component.html +66 -0
- package/src/Shared/components/table-primary/table-primary.component.scss +227 -0
- package/src/Shared/components/table-primary/table-primary.component.spec.ts +23 -0
- package/src/Shared/components/table-primary/table-primary.component.ts +143 -0
- package/src/Shared/components/table-primary/table-primary.model.ts +21 -0
- package/src/Shared/constant/ERROR.ts +55 -0
- package/src/Shared/constant/PERMISSIONS.ts +17 -0
- package/src/Shared/constant/SHARED.ts +936 -0
- package/{Shared/constant/URLS.d.ts → src/Shared/constant/URLS.ts} +31 -25
- package/src/Shared/services/app-config.service.spec.ts +19 -0
- package/src/Shared/services/app-config.service.ts +73 -0
- package/{Shared/services/global-error.handler.d.ts → src/Shared/services/global-error.handler.ts} +11 -9
- package/src/Shared/services/session.service.spec.ts +16 -0
- package/src/Shared/services/session.service.ts +76 -0
- package/src/Shared/shared.module.ts +25 -0
- package/src/lib/document/components/csv-viewer/csv-viewer.component.ts +1 -0
- package/src/lib/document/components/document-actions/document-actions.component.html +59 -0
- package/src/lib/document/components/document-actions/document-actions.component.scss +362 -0
- package/src/lib/document/components/document-actions/document-actions.component.spec.ts +297 -0
- package/src/lib/document/components/document-actions/document-actions.component.ts +163 -0
- package/src/lib/document/components/document-container/document-container.component.html +36 -0
- package/src/lib/document/components/document-container/document-container.component.scss +144 -0
- package/src/lib/document/components/document-container/document-container.component.spec.ts +110 -0
- package/src/lib/document/components/document-container/document-container.component.ts +363 -0
- package/src/lib/document/components/document-content-viewer/document-content-viewer.component.html +332 -0
- package/src/lib/document/components/document-content-viewer/document-content-viewer.component.scss +1877 -0
- package/src/lib/document/components/document-content-viewer/document-content-viewer.component.spec.ts +258 -0
- package/src/lib/document/components/document-content-viewer/document-content-viewer.component.ts +664 -0
- package/src/lib/document/components/document-history/document-history.component.html +96 -0
- package/src/lib/document/components/document-history/document-history.component.scss +392 -0
- package/src/lib/document/components/document-history/document-history.component.spec.ts +93 -0
- package/src/lib/document/components/document-history/document-history.component.ts +373 -0
- package/src/lib/document/components/document-list/document-list.component.html +46 -0
- package/src/lib/document/components/document-list/document-list.component.scss +513 -0
- package/src/lib/document/components/document-list/document-list.component.spec.ts +486 -0
- package/src/lib/document/components/document-list/document-list.component.ts +682 -0
- package/src/lib/document/components/document-list-item/document-list-item.component.html +36 -0
- package/src/lib/document/components/document-list-item/document-list-item.component.scss +34 -0
- package/src/lib/document/components/document-list-item/document-list-item.component.spec.ts +75 -0
- package/src/lib/document/components/document-list-item/document-list-item.component.ts +40 -0
- package/src/lib/document/components/document-search/document-search.component.html +64 -0
- package/src/lib/document/components/document-search/document-search.component.scss +206 -0
- package/src/lib/document/components/document-search/document-search.component.spec.ts +82 -0
- package/src/lib/document/components/document-search/document-search.component.ts +163 -0
- package/src/lib/document/components/document-status/document-status.component.html +31 -0
- package/src/lib/document/components/document-status/document-status.component.scss +192 -0
- package/src/lib/document/components/document-status/document-status.component.spec.ts +23 -0
- package/src/lib/document/components/document-status/document-status.component.ts +87 -0
- package/src/lib/document/components/document-upload/document-upload.component.html +160 -0
- package/src/lib/document/components/document-upload/document-upload.component.scss +235 -0
- package/src/lib/document/components/document-upload/document-upload.component.spec.ts +95 -0
- package/src/lib/document/components/document-upload/document-upload.component.ts +668 -0
- package/src/lib/document/components/document-viewer/document-viewer.component.html +50 -0
- package/src/lib/document/components/document-viewer/document-viewer.component.scss +187 -0
- package/src/lib/document/components/document-viewer/document-viewer.component.spec.ts +79 -0
- package/src/lib/document/components/document-viewer/document-viewer.component.ts +261 -0
- package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.html +48 -0
- package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.scss +320 -0
- package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.spec.ts +59 -0
- package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.ts +150 -0
- package/src/lib/document/components/documents-menu/documents-menu.component.html +44 -0
- package/src/lib/document/components/documents-menu/documents-menu.component.scss +363 -0
- package/src/lib/document/components/documents-menu/documents-menu.component.spec.ts +23 -0
- package/src/lib/document/components/documents-menu/documents-menu.component.ts +316 -0
- package/src/lib/document/components/folder-block/folder-block.component.html +46 -0
- package/src/lib/document/components/folder-block/folder-block.component.scss +9 -0
- package/src/lib/document/components/folder-block/folder-block.component.spec.ts +70 -0
- package/{lib/document/components/folder-block/folder-block.component.d.ts → src/lib/document/components/folder-block/folder-block.component.ts} +28 -12
- package/src/lib/document/components/folder-container/folder-container.component.html +56 -0
- package/src/lib/document/components/folder-container/folder-container.component.scss +20 -0
- package/src/lib/document/components/folder-container/folder-container.component.spec.ts +27 -0
- package/src/lib/document/components/folder-container/folder-container.component.ts +328 -0
- package/src/lib/document/components/linked-document/linked-document.component.html +23 -0
- package/src/lib/document/components/linked-document/linked-document.component.scss +10 -0
- package/src/lib/document/components/linked-document/linked-document.component.spec.ts +61 -0
- package/src/lib/document/components/linked-document/linked-document.component.ts +49 -0
- package/src/lib/document/components/request-document/request-document.component.html +86 -0
- package/src/lib/document/components/request-document/request-document.component.scss +16 -0
- package/src/lib/document/components/request-document/request-document.component.ts +278 -0
- package/src/lib/document/components/sidebar/sidebar.component.html +75 -0
- package/src/lib/document/components/sidebar/sidebar.component.scss +157 -0
- package/src/lib/document/components/sidebar/sidebar.component.spec.ts +114 -0
- package/src/lib/document/components/sidebar/sidebar.component.ts +223 -0
- package/src/lib/document/components/user-list/user-list.component.html +33 -0
- package/src/lib/document/components/user-list/user-list.component.scss +118 -0
- package/src/lib/document/components/user-list/user-list.component.spec.ts +23 -0
- package/src/lib/document/components/user-list/user-list.component.ts +181 -0
- package/src/lib/document/constant/DOCUMENT_HISTORY.ts +52 -0
- package/src/lib/document/directives/document.directive.ts +32 -0
- package/src/lib/document/directives/permission.directive.spec.ts +0 -0
- package/src/lib/document/directives/permission.directive.ts +72 -0
- package/src/lib/document/document.module.ts +351 -0
- package/{lib/document/models/document-alert.model.d.ts → src/lib/document/models/document-alert.model.ts} +11 -4
- package/src/lib/document/models/document-category.model.ts +30 -0
- package/src/lib/document/models/document-history.model.ts +109 -0
- package/src/lib/document/models/document-list-response.model.ts +37 -0
- package/src/lib/document/models/document-type.model.ts +44 -0
- package/src/lib/document/models/document.model.ts +53 -0
- package/{lib/document/models/folder.model.d.ts → src/lib/document/models/folder.model.ts} +10 -4
- package/src/lib/document/models/status-data.model.ts +31 -0
- package/src/lib/document/models/uploaded-file-response.model.ts +7 -0
- package/src/lib/document/models/user-list.model.ts +10 -0
- package/src/lib/document/services/csv-parser.service.spec.ts +97 -0
- package/src/lib/document/services/csv-parser.service.ts +303 -0
- package/src/lib/document/services/document-actions.service.ts +125 -0
- package/src/lib/document/services/document-content-type.service.ts +193 -0
- package/src/lib/document/services/document-history-style.service.ts +138 -0
- package/src/lib/document/services/document-history.service.ts +129 -0
- package/src/lib/document/services/document-http.service.spec.ts +119 -0
- package/src/lib/document/services/document-http.service.ts +497 -0
- package/src/lib/document/services/document-list.service.ts +195 -0
- package/src/lib/document/services/document-menu.service.ts +277 -0
- package/src/lib/document/services/document-scroll.service.ts +138 -0
- package/src/lib/document/services/document-severity.service.ts +98 -0
- package/src/lib/document/services/document-table-builder.service.ts +82 -0
- package/src/lib/document/services/document-upload-business.service.ts +326 -0
- package/src/lib/document/services/document-upload-data.service.ts +82 -0
- package/src/lib/document/services/document-upload-form.service.ts +149 -0
- package/src/lib/document/services/document-upload.service.spec.ts +99 -0
- package/src/lib/document/services/document-upload.service.ts +209 -0
- package/src/lib/document/services/document-viewer.service.ts +279 -0
- package/src/lib/document/services/document-zoom.service.spec.ts +56 -0
- package/src/lib/document/services/document-zoom.service.ts +164 -0
- package/src/lib/document/services/document.service.ts +356 -0
- package/src/lib/document/services/eml-parser.service.ts +444 -0
- package/src/lib/document/services/excel-parser.service.spec.ts +66 -0
- package/src/lib/document/services/excel-parser.service.ts +483 -0
- package/src/lib/document/services/file-format.service.spec.ts +16 -0
- package/src/lib/document/services/file-format.service.ts +63 -0
- package/src/lib/document/services/status-calculator.service.ts +44 -0
- package/src/lib/document/services/user-list.service.ts +77 -0
- package/src/lib/document/state/document.query.ts +378 -0
- package/{lib/document/state/document.service.d.ts → src/lib/document/state/document.service.ts} +46 -15
- package/src/lib/document/state/document.state.ts +100 -0
- package/src/lib/document/state/document.store.ts +200 -0
- package/{public-api.d.ts → src/public-api.ts} +4 -0
- package/tsconfig.lib.json +15 -0
- package/tsconfig.lib.prod.json +11 -0
- package/tsconfig.spec.json +15 -0
- package/Shared/components/confirmation-dialog/confirmation-dialog.component.d.ts +0 -44
- package/Shared/components/table-primary/table-primary.component.d.ts +0 -31
- package/Shared/components/table-primary/table-primary.model.d.ts +0 -19
- package/Shared/constant/ERROR.d.ts +0 -52
- package/Shared/constant/SHARED.d.ts +0 -546
- package/Shared/services/app-config.service.d.ts +0 -51
- package/Shared/services/session.service.d.ts +0 -46
- package/Shared/shared.module.d.ts +0 -14
- package/fesm2022/cat-documents-ng.mjs +0 -11392
- package/fesm2022/cat-documents-ng.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/document/components/document-actions/document-actions.component.d.ts +0 -78
- package/lib/document/components/document-container/document-container.component.d.ts +0 -162
- package/lib/document/components/document-content-viewer/document-content-viewer.component.d.ts +0 -291
- package/lib/document/components/document-history/document-history.component.d.ts +0 -160
- package/lib/document/components/document-list/document-list.component.d.ts +0 -299
- package/lib/document/components/document-list-item/document-list-item.component.d.ts +0 -28
- package/lib/document/components/document-search/document-search.component.d.ts +0 -77
- package/lib/document/components/document-status/document-status.component.d.ts +0 -24
- package/lib/document/components/document-upload/document-upload.component.d.ts +0 -321
- package/lib/document/components/document-viewer/document-viewer.component.d.ts +0 -137
- package/lib/document/components/document-zoom-controls/document-zoom-controls.component.d.ts +0 -33
- package/lib/document/components/documents-menu/documents-menu.component.d.ts +0 -110
- package/lib/document/components/folder-container/folder-container.component.d.ts +0 -162
- package/lib/document/components/linked-document/linked-document.component.d.ts +0 -39
- package/lib/document/components/request-document/request-document.component.d.ts +0 -69
- package/lib/document/components/sidebar/sidebar.component.d.ts +0 -109
- package/lib/document/components/user-list/user-list.component.d.ts +0 -34
- package/lib/document/constant/DOCUMENT_HISTORY.d.ts +0 -41
- package/lib/document/directives/document.directive.d.ts +0 -20
- package/lib/document/directives/permission.directive.d.ts +0 -38
- package/lib/document/document.module.d.ts +0 -60
- package/lib/document/models/document-category.model.d.ts +0 -24
- package/lib/document/models/document-history.model.d.ts +0 -94
- package/lib/document/models/document-list-response.model.d.ts +0 -33
- package/lib/document/models/document-type.model.d.ts +0 -37
- package/lib/document/models/document.model.d.ts +0 -44
- package/lib/document/models/status-data.model.d.ts +0 -27
- package/lib/document/models/uploaded-file-response.model.d.ts +0 -7
- package/lib/document/models/user-list.model.d.ts +0 -8
- package/lib/document/services/csv-parser.service.d.ts +0 -88
- package/lib/document/services/document-actions.service.d.ts +0 -48
- package/lib/document/services/document-content-type.service.d.ts +0 -85
- package/lib/document/services/document-history-style.service.d.ts +0 -34
- package/lib/document/services/document-history.service.d.ts +0 -42
- package/lib/document/services/document-http.service.d.ts +0 -179
- package/lib/document/services/document-list.service.d.ts +0 -74
- package/lib/document/services/document-menu.service.d.ts +0 -122
- package/lib/document/services/document-scroll.service.d.ts +0 -55
- package/lib/document/services/document-table-builder.service.d.ts +0 -38
- package/lib/document/services/document-upload-business.service.d.ts +0 -107
- package/lib/document/services/document-upload-data.service.d.ts +0 -40
- package/lib/document/services/document-upload-form.service.d.ts +0 -41
- package/lib/document/services/document-upload.service.d.ts +0 -99
- package/lib/document/services/document-viewer.service.d.ts +0 -97
- package/lib/document/services/document-zoom.service.d.ts +0 -81
- package/lib/document/services/document.service.d.ts +0 -161
- package/lib/document/services/eml-parser.service.d.ts +0 -116
- package/lib/document/services/excel-parser.service.d.ts +0 -169
- package/lib/document/services/file-format.service.d.ts +0 -34
- package/lib/document/services/status-calculator.service.d.ts +0 -20
- package/lib/document/services/user-list.service.d.ts +0 -29
- package/lib/document/state/document.query.d.ts +0 -243
- package/lib/document/state/document.state.d.ts +0 -61
- package/lib/document/state/document.store.d.ts +0 -56
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, HostListener, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { DocumentHistorySection, HistoryDocument } from '../../models/document-history.model';
|
|
3
|
+
import { SHARED } from '../../../../Shared/constant/SHARED';
|
|
4
|
+
import { DocumentHistoryService } from '../../services/document-history.service';
|
|
5
|
+
import { DocumentViewerService } from '../../services/document-viewer.service';
|
|
6
|
+
import { DocumentActionsService } from '../../services/document-actions.service';
|
|
7
|
+
import { ConfirmationService } from 'primeng/api';
|
|
8
|
+
import { ConfirmationDialogComponent } from '../../../../Shared/components/confirmation-dialog/confirmation-dialog.component';
|
|
9
|
+
import { DocumentHttpService } from '../../services/document-http.service';
|
|
10
|
+
|
|
11
|
+
// Extended interface for processed items with computed properties
|
|
12
|
+
interface ProcessedDocumentHistoryItem {
|
|
13
|
+
label: string;
|
|
14
|
+
dateTime: string;
|
|
15
|
+
requestDescription: string;
|
|
16
|
+
userName: string;
|
|
17
|
+
userRole: string;
|
|
18
|
+
documentUrl?: string;
|
|
19
|
+
docName?: string;
|
|
20
|
+
actionIcon: string;
|
|
21
|
+
actionColor: string;
|
|
22
|
+
actionBgColor: string;
|
|
23
|
+
actionBorderColor: string;
|
|
24
|
+
actionIconBgColor: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
interface ProcessedDocumentHistorySection extends DocumentHistorySection {
|
|
28
|
+
list: ProcessedDocumentHistoryItem[];
|
|
29
|
+
accordionClass?: string;
|
|
30
|
+
hasValidContent?: boolean;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Component for displaying document history in a timeline format.
|
|
35
|
+
*/
|
|
36
|
+
@Component({
|
|
37
|
+
selector: 'document-history',
|
|
38
|
+
standalone: false,
|
|
39
|
+
templateUrl: './document-history.component.html',
|
|
40
|
+
styleUrls: ['./document-history.component.scss']
|
|
41
|
+
})
|
|
42
|
+
export class DocumentHistoryComponent implements OnChanges {
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Input data for document history sections
|
|
46
|
+
*/
|
|
47
|
+
@Input() historyData: DocumentHistorySection[] = SHARED.EMPTY_ARRAY;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Whether to show the history component
|
|
51
|
+
*/
|
|
52
|
+
@Input() showHistory: boolean = false;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* The context ID for API calls
|
|
56
|
+
*/
|
|
57
|
+
@Input() contextId?: string;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* The selected document for actions
|
|
61
|
+
*/
|
|
62
|
+
@Input() selectedDocument?: any;
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Event emitted when delete task is requested
|
|
68
|
+
*/
|
|
69
|
+
@Output() deleteTaskRequested = new EventEmitter<void>();
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Event emitted when a document from history is selected
|
|
73
|
+
*/
|
|
74
|
+
@Output() documentSelected = new EventEmitter<HistoryDocument>();
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Reference to the document actions component
|
|
78
|
+
*/
|
|
79
|
+
documentActionsComponent?: any;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Active accordion index for controlling expand/collapse
|
|
83
|
+
*/
|
|
84
|
+
activeAccordionIndex: number = 0;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Whether the accordion is expanded
|
|
88
|
+
*/
|
|
89
|
+
isAccordionExpanded: boolean = true;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Whether the actions dropdown menu is visible
|
|
93
|
+
*/
|
|
94
|
+
showActionsMenu: boolean = false;
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
constructor(
|
|
99
|
+
private documentHistoryService: DocumentHistoryService,
|
|
100
|
+
private documentViewerService: DocumentViewerService,
|
|
101
|
+
private documentActionsService: DocumentActionsService,
|
|
102
|
+
private confirmationService: ConfirmationService,
|
|
103
|
+
private documentHttpService: DocumentHttpService
|
|
104
|
+
) {}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Handles changes to input properties
|
|
108
|
+
*/
|
|
109
|
+
ngOnChanges(changes: SimpleChanges): void {
|
|
110
|
+
if (changes['historyData'] && this.historyData) {
|
|
111
|
+
this.processHistoryData();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Handle accordion open event
|
|
117
|
+
*/
|
|
118
|
+
onAccordionOpen(): void {
|
|
119
|
+
this.isAccordionExpanded = true;
|
|
120
|
+
this.activeAccordionIndex = 0;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Handle accordion close event
|
|
125
|
+
*/
|
|
126
|
+
onAccordionClose(): void {
|
|
127
|
+
this.isAccordionExpanded = false;
|
|
128
|
+
this.activeAccordionIndex = -1;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Toggle accordion state
|
|
133
|
+
*/
|
|
134
|
+
toggleAccordion(): void {
|
|
135
|
+
if (this.isAccordionExpanded) {
|
|
136
|
+
this.onAccordionClose();
|
|
137
|
+
} else {
|
|
138
|
+
this.onAccordionOpen();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Process history data to add computed properties
|
|
144
|
+
*/
|
|
145
|
+
get processedHistoryData(): any[] {
|
|
146
|
+
return this._processedHistoryData;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Downloads a document when clicked
|
|
151
|
+
* @param documentUrl - The URL of the document to download
|
|
152
|
+
* @param docName - The name of the document
|
|
153
|
+
*/
|
|
154
|
+
downloadDocument(documentUrl: string, docName?: string): void {
|
|
155
|
+
this.documentHistoryService.downloadDocument(documentUrl, docName);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Get alert count for the alerts section
|
|
160
|
+
*/
|
|
161
|
+
getAlertCount(): number {
|
|
162
|
+
// This could be enhanced to get actual alert count from a service
|
|
163
|
+
return 3; // Placeholder value matching the image
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Get CSS class for event card based on action type
|
|
168
|
+
*/
|
|
169
|
+
getEventCardClass(label: string): string {
|
|
170
|
+
const lowerLabel = label.toLowerCase();
|
|
171
|
+
if (lowerLabel.includes(SHARED.REQUESTED)) {
|
|
172
|
+
return SHARED.EVENT_REQUESTED;
|
|
173
|
+
} else if (lowerLabel.includes(SHARED.ACCEPTED) || lowerLabel.includes(SHARED.UPLOADED)) {
|
|
174
|
+
return SHARED.EVENT_ACCEPTED;
|
|
175
|
+
} else if (lowerLabel.includes(SHARED.REJECTED)) {
|
|
176
|
+
return SHARED.EVENT_REJECTED;
|
|
177
|
+
}
|
|
178
|
+
return SHARED.EVENT_DEFAULT;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Get CSS class for event icon based on action type
|
|
183
|
+
*/
|
|
184
|
+
getEventIconClass(label: string): string {
|
|
185
|
+
const lowerLabel = label.toLowerCase();
|
|
186
|
+
if (lowerLabel.includes(SHARED.REQUESTED)) {
|
|
187
|
+
return SHARED.ICON_REQUESTED;
|
|
188
|
+
} else if (lowerLabel.includes(SHARED.ACCEPTED) || lowerLabel.includes(SHARED.UPLOADED)) {
|
|
189
|
+
return SHARED.ICON_ACCEPTED;
|
|
190
|
+
} else if (lowerLabel.includes(SHARED.REJECTED)) {
|
|
191
|
+
return SHARED.ICON_REJECTED;
|
|
192
|
+
}
|
|
193
|
+
return SHARED.ICON_DEFAULT;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Get the appropriate icon for the event
|
|
198
|
+
* @param label - The event label
|
|
199
|
+
* @returns {string} The icon class
|
|
200
|
+
*/
|
|
201
|
+
getEventIcon(label: string): string {
|
|
202
|
+
const lowerLabel = label.toLowerCase();
|
|
203
|
+
if (lowerLabel.includes(SHARED.UPLOADED)) {
|
|
204
|
+
return SHARED.ICON_CHECK_CIRCLE;
|
|
205
|
+
} else if (lowerLabel.includes(SHARED.REQUESTED)) {
|
|
206
|
+
return SHARED.ICON_FOLDER_PLUS;
|
|
207
|
+
} else if (lowerLabel.includes(SHARED.ACCEPTED) || lowerLabel.includes(SHARED.APPROVED)) {
|
|
208
|
+
return SHARED.ICON_CHECK_CIRCLE;
|
|
209
|
+
} else if (lowerLabel.includes(SHARED.REJECTED)) {
|
|
210
|
+
return SHARED.ICON_TIMES;
|
|
211
|
+
}
|
|
212
|
+
return SHARED.ICON_FILE;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Toggle the actions dropdown menu
|
|
219
|
+
*/
|
|
220
|
+
toggleActionsMenu(): void {
|
|
221
|
+
this.showActionsMenu = !this.showActionsMenu;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Close the actions dropdown menu
|
|
226
|
+
*/
|
|
227
|
+
closeActionsMenu(): void {
|
|
228
|
+
this.showActionsMenu = false;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Handle delete task action
|
|
235
|
+
*/
|
|
236
|
+
onDeleteTask(): void {
|
|
237
|
+
this.closeActionsMenu();
|
|
238
|
+
if (this.selectedDocument && this.contextId) {
|
|
239
|
+
const documentName = this.selectedDocument?.docName || 'this document';
|
|
240
|
+
const documentId = this.selectedDocument?._id;
|
|
241
|
+
const documentTypeName = this.selectedDocument?.documentTypeName?.toLowerCase() || '';
|
|
242
|
+
// Check if the document is a valuation report
|
|
243
|
+
const isValuationReport = documentTypeName.includes(SHARED.VALUATION_REPORT);
|
|
244
|
+
if (isValuationReport && documentId) { // First check if valuation report data exists in the database
|
|
245
|
+
this.documentHttpService.getValuationReportByContextId(this.contextId).subscribe({
|
|
246
|
+
next: (valuationReportData) => { // Check if valuation report data exists and if the documentId matches
|
|
247
|
+
const hasValuationReportData = valuationReportData && Object.keys(valuationReportData).length > 0;
|
|
248
|
+
const documentIdMatches = valuationReportData?.documentId === documentId;
|
|
249
|
+
if (hasValuationReportData && documentIdMatches) { // Show custom confirmation message for valuation report with matching documentId
|
|
250
|
+
ConfirmationDialogComponent.confirm( this.confirmationService,
|
|
251
|
+
{ message: SHARED.VALUATION_REPORT_DELETE_MESSAGE, header: SHARED.DELETE_CONFIRMATION_HEADER,
|
|
252
|
+
acceptLabel: SHARED.DELETE, rejectLabel: SHARED.CANCEL, acceptButtonClass: SHARED.DELETE_BUTTON_STYLE_CLASS },
|
|
253
|
+
() => { this.performDelete(); },
|
|
254
|
+
() => {}
|
|
255
|
+
);
|
|
256
|
+
} else { this.showStandardDeleteConfirmation(documentName); // No valuation report data or documentId doesn't match, show standard delete confirmation
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
error: () => { this.showStandardDeleteConfirmation(documentName); // If API fails, show standard delete confirmation
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
} else { this.showStandardDeleteConfirmation(documentName); // Show standard delete confirmation for other document types
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Shows standard delete confirmation dialog
|
|
269
|
+
* @private
|
|
270
|
+
*/
|
|
271
|
+
private showStandardDeleteConfirmation(documentName: string): void {
|
|
272
|
+
ConfirmationDialogComponent.confirmDelete(
|
|
273
|
+
this.confirmationService,
|
|
274
|
+
documentName,
|
|
275
|
+
() => {
|
|
276
|
+
this.performDelete();
|
|
277
|
+
},
|
|
278
|
+
() => {}
|
|
279
|
+
);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Performs the actual delete operation
|
|
284
|
+
* @private
|
|
285
|
+
*/
|
|
286
|
+
private performDelete(): void {
|
|
287
|
+
// Ensure the viewer service has the latest selected document (with _id from history)
|
|
288
|
+
// eslint-disable-next-line no-console
|
|
289
|
+
try {
|
|
290
|
+
(this.documentViewerService as any).updateSelectedDocument?.(this.selectedDocument, true);
|
|
291
|
+
} catch {}
|
|
292
|
+
const deleteAction = this.documentActionsService.createDeleteAction();
|
|
293
|
+
this.documentViewerService.handleDocumentAction(deleteAction, this.contextId);
|
|
294
|
+
this.deleteTaskRequested.emit();
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Set reference to document actions component
|
|
299
|
+
*/
|
|
300
|
+
setDocumentActionsComponent(component: any): void {
|
|
301
|
+
this.documentActionsComponent = component;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Handles document selection from history
|
|
306
|
+
* @param document - The selected document from history
|
|
307
|
+
*/
|
|
308
|
+
onDocumentClick(document: HistoryDocument): void {
|
|
309
|
+
if (document && document.documentUrl && document.docName) {
|
|
310
|
+
this.documentSelected.emit(document);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Processed history data with document lists
|
|
316
|
+
*/
|
|
317
|
+
private _processedHistoryData: any[] = [];
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* Processes history data to include document lists for each item
|
|
321
|
+
*/
|
|
322
|
+
private processHistoryData(): void {
|
|
323
|
+
this._processedHistoryData = this.historyData.map(section => ({
|
|
324
|
+
...section,
|
|
325
|
+
list: section.list.map(item => ({
|
|
326
|
+
...item,
|
|
327
|
+
documentList: this.getValidDocuments(item),
|
|
328
|
+
eventCardClass: this.getEventCardClass(item.label),
|
|
329
|
+
eventIconClass: this.getEventIconClass(item.label),
|
|
330
|
+
eventIcon: this.getEventIcon(item.label),
|
|
331
|
+
shouldHide: this.shouldHideItem(item)
|
|
332
|
+
}))
|
|
333
|
+
}));
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Gets the list of valid documents for a history item
|
|
338
|
+
* @param item - The history item
|
|
339
|
+
* @returns Array of valid documents
|
|
340
|
+
*/
|
|
341
|
+
private getValidDocuments(item: any): HistoryDocument[] {
|
|
342
|
+
if (item.documents && Array.isArray(item.documents)) {
|
|
343
|
+
return item.documents.filter((doc: HistoryDocument) =>
|
|
344
|
+
doc && doc.docName && doc.documentUrl && doc.contentType
|
|
345
|
+
);
|
|
346
|
+
}
|
|
347
|
+
return [];
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Determines if a timeline item should be hidden
|
|
352
|
+
* @param item - The history item
|
|
353
|
+
* @returns True if the item should be hidden
|
|
354
|
+
*/
|
|
355
|
+
private shouldHideItem(item: any): boolean {
|
|
356
|
+
return this.selectedDocument?.isUploaded &&
|
|
357
|
+
item.label.toLowerCase().includes(SHARED.REQUESTED);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Listen for clicks outside the dropdown to close it
|
|
362
|
+
*/
|
|
363
|
+
@HostListener('document:click', ['$event'])
|
|
364
|
+
onDocumentClickOutside(event: Event): void {
|
|
365
|
+
if (this.showActionsMenu) {
|
|
366
|
+
const target = event.target as HTMLElement;
|
|
367
|
+
const actionsMenu = target.closest('.actions-menu');
|
|
368
|
+
if (!actionsMenu) {
|
|
369
|
+
this.closeActionsMenu();
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<div class="document-viewer">
|
|
2
|
+
<p-dialog [(visible)]="isdialogVisible" [modal]="true"
|
|
3
|
+
class="w-full h-full document-dailog-wrapper" [draggable]="false" [closable]="true" (onHide)="handleCloseModal()">
|
|
4
|
+
<p-messages [(value)]="deleteMessage" [enableService]="false" [closable]="false" />
|
|
5
|
+
|
|
6
|
+
<document-viewer [selectedDocument]="selectedDocument" [documentList]="documentList" [contextId]="contextId"
|
|
7
|
+
(documentStatusUpdated)="handleDocumentStatusUpdate($event)"
|
|
8
|
+
(viewerDestroyed)="handleViewerDestroyed()"
|
|
9
|
+
(deleteError)="handleDeleteError($event)"
|
|
10
|
+
(deleteSuccess)="handleDeleteSuccess()">
|
|
11
|
+
<ng-template pTemplate="header">
|
|
12
|
+
<div class="w-full flex align-items-center justify-content-between">
|
|
13
|
+
<input type="text" class="w-full border-none bg-white h-3rem file-input-wrapper" pInputText
|
|
14
|
+
[(ngModel)]="fileName" />
|
|
15
|
+
|
|
16
|
+
</div>
|
|
17
|
+
</ng-template>
|
|
18
|
+
<ng-content></ng-content>
|
|
19
|
+
</document-viewer>
|
|
20
|
+
</p-dialog>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div class="document-categories-container" #documentCategoriesContainer>
|
|
24
|
+
<div class="category" *ngFor="let category of documentCategories; let i = index"
|
|
25
|
+
[id]="categoryIds[i]">
|
|
26
|
+
<div class="category-header" *ngIf="documentCategories[i]?.list?.length">
|
|
27
|
+
<div class="category-title">
|
|
28
|
+
<h3>{{ formattedCategoryLabels[i] }}</h3>
|
|
29
|
+
<p class="category-description">{{ category.categoryDescription }}</p>
|
|
30
|
+
</div>
|
|
31
|
+
<div class="completion-status">
|
|
32
|
+
<p-badge
|
|
33
|
+
[severity]="categorySeverities[i]"
|
|
34
|
+
[value]="(((categoryCompletionCounts && categoryCompletionCounts[i]) || 0) + ' Complete')"
|
|
35
|
+
class="completion-badge">
|
|
36
|
+
</p-badge>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
<div class="table-container">
|
|
41
|
+
<lib-table-primary [tableData]="categoryTables[i]" [tableStyle]="{ 'min-width': '100%' }"
|
|
42
|
+
(rowClick)="handleTableRowClick($event)" (deleteAction)="handleDeleteAction($event)" (rowCtrlClick)="handleTableRowCtrlClick($event)" >
|
|
43
|
+
</lib-table-primary>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|