@annalib/anna-core 7.2.3 → 7.2.4

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 (156) hide show
  1. package/.browserslistrc +16 -0
  2. package/karma.conf.js +44 -0
  3. package/ng-package.json +14 -0
  4. package/package.json +19 -39
  5. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.html +22 -0
  6. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.scss +0 -0
  7. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.spec.ts +25 -0
  8. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.ts +16 -0
  9. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.html +33 -0
  10. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.scss +0 -0
  11. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.spec.ts +25 -0
  12. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.ts +28 -0
  13. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.html +20 -0
  14. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.scss +0 -0
  15. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.spec.ts +25 -0
  16. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.ts +16 -0
  17. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.html +3 -0
  18. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.scss +17 -0
  19. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.spec.ts +24 -0
  20. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.ts +20 -0
  21. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.html +23 -0
  22. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.scss +0 -0
  23. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.spec.ts +25 -0
  24. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.ts +16 -0
  25. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.html +15 -0
  26. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.scss +0 -0
  27. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.spec.ts +25 -0
  28. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.ts +19 -0
  29. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.html +14 -0
  30. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.scss +0 -0
  31. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.spec.ts +25 -0
  32. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.ts +16 -0
  33. package/src/lib/anna-core-shared-lib/constants/shared.constant.ts +35 -0
  34. package/src/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.ts +307 -0
  35. package/src/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.ts +19 -0
  36. package/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.ts +19 -0
  37. package/{lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts → src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.ts} +21 -9
  38. package/src/lib/anna-core-shared-lib/models/anna-manage-users.model.ts +6 -0
  39. package/{lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts → src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.ts} +28 -17
  40. package/src/lib/anna-core-shared-lib/models/anna-sort.model.ts +13 -0
  41. package/src/lib/anna-core-shared-lib/models/anna-tooltip.model.ts +44 -0
  42. package/src/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.ts +20 -0
  43. package/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.ts +43 -0
  44. package/src/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.ts +19 -0
  45. package/src/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.ts +12 -0
  46. package/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.ts +219 -0
  47. package/src/lib/anna-core-shared-lib/services/anna-filter.service.ts +563 -0
  48. package/src/lib/anna-core-shared-lib/services/anna-generic-table.service.ts +136 -0
  49. package/src/lib/anna-core-shared-lib/services/anna-global-config.service.ts +170 -0
  50. package/src/lib/anna-core-shared-lib/services/anna-number-format.service.ts +43 -0
  51. package/src/lib/anna-core-shared-lib/services/anna-sort.service.ts +179 -0
  52. package/src/lib/anna-core.module.ts +112 -0
  53. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.html +46 -0
  54. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.scss +153 -0
  55. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.spec.ts +24 -0
  56. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.ts +106 -0
  57. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.html +129 -0
  58. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.scss +275 -0
  59. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.spec.ts +24 -0
  60. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.ts +414 -0
  61. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.html +1080 -0
  62. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.scss +668 -0
  63. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.spec.ts +25 -0
  64. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.ts +2186 -0
  65. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.html +10 -0
  66. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.scss +1 -0
  67. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.spec.ts +24 -0
  68. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.ts +69 -0
  69. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.html +13 -0
  70. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.scss +88 -0
  71. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.spec.ts +25 -0
  72. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.ts +460 -0
  73. package/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.ts +237 -0
  74. package/{lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts → src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.ts} +0 -0
  75. package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.ts +204 -0
  76. package/{lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts → src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.ts} +0 -0
  77. package/{public-api.d.ts → src/public-api.ts} +28 -0
  78. package/src/test.ts +27 -0
  79. package/tsconfig.lib.json +19 -0
  80. package/tsconfig.lib.prod.json +10 -0
  81. package/tsconfig.spec.json +17 -0
  82. package/annalib-anna-core.d.ts +0 -5
  83. package/esm2020/annalib-anna-core.mjs +0 -5
  84. package/esm2020/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +0 -15
  85. package/esm2020/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.mjs +0 -35
  86. package/esm2020/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +0 -15
  87. package/esm2020/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +0 -22
  88. package/esm2020/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +0 -15
  89. package/esm2020/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +0 -21
  90. package/esm2020/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +0 -15
  91. package/esm2020/lib/anna-core-shared-lib/constants/shared.constant.mjs +0 -35
  92. package/esm2020/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.mjs +0 -282
  93. package/esm2020/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.mjs +0 -27
  94. package/esm2020/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +0 -2
  95. package/esm2020/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +0 -2
  96. package/esm2020/lib/anna-core-shared-lib/models/anna-manage-users.model.mjs +0 -8
  97. package/esm2020/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +0 -2
  98. package/esm2020/lib/anna-core-shared-lib/models/anna-sort.model.mjs +0 -7
  99. package/esm2020/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +0 -30
  100. package/esm2020/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.mjs +0 -26
  101. package/esm2020/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +0 -46
  102. package/esm2020/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.mjs +0 -25
  103. package/esm2020/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.mjs +0 -16
  104. package/esm2020/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +0 -199
  105. package/esm2020/lib/anna-core-shared-lib/services/anna-filter.service.mjs +0 -469
  106. package/esm2020/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +0 -124
  107. package/esm2020/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +0 -133
  108. package/esm2020/lib/anna-core-shared-lib/services/anna-number-format.service.mjs +0 -41
  109. package/esm2020/lib/anna-core-shared-lib/services/anna-sort.service.mjs +0 -147
  110. package/esm2020/lib/anna-core.module.mjs +0 -180
  111. package/esm2020/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +0 -101
  112. package/esm2020/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +0 -364
  113. package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +0 -1834
  114. package/esm2020/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +0 -69
  115. package/esm2020/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +0 -357
  116. package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.mjs +0 -189
  117. package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +0 -2
  118. package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +0 -178
  119. package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +0 -2
  120. package/esm2020/public-api.mjs +0 -50
  121. package/fesm2015/annalib-anna-core.mjs +0 -4875
  122. package/fesm2015/annalib-anna-core.mjs.map +0 -1
  123. package/fesm2020/annalib-anna-core.mjs +0 -4868
  124. package/fesm2020/annalib-anna-core.mjs.map +0 -1
  125. package/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +0 -8
  126. package/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.d.ts +0 -16
  127. package/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +0 -8
  128. package/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +0 -11
  129. package/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +0 -8
  130. package/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +0 -11
  131. package/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +0 -8
  132. package/lib/anna-core-shared-lib/constants/shared.constant.d.ts +0 -33
  133. package/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.d.ts +0 -34
  134. package/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.d.ts +0 -9
  135. package/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +0 -16
  136. package/lib/anna-core-shared-lib/models/anna-manage-users.model.d.ts +0 -6
  137. package/lib/anna-core-shared-lib/models/anna-sort.model.d.ts +0 -11
  138. package/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +0 -25
  139. package/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.d.ts +0 -9
  140. package/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +0 -9
  141. package/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.d.ts +0 -9
  142. package/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.d.ts +0 -7
  143. package/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +0 -27
  144. package/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +0 -74
  145. package/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +0 -28
  146. package/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +0 -21
  147. package/lib/anna-core-shared-lib/services/anna-number-format.service.d.ts +0 -7
  148. package/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +0 -16
  149. package/lib/anna-core.module.d.ts +0 -36
  150. package/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +0 -34
  151. package/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +0 -70
  152. package/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +0 -283
  153. package/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +0 -17
  154. package/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +0 -141
  155. package/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.d.ts +0 -89
  156. package/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +0 -45
@@ -0,0 +1,563 @@
1
+ // Angular import statements
2
+ import { Options } from '@angular-slider/ngx-slider';
3
+ import { Injectable } from "@angular/core";
4
+
5
+ // Third party import statements
6
+ import { min, max, map, sortBy, uniq, cloneDeep, isEqual } from "lodash-es";
7
+ import dayjs from "dayjs";
8
+ import minMax from "dayjs/plugin/minMax";
9
+ import isBetween from "dayjs/plugin/isBetween";
10
+ import { SortType, SortTypeEnum } from '../models/anna-sort.model';
11
+
12
+ // User defined import statements
13
+ import { AnnaDateTimeFormatService, NgbDateType } from './anna-date-time-format.service';
14
+ import { AnnaSortService } from './anna-sort.service';
15
+
16
+ @Injectable({
17
+ providedIn: 'root'
18
+ })
19
+ export class AnnaFilterService {
20
+
21
+ tooltipMap = new Map();
22
+ tooltipSelectedMap = new Map();
23
+ initialValueMap: Map<string, any>;
24
+ translateFunc: string;
25
+ selectedRadio: string;
26
+ subRadioButton: string;
27
+
28
+ calendarSet: Set<string>;
29
+ sliderSet: Set<string>;
30
+ timeSet: Set<string>;
31
+
32
+ includeMultiTime: boolean;
33
+ includeZeroTime: boolean;
34
+ includeTimeRange: boolean;
35
+
36
+ appliedFiltersArray: string[] = [];
37
+ flightDateRange: { minSelectedDate: any, maxSelectedDate: any };
38
+ sliderData: { min: any, max: any };
39
+ ngxSliderObj: Options;
40
+ sliderCurrencySet = new Set([
41
+ 'booked',
42
+ 'cpp',
43
+ 'cpm',
44
+ 'rcvPreempt',
45
+ 'osPreempt',
46
+ 'postedAdu',
47
+ 'scheduledAdu',
48
+ 'audienceDeficit',
49
+ 'Rate',
50
+ 'userADUs',
51
+ 'buyerChanges',
52
+ 'userChanges',
53
+ 'userMG',
54
+ ]);
55
+
56
+ public static bufferSize = 20;
57
+ isFilterSortActive: any = null;
58
+ resetFilterSortActiveStatus: boolean = true;
59
+
60
+ constructor(private dateTimeFormatService: AnnaDateTimeFormatService, private annaSortService: AnnaSortService) {
61
+ dayjs.extend(minMax);
62
+ dayjs.extend(isBetween);
63
+ console.log("AnnaFilterService service created.")
64
+ const sliderArr = [
65
+ "rcvPreempt",
66
+ "osPreempt",
67
+ "rcvUnderDly",
68
+ "postedAudPercent",
69
+ "booked",
70
+ "spots",
71
+ "grp",
72
+ "cpp",
73
+ "imps",
74
+ "cpm",
75
+ "osUnderDly",
76
+ "totalWeeks",
77
+ "WeekNumber",
78
+ "Rate",
79
+ "OrderedRatingsOrImpressions",
80
+ "PostedRatingsOrImpressions", ,
81
+ "postedAudPercent",
82
+ "postedAdu",
83
+ "scheduledAdu",
84
+ "audienceDeficit",
85
+ "offeredMGs",
86
+ "outstandingPE",
87
+ "offeredADUs",
88
+ "udDeficitValue",
89
+ "bookedValue",
90
+ "bookedSpots",
91
+ "userChanges",
92
+ "UDGrp",
93
+ "UDImps",
94
+ "ODGrp",
95
+ "ODImps",
96
+ "udImpsPercent",
97
+ "udGrpPercent",
98
+ "odImpsPercent",
99
+ "odGrpPercent",
100
+ "userADUs",
101
+ "buyerChanges",
102
+ "userChanges",
103
+ "userMG",
104
+ "WeeklyAUR",
105
+ "WeeklyAURatingOrImpressions"
106
+ ];
107
+ const calendarArr = ["period", "AirDate", "flightStartDate", "flightEndDate","date", "startDate", "endDate", "revisionStartDate"];
108
+ const timeArr = ["StartTimeForFilter", "EndTimeForFilter", "time",
109
+ "start_time_for_filter", "end_time_for_filter", "startEndTimeMulti", "startEndTime"];
110
+ this.sliderSet = new Set(sliderArr);
111
+ this.calendarSet = new Set(calendarArr);
112
+ this.timeSet = new Set(timeArr);
113
+ }
114
+
115
+ returnMaxAndMinValue(data: any[], key: string, isMin: boolean) {
116
+ data = data.filter((obj) => !["", "-", null].includes(obj[key]));
117
+ const values = data.map((x) => x[key]);
118
+ let valueToReturn = isMin ? min(values) : max(values);
119
+ return valueToReturn;
120
+ }
121
+
122
+ returnMinAndMaxDate(data: any[], key: string) {
123
+ data = data.filter((obj) => !["", "-", null].includes(obj[key]));
124
+ let DateArr = data.map((obj) => dayjs(obj[key]));
125
+ let minDate = dayjs.min(DateArr);
126
+ let maxDate = dayjs.max(DateArr);
127
+
128
+
129
+ return [minDate, maxDate];
130
+ }
131
+
132
+ isTooltipActive(header: string[], sortMap: Map<string, SortType>): boolean {
133
+ let set: Set<string> = new Set(this.appliedFiltersArray);
134
+ let isSortMapForHeader0Active = sortMap.has(header[0]) && (sortMap.get(header[0]) != SortTypeEnum.DEFAULT);
135
+ let isSortMapForHeader1Active = sortMap.has(header[1]) && (sortMap.get(header[1]) != SortTypeEnum.DEFAULT);
136
+
137
+ if(header.length == 1){
138
+ return ( (sortMap.size > 0 && isSortMapForHeader0Active) || set.has(header[0]));
139
+ }
140
+
141
+ return ( (sortMap.size > 0 && sortMap.has(header[0]) && isSortMapForHeader0Active) || (sortMap.size > 0 && sortMap.has(header[1]) && isSortMapForHeader1Active) || set.has(header[0]) || set.has(header[1]));
142
+
143
+ }
144
+
145
+ clearColumnFilter() {
146
+ if(this.tooltipSelectedMap.has(this.selectedRadio)){
147
+ this.tooltipSelectedMap.delete(this.selectedRadio);
148
+ let appliedFilterSet: Set<string> = new Set(this.appliedFiltersArray);
149
+ appliedFilterSet.delete(this.selectedRadio);
150
+ this.appliedFiltersArray = [...appliedFilterSet];
151
+ }
152
+
153
+ if(this.annaSortService.columnSortState.has(this.selectedRadio)){
154
+ this.annaSortService.columnSortState.delete(this.selectedRadio);
155
+ }
156
+
157
+ }
158
+
159
+ setOptionValues(minValue: number, maxValue: number) {
160
+ return {
161
+ floor: minValue,
162
+ ceil: maxValue,
163
+ disabled: true,
164
+ translate: this.normalTranslateFunction
165
+ };
166
+ }
167
+
168
+ percentTranslateFunction = (data: number): string => {
169
+
170
+ if (Math.abs(data) >= 1000) {
171
+ let isNegVal = data < 0;
172
+ const val = (Math.abs(data) / 1000).toFixed(1) + "k%";
173
+ return isNegVal ? "-" + val : val;
174
+
175
+ } else {
176
+ let isNegVal = data < 0;
177
+ let isWholeNum = parseInt(data.toString()) == data;
178
+ let val = isWholeNum ? Math.abs(data).toString() : Math.abs(data).toFixed(1);
179
+ return isNegVal ? "-" + val + "%" : val + "%";
180
+ }
181
+
182
+ };
183
+
184
+ currencyTranslateFunction = (data: number): string => {
185
+ if (Math.abs(data) >= 1000) {
186
+ let isNegVal = data < 0;
187
+ const val = "$" + (Math.abs(data) / 1000).toFixed(1) + "k";
188
+ return isNegVal ? "-" + val : val;
189
+
190
+ } else {
191
+ let isNegVal = data < 0;
192
+ let isWholeNum = parseInt(data.toString()) == data;
193
+ let val = isWholeNum ? Math.abs(data).toString() : Math.abs(data).toFixed(1);
194
+ return isNegVal ? "-$" + val : "$" + val;
195
+ }
196
+ };
197
+
198
+ normalTranslateFunction = (data: number): string => {
199
+ if (data >= 1000) {
200
+ const val = (data / 1000).toFixed(1) + "k";
201
+ return val;
202
+ } else if (data != Math.floor(data)) {
203
+ return data.toFixed(1).toString();
204
+ }
205
+ return data.toString();
206
+ };
207
+
208
+ findUniqueDatesWithData(data: any[]) {
209
+ let uniqueDates = uniq(data.map((u) => u["date"]));
210
+ let uniqueDatesInNgbDateFormat: NgbDateType[] = [];
211
+ uniqueDates.forEach((date: any) => {
212
+ uniqueDatesInNgbDateFormat.push(
213
+ this.dateTimeFormatService.convertToNgbDateStandardFormat(dayjs(date, "MM/DD/YY").format("MM/DD/YYYY"))
214
+ );
215
+ });
216
+ return uniqueDatesInNgbDateFormat;
217
+ }
218
+
219
+ reOrderAppliedFiltersArray(isHierarchialUserFiltered: boolean, date?: any) {
220
+ let isFiltered = true;
221
+ isFiltered = this.checkIfDataIsFiltered(isFiltered, isHierarchialUserFiltered, date);
222
+ this.removeOrChangeLatestFilterIndex(isFiltered);
223
+ }
224
+
225
+ checkIfDataIsFiltered(isFiltered: boolean, isHierarchialUserFiltered: boolean, date?: any) {
226
+ if (this.selectedRadio == "user" && !this.tooltipMap.has("user")) {
227
+ isFiltered = cloneDeep(isHierarchialUserFiltered);
228
+ } else if (this.selectedRadio == "StartTimeForFilter" || this.selectedRadio == "EndTimeForFilter" || this.selectedRadio == "time"
229
+ || this.selectedRadio == "start_time_for_filter" || this.selectedRadio == "end_time_for_filter" || this.selectedRadio == "startEndTimeMulti") {
230
+ isFiltered = !isEqual(
231
+ this.initialValueMap.get(this.selectedRadio),
232
+ this.tooltipSelectedMap.get(this.selectedRadio)
233
+ ) || !this.includeZeroTime || !this.includeMultiTime;
234
+ }
235
+ else if (this.selectedRadio == "startEndTime" || this.selectedRadio == "TimeBand") {
236
+ isFiltered = !isEqual(this.initialValueMap.get(this.selectedRadio), this.tooltipSelectedMap.get(this.selectedRadio)) || !this.includeZeroTime || !this.includeMultiTime;
237
+ }
238
+ else if (this.sliderSet.has(this.selectedRadio)) {
239
+ isFiltered = !isEqual(this.initialValueMap.get(this.selectedRadio), this.tooltipSelectedMap.get(this.selectedRadio)) && !isEqual(this.tooltipSelectedMap.get(this.selectedRadio), this.sliderData);
240
+ if (this.selectedRadio == "postedAdu" && this.subRadioButton == "notRequired") {
241
+ isFiltered = true;
242
+ }
243
+ if (!isFiltered && this.tooltipSelectedMap.has(this.selectedRadio)) {
244
+ this.tooltipSelectedMap.delete(this.selectedRadio);
245
+ }
246
+ } else if (
247
+ this.selectedRadio == "startDate" ||
248
+ this.selectedRadio == "endDate" ||
249
+ this.selectedRadio == "period" ||
250
+ this.selectedRadio == "AirDate" ||
251
+ this.selectedRadio === "flightStartDate" ||
252
+ this.selectedRadio === "flightEndDate" ||
253
+ this.selectedRadio == "date" ||
254
+ this.selectedRadio == "revisionStartDate"
255
+ ) {
256
+ isFiltered =
257
+ !isEqual(this.initialValueMap.get(this.selectedRadio), this.tooltipSelectedMap.get(this.selectedRadio)) &&
258
+ !isEqual(this.tooltipSelectedMap.get(this.selectedRadio), this.flightDateRange);
259
+ if (!isFiltered && this.tooltipSelectedMap.has(this.selectedRadio)) {
260
+ this.tooltipSelectedMap.delete(this.selectedRadio);
261
+ }
262
+ } else {
263
+ let totalOptionsCount = this.tooltipMap.get(this.selectedRadio).filter((x: any) => !x.isHidden).length;
264
+ let selectedOptionsCount = this.tooltipMap.get(this.selectedRadio).filter((x: any) => !x.isHidden && x.isSelected).length;
265
+ isFiltered = selectedOptionsCount > 0 && selectedOptionsCount != totalOptionsCount ? true : false;
266
+ }
267
+ return isFiltered;
268
+ }
269
+
270
+ removeOrChangeLatestFilterIndex(isFiltered: boolean) {
271
+ let set = new Set(this.appliedFiltersArray);
272
+
273
+ if (isFiltered && !set.has(this.selectedRadio)) {
274
+ set.add(this.selectedRadio);
275
+ } else if (isFiltered && set.has(this.selectedRadio)) {
276
+ set.delete(this.selectedRadio);
277
+ set.add(this.selectedRadio);
278
+ } else {
279
+ set.delete(this.selectedRadio);
280
+ }
281
+ this.appliedFiltersArray = [...set];
282
+ }
283
+
284
+ filterData(originalData: any[], keyToSkip: string) {
285
+ let filteredData = [...originalData];
286
+
287
+ this.tooltipSelectedMap.forEach((value, key) => {
288
+ if (key != keyToSkip) {
289
+ if (this.sliderSet.has(key)) {
290
+ filteredData = filteredData.filter((obj) => obj[key] >= value.min && obj[key] <= value.max);
291
+ }
292
+ else if (key === "startDate" || key === "endDate" || key === "AirDate" || key === "flightStartDate" || key === "flightEndDate" || key == "date" || key == "revisionStartDate") {
293
+ filteredData = filteredData.filter((obj) => this.isObjectInTheRange(obj, value, key));
294
+ } else if (key === "period" ) {
295
+ filteredData = filteredData.filter((obj) => this.getDataInTheDateRange(obj, value, key));
296
+ }
297
+ else if (key === "StartTimeForFilter" || key === "EndTimeForFilter"
298
+ || key === "start_time_for_filter" || key === "end_time_for_filter" || key == "time") {
299
+ filteredData = filteredData.filter((obj) => this.returnDataForFromAndToTimeRange(obj, value, key));
300
+ }
301
+ else if (key === "startEndTimeMulti" || key == "startEndTime" || key === "TimeBand") {
302
+ filteredData = filteredData.filter((obj) => this.returnDataForStartAndEndTimeRange(obj, value, key));
303
+ }
304
+ else if (value.length > 0) {
305
+ filteredData = filteredData.filter((u) => value.includes(u[key]));
306
+ }
307
+ }
308
+ });
309
+ return filteredData;
310
+ }
311
+
312
+ returnOrdersInTheRange(order: any, range: any, key: any) {
313
+ let isDateBetweenTheSelectedRange = dayjs(order[key]).isBetween(range.minSelectedDate, range.maxSelectedDate);
314
+ let isDateSameAsTheMinSelectedDate = dayjs(order[key]).isSame(range.minSelectedDate);
315
+ let isDateSameAsTheMaxSelectedDate = dayjs(order[key]).isSame(range.maxSelectedDate);
316
+ return isDateBetweenTheSelectedRange || isDateSameAsTheMinSelectedDate || isDateSameAsTheMaxSelectedDate;
317
+ }
318
+
319
+ returnDataForTimeRange(obj: any, selectedData: any) {
320
+ let format = "HH:mm:ss";
321
+ let selectedStartDate = dayjs(selectedData.startTime, format);
322
+ let selectedEndDate = dayjs(selectedData.endTime, format);
323
+ let startTime = dayjs(obj.startTime, format);
324
+ let endTime = dayjs(obj.endTime, format);
325
+
326
+ let isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedStartDate);
327
+ let isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedStartDate, selectedEndDate);
328
+ let isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedEndDate);
329
+ let isEndTimeBetweenSelectedStartAndEndTime = endTime.isBetween(selectedStartDate, selectedEndDate);
330
+
331
+ return (
332
+ (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeBetweenSelectedStartAndEndTime) ||
333
+ (isStartTimeSameAsSelectedStartTime && isEndTimeSameAsSelectedEndTime) ||
334
+ (isStartTimeSameAsSelectedStartTime && isEndTimeBetweenSelectedStartAndEndTime) ||
335
+ (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeSameAsSelectedEndTime)
336
+ );
337
+ }
338
+
339
+ returnDataForFromAndToTimeRange(obj: any, selectedData: any, key: any) {
340
+ let format = "HH:mm:ss";
341
+ let selectedFromTime = dayjs(selectedData.fromTime, format);
342
+ let selectedToTime = dayjs(selectedData.toTime, format);
343
+ let objTime = obj[key];
344
+
345
+ if (["", "-", null].includes(objTime)) {
346
+ return false;
347
+ }
348
+ if (selectedData.includeMulti && obj[key] == "<multi>") {
349
+ return true;
350
+ }
351
+ if (!selectedData.includeMulti && obj[key] == "<multi>") {
352
+ return false;
353
+ }
354
+ if (selectedData.includeZero && obj[key] == "0") {
355
+ return true;
356
+ }
357
+ if (!selectedData.includeZero && obj[key] == "0") {
358
+ return false;
359
+ }
360
+ if (!selectedData.includeTimeRange) {
361
+ return false;
362
+ }
363
+
364
+
365
+ let dayjsTime = dayjs(objTime,format);
366
+
367
+ let isObjTimeSameAsSelectedFromTime = dayjsTime.isSame(selectedFromTime);
368
+ let isObjTimeSameAsSelectedToTime = dayjsTime.isSame(selectedToTime);
369
+ let isObjTimeBetweenSelectedFromTimeAndToTime = dayjsTime.isBetween(selectedFromTime, selectedToTime);
370
+
371
+ return (
372
+ isObjTimeSameAsSelectedFromTime ||
373
+ isObjTimeSameAsSelectedToTime ||
374
+ isObjTimeBetweenSelectedFromTimeAndToTime
375
+ );
376
+ }
377
+
378
+ returnDataForStartAndEndTimeRange(obj: any, selectedData:any, key: string) {
379
+ let format = "HH:mm:ss";
380
+ let selectedFromTime = dayjs(selectedData.fromTime, format);
381
+ let selectedToTime = dayjs(selectedData.toTime, format);
382
+
383
+ if(selectedData.includeMulti && obj[key][0] == "<multi>") {
384
+ return true;
385
+ }
386
+
387
+ if(!selectedData.includeMulti && obj[key][0] == "<multi>") {
388
+ return false;
389
+ }
390
+
391
+ if(selectedData.includeZero && obj[key][0] == "0") {
392
+ return true;
393
+ }
394
+
395
+ if(!selectedData.includeZero && obj[key][0] == "0") {
396
+ return false;
397
+ }
398
+
399
+ if(!selectedData.includeTimeRange) {
400
+ return false;
401
+ }
402
+
403
+ let startTime = dayjs(obj[key][1], format);
404
+ let endTime = dayjs(obj[key][2], format);
405
+
406
+ let isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedFromTime);
407
+ let isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedFromTime, selectedToTime);
408
+ let isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedToTime);
409
+ let isEndTimeBetweenSelectedStartAndEndTime = endTime.isBetween(selectedFromTime, selectedToTime);
410
+
411
+ return (
412
+ (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeBetweenSelectedStartAndEndTime) ||
413
+ (isStartTimeSameAsSelectedStartTime && isEndTimeSameAsSelectedEndTime) ||
414
+ (isStartTimeSameAsSelectedStartTime && isEndTimeBetweenSelectedStartAndEndTime) ||
415
+ (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeSameAsSelectedEndTime)
416
+ );
417
+
418
+ }
419
+
420
+ getDataInTheDateRange(obj: any, value: any, key: any) {
421
+ let parsingFormat: string;
422
+ if (key === "period") {
423
+ parsingFormat = "YYYY-MM-DD";
424
+
425
+ let dayjsStartDate = dayjs(obj.startDate);
426
+ let dayjsEndDate = dayjs(obj.endDate);
427
+
428
+ let startDateIsBetweenSelDate = dayjsStartDate.isBetween(
429
+ value.fromDate,
430
+ value.toDate
431
+ );
432
+ let endDateIsBetweenSelDate = dayjsEndDate.isBetween(
433
+ value.fromDate,
434
+ value.toDate
435
+ );
436
+
437
+
438
+ let startDateIsSameAsSelStartDate = value.fromDate.isSame(dayjsStartDate);
439
+ let endDateIsSameAsSelEndDate = value.toDate.isSame(dayjsEndDate);
440
+
441
+ return (
442
+ (startDateIsBetweenSelDate || startDateIsSameAsSelStartDate) &&
443
+ (endDateIsBetweenSelDate || endDateIsSameAsSelEndDate)
444
+ );
445
+ } else if (key === "AirDate" || key === "flightStartDate" || key === "flightEndDate") {
446
+ parsingFormat = "MM/DD/YYYY";
447
+ let dateIsBetweenSelDate = dayjs(obj[key], parsingFormat).isBetween(value.minSelectedDate, value.maxSelectedDate);
448
+
449
+ let dateIsSameAsSelStartDate = dayjs(obj[key], parsingFormat).isSame(value.minSelectedDate);
450
+ let dateIsSameAsSelEndDate = dayjs(obj[key], parsingFormat).isSame(value.maxSelectedDate);
451
+
452
+ return dateIsBetweenSelDate || dateIsSameAsSelStartDate || dateIsSameAsSelEndDate;
453
+ }
454
+ }
455
+
456
+
457
+ public initializeTimeFilterData(clonedData: any[], key = "startEndTime") {
458
+ let startTimeArr = map(clonedData, "startTime");
459
+ let endTimeArr = map(clonedData, "endTime");
460
+
461
+ startTimeArr.sort((a: any, b: any) => {
462
+ return this.dateTimeFormatService.sortByTimeAscending(a, b);
463
+ });
464
+
465
+ endTimeArr.sort((a: any, b: any) => {
466
+ return this.dateTimeFormatService.sortByTimeDescending(a, b);
467
+ });
468
+
469
+ let initialStartEndTime = {
470
+ startTime: startTimeArr[0],
471
+ endTime: endTimeArr[0],
472
+ };
473
+ this.initialValueMap.set(key, initialStartEndTime);
474
+ }
475
+
476
+ returnColumnFilterStatus(data: any[], headerName: string | number) {
477
+
478
+ if(headerName == "startEndTime"){
479
+ let time = data.map(u => u[headerName][0]);
480
+ let uniqTime = uniq(time);
481
+ return uniqTime.length == 0;
482
+ }
483
+
484
+ return uniq(data.map((u) => u[headerName])).length > 1 ? false : true;
485
+ }
486
+
487
+ getFilterOptionsData(data: any[], clonedData: any[], key?: string){
488
+ let appliedFilterSet = new Set(this.appliedFiltersArray);
489
+ key = key ? key : this.selectedRadio;
490
+ if(appliedFilterSet.has(key)){
491
+ return this.filterData(clonedData, key);
492
+ }
493
+ else{
494
+ return data;
495
+ }
496
+ }
497
+
498
+ reOrderAppliedFiltersState(clonedData: any[], value: any){
499
+ let isFiltered = true;
500
+ isFiltered = this.checkIfFilterIsApplied(clonedData,value);
501
+ this.removeOrChangeLatestFilterIndex(isFiltered);
502
+ return isFiltered;
503
+ }
504
+
505
+ checkIfFilterIsApplied(clonedData: any[],value: any){
506
+ let initialValueOfColumn = sortBy(clonedData.map(item => item[this.selectedRadio]));
507
+ let currentValueOfColumn = sortBy(this.applyFilter(clonedData,value).map(item => item[this.selectedRadio]));
508
+ return !isEqual(initialValueOfColumn, currentValueOfColumn);
509
+ }
510
+
511
+ applyFilter(data: any[],value: any){
512
+ let filteredData = data;
513
+ let key = this.selectedRadio;
514
+ if (this.sliderSet.has(key)) {
515
+ filteredData = filteredData.filter((obj) => obj[key] >= value.min && obj[key] <= value.max);
516
+ }
517
+ else if (key === "startDate" || key === "endDate" || key === "AirDate" || key === "flightStartDate" || key === "flightEndDate" || key == "date" || key == "revisionStartDate") {
518
+ filteredData = filteredData.filter((obj) => this.isObjectInTheRange(obj, value, key));
519
+ } else if (key === "period" ) {
520
+ filteredData = filteredData.filter((obj) => this.getDataInTheDateRange(obj, value, key));
521
+ }
522
+ else if (key === "StartTimeForFilter" || key === "EndTimeForFilter"
523
+ || key === "start_time_for_filter" || key === "end_time_for_filter" || key == "time") {
524
+ filteredData = filteredData.filter((obj) => this.returnDataForFromAndToTimeRange(obj, value, key));
525
+ }
526
+ else if (key === "startEndTimeMulti" || key == "startEndTime" || key === "TimeBand") {
527
+ filteredData = filteredData.filter((obj) => this.returnDataForStartAndEndTimeRange(obj, value, key));
528
+ }
529
+ else if (value.length > 0) {
530
+ filteredData = filteredData.filter((u) => value.includes(u[key]));
531
+ }
532
+ return filteredData;
533
+ }
534
+
535
+ isObjectInTheRange(obj: any, value: {fromDate: dayjs.Dayjs, toDate: dayjs.Dayjs},key:string){
536
+ let objVal = obj[key];
537
+ let dayjsDate = dayjs(objVal);
538
+ let isDateSameAsStartOfTheRange = value.fromDate.isSame(objVal);
539
+ let isDateSameAsEndOfTheRange = value.toDate.isSame(objVal);
540
+ let isDateBetweenTheStartAndEndOfRange = dayjsDate.isBetween(value.fromDate,value.toDate);
541
+ return isDateSameAsStartOfTheRange || isDateSameAsEndOfTheRange || isDateBetweenTheStartAndEndOfRange;
542
+ }
543
+
544
+ updateStateOfTheCurrentFilterTab(sortMap: Map<string, SortType>){
545
+ let activeKey = this.selectedRadio;
546
+ let keyArr: string[] = [];
547
+ Object.keys(this.isFilterSortActive).forEach(key => {
548
+ if(key.includes(activeKey)){
549
+ keyArr = key.split(",");
550
+ this.isFilterSortActive[key] = this.isTooltipActive(keyArr, sortMap);
551
+ }
552
+ });
553
+
554
+ }
555
+
556
+ updateStateOfAllTheKeys(sortMap: Map<string, SortType>){
557
+ Object.keys(this.isFilterSortActive).forEach(key => {
558
+ let keyArr = key.split(",");
559
+ this.isFilterSortActive[key] = this.isTooltipActive(keyArr,sortMap);
560
+ })
561
+ }
562
+
563
+ }
@@ -0,0 +1,136 @@
1
+ // Angular import statements
2
+ import { Injectable } from "@angular/core";
3
+ import { ActivatedRoute, Router } from '@angular/router';
4
+
5
+ // Third party import statements
6
+ import { Subject } from "rxjs";
7
+ import { cloneDeep } from "lodash-es";
8
+
9
+ //sub-entries of anna lib import statement
10
+ import { AnnaFilterService } from "./anna-filter.service";
11
+ import { AnnaSortService } from "./anna-sort.service";
12
+
13
+ @Injectable({
14
+ providedIn: "root",
15
+ })
16
+ export class AnnaGtHelperService {
17
+
18
+ virtualScrollSubject = new Subject();
19
+ constructor(
20
+ private annaFilterService: AnnaFilterService,
21
+ private router: Router,
22
+ private route: ActivatedRoute,
23
+ private annaSortService: AnnaSortService){
24
+ console.log(this.annaFilterService)
25
+ console.log(this.annaSortService)
26
+ }
27
+
28
+ calculateNumberOfSkeletonColumnsForTable(tableHeaders: any[]): number[][] {
29
+ let numberOfSkeletonColumns: any[][] = [];
30
+ var headersInEachColumn = 0;
31
+ tableHeaders.forEach((column) => {
32
+ if (column.visible) {
33
+ headersInEachColumn = 0;
34
+ column.headerInfo.forEach(() => {
35
+ headersInEachColumn++;
36
+ })
37
+ numberOfSkeletonColumns.push(Array(headersInEachColumn).fill(0));
38
+ }
39
+ })
40
+ return numberOfSkeletonColumns;
41
+ }
42
+
43
+ initColumnFilterAndSorting() {
44
+ this.annaFilterService.tooltipSelectedMap = new Map();
45
+ this.annaFilterService.selectedRadio = null;
46
+ this.annaFilterService.appliedFiltersArray = [];
47
+ this.annaFilterService.initialValueMap = new Map();
48
+ this.annaSortService.columnSortState = new Map();
49
+ this.annaSortService.noSortingAppliedData = [];
50
+ }
51
+
52
+
53
+ enableOrDisableClearAllBtn(): boolean {
54
+ let isFilterApplied = this.annaFilterService.appliedFiltersArray.length > 0;
55
+
56
+ let isSortApplied = false;
57
+ for (let val of this.annaSortService.columnSortState.values()) {
58
+ if (val == "ASC" || val == "DESC") {
59
+ isSortApplied = true;
60
+ }
61
+ }
62
+ return isFilterApplied || isSortApplied ? false : true;
63
+ }
64
+
65
+ updateFiltersInURL(){
66
+ let latestQueryParams = this.prepareQueryParamsOnFilter();
67
+ this.router.navigate([],{
68
+ queryParams: { filters: JSON.stringify(latestQueryParams) },
69
+ relativeTo: this.route.parent,
70
+ queryParamsHandling: 'merge'
71
+ });
72
+ }
73
+
74
+ prepareQueryParamsOnFilter() {
75
+ if(!this.annaFilterService.appliedFiltersArray.length &&
76
+ !this.annaFilterService.tooltipSelectedMap.size &&
77
+ !this.annaSortService.columnSortState.size) {
78
+ return null;
79
+ }
80
+
81
+ let query = {
82
+ appliedFilters: this.annaFilterService.appliedFiltersArray,
83
+ selectedFilterData: JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap)),
84
+ sortState: JSON.stringify(Array.from(this.annaSortService.columnSortState))
85
+ }
86
+ return query;
87
+ }
88
+
89
+ initTableFilters(clonedTableData: any) {
90
+ this.annaFilterService.tooltipSelectedMap = new Map();
91
+ this.annaFilterService.selectedRadio = null;
92
+ this.annaFilterService.appliedFiltersArray = [];
93
+
94
+ this.annaSortService.columnSortState = new Map();
95
+
96
+ this.annaSortService.noSortingAppliedData = cloneDeep(clonedTableData);
97
+ this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);
98
+ }
99
+
100
+ initFilters(){
101
+ this.annaFilterService.tooltipSelectedMap = new Map();
102
+ this.annaFilterService.appliedFiltersArray = [];
103
+ }
104
+
105
+ setDataAsPerPersistingFilter(isPersistingFilter: boolean, clonedTable: any, filters: any): any{
106
+ let usersTable;
107
+ if(isPersistingFilter){
108
+ usersTable = this.annaFilterService.filterData(clonedTable, "");
109
+ this.annaSortService.noSortingAppliedData = cloneDeep(usersTable);
110
+
111
+ this.annaSortService.columnSortState = new Map(JSON.parse(filters.sortState));
112
+ this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);
113
+ usersTable = this.callSort(usersTable);
114
+ }
115
+ else {
116
+ usersTable = clonedTable;
117
+ this.annaSortService.noSortingAppliedData = cloneDeep(usersTable);
118
+ }
119
+ return usersTable;
120
+ }
121
+
122
+ callSort(usersTable: any): any {
123
+ for (let [key, value] of this.annaSortService.columnSortState) {
124
+ if (value == "ASC") {
125
+ usersTable = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(true, usersTable, key);
126
+ }
127
+ else if (value == "DESC") {
128
+ usersTable = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(false, usersTable, key);
129
+ }
130
+ }
131
+ return usersTable;
132
+ }
133
+
134
+
135
+
136
+ }