client-core-services 1.0.0

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 (120) hide show
  1. package/README.md +24 -0
  2. package/esm2020/client-core-services.mjs +5 -0
  3. package/esm2020/lib/my-lib.module.mjs +98 -0
  4. package/esm2020/lib/services/api/api-call/api-call.service.mjs +766 -0
  5. package/esm2020/lib/services/api/api-call-responce/api-call-responce.service.mjs +191 -0
  6. package/esm2020/lib/services/api/api.service.mjs +611 -0
  7. package/esm2020/lib/services/api/auth/auth-guard.service.mjs +37 -0
  8. package/esm2020/lib/services/api/auth/auth.service.mjs +500 -0
  9. package/esm2020/lib/services/api/aws-secret-manager/aws-secret-manager.service.mjs +78 -0
  10. package/esm2020/lib/services/api/common-api/common-api.service.mjs +97 -0
  11. package/esm2020/lib/services/api/doc-api/doc-api.service.mjs +221 -0
  12. package/esm2020/lib/services/api/public-api/public-api.service.mjs +37 -0
  13. package/esm2020/lib/services/chart/chart.service.mjs +166 -0
  14. package/esm2020/lib/services/check-if/check-if.service.mjs +830 -0
  15. package/esm2020/lib/services/common-utils/common-function.service.mjs +1277 -0
  16. package/esm2020/lib/services/common-utils/core-function/core-function.service.mjs +283 -0
  17. package/esm2020/lib/services/customvalidation/customvalidation.service.mjs +202 -0
  18. package/esm2020/lib/services/data-share/auth-data-share/auth-data-share.service.mjs +70 -0
  19. package/esm2020/lib/services/data-share/common-app-data-share/common-app-data-share.service.mjs +82 -0
  20. package/esm2020/lib/services/data-share/data-share.service.mjs +370 -0
  21. package/esm2020/lib/services/data-share/doc-data-share/doc-data-share.service.mjs +81 -0
  22. package/esm2020/lib/services/data-share/public-data-share/public-data-share.service.mjs +25 -0
  23. package/esm2020/lib/services/download/download.service.mjs +151 -0
  24. package/esm2020/lib/services/encryption/encryption.service.mjs +20 -0
  25. package/esm2020/lib/services/env/env.service.mjs +232 -0
  26. package/esm2020/lib/services/env/serverHostList.mjs +56 -0
  27. package/esm2020/lib/services/fileHandler/file-handler.service.mjs +136 -0
  28. package/esm2020/lib/services/form/form-control/form-control.service.mjs +654 -0
  29. package/esm2020/lib/services/form/form-creation/form-creation.service.mjs +880 -0
  30. package/esm2020/lib/services/form/form-value/form-value.service.mjs +464 -0
  31. package/esm2020/lib/services/form/multiple-form/multiple-form.service.mjs +346 -0
  32. package/esm2020/lib/services/grid/grid-common-function/grid-common-function.service.mjs +875 -0
  33. package/esm2020/lib/services/grid/grid-selection/grid-selection.service.mjs +84 -0
  34. package/esm2020/lib/services/lims-calculations/lims-calculations.service.mjs +2304 -0
  35. package/esm2020/lib/services/loader/loader.service.mjs +17 -0
  36. package/esm2020/lib/services/menu-or-module-common/menu-or-module-common.service.mjs +558 -0
  37. package/esm2020/lib/services/model/model.service.mjs +30 -0
  38. package/esm2020/lib/services/notify/notification.service.mjs +84 -0
  39. package/esm2020/lib/services/operator/operator.service.mjs +58 -0
  40. package/esm2020/lib/services/permission/permission.service.mjs +88 -0
  41. package/esm2020/lib/services/router/router.service.mjs +78 -0
  42. package/esm2020/lib/services/storage/cookies.service.mjs +56 -0
  43. package/esm2020/lib/services/storage/storage.service.mjs +749 -0
  44. package/esm2020/lib/services/tree-component/interface.mjs +6 -0
  45. package/esm2020/lib/services/tree-component/tree-component.service.mjs +394 -0
  46. package/esm2020/lib/services/userPrefrence/user-prefrence.service.mjs +767 -0
  47. package/esm2020/lib/services/voice-recognition/voice-recognition.service.mjs +97 -0
  48. package/esm2020/lib/shared/configuration/config.mjs +76 -0
  49. package/esm2020/lib/shared/configuration/editor-config.mjs +121 -0
  50. package/esm2020/lib/shared/enums/common.enum.mjs +18 -0
  51. package/esm2020/lib/shared/enums/config.enum.mjs +56 -0
  52. package/esm2020/lib/shared/enums/end-point.enum.mjs +69 -0
  53. package/esm2020/lib/shared/enums/flags.enum.mjs +20 -0
  54. package/esm2020/lib/shared/enums/keycodes.enum.mjs +122 -0
  55. package/esm2020/lib/shared/enums/operator_type.enum.mjs +13 -0
  56. package/esm2020/lib/shared/enums/storage-token-status.enum.mjs +10 -0
  57. package/esm2020/lib/shared/platform.mjs +2 -0
  58. package/esm2020/public-api.mjs +53 -0
  59. package/fesm2015/client-core-services.mjs +15487 -0
  60. package/fesm2015/client-core-services.mjs.map +1 -0
  61. package/fesm2020/client-core-services.mjs +15482 -0
  62. package/fesm2020/client-core-services.mjs.map +1 -0
  63. package/index.d.ts +5 -0
  64. package/lib/my-lib.module.d.ts +18 -0
  65. package/lib/services/api/api-call/api-call.service.d.ts +60 -0
  66. package/lib/services/api/api-call-responce/api-call-responce.service.d.ts +43 -0
  67. package/lib/services/api/api.service.d.ts +88 -0
  68. package/lib/services/api/auth/auth-guard.service.d.ts +13 -0
  69. package/lib/services/api/auth/auth.service.d.ts +50 -0
  70. package/lib/services/api/aws-secret-manager/aws-secret-manager.service.d.ts +22 -0
  71. package/lib/services/api/common-api/common-api.service.d.ts +22 -0
  72. package/lib/services/api/doc-api/doc-api.service.d.ts +35 -0
  73. package/lib/services/api/public-api/public-api.service.d.ts +14 -0
  74. package/lib/services/chart/chart.service.d.ts +21 -0
  75. package/lib/services/check-if/check-if.service.d.ts +50 -0
  76. package/lib/services/common-utils/common-function.service.d.ts +84 -0
  77. package/lib/services/common-utils/core-function/core-function.service.d.ts +21 -0
  78. package/lib/services/customvalidation/customvalidation.service.d.ts +21 -0
  79. package/lib/services/data-share/auth-data-share/auth-data-share.service.d.ts +33 -0
  80. package/lib/services/data-share/common-app-data-share/common-app-data-share.service.d.ts +36 -0
  81. package/lib/services/data-share/data-share.service.d.ts +174 -0
  82. package/lib/services/data-share/doc-data-share/doc-data-share.service.d.ts +33 -0
  83. package/lib/services/data-share/public-data-share/public-data-share.service.d.ts +12 -0
  84. package/lib/services/download/download.service.d.ts +35 -0
  85. package/lib/services/encryption/encryption.service.d.ts +8 -0
  86. package/lib/services/env/env.service.d.ts +44 -0
  87. package/lib/services/env/serverHostList.d.ts +9 -0
  88. package/lib/services/fileHandler/file-handler.service.d.ts +17 -0
  89. package/lib/services/form/form-control/form-control.service.d.ts +44 -0
  90. package/lib/services/form/form-creation/form-creation.service.d.ts +41 -0
  91. package/lib/services/form/form-value/form-value.service.d.ts +32 -0
  92. package/lib/services/form/multiple-form/multiple-form.service.d.ts +54 -0
  93. package/lib/services/grid/grid-common-function/grid-common-function.service.d.ts +74 -0
  94. package/lib/services/grid/grid-selection/grid-selection.service.d.ts +16 -0
  95. package/lib/services/lims-calculations/lims-calculations.service.d.ts +87 -0
  96. package/lib/services/loader/loader.service.d.ts +8 -0
  97. package/lib/services/menu-or-module-common/menu-or-module-common.service.d.ts +59 -0
  98. package/lib/services/model/model.service.d.ts +11 -0
  99. package/lib/services/notify/notification.service.d.ts +22 -0
  100. package/lib/services/operator/operator.service.d.ts +27 -0
  101. package/lib/services/permission/permission.service.d.ts +18 -0
  102. package/lib/services/router/router.service.d.ts +14 -0
  103. package/lib/services/storage/cookies.service.d.ts +11 -0
  104. package/lib/services/storage/storage.service.d.ts +132 -0
  105. package/lib/services/tree-component/interface.d.ts +13 -0
  106. package/lib/services/tree-component/tree-component.service.d.ts +38 -0
  107. package/lib/services/userPrefrence/user-prefrence.service.d.ts +75 -0
  108. package/lib/services/voice-recognition/voice-recognition.service.d.ts +36 -0
  109. package/lib/shared/configuration/config.d.ts +144 -0
  110. package/lib/shared/configuration/editor-config.d.ts +72 -0
  111. package/lib/shared/enums/common.enum.d.ts +16 -0
  112. package/lib/shared/enums/config.enum.d.ts +54 -0
  113. package/lib/shared/enums/end-point.enum.d.ts +66 -0
  114. package/lib/shared/enums/flags.enum.d.ts +18 -0
  115. package/lib/shared/enums/keycodes.enum.d.ts +120 -0
  116. package/lib/shared/enums/operator_type.enum.d.ts +9 -0
  117. package/lib/shared/enums/storage-token-status.enum.d.ts +8 -0
  118. package/lib/shared/platform.d.ts +1 -0
  119. package/package.json +40 -0
  120. package/public-api.d.ts +49 -0
@@ -0,0 +1,84 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class GridSelectionService {
4
+ constructor() { }
5
+ toggle(index, checked, field, staticData, custmizedFormValue) {
6
+ let responce = {
7
+ staticData: staticData,
8
+ custmizedFormValue: custmizedFormValue
9
+ };
10
+ if (checked) {
11
+ responce.staticData[field.ddn_field][index].selected = true;
12
+ }
13
+ else {
14
+ responce.staticData[field.ddn_field][index].selected = false;
15
+ }
16
+ responce.custmizedFormValue[field.field_name] = [];
17
+ responce.staticData[field.ddn_field].forEach((element) => {
18
+ if (element.selected) {
19
+ responce.custmizedFormValue[field.field_name].push(element);
20
+ }
21
+ });
22
+ return responce;
23
+ }
24
+ isIndeterminate(ddn_field, staticData) {
25
+ let check = 0;
26
+ if (staticData[ddn_field].length > 0) {
27
+ staticData[ddn_field].forEach((row) => {
28
+ if (row.selected) {
29
+ check = check + 1;
30
+ }
31
+ });
32
+ }
33
+ return (check > 0 && !this.isChecked(ddn_field, staticData));
34
+ }
35
+ ;
36
+ isChecked(ddn_field, staticData) {
37
+ let check = 0;
38
+ if (staticData[ddn_field].length > 0) {
39
+ staticData[ddn_field].forEach((row) => {
40
+ if (row.selected) {
41
+ check = check + 1;
42
+ }
43
+ });
44
+ }
45
+ return staticData[ddn_field].length === check;
46
+ }
47
+ ;
48
+ toggleAll(checked, field, staticData, custmizedFormValue) {
49
+ let responce = {
50
+ staticData: staticData,
51
+ custmizedFormValue: custmizedFormValue
52
+ };
53
+ if (checked) {
54
+ if (responce.staticData[field.ddn_field].length > 0) {
55
+ responce.staticData[field.ddn_field].forEach((row) => {
56
+ row.selected = true;
57
+ });
58
+ }
59
+ }
60
+ else {
61
+ if (responce.staticData[field.ddn_field].length > 0) {
62
+ responce.staticData[field.ddn_field].forEach((row) => {
63
+ row.selected = false;
64
+ });
65
+ }
66
+ }
67
+ responce.custmizedFormValue[field.field_name] = [];
68
+ responce.staticData[field.ddn_field].forEach((element) => {
69
+ if (element.selected) {
70
+ responce.custmizedFormValue[field.field_name].push(element);
71
+ }
72
+ });
73
+ return responce;
74
+ }
75
+ }
76
+ GridSelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GridSelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
77
+ GridSelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GridSelectionService, providedIn: 'root' });
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GridSelectionService, decorators: [{
79
+ type: Injectable,
80
+ args: [{
81
+ providedIn: 'root'
82
+ }]
83
+ }], ctorParameters: function () { return []; } });
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1zZWxlY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1jb3JlL3NyYy9saWIvc2VydmljZXMvZ3JpZC9ncmlkLXNlbGVjdGlvbi9ncmlkLXNlbGVjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsZ0JBQWdCLENBQUM7SUFDakIsTUFBTSxDQUFDLEtBQVMsRUFBQyxPQUFXLEVBQUMsS0FBUyxFQUFDLFVBQWMsRUFBQyxrQkFBc0I7UUFDMUUsSUFBSSxRQUFRLEdBQUc7WUFDYixVQUFVLEVBQUMsVUFBVTtZQUNyQixrQkFBa0IsRUFBQyxrQkFBa0I7U0FDdEMsQ0FBQTtRQUNELElBQUksT0FBTyxFQUFFO1lBQ1gsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxHQUFDLElBQUksQ0FBQztTQUMzRDthQUFNO1lBQ0wsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxHQUFDLEtBQUssQ0FBQztTQUM1RDtRQUNELFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ25ELFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVcsRUFBRSxFQUFFO1lBQzNELElBQUcsT0FBTyxDQUFDLFFBQVEsRUFBQztnQkFDbEIsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDN0Q7UUFDSCxD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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JpZFNlbGVjdGlvblNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG4gIHRvZ2dsZShpbmRleDphbnksY2hlY2tlZDphbnksZmllbGQ6YW55LHN0YXRpY0RhdGE6YW55LGN1c3RtaXplZEZvcm1WYWx1ZTphbnkpIHtcclxuICAgIGxldCByZXNwb25jZSA9IHtcclxuICAgICAgc3RhdGljRGF0YTpzdGF0aWNEYXRhLFxyXG4gICAgICBjdXN0bWl6ZWRGb3JtVmFsdWU6Y3VzdG1pemVkRm9ybVZhbHVlXHJcbiAgICB9XHJcbiAgICBpZiAoY2hlY2tlZCkge1xyXG4gICAgICByZXNwb25jZS5zdGF0aWNEYXRhW2ZpZWxkLmRkbl9maWVsZF1baW5kZXhdLnNlbGVjdGVkPXRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNwb25jZS5zdGF0aWNEYXRhW2ZpZWxkLmRkbl9maWVsZF1baW5kZXhdLnNlbGVjdGVkPWZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmVzcG9uY2UuY3VzdG1pemVkRm9ybVZhbHVlW2ZpZWxkLmZpZWxkX25hbWVdID0gW107XHJcbiAgICByZXNwb25jZS5zdGF0aWNEYXRhW2ZpZWxkLmRkbl9maWVsZF0uZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcclxuICAgICAgaWYoZWxlbWVudC5zZWxlY3RlZCl7XHJcbiAgICAgICAgcmVzcG9uY2UuY3VzdG1pemVkRm9ybVZhbHVlW2ZpZWxkLmZpZWxkX25hbWVdLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3BvbmNlO1xyXG4gIH1cclxuICBpc0luZGV0ZXJtaW5hdGUoZGRuX2ZpZWxkOmFueSxzdGF0aWNEYXRhOmFueSkge1xyXG4gICAgbGV0IGNoZWNrID0gMDtcclxuICAgIGlmKHN0YXRpY0RhdGFbZGRuX2ZpZWxkXS5sZW5ndGggPiAwKXtcclxuICAgICAgc3RhdGljRGF0YVtkZG5fZmllbGRdLmZvckVhY2goKHJvdzphbnkpID0+IHtcclxuICAgICAgICBpZihyb3cuc2VsZWN0ZWQpe1xyXG4gICAgICAgICAgY2hlY2sgPSBjaGVjayArIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiAoY2hlY2sgPiAwICYmICF0aGlzLmlzQ2hlY2tlZChkZG5fZmllbGQsc3RhdGljRGF0YSkpO1xyXG4gIH07XHJcbiAgaXNDaGVja2VkKGRkbl9maWVsZDphbnksc3RhdGljRGF0YTphbnkpIHtcclxuICAgIGxldCBjaGVjayA9IDA7XHJcbiAgICBpZihzdGF0aWNEYXRhW2Rkbl9maWVsZF0ubGVuZ3RoID4gMCl7XHJcbiAgICAgIHN0YXRpY0RhdGFbZGRuX2ZpZWxkXS5mb3JFYWNoKChyb3c6YW55KSA9PiB7XHJcbiAgICAgICAgaWYocm93LnNlbGVjdGVkKXtcclxuICAgICAgICAgIGNoZWNrID0gY2hlY2sgKyAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RhdGljRGF0YVtkZG5fZmllbGRdLmxlbmd0aCA9PT0gY2hlY2s7XHJcbiAgfTtcclxuICB0b2dnbGVBbGwoY2hlY2tlZDphbnksZmllbGQ6YW55LHN0YXRpY0RhdGE6YW55LGN1c3RtaXplZEZvcm1WYWx1ZTphbnkpIHtcclxuICAgIGxldCByZXNwb25jZSA9IHtcclxuICAgICAgc3RhdGljRGF0YTpzdGF0aWNEYXRhLFxyXG4gICAgICBjdXN0bWl6ZWRGb3JtVmFsdWU6Y3VzdG1pemVkRm9ybVZhbHVlXHJcbiAgICB9XHJcbiAgICBpZiAoY2hlY2tlZCApIHtcclxuICAgICAgaWYocmVzcG9uY2Uuc3RhdGljRGF0YVtmaWVsZC5kZG5fZmllbGRdLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIHJlc3BvbmNlLnN0YXRpY0RhdGFbZmllbGQuZGRuX2ZpZWxkXS5mb3JFYWNoKChyb3c6YW55KSA9PiB7XHJcbiAgICAgICAgICByb3cuc2VsZWN0ZWQ9dHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIGlmKHJlc3BvbmNlLnN0YXRpY0RhdGFbZmllbGQuZGRuX2ZpZWxkXS5sZW5ndGggPiAwKXtcclxuICAgICAgICByZXNwb25jZS5zdGF0aWNEYXRhW2ZpZWxkLmRkbl9maWVsZF0uZm9yRWFjaCgocm93OmFueSkgPT4ge1xyXG4gICAgICAgICAgcm93LnNlbGVjdGVkPWZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXNwb25jZS5jdXN0bWl6ZWRGb3JtVmFsdWVbZmllbGQuZmllbGRfbmFtZV0gPSBbXTtcclxuICAgIHJlc3BvbmNlLnN0YXRpY0RhdGFbZmllbGQuZGRuX2ZpZWxkXS5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xyXG4gICAgICBpZihlbGVtZW50LnNlbGVjdGVkKXtcclxuICAgICAgICByZXNwb25jZS5jdXN0bWl6ZWRGb3JtVmFsdWVbZmllbGQuZmllbGRfbmFtZV0ucHVzaChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVzcG9uY2U7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=