cat-documents-ng 1.0.6 → 1.0.7

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.
Files changed (211) hide show
  1. package/README.md +322 -322
  2. package/Shared/components/confirmation-dialog/confirmation-dialog.component.d.ts +44 -0
  3. package/Shared/components/table-primary/table-primary.component.d.ts +31 -0
  4. package/Shared/components/table-primary/table-primary.model.d.ts +19 -0
  5. package/Shared/constant/ERROR.d.ts +52 -0
  6. package/Shared/constant/SHARED.d.ts +546 -0
  7. package/{src/Shared/constant/URLS.ts → Shared/constant/URLS.d.ts} +25 -31
  8. package/Shared/services/app-config.service.d.ts +51 -0
  9. package/{src/Shared/services/global-error.handler.ts → Shared/services/global-error.handler.d.ts} +9 -11
  10. package/Shared/services/session.service.d.ts +46 -0
  11. package/Shared/shared.module.d.ts +14 -0
  12. package/fesm2022/cat-documents-ng.mjs +11405 -0
  13. package/fesm2022/cat-documents-ng.mjs.map +1 -0
  14. package/index.d.ts +5 -0
  15. package/lib/document/components/document-actions/document-actions.component.d.ts +78 -0
  16. package/lib/document/components/document-container/document-container.component.d.ts +162 -0
  17. package/lib/document/components/document-content-viewer/document-content-viewer.component.d.ts +291 -0
  18. package/lib/document/components/document-history/document-history.component.d.ts +160 -0
  19. package/lib/document/components/document-list/document-list.component.d.ts +299 -0
  20. package/lib/document/components/document-list-item/document-list-item.component.d.ts +28 -0
  21. package/lib/document/components/document-search/document-search.component.d.ts +77 -0
  22. package/lib/document/components/document-status/document-status.component.d.ts +24 -0
  23. package/lib/document/components/document-upload/document-upload.component.d.ts +321 -0
  24. package/lib/document/components/document-viewer/document-viewer.component.d.ts +137 -0
  25. package/lib/document/components/document-zoom-controls/document-zoom-controls.component.d.ts +33 -0
  26. package/lib/document/components/documents-menu/documents-menu.component.d.ts +110 -0
  27. package/{src/lib/document/components/folder-block/folder-block.component.ts → lib/document/components/folder-block/folder-block.component.d.ts} +12 -28
  28. package/lib/document/components/folder-container/folder-container.component.d.ts +162 -0
  29. package/lib/document/components/linked-document/linked-document.component.d.ts +39 -0
  30. package/lib/document/components/request-document/request-document.component.d.ts +69 -0
  31. package/lib/document/components/sidebar/sidebar.component.d.ts +109 -0
  32. package/lib/document/components/user-list/user-list.component.d.ts +34 -0
  33. package/lib/document/constant/DOCUMENT_HISTORY.d.ts +41 -0
  34. package/lib/document/directives/document.directive.d.ts +20 -0
  35. package/lib/document/directives/permission.directive.d.ts +38 -0
  36. package/lib/document/document.module.d.ts +60 -0
  37. package/{src/lib/document/models/document-alert.model.ts → lib/document/models/document-alert.model.d.ts} +4 -11
  38. package/lib/document/models/document-category.model.d.ts +24 -0
  39. package/lib/document/models/document-history.model.d.ts +94 -0
  40. package/lib/document/models/document-list-response.model.d.ts +33 -0
  41. package/lib/document/models/document-type.model.d.ts +37 -0
  42. package/lib/document/models/document.model.d.ts +44 -0
  43. package/{src/lib/document/models/folder.model.ts → lib/document/models/folder.model.d.ts} +4 -10
  44. package/lib/document/models/status-data.model.d.ts +27 -0
  45. package/lib/document/models/uploaded-file-response.model.d.ts +7 -0
  46. package/lib/document/models/user-list.model.d.ts +8 -0
  47. package/lib/document/services/csv-parser.service.d.ts +88 -0
  48. package/lib/document/services/document-actions.service.d.ts +48 -0
  49. package/lib/document/services/document-content-type.service.d.ts +85 -0
  50. package/lib/document/services/document-history-style.service.d.ts +34 -0
  51. package/lib/document/services/document-history.service.d.ts +42 -0
  52. package/lib/document/services/document-http.service.d.ts +179 -0
  53. package/lib/document/services/document-list.service.d.ts +74 -0
  54. package/lib/document/services/document-menu.service.d.ts +122 -0
  55. package/lib/document/services/document-scroll.service.d.ts +55 -0
  56. package/lib/document/services/document-table-builder.service.d.ts +38 -0
  57. package/lib/document/services/document-upload-business.service.d.ts +107 -0
  58. package/lib/document/services/document-upload-data.service.d.ts +40 -0
  59. package/lib/document/services/document-upload-form.service.d.ts +41 -0
  60. package/lib/document/services/document-upload.service.d.ts +99 -0
  61. package/lib/document/services/document-viewer.service.d.ts +97 -0
  62. package/lib/document/services/document-zoom.service.d.ts +81 -0
  63. package/lib/document/services/document.service.d.ts +161 -0
  64. package/lib/document/services/eml-parser.service.d.ts +116 -0
  65. package/lib/document/services/excel-parser.service.d.ts +169 -0
  66. package/lib/document/services/file-format.service.d.ts +34 -0
  67. package/lib/document/services/status-calculator.service.d.ts +20 -0
  68. package/lib/document/services/user-list.service.d.ts +29 -0
  69. package/lib/document/state/document.query.d.ts +243 -0
  70. package/{src/lib/document/state/document.service.ts → lib/document/state/document.service.d.ts} +15 -46
  71. package/lib/document/state/document.state.d.ts +61 -0
  72. package/lib/document/state/document.store.d.ts +56 -0
  73. package/package.json +11 -5
  74. package/{src/public-api.ts → public-api.d.ts} +0 -4
  75. package/ng-package.json +0 -10
  76. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.html +0 -3
  77. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.scss +0 -13
  78. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.spec.ts +0 -70
  79. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.ts +0 -133
  80. package/src/Shared/components/table-primary/table-primary.component.html +0 -66
  81. package/src/Shared/components/table-primary/table-primary.component.scss +0 -227
  82. package/src/Shared/components/table-primary/table-primary.component.spec.ts +0 -23
  83. package/src/Shared/components/table-primary/table-primary.component.ts +0 -143
  84. package/src/Shared/components/table-primary/table-primary.model.ts +0 -21
  85. package/src/Shared/constant/ERROR.ts +0 -55
  86. package/src/Shared/constant/PERMISSIONS.ts +0 -17
  87. package/src/Shared/constant/SHARED.ts +0 -936
  88. package/src/Shared/services/app-config.service.spec.ts +0 -19
  89. package/src/Shared/services/app-config.service.ts +0 -73
  90. package/src/Shared/services/session.service.spec.ts +0 -16
  91. package/src/Shared/services/session.service.ts +0 -76
  92. package/src/Shared/shared.module.ts +0 -25
  93. package/src/lib/document/components/csv-viewer/csv-viewer.component.ts +0 -1
  94. package/src/lib/document/components/document-actions/document-actions.component.html +0 -59
  95. package/src/lib/document/components/document-actions/document-actions.component.scss +0 -362
  96. package/src/lib/document/components/document-actions/document-actions.component.spec.ts +0 -297
  97. package/src/lib/document/components/document-actions/document-actions.component.ts +0 -163
  98. package/src/lib/document/components/document-container/document-container.component.html +0 -36
  99. package/src/lib/document/components/document-container/document-container.component.scss +0 -144
  100. package/src/lib/document/components/document-container/document-container.component.spec.ts +0 -110
  101. package/src/lib/document/components/document-container/document-container.component.ts +0 -363
  102. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.html +0 -332
  103. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.scss +0 -1877
  104. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.spec.ts +0 -258
  105. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.ts +0 -664
  106. package/src/lib/document/components/document-history/document-history.component.html +0 -96
  107. package/src/lib/document/components/document-history/document-history.component.scss +0 -392
  108. package/src/lib/document/components/document-history/document-history.component.spec.ts +0 -93
  109. package/src/lib/document/components/document-history/document-history.component.ts +0 -373
  110. package/src/lib/document/components/document-list/document-list.component.html +0 -46
  111. package/src/lib/document/components/document-list/document-list.component.scss +0 -513
  112. package/src/lib/document/components/document-list/document-list.component.spec.ts +0 -486
  113. package/src/lib/document/components/document-list/document-list.component.ts +0 -682
  114. package/src/lib/document/components/document-list-item/document-list-item.component.html +0 -36
  115. package/src/lib/document/components/document-list-item/document-list-item.component.scss +0 -34
  116. package/src/lib/document/components/document-list-item/document-list-item.component.spec.ts +0 -75
  117. package/src/lib/document/components/document-list-item/document-list-item.component.ts +0 -40
  118. package/src/lib/document/components/document-search/document-search.component.html +0 -64
  119. package/src/lib/document/components/document-search/document-search.component.scss +0 -206
  120. package/src/lib/document/components/document-search/document-search.component.spec.ts +0 -82
  121. package/src/lib/document/components/document-search/document-search.component.ts +0 -163
  122. package/src/lib/document/components/document-status/document-status.component.html +0 -31
  123. package/src/lib/document/components/document-status/document-status.component.scss +0 -192
  124. package/src/lib/document/components/document-status/document-status.component.spec.ts +0 -23
  125. package/src/lib/document/components/document-status/document-status.component.ts +0 -87
  126. package/src/lib/document/components/document-upload/document-upload.component.html +0 -160
  127. package/src/lib/document/components/document-upload/document-upload.component.scss +0 -235
  128. package/src/lib/document/components/document-upload/document-upload.component.spec.ts +0 -95
  129. package/src/lib/document/components/document-upload/document-upload.component.ts +0 -668
  130. package/src/lib/document/components/document-viewer/document-viewer.component.html +0 -50
  131. package/src/lib/document/components/document-viewer/document-viewer.component.scss +0 -187
  132. package/src/lib/document/components/document-viewer/document-viewer.component.spec.ts +0 -79
  133. package/src/lib/document/components/document-viewer/document-viewer.component.ts +0 -261
  134. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.html +0 -48
  135. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.scss +0 -320
  136. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.spec.ts +0 -59
  137. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.ts +0 -150
  138. package/src/lib/document/components/documents-menu/documents-menu.component.html +0 -44
  139. package/src/lib/document/components/documents-menu/documents-menu.component.scss +0 -363
  140. package/src/lib/document/components/documents-menu/documents-menu.component.spec.ts +0 -23
  141. package/src/lib/document/components/documents-menu/documents-menu.component.ts +0 -316
  142. package/src/lib/document/components/folder-block/folder-block.component.html +0 -46
  143. package/src/lib/document/components/folder-block/folder-block.component.scss +0 -9
  144. package/src/lib/document/components/folder-block/folder-block.component.spec.ts +0 -70
  145. package/src/lib/document/components/folder-container/folder-container.component.html +0 -56
  146. package/src/lib/document/components/folder-container/folder-container.component.scss +0 -20
  147. package/src/lib/document/components/folder-container/folder-container.component.spec.ts +0 -27
  148. package/src/lib/document/components/folder-container/folder-container.component.ts +0 -328
  149. package/src/lib/document/components/linked-document/linked-document.component.html +0 -23
  150. package/src/lib/document/components/linked-document/linked-document.component.scss +0 -10
  151. package/src/lib/document/components/linked-document/linked-document.component.spec.ts +0 -61
  152. package/src/lib/document/components/linked-document/linked-document.component.ts +0 -49
  153. package/src/lib/document/components/request-document/request-document.component.html +0 -86
  154. package/src/lib/document/components/request-document/request-document.component.scss +0 -16
  155. package/src/lib/document/components/request-document/request-document.component.ts +0 -278
  156. package/src/lib/document/components/sidebar/sidebar.component.html +0 -75
  157. package/src/lib/document/components/sidebar/sidebar.component.scss +0 -157
  158. package/src/lib/document/components/sidebar/sidebar.component.spec.ts +0 -114
  159. package/src/lib/document/components/sidebar/sidebar.component.ts +0 -223
  160. package/src/lib/document/components/user-list/user-list.component.html +0 -33
  161. package/src/lib/document/components/user-list/user-list.component.scss +0 -118
  162. package/src/lib/document/components/user-list/user-list.component.spec.ts +0 -23
  163. package/src/lib/document/components/user-list/user-list.component.ts +0 -181
  164. package/src/lib/document/constant/DOCUMENT_HISTORY.ts +0 -52
  165. package/src/lib/document/directives/document.directive.ts +0 -32
  166. package/src/lib/document/directives/permission.directive.spec.ts +0 -0
  167. package/src/lib/document/directives/permission.directive.ts +0 -72
  168. package/src/lib/document/document.module.ts +0 -351
  169. package/src/lib/document/models/document-category.model.ts +0 -30
  170. package/src/lib/document/models/document-history.model.ts +0 -109
  171. package/src/lib/document/models/document-list-response.model.ts +0 -37
  172. package/src/lib/document/models/document-type.model.ts +0 -44
  173. package/src/lib/document/models/document.model.ts +0 -53
  174. package/src/lib/document/models/status-data.model.ts +0 -31
  175. package/src/lib/document/models/uploaded-file-response.model.ts +0 -7
  176. package/src/lib/document/models/user-list.model.ts +0 -10
  177. package/src/lib/document/services/csv-parser.service.spec.ts +0 -97
  178. package/src/lib/document/services/csv-parser.service.ts +0 -303
  179. package/src/lib/document/services/document-actions.service.ts +0 -125
  180. package/src/lib/document/services/document-content-type.service.ts +0 -193
  181. package/src/lib/document/services/document-history-style.service.ts +0 -138
  182. package/src/lib/document/services/document-history.service.ts +0 -129
  183. package/src/lib/document/services/document-http.service.spec.ts +0 -119
  184. package/src/lib/document/services/document-http.service.ts +0 -497
  185. package/src/lib/document/services/document-list.service.ts +0 -195
  186. package/src/lib/document/services/document-menu.service.ts +0 -277
  187. package/src/lib/document/services/document-scroll.service.ts +0 -138
  188. package/src/lib/document/services/document-severity.service.ts +0 -98
  189. package/src/lib/document/services/document-table-builder.service.ts +0 -82
  190. package/src/lib/document/services/document-upload-business.service.ts +0 -326
  191. package/src/lib/document/services/document-upload-data.service.ts +0 -82
  192. package/src/lib/document/services/document-upload-form.service.ts +0 -149
  193. package/src/lib/document/services/document-upload.service.spec.ts +0 -99
  194. package/src/lib/document/services/document-upload.service.ts +0 -209
  195. package/src/lib/document/services/document-viewer.service.ts +0 -279
  196. package/src/lib/document/services/document-zoom.service.spec.ts +0 -56
  197. package/src/lib/document/services/document-zoom.service.ts +0 -164
  198. package/src/lib/document/services/document.service.ts +0 -356
  199. package/src/lib/document/services/eml-parser.service.ts +0 -444
  200. package/src/lib/document/services/excel-parser.service.spec.ts +0 -66
  201. package/src/lib/document/services/excel-parser.service.ts +0 -483
  202. package/src/lib/document/services/file-format.service.spec.ts +0 -16
  203. package/src/lib/document/services/file-format.service.ts +0 -63
  204. package/src/lib/document/services/status-calculator.service.ts +0 -44
  205. package/src/lib/document/services/user-list.service.ts +0 -77
  206. package/src/lib/document/state/document.query.ts +0 -378
  207. package/src/lib/document/state/document.state.ts +0 -100
  208. package/src/lib/document/state/document.store.ts +0 -200
  209. package/tsconfig.lib.json +0 -15
  210. package/tsconfig.lib.prod.json +0 -11
  211. package/tsconfig.spec.json +0 -15
@@ -1,193 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
-
3
- /**
4
- * Service for handling document content types and their mappings.
5
- * Supports the content types: "xlsx","xls","doc","docx","pdf","jpg","jpeg","odt","csv","png","msg","eml"
6
- * @class DocumentContentTypeService
7
- * @typedef {DocumentContentTypeService}
8
- */
9
- @Injectable({
10
- providedIn: 'root'
11
- })
12
- export class DocumentContentTypeService {
13
-
14
- /**
15
- * Mapping of file extensions to MIME types
16
- * @type {Record<string, string>}
17
- */
18
- private readonly extensionToMimeType: Record<string, string> = {
19
- 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
20
- 'xls': 'application/vnd.ms-excel',
21
- 'doc': 'application/msword',
22
- 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
23
- 'pdf': 'application/pdf',
24
- 'jpg': 'image/jpeg',
25
- 'jpeg': 'image/jpeg',
26
- 'odt': 'application/vnd.oasis.opendocument.text',
27
- 'csv': 'text/csv',
28
- 'png': 'image/png',
29
- 'msg': 'application/vnd.ms-outlook',
30
- 'eml': 'message/rfc822'
31
- };
32
-
33
- /**
34
- * Mapping of MIME types to file extensions
35
- * @type {Record<string, string>}
36
- */
37
- private readonly mimeTypeToExtension: Record<string, string> = {
38
- 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx',
39
- 'application/vnd.ms-excel': 'xls',
40
- 'application/msword': 'doc',
41
- 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'docx',
42
- 'application/pdf': 'pdf',
43
- 'image/jpeg': 'jpg',
44
- 'image/jpg': 'jpg',
45
- 'application/vnd.oasis.opendocument.text': 'odt',
46
- 'text/csv': 'csv',
47
- 'image/png': 'png',
48
- 'application/vnd.ms-outlook': 'msg',
49
- 'message/rfc822': 'eml'
50
- };
51
-
52
- /**
53
- * List of all supported file extensions
54
- * @type {string[]}
55
- */
56
- readonly supportedExtensions: string[] = [
57
- 'xlsx', 'xls', 'doc', 'docx', 'pdf', 'jpg', 'jpeg', 'odt', 'csv', 'png', 'msg', 'eml'
58
- ];
59
-
60
- /**
61
- * List of all supported MIME types
62
- * @type {string[]}
63
- */
64
- readonly supportedMimeTypes: string[] = [
65
- 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
66
- 'application/vnd.ms-excel',
67
- 'application/msword',
68
- 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
69
- 'application/pdf',
70
- 'image/jpeg',
71
- 'image/jpg',
72
- 'application/vnd.oasis.opendocument.text',
73
- 'text/csv',
74
- 'image/png',
75
- 'application/vnd.ms-outlook',
76
- 'message/rfc822'
77
- ];
78
-
79
- /**
80
- * Gets the MIME type for a given file extension
81
- * @param {string} extension - The file extension (with or without dot)
82
- * @returns {string | undefined} The MIME type or undefined if not supported
83
- */
84
- getMimeType(extension: string): string | undefined {
85
- const cleanExtension = extension.replace('.', '').toLowerCase();
86
- return this.extensionToMimeType[cleanExtension];
87
- }
88
-
89
- /**
90
- * Gets the file extension for a given MIME type
91
- * @param {string} mimeType - The MIME type
92
- * @returns {string | undefined} The file extension or undefined if not supported
93
- */
94
- getExtension(mimeType: string): string | undefined {
95
- return this.mimeTypeToExtension[mimeType];
96
- }
97
-
98
- /**
99
- * Checks if a file extension is supported
100
- * @param {string} extension - The file extension (with or without dot)
101
- * @returns {boolean} True if the extension is supported
102
- */
103
- isExtensionSupported(extension: string): boolean {
104
- const cleanExtension = extension.replace('.', '').toLowerCase();
105
- return this.supportedExtensions.includes(cleanExtension);
106
- }
107
-
108
- /**
109
- * Checks if a MIME type is supported
110
- * @param {string} mimeType - The MIME type
111
- * @returns {boolean} True if the MIME type is supported
112
- */
113
- isMimeTypeSupported(mimeType: string): boolean {
114
- return this.supportedMimeTypes.includes(mimeType);
115
- }
116
-
117
- /**
118
- * Gets the file extension from a filename
119
- * @param {string} filename - The filename
120
- * @returns {string | undefined} The file extension or undefined if no extension found
121
- */
122
- getExtensionFromFilename(filename: string): string | undefined {
123
- if (!filename || !filename.includes('.')) {
124
- return undefined;
125
- }
126
- const parts = filename.split('.');
127
- return parts[parts.length - 1].toLowerCase();
128
- }
129
-
130
- /**
131
- * Gets the MIME type from a filename
132
- * @param {string} filename - The filename
133
- * @returns {string | undefined} The MIME type or undefined if not supported
134
- */
135
- getMimeTypeFromFilename(filename: string): string | undefined {
136
- const extension = this.getExtensionFromFilename(filename);
137
- return extension ? this.getMimeType(extension) : undefined;
138
- }
139
-
140
- /**
141
- * Validates if a file can be uploaded based on its extension
142
- * @param {string} filename - The filename to validate
143
- * @returns {boolean} True if the file can be uploaded
144
- */
145
- canUploadFile(filename: string): boolean {
146
- const extension = this.getExtensionFromFilename(filename);
147
- return extension ? this.isExtensionSupported(extension) : false;
148
- }
149
-
150
- /**
151
- * Gets a human-readable description for a content type
152
- * @param {string} contentType - The content type (MIME type or extension)
153
- * @returns {string} Human-readable description
154
- */
155
- getContentTypeDescription(contentType: string): string {
156
- // Check if it's a MIME type first
157
- if (this.isMimeTypeSupported(contentType)) {
158
- const extension = this.getExtension(contentType);
159
- return this.getExtensionDescription(extension || 'unknown');
160
- }
161
-
162
- // Check if it's an extension
163
- if (this.isExtensionSupported(contentType)) {
164
- return this.getExtensionDescription(contentType);
165
- }
166
-
167
- return 'Unknown Document Type';
168
- }
169
-
170
- /**
171
- * Gets a human-readable description for a file extension
172
- * @param {string} extension - The file extension
173
- * @returns {string} Human-readable description
174
- */
175
- private getExtensionDescription(extension: string): string {
176
- const descriptions: Record<string, string> = {
177
- 'xlsx': 'Excel Spreadsheet (XLSX)',
178
- 'xls': 'Excel Spreadsheet (XLS)',
179
- 'doc': 'Word Document (DOC)',
180
- 'docx': 'Word Document (DOCX)',
181
- 'pdf': 'PDF Document',
182
- 'jpg': 'JPEG Image',
183
- 'jpeg': 'JPEG Image',
184
- 'odt': 'OpenDocument Text',
185
- 'csv': 'CSV File',
186
- 'png': 'PNG Image',
187
- 'msg': 'Outlook Message',
188
- 'eml': 'Email Message'
189
- };
190
-
191
- return descriptions[extension] || 'Unknown File Type';
192
- }
193
- }
@@ -1,138 +0,0 @@
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
- }
@@ -1,129 +0,0 @@
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
- }
@@ -1,119 +0,0 @@
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
- });