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,138 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { DOCUMENT_HISTORY } from '../constant/DOCUMENT_HISTORY';
|
|
3
|
+
import { SHARED } from '../../../Shared/constant/SHARED';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Service for handling document history styling logic
|
|
7
|
+
*/
|
|
8
|
+
@Injectable({
|
|
9
|
+
providedIn: 'root'
|
|
10
|
+
})
|
|
11
|
+
export class DocumentHistoryStyleService {
|
|
12
|
+
|
|
13
|
+
constructor() {}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Get the appropriate icon class based on the action label
|
|
17
|
+
*/
|
|
18
|
+
getActionIcon(label: string): string {
|
|
19
|
+
switch (label) {
|
|
20
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_UPLOADED:
|
|
21
|
+
return DOCUMENT_HISTORY.ICONS.DOCUMENT_UPLOADED;
|
|
22
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_REJECTED:
|
|
23
|
+
return DOCUMENT_HISTORY.ICONS.DOCUMENT_REJECTED;
|
|
24
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_ACCEPTED:
|
|
25
|
+
return DOCUMENT_HISTORY.ICONS.DOCUMENT_ACCEPTED;
|
|
26
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_REQUESTED:
|
|
27
|
+
return DOCUMENT_HISTORY.ICONS.DOCUMENT_REQUESTED;
|
|
28
|
+
default:
|
|
29
|
+
return DOCUMENT_HISTORY.ICONS.DOCUMENT_REQUESTED;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Get the appropriate color class based on the action label
|
|
35
|
+
*/
|
|
36
|
+
getActionColor(label: string): string {
|
|
37
|
+
switch (label) {
|
|
38
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_UPLOADED:
|
|
39
|
+
return DOCUMENT_HISTORY.TEXT_COLORS.DOCUMENT_UPLOADED;
|
|
40
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_REJECTED:
|
|
41
|
+
return DOCUMENT_HISTORY.TEXT_COLORS.DOCUMENT_REJECTED;
|
|
42
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_ACCEPTED:
|
|
43
|
+
return DOCUMENT_HISTORY.TEXT_COLORS.DOCUMENT_ACCEPTED;
|
|
44
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_REQUESTED:
|
|
45
|
+
return DOCUMENT_HISTORY.TEXT_COLORS.DOCUMENT_REQUESTED;
|
|
46
|
+
default:
|
|
47
|
+
return DOCUMENT_HISTORY.TEXT_COLORS.DOCUMENT_REQUESTED;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Get the appropriate background color class based on the action label
|
|
53
|
+
*/
|
|
54
|
+
getActionBgColor(label: string): string {
|
|
55
|
+
switch (label) {
|
|
56
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_UPLOADED:
|
|
57
|
+
return DOCUMENT_HISTORY.BG_COLORS.DOCUMENT_UPLOADED;
|
|
58
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_REJECTED:
|
|
59
|
+
return DOCUMENT_HISTORY.BG_COLORS.DOCUMENT_REJECTED;
|
|
60
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_ACCEPTED:
|
|
61
|
+
return DOCUMENT_HISTORY.BG_COLORS.DOCUMENT_ACCEPTED;
|
|
62
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_REQUESTED:
|
|
63
|
+
return DOCUMENT_HISTORY.BG_COLORS.DOCUMENT_REQUESTED;
|
|
64
|
+
default:
|
|
65
|
+
return DOCUMENT_HISTORY.BG_COLORS.DOCUMENT_REQUESTED;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Get the appropriate border color class based on the action label
|
|
71
|
+
*/
|
|
72
|
+
getActionBorderColor(label: string): string {
|
|
73
|
+
switch (label) {
|
|
74
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_UPLOADED:
|
|
75
|
+
return DOCUMENT_HISTORY.BORDER_COLORS.DOCUMENT_UPLOADED;
|
|
76
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_REJECTED:
|
|
77
|
+
return DOCUMENT_HISTORY.BORDER_COLORS.DOCUMENT_REJECTED;
|
|
78
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_ACCEPTED:
|
|
79
|
+
return DOCUMENT_HISTORY.BORDER_COLORS.DOCUMENT_ACCEPTED;
|
|
80
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_REQUESTED:
|
|
81
|
+
return DOCUMENT_HISTORY.BORDER_COLORS.DOCUMENT_REQUESTED;
|
|
82
|
+
default:
|
|
83
|
+
return DOCUMENT_HISTORY.BORDER_COLORS.DOCUMENT_REQUESTED;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Get the appropriate icon background color class based on the action label
|
|
89
|
+
*/
|
|
90
|
+
getActionIconBgColor(label: string): string {
|
|
91
|
+
switch (label) {
|
|
92
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_UPLOADED:
|
|
93
|
+
return DOCUMENT_HISTORY.ICON_BG_COLORS.DOCUMENT_UPLOADED;
|
|
94
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_REJECTED:
|
|
95
|
+
return DOCUMENT_HISTORY.ICON_BG_COLORS.DOCUMENT_REJECTED;
|
|
96
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_ACCEPTED:
|
|
97
|
+
return DOCUMENT_HISTORY.ICON_BG_COLORS.DOCUMENT_ACCEPTED;
|
|
98
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_REQUESTED:
|
|
99
|
+
return DOCUMENT_HISTORY.ICON_BG_COLORS.DOCUMENT_REQUESTED;
|
|
100
|
+
default:
|
|
101
|
+
return DOCUMENT_HISTORY.ICON_BG_COLORS.DOCUMENT_REQUESTED;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Check if a section has valid content to display
|
|
107
|
+
*/
|
|
108
|
+
checkValidContent(section: any): boolean {
|
|
109
|
+
return section.list && section.list.length > 0 &&
|
|
110
|
+
section.list.some((item:any) =>
|
|
111
|
+
item.label ||
|
|
112
|
+
item.requestDescription ||
|
|
113
|
+
item.documentUrl ||
|
|
114
|
+
item.userName
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
getAccordionClass(section: any): string {
|
|
119
|
+
if (!section.list || section.list.length === 0) {
|
|
120
|
+
return SHARED.DOCUMENT_REQUESTED;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const firstItem = section.list[0];
|
|
124
|
+
const label = firstItem.label;
|
|
125
|
+
|
|
126
|
+
switch (label) {
|
|
127
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_UPLOADED:
|
|
128
|
+
return SHARED.DOCUMENT_UPLOADED;
|
|
129
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_REJECTED:
|
|
130
|
+
return SHARED.DOCUMENT_REJECTED;
|
|
131
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_ACCEPTED:
|
|
132
|
+
return SHARED.DOCUMENT_ACCEPTED;
|
|
133
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_REQUESTED:
|
|
134
|
+
default:
|
|
135
|
+
return SHARED.DOCUMENT_REQUESTED;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { DocumentHistoryItem, DocumentHistorySection } from '../models/document-history.model';
|
|
3
|
+
import { DocumentHistoryStyleService } from './document-history-style.service';
|
|
4
|
+
import { DOCUMENT_HISTORY } from '../constant/DOCUMENT_HISTORY';
|
|
5
|
+
import { SHARED } from '../../../Shared/constant/SHARED';
|
|
6
|
+
import { ERRORS } from '../../../Shared/constant/ERROR';
|
|
7
|
+
import { HttpClient } from '@angular/common/http';
|
|
8
|
+
|
|
9
|
+
// Extended interface for processed items with computed properties
|
|
10
|
+
interface ProcessedDocumentHistoryItem extends DocumentHistoryItem {
|
|
11
|
+
actionIcon: string;
|
|
12
|
+
actionColor: string;
|
|
13
|
+
actionBgColor: string;
|
|
14
|
+
actionBorderColor: string;
|
|
15
|
+
actionIconBgColor: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface ProcessedDocumentHistorySection extends DocumentHistorySection {
|
|
19
|
+
list: ProcessedDocumentHistoryItem[];
|
|
20
|
+
accordionClass?: string;
|
|
21
|
+
hasValidContent?: boolean;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@Injectable({
|
|
25
|
+
providedIn: 'root'
|
|
26
|
+
})
|
|
27
|
+
export class DocumentHistoryService {
|
|
28
|
+
|
|
29
|
+
constructor(private documentHistoryStyleService: DocumentHistoryStyleService, private http : HttpClient) {}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Get the CSS class for accordion styling based on the section's label
|
|
33
|
+
*/
|
|
34
|
+
private getAccordionClass(section: ProcessedDocumentHistorySection): string {
|
|
35
|
+
if (!section.list || section.list.length === 0) {
|
|
36
|
+
return SHARED.DOCUMENT_REQUESTED; // Default class
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const firstItem = section.list[0];
|
|
40
|
+
const label = firstItem.label;
|
|
41
|
+
|
|
42
|
+
switch (label) {
|
|
43
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_UPLOADED:
|
|
44
|
+
return SHARED.DOCUMENT_UPLOADED;
|
|
45
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_REJECTED:
|
|
46
|
+
return SHARED.DOCUMENT_REJECTED;
|
|
47
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_ACCEPTED:
|
|
48
|
+
return SHARED.DOCUMENT_ACCEPTED;
|
|
49
|
+
case DOCUMENT_HISTORY.LABELS.DOCUMENT_REQUESTED:
|
|
50
|
+
default:
|
|
51
|
+
return SHARED.DOCUMENT_REQUESTED;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Check if a section has valid content to display
|
|
57
|
+
*/
|
|
58
|
+
private checkValidContent(section: ProcessedDocumentHistorySection): boolean {
|
|
59
|
+
return section.list && section.list.length > 0 &&
|
|
60
|
+
section.list.some(item =>
|
|
61
|
+
item.requestDescription !== SHARED.EMPTY &&
|
|
62
|
+
item.documentUrl !== SHARED.EMPTY &&
|
|
63
|
+
(item.userName !== SHARED.EMPTY && item.userName !== SHARED.UNKNOWN_USER)
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Process history data to add computed properties
|
|
69
|
+
*/
|
|
70
|
+
processHistoryData(historyData: DocumentHistorySection[]): ProcessedDocumentHistorySection[] {
|
|
71
|
+
if (!historyData) {
|
|
72
|
+
return SHARED.EMPTY_ARRAY;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return historyData.map(section => {
|
|
76
|
+
const processedSection: ProcessedDocumentHistorySection = {
|
|
77
|
+
...section,
|
|
78
|
+
list: section.list.map(item => ({
|
|
79
|
+
...item,
|
|
80
|
+
dateTime: item.dateTime || ERRORS.NO_VALUE_FOUND,
|
|
81
|
+
actionIcon: this.documentHistoryStyleService.getActionIcon(item.label),
|
|
82
|
+
actionColor: this.documentHistoryStyleService.getActionColor(item.label),
|
|
83
|
+
actionBgColor: this.documentHistoryStyleService.getActionBgColor(item.label),
|
|
84
|
+
actionBorderColor: this.documentHistoryStyleService.getActionBorderColor(item.label),
|
|
85
|
+
actionIconBgColor: this.documentHistoryStyleService.getActionIconBgColor(item.label)
|
|
86
|
+
}))
|
|
87
|
+
};
|
|
88
|
+
processedSection.accordionClass = this.getAccordionClass(processedSection);
|
|
89
|
+
processedSection.hasValidContent = this.checkValidContent(processedSection);
|
|
90
|
+
|
|
91
|
+
return processedSection;
|
|
92
|
+
}).sort((a, b) => {
|
|
93
|
+
if (a.header === SHARED.INITIAL_REQUEST) return -1;
|
|
94
|
+
if (b.header === SHARED.INITIAL_REQUEST) return 1;
|
|
95
|
+
return 0;
|
|
96
|
+
}).map(section => ({
|
|
97
|
+
...section,
|
|
98
|
+
list: section.list.reverse()
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Downloads a document when clicked
|
|
104
|
+
* @param documentUrl - The URL of the document to download
|
|
105
|
+
* @param docName - The name of the document
|
|
106
|
+
*/
|
|
107
|
+
downloadDocument(documentUrl: string, docName?: string): void {
|
|
108
|
+
if (!documentUrl) {
|
|
109
|
+
console.warn(ERRORS.NO_DOCUMENT_URL);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
this.http.get(documentUrl, { responseType: 'blob' }).subscribe({
|
|
113
|
+
next: (blob) => {
|
|
114
|
+
const blobUrl = window.URL.createObjectURL(blob);
|
|
115
|
+
const a = document.createElement('a');
|
|
116
|
+
a.href = blobUrl;
|
|
117
|
+
a.download = docName ?? SHARED.DOCUMENT;
|
|
118
|
+
a.style.display = SHARED.NONE;
|
|
119
|
+
document.body.appendChild(a);
|
|
120
|
+
a.click();
|
|
121
|
+
a.remove();
|
|
122
|
+
window.URL.revokeObjectURL(blobUrl);
|
|
123
|
+
},
|
|
124
|
+
error: (err) => {
|
|
125
|
+
console.error(ERRORS.DOWNLOAD_FAIL, err);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { TestBed } from '@angular/core/testing';
|
|
2
|
+
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
|
|
3
|
+
import { DocumentHttpService } from './document-http.service';
|
|
4
|
+
import { DocumentStore } from '../state/document.store';
|
|
5
|
+
import { AppConfigService } from '../../../Shared/services/app-config.service';
|
|
6
|
+
import { URLS } from '../../../Shared/constant/URLS';
|
|
7
|
+
import { DocumentTypeModel } from '../models/document-type.model';
|
|
8
|
+
import { throwError } from 'rxjs';
|
|
9
|
+
import { FolderBlockModel } from '../models/folder.model';
|
|
10
|
+
import { DocumentModel } from '../models/document.model';
|
|
11
|
+
|
|
12
|
+
describe('DocumentHttpService', () => {
|
|
13
|
+
let service: DocumentHttpService;
|
|
14
|
+
let httpMock: HttpTestingController;
|
|
15
|
+
let documentStoreSpy: jasmine.SpyObj<DocumentStore>;
|
|
16
|
+
let appConfigServiceSpy: jasmine.SpyObj<AppConfigService>;
|
|
17
|
+
|
|
18
|
+
beforeEach(() => {
|
|
19
|
+
documentStoreSpy = jasmine.createSpyObj('DocumentStore', ['setDocumentTypes', 'setFolders']);
|
|
20
|
+
appConfigServiceSpy = jasmine.createSpyObj('AppConfigService', ['apiBaseUrl'], {
|
|
21
|
+
apiBaseUrl: 'http://localhost/api'
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
TestBed.configureTestingModule({
|
|
25
|
+
imports: [HttpClientTestingModule],
|
|
26
|
+
providers: [
|
|
27
|
+
DocumentHttpService,
|
|
28
|
+
{ provide: DocumentStore, useValue: documentStoreSpy },
|
|
29
|
+
{ provide: AppConfigService, useValue: appConfigServiceSpy }
|
|
30
|
+
]
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
service = TestBed.inject(DocumentHttpService);
|
|
34
|
+
httpMock = TestBed.inject(HttpTestingController);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('should be created', () => {
|
|
38
|
+
expect(service).toBeTruthy();
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it('should fetch document types and update the store', () => {
|
|
42
|
+
const mockDocumentTypes: DocumentTypeModel[] = [
|
|
43
|
+
{
|
|
44
|
+
_id: '1',
|
|
45
|
+
label: 'Parent-child1',
|
|
46
|
+
name: 'Type 1',
|
|
47
|
+
matchRules: 'Rule 1',
|
|
48
|
+
parentDocumentTypeId: '0'
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
_id: '2',
|
|
52
|
+
label: 'Parent-child2',
|
|
53
|
+
name: 'Type 2',
|
|
54
|
+
matchRules: 'Rule 2',
|
|
55
|
+
parentDocumentTypeId: '1'
|
|
56
|
+
}
|
|
57
|
+
];
|
|
58
|
+
|
|
59
|
+
service.getDocumentTypes().subscribe((documentTypes) => {
|
|
60
|
+
expect(documentTypes).toEqual(mockDocumentTypes);
|
|
61
|
+
expect(documentStoreSpy.setDocumentTypes).toHaveBeenCalledWith(mockDocumentTypes);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
const req = httpMock.expectOne(
|
|
65
|
+
`${appConfigServiceSpy.apiBaseUrl}${URLS.DOCUMENT_UPLOAD}/${URLS.DOCUMENT_TYPES}`
|
|
66
|
+
);
|
|
67
|
+
expect(req.request.method).toBe('GET');
|
|
68
|
+
req.flush(mockDocumentTypes); // Mock the response with data
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
it('should fetch folders data and update the store', () => {
|
|
74
|
+
const contextId = 'someContextId';
|
|
75
|
+
const mockFolderData: FolderBlockModel[] = [
|
|
76
|
+
{ _id: '1', folderName: 'Folder 1' },
|
|
77
|
+
{ _id: '2', folderName: 'Folder 2' }
|
|
78
|
+
];
|
|
79
|
+
|
|
80
|
+
service.getFoldersData(contextId).subscribe((foldersData) => {
|
|
81
|
+
expect(foldersData).toEqual(mockFolderData);
|
|
82
|
+
expect(documentStoreSpy.setFolders).toHaveBeenCalledWith(mockFolderData); // ✅ Corrected method
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
const req = httpMock.expectOne(
|
|
86
|
+
`${appConfigServiceSpy.apiBaseUrl}${URLS.DOCUMENT_UPLOAD}${URLS.FOLDERS}${contextId}`
|
|
87
|
+
);
|
|
88
|
+
expect(req.request.method).toBe('GET');
|
|
89
|
+
req.flush(mockFolderData);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
afterEach(() => {
|
|
93
|
+
httpMock.verify();
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
it('should update document name successfully', () => {
|
|
97
|
+
const documentId = '123';
|
|
98
|
+
const payload = { fileName: 'New Document Name' };
|
|
99
|
+
const mockUpdatedDocument: DocumentModel = {
|
|
100
|
+
_id: documentId,
|
|
101
|
+
fileName: 'New Document Name'
|
|
102
|
+
} as DocumentModel;
|
|
103
|
+
|
|
104
|
+
service.updateDocumentName(documentId, payload).subscribe((updatedDoc) => {
|
|
105
|
+
expect(updatedDoc).toEqual(jasmine.objectContaining(mockUpdatedDocument));
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
const req = httpMock.expectOne(
|
|
109
|
+
`${appConfigServiceSpy.apiBaseUrl}${URLS.DOCUMENT_UPLOAD}/${documentId}`
|
|
110
|
+
);
|
|
111
|
+
expect(req.request.method).toBe('PUT');
|
|
112
|
+
expect(req.request.body).toEqual(payload);
|
|
113
|
+
req.flush(mockUpdatedDocument);
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
afterEach(() => {
|
|
117
|
+
httpMock.verify();
|
|
118
|
+
});
|
|
119
|
+
});
|