http-request-manager 15.0.19 → 15.0.26

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 (224) hide show
  1. package/ng-package.json +8 -0
  2. package/package.json +10 -14
  3. package/src/lib/http-request-manager.module.ts +101 -0
  4. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +3 -0
  5. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.scss +0 -0
  6. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.ts +105 -0
  7. package/src/lib/http-request-services-demo/http-request-services-demo.component.html +64 -0
  8. package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +6 -0
  9. package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +34 -0
  10. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +195 -0
  11. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +17 -0
  12. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +205 -0
  13. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +59 -0
  14. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
  15. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +71 -0
  16. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +28 -0
  17. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +10 -0
  18. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +29 -0
  19. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +99 -0
  20. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
  21. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
  22. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
  23. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +25 -0
  24. package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +30 -0
  25. package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +19 -0
  26. package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +25 -0
  27. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +19 -0
  28. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +24 -0
  29. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +30 -0
  30. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +49 -0
  31. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +33 -0
  32. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +336 -0
  33. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +24 -0
  34. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +403 -0
  35. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +328 -0
  36. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +24 -0
  37. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +347 -0
  38. package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +88 -0
  39. package/src/lib/index.ts +3 -0
  40. package/src/lib/interceptors/credentials.interceptor.ts +18 -0
  41. package/{lib/interceptors/index.d.ts → src/lib/interceptors/index.ts} +2 -0
  42. package/src/lib/interceptors/models/error-settings.model.ts +22 -0
  43. package/src/lib/interceptors/proxy-debugger.interceptor.ts +46 -0
  44. package/src/lib/interceptors/request-error.interceptor.ts +65 -0
  45. package/src/lib/interceptors/request-header.interceptor.ts +58 -0
  46. package/src/lib/models/config-http-options.model.ts +42 -0
  47. package/src/lib/models/config-local-storage-options.model.ts +27 -0
  48. package/src/lib/models/config-options.model.ts +27 -0
  49. package/{lib/models/config-token.model.d.ts → src/lib/models/config-token.model.ts} +2 -1
  50. package/src/lib/models/data-type.enum.ts +5 -0
  51. package/src/lib/models/database-storage.model.ts +24 -0
  52. package/src/lib/models/index.ts +9 -0
  53. package/src/lib/models/retry-options.model.ts +22 -0
  54. package/src/lib/services/database-manager-services/database.manager.service.ts +193 -0
  55. package/src/lib/services/database-manager-services/db.storage.service.ts +191 -0
  56. package/src/lib/services/database-manager-services/index.ts +4 -0
  57. package/src/lib/services/database-manager-services/models/table-schema.ts +35 -0
  58. package/{lib/services/index.d.ts → src/lib/services/index.ts} +4 -0
  59. package/src/lib/services/local-storage-manager-service/index.ts +2 -0
  60. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +71 -0
  61. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +421 -0
  62. package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +30 -0
  63. package/{lib/services/local-storage-manager-service/models/index.d.ts → src/lib/services/local-storage-manager-service/models/index.ts} +2 -1
  64. package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +30 -0
  65. package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +24 -0
  66. package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +29 -0
  67. package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +5 -0
  68. package/src/lib/services/request-manager-services/README.md +268 -0
  69. package/src/lib/services/request-manager-services/http-manager.service.spec.ts +230 -0
  70. package/src/lib/services/request-manager-services/http-manager.service.ts +274 -0
  71. package/{lib/services/request-manager-services/index.d.ts → src/lib/services/request-manager-services/index.ts} +2 -0
  72. package/src/lib/services/request-manager-services/request.service.ts +261 -0
  73. package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +17 -0
  74. package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +16 -0
  75. package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +21 -0
  76. package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +32 -0
  77. package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +402 -0
  78. package/{lib/services/request-manager-state-service/index.d.ts → src/lib/services/request-manager-state-service/index.ts} +1 -0
  79. package/src/lib/services/request-manager-state-service/models/api-request.model.ts +50 -0
  80. package/{lib/services/request-manager-state-service/models/index.d.ts → src/lib/services/request-manager-state-service/models/index.ts} +1 -0
  81. package/src/lib/services/request-manager-state-service/models/request-options.model.ts +22 -0
  82. package/src/lib/services/utils/app.service.spec.ts +25 -0
  83. package/src/lib/services/utils/app.service.ts +21 -0
  84. package/src/lib/services/utils/encryption/README.md +79 -0
  85. package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +282 -0
  86. package/src/lib/services/utils/encryption/encryption-test.service.ts +39 -0
  87. package/{lib/services/utils/encryption/index.d.ts → src/lib/services/utils/encryption/index.ts} +2 -0
  88. package/src/lib/services/utils/encryption/random.ts +69 -0
  89. package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +93 -0
  90. package/src/lib/services/utils/headers.service.spec.ts +80 -0
  91. package/src/lib/services/utils/headers.service.ts +18 -0
  92. package/{lib/services/utils/index.d.ts → src/lib/services/utils/index.ts} +2 -0
  93. package/src/lib/services/utils/object-merger.service.spec.ts +16 -0
  94. package/src/lib/services/utils/object-merger.service.ts +60 -0
  95. package/src/lib/services/utils/path-query.service.spec.ts +117 -0
  96. package/src/lib/services/utils/path-query.service.ts +69 -0
  97. package/src/lib/services/utils/utils.service.spec.ts +164 -0
  98. package/src/lib/services/utils/utils.service.ts +192 -0
  99. package/src/public-api.ts +14 -0
  100. package/tsconfig.lib.json +32 -0
  101. package/tsconfig.lib.prod.json +10 -0
  102. package/tsconfig.spec.json +14 -0
  103. package/esm2022/http-request-manager.mjs +0 -5
  104. package/esm2022/lib/http-request-manager.module.mjs +0 -146
  105. package/esm2022/lib/http-request-services-demo/http-request-services-demo.component.mjs +0 -41
  106. package/esm2022/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.mjs +0 -173
  107. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.mjs +0 -80
  108. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.mjs +0 -42
  109. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.mjs +0 -88
  110. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.mjs +0 -11
  111. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.mjs +0 -29
  112. package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.mjs +0 -9
  113. package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.mjs +0 -12
  114. package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.mjs +0 -14
  115. package/esm2022/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.mjs +0 -315
  116. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.mjs +0 -270
  117. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.mjs +0 -67
  118. package/esm2022/lib/index.mjs +0 -4
  119. package/esm2022/lib/interceptors/credentials.interceptor.mjs +0 -14
  120. package/esm2022/lib/interceptors/index.mjs +0 -5
  121. package/esm2022/lib/interceptors/models/error-settings.model.mjs +0 -10
  122. package/esm2022/lib/interceptors/proxy-debugger.interceptor.mjs +0 -47
  123. package/esm2022/lib/interceptors/request-error.interceptor.mjs +0 -49
  124. package/esm2022/lib/interceptors/request-header.interceptor.mjs +0 -41
  125. package/esm2022/lib/models/config-http-options.model.mjs +0 -18
  126. package/esm2022/lib/models/config-local-storage-options.model.mjs +0 -12
  127. package/esm2022/lib/models/config-options.model.mjs +0 -12
  128. package/esm2022/lib/models/config-token.model.mjs +0 -8
  129. package/esm2022/lib/models/data-type.enum.mjs +0 -7
  130. package/esm2022/lib/models/database-storage.model.mjs +0 -10
  131. package/esm2022/lib/models/index.mjs +0 -7
  132. package/esm2022/lib/models/retry-options.model.mjs +0 -10
  133. package/esm2022/lib/services/index.mjs +0 -6
  134. package/esm2022/lib/services/local-storage-manager-service/index.mjs +0 -3
  135. package/esm2022/lib/services/local-storage-manager-service/local-storage-manager.service.mjs +0 -302
  136. package/esm2022/lib/services/local-storage-manager-service/models/global-store-options.model.mjs +0 -13
  137. package/esm2022/lib/services/local-storage-manager-service/models/index.mjs +0 -6
  138. package/esm2022/lib/services/local-storage-manager-service/models/setting-options.model.mjs +0 -13
  139. package/esm2022/lib/services/local-storage-manager-service/models/storage-data.model.mjs +0 -10
  140. package/esm2022/lib/services/local-storage-manager-service/models/storage-option.model.mjs +0 -12
  141. package/esm2022/lib/services/local-storage-manager-service/models/storage-type.enum.mjs +0 -7
  142. package/esm2022/lib/services/request-manager-services/http-manager.service.mjs +0 -207
  143. package/esm2022/lib/services/request-manager-services/index.mjs +0 -5
  144. package/esm2022/lib/services/request-manager-services/request.service.mjs +0 -189
  145. package/esm2022/lib/services/request-manager-services/rxjs-operators/countdown.mjs +0 -9
  146. package/esm2022/lib/services/request-manager-services/rxjs-operators/delay-retry.mjs +0 -10
  147. package/esm2022/lib/services/request-manager-services/rxjs-operators/index.mjs +0 -5
  148. package/esm2022/lib/services/request-manager-services/rxjs-operators/request-polling.mjs +0 -14
  149. package/esm2022/lib/services/request-manager-services/rxjs-operators/request-streaming.mjs +0 -19
  150. package/esm2022/lib/services/request-manager-state-service/http-manager-state.store.mjs +0 -267
  151. package/esm2022/lib/services/request-manager-state-service/index.mjs +0 -3
  152. package/esm2022/lib/services/request-manager-state-service/models/api-request.model.mjs +0 -20
  153. package/esm2022/lib/services/request-manager-state-service/models/index.mjs +0 -3
  154. package/esm2022/lib/services/request-manager-state-service/models/request-options.model.mjs +0 -10
  155. package/esm2022/lib/services/utils/app.service.mjs +0 -26
  156. package/esm2022/lib/services/utils/encryption/asymmetrical-encryption.service.mjs +0 -186
  157. package/esm2022/lib/services/utils/encryption/encryption-test.service.mjs +0 -35
  158. package/esm2022/lib/services/utils/encryption/index.mjs +0 -4
  159. package/esm2022/lib/services/utils/encryption/random.mjs +0 -52
  160. package/esm2022/lib/services/utils/encryption/symmetrical-encryption.service.mjs +0 -77
  161. package/esm2022/lib/services/utils/headers.service.mjs +0 -21
  162. package/esm2022/lib/services/utils/index.mjs +0 -6
  163. package/esm2022/lib/services/utils/object-merger.service.mjs +0 -50
  164. package/esm2022/lib/services/utils/path-query.service.mjs +0 -54
  165. package/esm2022/lib/services/utils/utils.service.mjs +0 -155
  166. package/esm2022/public-api.mjs +0 -7
  167. package/fesm2022/http-request-manager.mjs +0 -3102
  168. package/fesm2022/http-request-manager.mjs.map +0 -1
  169. package/http-request-manager-15.0.19.tgz +0 -0
  170. package/index.d.ts +0 -5
  171. package/lib/http-request-manager.module.d.ts +0 -33
  172. package/lib/http-request-services-demo/http-request-services-demo.component.d.ts +0 -24
  173. package/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.d.ts +0 -56
  174. package/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.d.ts +0 -26
  175. package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.d.ts +0 -13
  176. package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.d.ts +0 -27
  177. package/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.d.ts +0 -12
  178. package/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.d.ts +0 -16
  179. package/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.d.ts +0 -8
  180. package/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.d.ts +0 -14
  181. package/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.d.ts +0 -14
  182. package/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.d.ts +0 -107
  183. package/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.d.ts +0 -122
  184. package/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.d.ts +0 -15
  185. package/lib/index.d.ts +0 -3
  186. package/lib/interceptors/credentials.interceptor.d.ts +0 -8
  187. package/lib/interceptors/models/error-settings.model.d.ts +0 -10
  188. package/lib/interceptors/proxy-debugger.interceptor.d.ts +0 -12
  189. package/lib/interceptors/request-error.interceptor.d.ts +0 -10
  190. package/lib/interceptors/request-header.interceptor.d.ts +0 -15
  191. package/lib/models/config-http-options.model.d.ts +0 -21
  192. package/lib/models/config-local-storage-options.model.d.ts +0 -13
  193. package/lib/models/config-options.model.d.ts +0 -12
  194. package/lib/models/data-type.enum.d.ts +0 -5
  195. package/lib/models/database-storage.model.d.ts +0 -10
  196. package/lib/models/index.d.ts +0 -6
  197. package/lib/models/retry-options.model.d.ts +0 -10
  198. package/lib/services/local-storage-manager-service/index.d.ts +0 -2
  199. package/lib/services/local-storage-manager-service/local-storage-manager.service.d.ts +0 -86
  200. package/lib/services/local-storage-manager-service/models/global-store-options.model.d.ts +0 -15
  201. package/lib/services/local-storage-manager-service/models/setting-options.model.d.ts +0 -15
  202. package/lib/services/local-storage-manager-service/models/storage-data.model.d.ts +0 -10
  203. package/lib/services/local-storage-manager-service/models/storage-option.model.d.ts +0 -13
  204. package/lib/services/local-storage-manager-service/models/storage-type.enum.d.ts +0 -5
  205. package/lib/services/request-manager-services/http-manager.service.d.ts +0 -41
  206. package/lib/services/request-manager-services/request.service.d.ts +0 -27
  207. package/lib/services/request-manager-services/rxjs-operators/countdown.d.ts +0 -2
  208. package/lib/services/request-manager-services/rxjs-operators/delay-retry.d.ts +0 -2
  209. package/lib/services/request-manager-services/rxjs-operators/request-polling.d.ts +0 -7
  210. package/lib/services/request-manager-services/rxjs-operators/request-streaming.d.ts +0 -2
  211. package/lib/services/request-manager-state-service/http-manager-state.store.d.ts +0 -51
  212. package/lib/services/request-manager-state-service/models/api-request.model.d.ts +0 -27
  213. package/lib/services/request-manager-state-service/models/request-options.model.d.ts +0 -10
  214. package/lib/services/utils/app.service.d.ts +0 -8
  215. package/lib/services/utils/encryption/asymmetrical-encryption.service.d.ts +0 -17
  216. package/lib/services/utils/encryption/encryption-test.service.d.ts +0 -10
  217. package/lib/services/utils/encryption/random.d.ts +0 -7
  218. package/lib/services/utils/encryption/symmetrical-encryption.service.d.ts +0 -14
  219. package/lib/services/utils/headers.service.d.ts +0 -10
  220. package/lib/services/utils/object-merger.service.d.ts +0 -12
  221. package/lib/services/utils/path-query.service.d.ts +0 -11
  222. package/lib/services/utils/utils.service.d.ts +0 -24
  223. package/public-api.d.ts +0 -3
  224. /package/{lib/services/request-manager-services/rxjs-operators/index.d.ts → src/lib/services/request-manager-services/rxjs-operators/index.ts} +0 -0
@@ -0,0 +1,205 @@
1
+ import { Component, Inject, inject, OnInit, ViewEncapsulation } from '@angular/core';
2
+ import { LocalStorageManagerService, SettingOptions, StorageOption, StorageType } from '../../services/local-storage-manager-service';
3
+ import { FormBuilder, Validators } from '@angular/forms';
4
+ import { BehaviorSubject, EMPTY, Observable, of } from 'rxjs';
5
+ import { ConfigOptions, LocalStorageOptions, UtilsService } from '../../services';
6
+ import { switchMap, tap, map } from 'rxjs/operators';
7
+ import { CONFIG_SETTINGS_TOKEN } from '../../models/config-token.model';
8
+
9
+ @Component({
10
+ selector: 'app-local-storage-demo',
11
+ templateUrl: './local-storage-demo.component.html',
12
+ styleUrls: ['./local-storage-demo.component.scss'],
13
+ encapsulation: ViewEncapsulation.None
14
+ })
15
+ export class LocalStorageDemoComponent implements OnInit {
16
+
17
+ fb = inject(FormBuilder)
18
+ utils = inject(UtilsService)
19
+
20
+ type$ = new BehaviorSubject(StorageType.GLOBAL)
21
+ get type() {
22
+ return (this.typeControl.value) ? +this.typeControl.value : 0
23
+ }
24
+
25
+ typeControl = this.fb.control(StorageType.GLOBAL.toString())
26
+
27
+ localStorageManagerService = inject(LocalStorageManagerService)
28
+
29
+ settings$: Observable<any> = this.localStorageManagerService.settings$
30
+
31
+ setting$ = (store: string) => this.localStorageManagerService.setting$(store)
32
+
33
+ storageForm = this.fb.group({
34
+ store: this.fb.control<string|null>(null),
35
+ type: 'local',
36
+ settingType: 'local',
37
+ encrypted: false,
38
+ data: this.fb.control<string>('', Validators.required),
39
+ })
40
+
41
+ newStoreForm = this.fb.group({
42
+ name: this.fb.control<string|null>(null, Validators.required),
43
+ storage: 'local',
44
+ encrypted: false,
45
+ data: this.fb.control<string>('', Validators.required),
46
+ expiresIn: this.fb.control('0')
47
+ })
48
+
49
+ store$?: Observable<any>
50
+
51
+ storeData$ = this.storageForm.get('store')?.valueChanges
52
+ .pipe(
53
+ switchMap((data: any) => {
54
+ return data
55
+ ? this.localStorageManagerService.store$(data.name)
56
+ : of('')
57
+ }),
58
+ tap(data => {
59
+ this.storageForm.get('data')?.patchValue(data, { emitEvent: false })
60
+ })
61
+ )
62
+
63
+ expiresIn = (epoch: number) => this.utils.expiresIn(epoch)
64
+
65
+ get isValid() {
66
+ return this.newStoreForm.valid
67
+ }
68
+
69
+ get isValidData() {
70
+ return this.storageForm.valid
71
+ }
72
+
73
+ isValidJSON = (str: string) => {
74
+ try {
75
+ JSON.parse(str)
76
+ return true
77
+ } catch (e) {
78
+ return false
79
+ }
80
+ }
81
+
82
+ displayedColumns: string[] = ['name', 'id', 'encrypted', 'expires', "option"];
83
+
84
+ filterData = (values: SettingOptions[]) => {
85
+ if(!values) return []
86
+ return values.filter((item: any) => item.options.storage === +this.type)
87
+ }
88
+
89
+ data$?: Observable<any>
90
+
91
+ store: any
92
+
93
+ create = false
94
+
95
+ storeProps?: LocalStorageOptions
96
+ options?: SettingOptions
97
+
98
+ constructor(@Inject(CONFIG_SETTINGS_TOKEN) private configOptions?: ConfigOptions) { }
99
+
100
+ ngOnInit() {
101
+
102
+ this.storeProps = this.configOptions?.LocalStorageOptions
103
+ this.options = this.storeProps?.options
104
+
105
+ if(this.options?.storage) {
106
+ this.typeControl.patchValue(this.options.storage.toString())
107
+ this.typeControl.disable()
108
+ } else {
109
+ this.typeControl.enable()
110
+ }
111
+
112
+ if(this.options?.expiresIn) {
113
+ this.newStoreForm.get('expiresIn')?.patchValue(this.options.expiresIn)
114
+ this.newStoreForm.get('expiresIn')?.disable()
115
+ } else {
116
+ this.newStoreForm.get('expiresIn')?.enable()
117
+ }
118
+
119
+ if(this.options?.encrypted) {
120
+ this.newStoreForm.get('encrypted')?.patchValue(this.options.encrypted)
121
+ this.newStoreForm.get('encrypted')?.disable()
122
+ } else {
123
+ this.newStoreForm.get('encrypted')?.enable()
124
+ }
125
+
126
+ }
127
+
128
+ onCreateStore() {
129
+
130
+ if(!this.isValid) return
131
+
132
+ const store = this.newStoreForm.value
133
+ if(!store.name || store.name === '') return
134
+
135
+ const options = { storage: this.type, encrypted: store.encrypted, expiresIn: store.expiresIn }
136
+
137
+ this.localStorageManagerService.createStore({
138
+ name: store.name,
139
+ data: store.data,
140
+ options: SettingOptions.adapt(options)
141
+ })
142
+
143
+ this.newStoreForm.reset()
144
+ this.create = false
145
+ }
146
+
147
+ onUpdateStore(store: any) {
148
+
149
+ if(!this.storageForm.valid) return
150
+
151
+ const storeData = this.storageForm.value
152
+
153
+ const data = JSON.parse(storeData.data || '')
154
+
155
+ const type = (storeData.type === 'local') ? StorageType.GLOBAL : StorageType.SESSION
156
+
157
+ this.localStorageManagerService.updateStore({
158
+ name: store.name,
159
+ data
160
+ })
161
+
162
+ }
163
+
164
+ onSelectedRow(store: any) {
165
+ this.store = store
166
+ this.data$ = this.localStorageManagerService.store$(store.name).pipe(map(item => JSON.stringify(item)))
167
+ this.create = false
168
+ }
169
+
170
+ onCreate() {
171
+ this.onCancel()
172
+ this.create = true
173
+ }
174
+
175
+ onDelete(store: StorageOption) {
176
+
177
+ this.localStorageManagerService.deleteStore({
178
+ name: store.name,
179
+ })
180
+
181
+ this.onCancel()
182
+ }
183
+
184
+ onCancel() {
185
+ this.data$ = EMPTY
186
+ this.store = null
187
+ this.create = false
188
+ }
189
+
190
+ onUpdate(store: StorageOption, data: any) {
191
+
192
+ this.localStorageManagerService.updateStore({
193
+ name: store.name,
194
+ data: JSON.parse(data)
195
+ })
196
+
197
+ this.onCancel()
198
+
199
+ }
200
+
201
+ onReset() {
202
+ this.localStorageManagerService.resetStore()
203
+ }
204
+
205
+ }
@@ -0,0 +1,59 @@
1
+ <ng-container *ngIf="!isPending; else DOWNLOADING">
2
+ <ng-container *ngIf="hasError; else NORMAL">
3
+ <div class="width center-txt" style="margin-bottom: 4px;">
4
+ <mat-icon color="warn" class="warn-icon">warning</mat-icon>
5
+ </div>
6
+ </ng-container>
7
+ <ng-template #NORMAL>
8
+ <ng-container *ngIf="active; else ACTION">
9
+
10
+ <div class="container-obj">
11
+ <div class="centered-obj-div">
12
+ <mat-progress-spinner
13
+ color="primary"
14
+ mode="indeterminate"
15
+ [diameter]="44"
16
+ ></mat-progress-spinner>
17
+ </div>
18
+ </div>
19
+
20
+ </ng-container>
21
+ <ng-template #ACTION>
22
+ <button data-tracking="export-btn" mat-icon-button (click)="onAction()" class="icon-button" [disabled]="disabled">
23
+ <mat-icon class="custom-icon">file_download</mat-icon>
24
+ </button>
25
+ </ng-template>
26
+ </ng-template>
27
+ </ng-container>
28
+
29
+ <ng-template #DOWNLOADING>
30
+ <div
31
+ class="spinner-container"
32
+ *ngIf="(progress > 0 && progress < 100); else INDETERMINATE"
33
+ >
34
+ <div class="spinner-background">
35
+ {{progress}}%
36
+ </div>
37
+ <mat-progress-spinner
38
+ color="primary"
39
+ [mode]="mode"
40
+ [value]="progress"
41
+ [diameter]="44"
42
+ ></mat-progress-spinner>
43
+ </div>
44
+ <ng-template #INDETERMINATE>
45
+ <div class="container-obj">
46
+ <div class="centered-obj-div">
47
+ <mat-progress-spinner
48
+ color="primary"
49
+ mode="indeterminate"
50
+ [diameter]="44"
51
+ ></mat-progress-spinner>
52
+ </div>
53
+ </div>
54
+ </ng-template>
55
+
56
+ </ng-template>
57
+
58
+
59
+
@@ -0,0 +1,60 @@
1
+ :not(spinner-container).spinner-container {
2
+ position: relative;
3
+
4
+ .spinner-background {
5
+ position: absolute;
6
+ width: 44px;
7
+ height: 44px;
8
+ font-size: 12px;
9
+ line-height: 32px;
10
+ text-align: center;
11
+ overflow: hidden;
12
+ border-radius: 50%;
13
+ border: solid 5px whitesmoke;
14
+ }
15
+
16
+ }
17
+
18
+ .center-txt {
19
+ align-content: center;
20
+ text-align: -webkit-center;
21
+ }
22
+
23
+ .width {
24
+ width: 48px;
25
+ height: 48px;
26
+ }
27
+
28
+ .icon-button {
29
+ display: flex;
30
+ align-items: center;
31
+ justify-content: center;
32
+ width: 48px;
33
+ height: 48px;
34
+ padding: 0;
35
+ }
36
+
37
+ // .custom-icon {
38
+ // font-size: 32px;
39
+ // line-height: 1;
40
+ // position: relative;
41
+ // left: -4px;
42
+ // }
43
+
44
+ .container-obj {
45
+ display: flex;
46
+ justify-content: center;
47
+ align-items: center;
48
+ width: 48px;
49
+ height: 48px;
50
+ }
51
+
52
+ .centered-obj-div {
53
+ text-align: center
54
+ }
55
+
56
+ // .warn-icon {
57
+ // position: relative;
58
+ // top: 6px;
59
+ // width: 48px;
60
+ // }
@@ -0,0 +1,71 @@
1
+ import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';
2
+ import { ProgressSpinnerMode } from '@angular/material/progress-spinner';
3
+ import { Subscription, timer } from 'rxjs';
4
+
5
+ @Component({
6
+ selector: 'app-download-file',
7
+ templateUrl: './download-file.component.html',
8
+ styleUrls: ['./download-file.component.scss'],
9
+ encapsulation: ViewEncapsulation.None,
10
+ })
11
+ export class DownloadFileComponent implements OnInit {
12
+
13
+ private subscriptions = new Subscription();
14
+
15
+ @Input() event?: Function;
16
+ @Input() displayError = 3; // seconds
17
+ @Input() diameter = 32;
18
+ @Input() mode: ProgressSpinnerMode = 'determinate';
19
+ @Input() isPending = false;
20
+
21
+ @Input() active = false;
22
+ @Input() disabled = false;
23
+
24
+ @Output() error = new EventEmitter<void>();
25
+
26
+ private _progress = 0;
27
+ @Input() set progress(value: any) {
28
+ this._progress = value ?? 0;
29
+ }
30
+
31
+ get progress() {
32
+ return this._progress;
33
+ }
34
+
35
+ private _hasError = false;
36
+ private errorTimerActive = false;
37
+
38
+ @Input() set hasError(value: boolean | any) {
39
+
40
+ this._hasError = !!value;
41
+
42
+ if (this._hasError && !this.errorTimerActive) {
43
+ this.errorTimerActive = true;
44
+ this.active = false;
45
+ this.error.emit()
46
+ this.subscriptions.add(
47
+ timer(this.displayError * 1000)
48
+ .subscribe((err) => {
49
+ this._hasError = false;
50
+ this.errorTimerActive = false;
51
+ })
52
+ );
53
+ }
54
+
55
+ }
56
+
57
+ get hasError() {
58
+ return this._hasError;
59
+ }
60
+
61
+ ngOnInit() {}
62
+
63
+ onAction() {
64
+ this.isPending = false
65
+ if (this.event) this.event()
66
+ }
67
+
68
+ ngOnDestroy() {
69
+ this.subscriptions.unsubscribe()
70
+ }
71
+ }
@@ -0,0 +1,28 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+
4
+ import { DownloadFileComponent } from './download-file/download-file.component';
5
+ import { FileDownloaderComponent } from './file-downloader.component';
6
+
7
+ import { SpinnerComponent } from './spinner/spinner.component';
8
+ import { MatIconModule } from '@angular/material/icon';
9
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
10
+ import { MatButtonModule } from '@angular/material/button';
11
+
12
+ @NgModule({
13
+ imports: [
14
+ CommonModule,
15
+ MatIconModule,
16
+ MatProgressSpinnerModule,
17
+ MatButtonModule,
18
+ ],
19
+ declarations: [
20
+ SpinnerComponent,
21
+ DownloadFileComponent,
22
+ FileDownloaderComponent,
23
+ ],
24
+ exports: [
25
+ FileDownloaderComponent
26
+ ]
27
+ })
28
+ export class FileDownloaderModule { }
@@ -0,0 +1,10 @@
1
+ <app-download-file
2
+ [disabled]="disabled"
3
+ [displayError]="3"
4
+ [event]="onDownloadStreaming.bind(this)"
5
+ [isPending]="(isPending$ | async) || false"
6
+ [progress]="(progress$ | async)"
7
+ [hasError]="(error$ | async)"
8
+ (error)="onError(labels.error)"
9
+ [active]="active"
10
+ ></app-download-file>
@@ -0,0 +1,29 @@
1
+
2
+ $snackBarTextColor: white;
3
+ $snackBarBackgroundNormal: #F44336;
4
+ $snackBarActionColor: white;
5
+
6
+ .snackBarInfo {
7
+ background-color: $snackBarBackgroundNormal;
8
+ color: $snackBarTextColor;
9
+ }
10
+ .mat-simple-snackbar > span {
11
+ font-weight: bold;
12
+ }
13
+ .mat-simple-snackbar-action {
14
+ .mat-button {
15
+ .mat-button-wrapper {
16
+ color: $snackBarActionColor;
17
+ }
18
+ }
19
+ }
20
+
21
+ .cdk-overlay-pane > .mat-snack-bar-container {
22
+ width: 100%;
23
+ }
24
+
25
+
26
+ .mat-snack-bar-container {
27
+ max-width: 100% !important;
28
+ width: 100%;
29
+ }
@@ -0,0 +1,99 @@
1
+ import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';
2
+ import { catchError, distinctUntilChanged, finalize } from 'rxjs/operators';
3
+
4
+ import { ToastColors, ToastDisplay } from 'toast-message-display';
5
+
6
+ import { DownloadLabels } from './models/download-labels-model';
7
+ import { HTTPManagerService } from '../../../services/request-manager-services';
8
+ import { ApiRequest } from '../../../services';
9
+ import { Subscription, throwError } from 'rxjs';
10
+
11
+ @Component({
12
+ selector: 'app-file-downloader',
13
+ templateUrl: './file-downloader.component.html',
14
+ styleUrls: ['./file-downloader.component.scss'],
15
+ encapsulation: ViewEncapsulation.None,
16
+ })
17
+ export class FileDownloaderComponent extends HTTPManagerService<any> implements OnInit {
18
+
19
+ @Input() delayError = 3
20
+ @Input() apiRequest: ApiRequest = ApiRequest.adapt()
21
+ @Input() displayErrorMessage = false
22
+
23
+ @Input() saveFileAs?: string
24
+
25
+ _labels = DownloadLabels.adapt()
26
+ @Input() set labels(value: DownloadLabels) {
27
+ this._labels = (value) ? DownloadLabels.adapt(value) : DownloadLabels.adapt()
28
+ }
29
+
30
+ active = false
31
+
32
+ subscription = new Subscription()
33
+
34
+ get labels() {
35
+ return this._labels
36
+ }
37
+
38
+ @Output() completed = new EventEmitter<void>()
39
+ @Output() failed = new EventEmitter<string>()
40
+
41
+ @Input() disabled = false
42
+
43
+ constructor() {
44
+ super()
45
+ }
46
+
47
+ ngOnInit() {
48
+
49
+ }
50
+
51
+ onDownloadStreaming() {
52
+
53
+ if (this.active) return;
54
+ this.active = true;
55
+
56
+ return this.downloadRequest(this.apiRequest, [])
57
+ .pipe(
58
+ distinctUntilChanged(),
59
+ catchError((err) => {
60
+
61
+ this.onError(err.message)
62
+ this.active = false
63
+ this.failed.emit(err)
64
+
65
+ return throwError(() => err)
66
+
67
+ }),
68
+ finalize(() => {
69
+ if (!this.active) return
70
+ this.active = false
71
+ this.completed.emit()
72
+ })
73
+ )
74
+ .subscribe()
75
+ }
76
+
77
+
78
+ onError(message: string) {
79
+
80
+ if(!message || !this.displayErrorMessage) return
81
+
82
+ const display = ToastDisplay.adapt({
83
+ message,
84
+ action: 'Ok',
85
+ color: ToastColors.ERROR,
86
+ icon: 'error',
87
+ });
88
+
89
+ this.active = false
90
+
91
+ this.toastMessage.toastMessage(display);
92
+
93
+ }
94
+
95
+ OnDestroy() {
96
+ this.subscription.unsubscribe()
97
+ }
98
+
99
+ }
@@ -0,0 +1,22 @@
1
+ export interface DownloadLabelsInterface {
2
+ error: string;
3
+ action: string;
4
+ icon: string;
5
+ }
6
+
7
+ export class DownloadLabels implements DownloadLabelsInterface {
8
+ constructor(
9
+ public error = '',
10
+ public action = '',
11
+ public icon = 'error',
12
+ ) {}
13
+
14
+ static adapt(item?: any): DownloadLabelsInterface {
15
+ return new DownloadLabels(
16
+ item?.error,
17
+ item?.action,
18
+ item?.icon,
19
+ )
20
+
21
+ }
22
+ }
@@ -0,0 +1,8 @@
1
+ <div class="spinner-background">{{display}}</div>
2
+ <mat-progress-spinner
3
+ [color]="color"
4
+ [diameter]="diameter"
5
+ [mode]="mode || 'indeterminate'"
6
+ [strokeWidth]="strokeWidth"
7
+ [value]="value">
8
+ </mat-progress-spinner>
@@ -0,0 +1,19 @@
1
+ .example-h2 {
2
+ margin: 24px 0;
3
+ }
4
+ :not(spinner-container).spinner-container {
5
+ position: relative;
6
+
7
+ .spinner-background {
8
+ position: absolute;
9
+ width: 80px;
10
+ height: 80px;
11
+ line-height: 80px;
12
+ text-align: center;
13
+ overflow: hidden;
14
+ border-color: rgba(103, 58, 183, 0.12);
15
+ border-radius: 50%;
16
+ border-style: solid;
17
+ border-width: 10px;
18
+ }
19
+ }
@@ -0,0 +1,25 @@
1
+ import { Component, Input, OnInit } from '@angular/core';
2
+ import { ThemePalette } from '@angular/material/core';
3
+ import { ProgressSpinnerMode } from '@angular/material/progress-spinner';
4
+
5
+ @Component({
6
+ selector: 'app-spinner',
7
+ templateUrl: './spinner.component.html',
8
+ styleUrls: ['./spinner.component.scss']
9
+ })
10
+ export class SpinnerComponent implements OnInit {
11
+
12
+ @Input() color: ThemePalette;
13
+
14
+ @Input() diameter?: number;
15
+ @Input() display?: string | number;
16
+ @Input() mode?: ProgressSpinnerMode;
17
+ @Input() strokeWidth?: number;
18
+ @Input() value = 0
19
+
20
+ constructor() { }
21
+
22
+ ngOnInit() {
23
+ }
24
+
25
+ }
@@ -0,0 +1,30 @@
1
+ import { App } from "./app.model"
2
+
3
+ export interface AppSessionInterface {
4
+ cfid: string,
5
+ sessionid: string,
6
+ urltoken: string,
7
+ cftoken: string,
8
+ }
9
+
10
+ export class AppSession implements AppSessionInterface {
11
+
12
+ constructor(
13
+ public cfid = '',
14
+ public sessionid = '',
15
+ public urltoken = '',
16
+ public cftoken = '',
17
+ ) {}
18
+
19
+ static adapt(item?: any): AppSession {
20
+
21
+ return new AppSession(
22
+ item?.cfid,
23
+ item?.sessionid,
24
+ item?.urltoken,
25
+ item?.cftoken,
26
+ )
27
+
28
+ }
29
+
30
+ }
@@ -0,0 +1,19 @@
1
+ export interface AppInterface {
2
+ applicationName: string
3
+ }
4
+
5
+ export class App implements AppInterface {
6
+
7
+ constructor(
8
+ public applicationName = ''
9
+ ) {}
10
+
11
+ static adapt(item?: any): App {
12
+
13
+ return new App(
14
+ item?.applicationName,
15
+ )
16
+
17
+ }
18
+
19
+ }