@annalib/anna-core 20.2.21 → 20.2.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -28
- package/esm2022/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +3 -3
- package/esm2022/lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component.mjs +3 -3
- package/esm2022/lib/anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component.mjs +3 -3
- package/esm2022/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.mjs +3 -3
- package/esm2022/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +3 -3
- package/esm2022/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +3 -3
- package/esm2022/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +3 -3
- package/esm2022/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +3 -3
- package/esm2022/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +3 -3
- package/esm2022/lib/anna-core-shared-lib/constants/shared.constant.mjs +4 -1
- package/esm2022/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +12 -1
- package/esm2022/lib/anna-core-shared-lib/models/anna-sort.model.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/services/anna-filter.service.mjs +14 -1
- package/esm2022/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/services/anna-number-format.service.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/services/anna-persisting-filter.service.mjs +1 -1
- package/esm2022/lib/anna-core-shared-lib/services/anna-sort.service.mjs +1 -1
- package/esm2022/lib/anna-core.module.mjs +1 -1
- package/esm2022/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +3 -3
- package/esm2022/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +3 -3
- package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component.mjs +3 -3
- package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component.mjs +3 -3
- package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component.mjs +3 -3
- package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.mjs +3 -3
- package/esm2022/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +21 -3
- package/esm2022/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +3 -3
- package/esm2022/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +3 -3
- package/esm2022/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.mjs +1 -1
- package/esm2022/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +1 -1
- package/esm2022/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +1 -1
- package/esm2022/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/annalib-anna-core.mjs +82 -37
- package/fesm2022/annalib-anna-core.mjs.map +1 -1
- package/lib/anna-core-shared-lib/constants/shared.constant.d.ts +3 -0
- package/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +19 -9
- package/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +1 -0
- package/package.json +1 -1
- package/src/lib/anna-common-scss/_animate.scss +27 -27
- package/src/lib/anna-common-scss/_application-spacing.scss +7 -7
- package/src/lib/anna-common-scss/_bootstrap-tooltip.scss +27 -27
- package/src/lib/anna-common-scss/_button.scss +18 -18
- package/src/lib/anna-common-scss/_colors.scss +107 -107
- package/src/lib/anna-common-scss/_common-order-listing-table.scss +176 -172
- package/src/lib/anna-common-scss/_custom-anna-datepicker.scss +14 -14
- package/src/lib/anna-common-scss/_customDropdown.scss +123 -123
- package/src/lib/anna-common-scss/_dashboard-partials.scss +106 -106
- package/src/lib/anna-common-scss/_date-picker-form.scss +87 -87
- package/src/lib/anna-common-scss/_easy-filter.scss +138 -138
- package/src/lib/anna-common-scss/_edit-filter-popup.scss +70 -70
- package/src/lib/anna-common-scss/_filters.scss +712 -712
- package/src/lib/anna-common-scss/_font.scss +9 -9
- package/src/lib/anna-common-scss/_fonts.scss +86 -86
- package/src/lib/anna-common-scss/_generic-modal.scss +63 -63
- package/src/lib/anna-common-scss/_generic-table-common.scss +198 -198
- package/src/lib/anna-common-scss/_gt-table.scss +425 -425
- package/src/lib/anna-common-scss/_icons.scss +3 -0
- package/src/lib/anna-common-scss/_legend.scss +11 -11
- package/src/lib/anna-common-scss/_mat-button-toggle.scss +38 -38
- package/src/lib/anna-common-scss/_mat-menu.scss +17 -17
- package/src/lib/anna-common-scss/_mixins.scss +187 -187
- package/src/lib/anna-common-scss/_modal.scss +37 -37
- package/src/lib/anna-common-scss/_popup-filter-toggle-button.scss +36 -36
- package/src/lib/anna-common-scss/_scrollbar.scss +14 -14
- package/src/lib/anna-common-scss/_sort.scss +30 -30
- package/src/lib/anna-common-scss/_toggle.scss +86 -86
- package/src/lib/anna-common-scss/style.scss +1 -1
- package/src/lib/anna-common-scss/third-party-lib/_angular-material-mat-radio.scss +25 -25
- package/src/lib/anna-common-scss/third-party-lib/_anna-mat-button-toggle-group-size-lg.scss +34 -34
- package/src/lib/anna-common-scss/third-party-lib/_mat-autocomplete.scss +31 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annalib-anna-core.mjs","sources":["../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-global-config.service.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.html","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-tooltip.model.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-sort.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-sort.model.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-filter.service.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-generic-table.service.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.html","../../../projects/anna-core/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","../../../projects/anna-core/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core.module.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-number-format.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-persisting-filter.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/constants/shared.constant.ts","../../../projects/anna-core/src/public-api.ts","../../../projects/anna-core/src/annalib-anna-core.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { memoize } from 'lodash-es';\n\n@Pipe({\n name: 'AnnafilterSearchedText',\n standalone: true,\n})\nexport class AnnaFilterSearchedTextPipe implements PipeTransform {\n callFilter = memoize(this.filter, (...args) => this.filter(args[0], args[1], args[2]));\n\n transform(items: any[], searchText: any, keyName?: any): any[] {\n return this.callFilter(items, searchText, keyName);\n }\n\n filter(items: any[], searchText: string, keyName?: any): any[] {\n if (!items) return [];\n if (!searchText) return items;\n searchText = searchText.toString().toLowerCase();\n\n // if keyName is an array then loop through all the keynames\n if (keyName && typeof keyName == 'object') {\n let isFoundAtleastOnce = false;\n let isFound: any[];\n\n for (const key of keyName) {\n isFound = items.filter((item) => item[key].toString().toLowerCase().includes(searchText));\n if (isFound.length) {\n isFoundAtleastOnce = true;\n break;\n }\n }\n return isFoundAtleastOnce ? isFound : [];\n } else {\n //if keyName is undefined every key will be considered for filtering.\n let searchResult = [];\n if (!keyName)\n searchResult = items.filter(\n (item) =>\n Object.values(item).filter((n) => (n ? n.toString().toLowerCase().includes(searchText) : false))\n .length > 0,\n );\n else if (keyName == 'NoKey') {\n searchResult = items.filter((item) => item.toString().toLowerCase().includes(searchText));\n } else {\n searchResult = items.filter((item) =>\n item[keyName] ? item[keyName].toString().toLowerCase().includes(searchText) : false,\n );\n }\n return searchResult;\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\n@Component({\n selector: 'anna-core-no-data-lib',\n templateUrl: './anna-no-data.component.html',\n styleUrls: ['./anna-no-data.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class AnnaNoDataComponent implements OnInit {\n @Input() width;\n @Input() marginTop;\n message: string;\n constructor() {\n this.width = '48%';\n this.marginTop = '1.25rem';\n }\n\n ngOnInit() {\n this.message = 'No data to display';\n }\n}\n","<div\n [style.marginRight]=\"width\"\n [style.marginTop]=\"marginTop\"\n class=\"no-data\"\n>\n <label>{{ message }}</label>\n</div>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'anna-deleted-order-icon-template',\n templateUrl: './anna-deleted-order-icon-template.component.html',\n styleUrls: ['./anna-deleted-order-icon-template.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class AnnaDeletedOrderIconTemplateComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<i class=\"mdi mdi-file-remove-outline\"></i>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'anna-buyer-approval-icon-template',\n templateUrl: './anna-buyer-approval-icon-template.component.html',\n styleUrls: ['./anna-buyer-approval-icon-template.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgTemplateOutlet],\n})\nexport class AnnaBuyerApprovalIconTemplateComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-container [ngTemplateOutlet]=\"buyerApprovalIcon\"></ng-container>\n\n<ng-template #buyerApprovalIcon>\n <svg\n width=\"15px\"\n height=\"15px\"\n viewBox=\"0 0 20 20\"\n >\n <g\n id=\"Awaiting-Buyer-Approval-icon\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g\n id=\"time-left\"\n transform=\"translate(3.000000, 2.000000)\"\n fill=\"#4A4A4A\"\n fill-rule=\"nonzero\"\n >\n <path\n d=\"M6.23157622,14.1696467 C5.70535057,14.0721422 5.2005579,13.9061054 4.72188769,13.6745242 C4.71622258,13.6714711 4.71115545,13.6679958 4.70520709,13.6652025 C4.59240848,13.6104091 4.47979871,13.551718 4.37065094,13.4903961 C4.37027327,13.4899414 4.36958087,13.4896491 4.36898288,13.4893893 C4.16872129,13.37558 3.97327504,13.2496557 3.78339947,13.1117139 C1.01467199,11.0989392 0.348958764,7.13679055 2.29945571,4.27950803 C2.72358352,3.65842885 3.23684237,3.14027823 3.80904983,2.72960334 C3.81609974,2.72453649 3.82314965,2.71950212 3.83013662,2.71440279 C5.84650619,1.28061347 8.58442178,1.183986 10.7254867,2.65733574 L10.2656372,3.34301728 C10.1377946,3.53386873 10.2164452,3.67294733 10.4402485,3.65216024 L12.4377343,3.46760989 C12.6618209,3.4468228 12.7958322,3.24677957 12.7355617,3.0234483 L12.1991703,1.02899228 C12.1391202,0.805401178 11.9853754,0.778637804 11.8574069,0.969456765 L11.3964873,1.6567623 C9.82523796,0.568265989 7.94067659,0.153206329 6.0701521,0.487943386 C5.88175576,0.521592483 5.69600314,0.562776899 5.51279981,0.610717118 C5.51138354,0.610976957 5.51025052,0.611139356 5.50911749,0.611399194 C5.50203611,0.613185585 5.4948603,0.615556612 5.48796775,0.617537881 C3.8749854,1.04500483 2.46767797,2.01585923 1.46347449,3.40105873 C1.4550083,3.41141979 1.44629033,3.4215535 1.43829623,3.432824 C1.40490356,3.47923766 1.37176268,3.52672316 1.33931419,3.57420867 C1.28625101,3.65203032 1.23394317,3.73180077 1.18390138,3.81157121 C1.17763828,3.82118524 1.17285441,3.83096167 1.16737814,3.84067314 C0.338698623,5.1658824 -0.0610062726,6.69795566 0.00754154337,8.25770173 C0.00769890751,8.26283354 0.00741565207,8.26799784 0.00754154337,8.27325957 C0.0141823097,8.42562242 0.0258902012,8.58009646 0.0417839785,8.73216699 C0.0426337448,8.7419759 0.0447424242,8.75126512 0.0463475384,8.76107403 C0.0627763537,8.91398904 0.0833910551,9.06726132 0.109230246,9.22050113 C0.371839509,10.7840149 1.08652445,12.1909434 2.15745032,13.2856758 C2.15993667,13.2882417 2.16251744,13.291035 2.16503527,13.2936983 C2.16591651,13.2947052 2.16689216,13.2952249 2.16774193,13.2961668 C2.45546651,13.5890373 2.7684323,13.8599191 3.10541185,14.1048494 C3.98728044,14.7461311 4.9692641,15.1700252 6.02385557,15.3653264 C6.3438398,15.424667 6.64950389,15.2048436 6.70691032,14.8747836 C6.76428528,14.5444963 6.55146603,14.2287924 6.23157622,14.1696467 Z\"\n id=\"Path\"\n ></path>\n <path\n d=\"M9.22237925,14.6588011 C9.29073073,14.9263505 9.1292489,15.198652 8.86169949,15.2670034 C8.51639563,15.355219 8.1641424,15.4188128 7.8069689,15.4570516 C7.53239558,15.4864472 7.28598003,15.2876915 7.25658436,15.0131182 C7.22718869,14.7385449 7.42594445,14.4921293 7.70051776,14.4627336 C8.01004537,14.4295958 8.31515603,14.3745129 8.61417689,14.2981213 C8.8817263,14.2297698 9.15402777,14.3912517 9.22237925,14.6588011 Z M12.5552524,12.2886551 C12.7611952,12.4726175 12.7790139,12.7886982 12.5950515,12.994641 C12.3569806,13.2611574 12.1001968,13.5104915 11.8267859,13.7406023 C11.6155121,13.9184167 11.3000937,13.8912925 11.1222793,13.6800187 C10.9444648,13.4687448 10.9715891,13.1533264 11.1828629,12.975512 C11.4200152,12.7759175 11.6427598,12.5596351 11.8492666,12.3284542 C12.033229,12.1225114 12.3493096,12.1046927 12.5552524,12.2886551 Z M13.9945063,8.57622811 C14.2674538,8.61811209 14.4547678,8.87333344 14.4128838,9.14628095 C14.3584322,9.50112883 14.2787427,9.85020038 14.1746496,10.1914009 C14.0940709,10.4555252 13.8146338,10.6043183 13.5505094,10.5237395 C13.2863851,10.4431608 13.137592,10.1637237 13.2181708,9.89959931 C13.3082912,9.6041989 13.3772907,9.30195366 13.4244534,8.99460564 C13.4663374,8.72165813 13.7215588,8.53434413 13.9945063,8.57622811 Z M13.8741743,4.99628976 C14.0173723,5.32357494 14.1370467,5.66111195 14.2320931,6.00667963 C14.305325,6.27293459 14.1488489,6.54814305 13.8825939,6.62137492 C13.6163389,6.6946068 13.3411305,6.53813067 13.2678986,6.27187571 C13.1856167,5.97271686 13.0820133,5.68050756 12.958028,5.39713383 C12.847338,5.14414702 12.9626923,4.84932868 13.2156791,4.73863865 C13.4686659,4.62794862 13.7634843,4.74330295 13.8741743,4.99628976 Z\"\n id=\"Combined-Shape\"\n ></path>\n <path\n d=\"M6.49684035,4 C6.22234237,4 6,4.21290493 6,4.47514225 L6,9.20888548 L10.5252942,11.4469308 C10.5981282,11.4830116 10.6761155,11.5 10.7528554,11.5 C10.9325937,11.5 11.106194,11.4063595 11.1944548,11.2429754 C11.3203307,11.0097848 11.2250786,10.7233052 10.9813357,10.6028789 L6.9931227,8.63027395 L6.9931227,4.47514225 C6.99308988,4.21290493 6.77101009,4 6.49684035,4 Z\"\n id=\"Path\"\n ></path>\n </g>\n </g>\n </svg>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'anna-notify-icon-template',\n templateUrl: './anna-notify-icon-template.component.html',\n styleUrls: ['./anna-notify-icon-template.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class AnnaNotifyIconTemplateComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<i class=\"mdi mdi-bell\"></i>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'anna-rejected-icon-template',\n templateUrl: './anna-rejected-icon-template.component.html',\n styleUrls: ['./anna-rejected-icon-template.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgTemplateOutlet],\n})\nexport class AnnaRejectedIconTemplateComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-container [ngTemplateOutlet]=\"rejectedIcon\"></ng-container>\n\n<ng-template #rejectedIcon>\n <svg\n width=\"15px\"\n height=\"15px\"\n viewBox=\"0 0 20 20\"\n >\n <g\n id=\"Buyer-rejected-icon\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <path\n d=\"M15.7822266,4.21777344 C14.3671875,2.80276367 12.4951465,2 10.5,2 C6.37918945,2 3,5.37253906 3,9.5 C3,13.6296289 6.37133789,17 10.5,17 C14.6105273,17 18,13.6429004 18,9.5 C18,7.50485352 17.1972656,5.6327832 15.7822266,4.21777344 Z M10.5,15.2128906 C7.34220703,15.2128906 4.78710938,12.664502 4.78710938,9.5 C4.78710938,8.26950195 5.17382812,7.10055664 5.88574219,6.13375977 L13.8662402,14.1054395 C12.8993848,14.8261719 11.730498,15.2128906 10.5,15.2128906 Z M15.1054688,12.8661816 L7.13375977,4.88574219 C8.10061523,4.17382813 9.26950195,3.78710938 10.5,3.78710938 C13.6578809,3.78710938 16.2128906,6.33549805 16.2128906,9.5 C16.2128906,10.7304395 15.8261719,11.8993848 15.1054688,12.8661816 Z\"\n id=\"Shape\"\n fill=\"#4A4A4A\"\n fill-rule=\"nonzero\"\n ></path>\n </g>\n </svg>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'anna-live-icon-template',\n templateUrl: './anna-live-icon-template.component.html',\n styleUrls: ['./anna-live-icon-template.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgTemplateOutlet],\n})\nexport class AnnaLiveIconTemplateComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-container [ngTemplateOutlet]=\"liveIcon\"></ng-container>\n<ng-template #liveIcon>\n <svg\n width=\"15px\"\n height=\"15px\"\n viewBox=\"0 0 20 20\"\n >\n <g\n id=\"Live-Icon\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g\n id=\"next\"\n transform=\"translate(2.000000, 2.000000)\"\n fill-rule=\"nonzero\"\n >\n <path\n d=\"M8,0 C3.58171139,0 0,3.58171139 0,8 C0,12.4182886 3.58171139,16 8,16 C12.4182886,16 16,12.4182886 16,8 C15.9950435,3.58379835 12.4162343,0.00498913721 8,0 Z\"\n id=\"Path\"\n fill=\"#C2E361\"\n ></path>\n <path\n d=\"M8,16 C3.58171139,16 0,12.4182633 0,7.9999837 C0,3.58170409 3.58171139,0 8,0 C12.4182886,0 16,3.58170409 16,7.9999837 C15.9950435,12.416209 12.4162343,15.9950109 8,16 Z M8,0.695640832 C3.96590756,0.695640832 0.69564225,3.96589948 0.69564225,7.9999837 C0.69564225,12.0340679 3.96590756,15.3043266 8,15.3043266 C12.0340924,15.3043266 15.3043578,12.0340679 15.3043578,7.9999837 C15.2997599,3.96782339 12.0322011,0.700238655 8,0.695640832 Z\"\n id=\"Shape\"\n fill=\"#8BAC2A\"\n ></path>\n <circle\n id=\"Oval\"\n fill=\"#8BAC2A\"\n cx=\"8\"\n cy=\"8\"\n r=\"4\"\n ></circle>\n </g>\n </g>\n </svg>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'anna-pay-for-performance-icon-template',\n templateUrl: './anna-pay-for-performance-icon-template.component.html',\n styleUrls: ['./anna-pay-for-performance-icon-template.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgTemplateOutlet],\n})\nexport class AnnaPayForPerformanceIconTemplateComponent implements OnInit {\n @Input() isTitle: boolean;\n @Input() color: string;\n @Input() width: string;\n @Input() height: string;\n constructor() {}\n\n ngOnInit() {}\n}\n","<ng-container\n [ngTemplateOutlet]=\"PayForPerformanceIcon\"\n [ngTemplateOutletContext]=\"{ color: color, width: width, height: height }\"\n>\n</ng-container>\n\n<ng-template\n #PayForPerformanceIcon\n let-color=\"color\"\n let-width=\"width\"\n let-height=\"height\"\n>\n <svg\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n viewBox=\"0 0 20 20\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <g\n id=\"Page-1\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g\n id=\"02.-PAY-FOR-PERFORMANCE-MARKED\"\n transform=\"translate(-100.000000, -537.000000)\"\n [attr.fill]=\"color\"\n fill-rule=\"nonzero\"\n >\n <g\n id=\"PFP\"\n transform=\"translate(100.000000, 537.000000)\"\n >\n <path\n d=\"M20,3.125 L20,8.3984375 C20,8.82995605 19.6502686,9.1796875 19.21875,9.1796875 C18.7872314,9.1796875 18.4375,8.82995605 18.4375,8.3984375 L18.4375,3.125 C18.4375,2.26348875 17.7365112,1.5625 16.875,1.5625 L3.125,1.5625 C2.26348875,1.5625 1.5625,2.26348875 1.5625,3.125 L1.5625,16.875 C1.5625,17.7365112 2.26348875,18.4375 3.125,18.4375 L12.96875,18.4375 C13.4002686,18.4375 13.75,18.7872314 13.75,19.21875 C13.75,19.6502686 13.4002686,20 12.96875,20 L3.125,20 C1.40182496,20 0,18.598175 0,16.875 L0,3.125 C0,1.40182496 1.40182496,0 3.125,0 L16.875,0 C18.598175,0 20,1.40182496 20,3.125 Z M15.9622314,5.43584332 C15.9447753,5.38514929 15.9230346,5.33649554 15.8936766,5.29255022 C15.8924071,5.290196 15.891455,5.28799875 15.8901855,5.28580147 C15.8589232,5.23981585 15.8206786,5.19995115 15.7789427,5.16322545 C15.7689451,5.15427945 15.7584715,5.1459612 15.7475217,5.13764299 C15.7022947,5.10280065 15.6545285,5.07203893 15.6008908,5.04975236 C15.6008908,5.04975236 15.6008908,5.04975236 15.6005734,5.04975236 C15.5488399,5.02825056 15.4929805,5.01600867 15.4358516,5.00863213 C15.4218867,5.00674875 15.4082392,5.00549317 15.3942744,5.00455147 C15.3791987,5.0036098 15.3652338,5 15.3499994,5 L13.0749975,5 C12.7161959,5 12.4249969,5.28799875 12.4249969,5.64285714 C12.4249969,5.99771553 12.7161959,6.28571429 13.0749975,6.28571429 L13.7624492,6.28571429 L11.4499961,8.53571429 C11.4415854,8.52708216 11.4320639,8.5182931 11.4230185,8.5102888 L10.4034253,7.61160714 C9.89545371,7.12554061 9.08263561,7.13071987 8.58291595,7.62416295 L3.19264032,12.9001116 C2.937623,13.1498152 2.93555998,13.557094 3.18787956,13.8094657 C3.31530888,13.9362793 3.48225238,14 3.64998933,14 C3.8153459,14 3.98054383,13.9383196 4.10733834,13.8141741 L9.5,8.53571429 C9.50840503,8.54434641 9.51792652,8.55313547 9.52697193,8.56113977 L10.5462477,9.45982143 C10.7899979,9.69320244 11.1100788,9.82142857 11.4499961,9.82142857 C11.7970545,9.82142857 12.1233243,9.68770926 12.3651702,9.44852121 L14.6999989,7.1770194 L14.6999989,7.89285714 C14.6999989,8.24771553 14.9911979,8.53571429 15.3499994,8.53571429 C15.708801,8.53571429 16,8.24771553 16,7.89285714 L16,5.64285714 C16,5.58431572 15.9895264,5.52844239 15.9746094,5.47445244 C15.9711181,5.46126884 15.9668335,5.44871304 15.9622314,5.43584332 Z M17.7789307,14.21875 L17.0629883,14.21875 C16.71875,14.21875 16.4280701,13.9146423 16.4280701,13.5546875 L16.4280701,13.2698059 C16.4280701,12.9200745 16.7010498,12.65625 17.0629883,12.65625 L17.7400207,12.65625 C17.9388428,12.65625 18.1446838,12.7894592 18.1446838,13.0123902 C18.1446838,13.4437561 18.4945679,13.7936402 18.9259338,13.7936402 C19.3574524,13.7936402 19.7071838,13.4437561 19.7071838,13.0123902 C19.7071838,12.0761109 19.0158081,11.2947082 18.1048584,11.1273193 L18.1048584,10.625 C18.1048584,10.1934814 17.755127,9.84375 17.3236084,9.84375 C16.8920898,9.84375 16.5423584,10.1934814 16.5423584,10.625 L16.5423584,11.1541748 C16.1557007,11.2454223 15.8015442,11.4382934 15.5142212,11.7193604 C15.0959778,12.1286011 14.8655701,12.6792908 14.8655701,13.2696533 L14.8655701,13.5546875 C14.8655701,14.7824097 15.8512879,15.78125 17.0629883,15.78125 L17.7789307,15.78125 C18.1373596,15.78125 18.4181213,16.053009 18.4181213,16.3999939 L18.4181213,16.5917969 C18.4181213,16.9313049 18.1433105,17.1875 17.7789307,17.1875 L16.615448,17.1875 C16.4233398,17.1875 16.2290955,17.0666504 16.2290955,16.8359375 C16.2290955,16.4044189 15.879364,16.0546875 15.4478455,16.0546875 C15.0163269,16.0546875 14.6665955,16.4044189 14.6665955,16.8359375 C14.6665955,17.8851318 15.4847717,18.7117004 16.5423584,18.7481689 L16.5423584,19.1796875 C16.5423584,19.6112061 16.8920898,19.9609375 17.3236084,19.9609375 C17.755127,19.9609375 18.1048584,19.6112061 18.1048584,19.1796875 L18.1048584,18.7272644 C19.1795349,18.5771179 19.9806213,17.6931763 19.9806213,16.5917969 L19.9806213,16.3999939 C19.9806213,15.8096313 19.7496033,15.2581787 19.3299866,14.8472595 C18.9161682,14.4419861 18.3653259,14.21875 17.7789307,14.21875 Z\"\n id=\"Shape-Copy-9\"\n ></path>\n </g>\n </g>\n </g>\n </svg>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { GtColumnIconEmittedData } from '../../models/anna-generic-data-type.model';\nimport { IconToShow } from '../../models/anna-non-editable-gt-models';\nimport { AnnaDeletedOrderIconTemplateComponent } from '../anna-deleted-order-icon-template/anna-deleted-order-icon-template.component';\nimport { AnnaBuyerApprovalIconTemplateComponent } from '../anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component';\nimport { AnnaNotifyIconTemplateComponent } from '../anna-notify-icon-template/anna-notify-icon-template.component';\nimport { AnnaRejectedIconTemplateComponent } from '../anna-rejected-icon-template/anna-rejected-icon-template.component';\nimport { AnnaLiveIconTemplateComponent } from '../anna-live-icon-template/anna-live-icon-template.component';\nimport { AnnaPayForPerformanceIconTemplateComponent } from '../anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'anna-core-anna-icon-column',\n templateUrl: './anna-icon-column.component.html',\n styleUrls: ['./anna-icon-column.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n AnnaPayForPerformanceIconTemplateComponent,\n AnnaLiveIconTemplateComponent,\n AnnaRejectedIconTemplateComponent,\n AnnaNotifyIconTemplateComponent,\n AnnaBuyerApprovalIconTemplateComponent,\n AnnaDeletedOrderIconTemplateComponent,\n ],\n})\nexport class AnnaIconColumnComponent implements OnInit {\n @Input() componentName: string;\n @Input() iconToShow: IconToShow;\n // @Input() objectKey: string;\n @Input() dataObject: any;\n PfpIconActiveColor = '#9B1B93';\n PfpIconDisableColor = 'rgba(189,189,189,0.5)';\n @Output() onColumnIconClicked = new EventEmitter<GtColumnIconEmittedData>();\n\n constructor() {}\n\n ngOnInit(): void {}\n\n svgIconClicked(rowData: any, key: string) {\n this.onColumnIconClicked.emit({ data: rowData, key: key });\n }\n}\n","<span\n *ngIf=\"iconToShow == 'PAY_FOR_PERFORMANCE_ACTIVE'\"\n class=\"cursor-not-allowed\"\n (click)=\"$event.stopPropagation()\"\n>\n <anna-pay-for-performance-icon-template\n [color]=\"PfpIconActiveColor\"\n [width]=\"'15px'\"\n [height]=\"'15px'\"\n >\n </anna-pay-for-performance-icon-template>\n</span>\n<span\n *ngIf=\"iconToShow == 'PAY_FOR_PERFORMANCE'\"\n (click)=\"svgIconClicked(dataObject, 'payForPerformance')\"\n>\n <anna-pay-for-performance-icon-template\n [color]=\"PfpIconDisableColor\"\n [width]=\"'15px'\"\n [height]=\"'15px'\"\n >\n </anna-pay-for-performance-icon-template>\n</span>\n\n<anna-live-icon-template *ngIf=\"iconToShow == 'LIVE'\"></anna-live-icon-template>\n\n<anna-rejected-icon-template *ngIf=\"iconToShow == 'REJECTED'\"></anna-rejected-icon-template>\n<anna-notify-icon-template *ngIf=\"iconToShow == 'NOTIFY'\"></anna-notify-icon-template>\n<anna-buyer-approval-icon-template *ngIf=\"iconToShow == 'AWAITING_APPROVAL'\"></anna-buyer-approval-icon-template>\n<anna-deleted-order-icon-template *ngIf=\"iconToShow == 'DELETED_ORDER'\"></anna-deleted-order-icon-template>\n\n<i\n class=\"mdi mdi-alert\"\n *ngIf=\"iconToShow == 'NEED_SELLER_CONFIRMATION'\"\n></i>\n<i\n class=\"mdi mdi-alert\"\n *ngIf=\"iconToShow == 'NEED_BUYER_CONFIRMATION'\"\n></i>\n","import { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[showEllipsisTextOnHover]',\n standalone: true,\n})\nexport class showEllipsisTextOnHoverDirective {\n constructor(private elementRef: ElementRef) {}\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n let domElement = this.elementRef.nativeElement;\n if (domElement.offsetWidth < domElement.scrollWidth || this.checkPositionsInDecimals(domElement)) {\n domElement.title = domElement.textContent == '' ? domElement.value : domElement.textContent;\n } else if (domElement.title) domElement.removeAttribute('title');\n }\n\n checkPositionsInDecimals(domElement: Element): boolean {\n // if we don't have any children element Then we can't calculate and compare anything so we are returning false from here\n if (!domElement.children || (domElement.children && domElement.children.length == 0)) return false;\n\n let elementRect = domElement.getBoundingClientRect();\n let childRect = domElement.children[0].getBoundingClientRect();\n\n let paddingOnRight = window.getComputedStyle(domElement).paddingRight;\n let padding = +(paddingOnRight.endsWith('px') ? paddingOnRight.slice(0, -2) : paddingOnRight);\n\n // If overflow happens then Child element's right side position will be greater than container element's right side position.\n return childRect.right + padding > elementRect.right;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { memoize } from 'lodash-es';\n\n@Pipe({\n name: 'AnnaConvertZeroOrNullOrUndefined',\n standalone: true,\n})\nexport class AnnaConvertZeroOrNullOrUndefinedPipe implements PipeTransform {\n transformer = memoize(this.replace, (...args) => this.replace(args[0], args[1]));\n\n transform(value: any, convertTo: any): number | string {\n return this.transformer(value, convertTo);\n }\n\n replace(value: any, convertTo: any): number | string {\n if (value === 'undefined' || value === null || value === '' || Number(value) === 0) {\n return convertTo;\n }\n return value;\n }\n}\n","// Angular import statements\nimport { Injectable } from '@angular/core';\nimport { NgbDate } from '@ng-bootstrap/ng-bootstrap';\n\n// Third party import statements\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\n// User defined import statements\nexport type NgbDateType = { year: number; month: number; day: number };\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AnnaDateTimeFormatService {\n constructor() {\n dayjs.extend(customParseFormat);\n }\n\n convertToNgbDateStandardFormat(date: any): NgbDateType | NgbDate {\n return {\n year: parseInt(dayjs(date, 'MM/DD/YYYY').format('YYYY')),\n month: parseInt(dayjs(date, 'MM/DD/YYYY').format('M')),\n day: parseInt(dayjs(date, 'MM/DD/YYYY').format('D')),\n };\n }\n\n convertToNgbDate(date: any, parseFormat: any): NgbDateType | NgbDate {\n return {\n year: parseInt(dayjs(date, parseFormat).format('YYYY')),\n month: parseInt(dayjs(date, parseFormat).format('M')),\n day: parseInt(dayjs(date, parseFormat).format('D')),\n };\n }\n\n public static formatToTwelveHrs(time: any, callRemoveZero: boolean) {\n if (time.endsWith('A') || time.endsWith('P')) {\n time = time.substring(0, time.length - 1);\n }\n let tmp = time.split(':');\n let formattedTime = [];\n if (+tmp[0] > 12) {\n formattedTime[0] = (+tmp[0] - 12).toString();\n if (+tmp[0] == 24) formattedTime[2] = 'AM';\n else formattedTime[2] = 'PM';\n } else if (tmp[0] == '12') {\n formattedTime[0] = tmp[0];\n formattedTime[2] = 'PM';\n } else if (tmp[0] == '00') {\n formattedTime[0] = '12';\n formattedTime[2] = 'AM';\n } else {\n formattedTime[0] = tmp[0];\n formattedTime[2] = 'AM';\n }\n formattedTime[1] = tmp[1];\n if (callRemoveZero) formattedTime = AnnaDateTimeFormatService.removeZero(formattedTime);\n return formattedTime;\n }\n\n convertTotwentyFourHrsFormat(time: any, callAddZero: any) {\n let tmp = time.split(/[ :]+/);\n let formattedTime = [];\n if (tmp[0] != '12' && tmp[2] == 'PM') {\n formattedTime[0] = (+tmp[0] + 12).toString();\n } else if (tmp[0] == '12' && tmp[2] == 'AM') {\n formattedTime[0] = '00';\n } else formattedTime[0] = tmp[0].toString();\n formattedTime[1] = tmp[1].toString();\n if (callAddZero) formattedTime = this.addZero(formattedTime);\n return formattedTime;\n }\n\n public static removeZero(time: any) {\n let removedZero;\n let formattedTime = time;\n if (\n time[0] == '01' ||\n time[0] == '02' ||\n time[0] == '03' ||\n time[0] == '04' ||\n time[0] == '05' ||\n time[0] == '06' ||\n time[0] == '07' ||\n time[0] == '08' ||\n time[0] == '09'\n ) {\n removedZero = time[0].toString();\n formattedTime[0] = removedZero.charAt(1);\n formattedTime[1] = time[1];\n formattedTime[2] = time[2];\n }\n return formattedTime;\n }\n\n addZero(time: any) {\n let addedZero;\n let formattedTime = time;\n if (time[1] == '0') time[1] = '0' + time[1];\n if (\n time[0] == '0' ||\n time[0] == '1' ||\n time[0] == '2' ||\n time[0] == '3' ||\n time[0] == '4' ||\n time[0] == '5' ||\n time[0] == '6' ||\n time[0] == '7' ||\n time[0] == '8' ||\n time[0] == '9'\n ) {\n addedZero = '0' + time[0];\n formattedTime[0] = addedZero;\n formattedTime[1] = time[1];\n }\n return formattedTime;\n }\n\n sortByTimeAscending(a: any, b: any) {\n let format = 'MM/DD/YYYY HH:mm:ss';\n a = dayjs('01/01/2001 ' + a, format);\n b = dayjs('01/01/2001 ' + b, format);\n\n let results;\n\n results = a.get('hour') > b.get('hour') ? 1 : a.get('hour') < b.get('hour') ? -1 : 0;\n\n if (results === 0) results = a.get('minute') > b.get('minute') ? 1 : a.get('minute') < b.get('minute') ? -1 : 0;\n\n if (results === 0) results = a.get('second') > b.get('second') ? 1 : a.get('second') < b.get('second') ? -1 : 0;\n\n return results;\n }\n\n sortByTimeDescending(a: any, b: any) {\n let format = 'MM/DD/YYYY HH:mm:ss';\n a = dayjs('01/01/2001 ' + a, format);\n b = dayjs('01/01/2001 ' + b, format);\n\n let results;\n\n results = a.get('hour') < b.get('hour') ? 1 : a.get('hour') > b.get('hour') ? -1 : 0;\n\n if (results === 0) results = a.get('minute') < b.get('minute') ? 1 : a.get('minute') > b.get('minute') ? -1 : 0;\n\n if (results === 0) results = a.get('second') < b.get('second') ? 1 : a.get('second') > b.get('second') ? -1 : 0;\n\n return results;\n }\n\n convertNgbDateToMoment(ngbDate: NgbDate | NgbDateType): string {\n let formatType = 'MM/DD/YYYY';\n let converted = null;\n if (ngbDate && ngbDate.month && ngbDate.day && ngbDate.year) {\n converted = ngbDate.month + '/' + ngbDate.day + '/' + ngbDate.year;\n converted = dayjs(converted).format(formatType);\n }\n return converted;\n }\n\n compareDate(a: string, b: string, isAsc: boolean) {\n return isAsc ? dayjs(a).diff(b) : dayjs(b).diff(a);\n }\n\n public static formatTwentyFourHourTimeToHHMMAFormat(value: any, date?: string): string {\n value = dayjs(date ? date : '01/01/2000 ' + value).format('MM/DD/YYYY HH:mm:ss');\n return value[14] == '0' && value[15] == '0'\n ? dayjs(value, ['MM/DD/YYYY HH:mm:ss']).format('hA').slice(0, -1)\n : dayjs(value, ['MM/DD/YYYY HH:mm:ss']).format('h:mmA').slice(0, -1);\n }\n\n public static formatTwelveHourTimeToHHMMAFormat(timeValue: any, date?: string): string {\n timeValue = dayjs(date ? date : '01/01/2000 ' + timeValue).format('MM/DD/YYYY HH:mm:ss');\n // check if min==00\n return timeValue[14] == '0' && timeValue[15] == '0'\n ? dayjs(timeValue, ['MM/DD/YYYY HH:mm:ss']).format('hA').slice(0, -1)\n : dayjs(timeValue, ['MM/DD/YYYY HH:mm:ss']).format('h:mmA').slice(0, -1);\n }\n\n formatDateAndHHMMATimeToStandardFormat(dateAndTime: any) {\n let standardFormat, date, time;\n if (dateAndTime.includes('|')) {\n date = dateAndTime.slice(0, dateAndTime.indexOf('|'));\n time = dateAndTime.slice(dateAndTime.indexOf('|') + 1, dateAndTime.length).trim();\n\n time = time.slice(0, 2) + ':' + time.slice(2, 4) + ' ' + time.slice(4, 5);\n time = time + 'M';\n standardFormat = date + time;\n } else {\n standardFormat = dateAndTime + ' 00:00 AM';\n }\n return dayjs(standardFormat).format('MM/DD/YYYY hh:mm A');\n }\n\n compare(a: number | string, b: number | string, isAsc: boolean) {\n if (typeof a == 'string' && typeof b == 'string') {\n a = a == '-' ? '0' : a.toLowerCase();\n b = b == '-' ? '0' : b.toLowerCase();\n }\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\n }\n\n sortDataByBroadcastTimeAsc(firstParamTime: string, secondParamTime: string, broadcastTime: string) {\n let format = 'HH:mm:ss';\n\n let a = dayjs(firstParamTime, format);\n let b = dayjs(secondParamTime, format);\n\n let broadcastdayjsDateTime = dayjs(broadcastTime, 'HH:mm:ss');\n\n a = a.isBefore(broadcastdayjsDateTime) ? a.add(1, 'd') : a;\n b = b.isBefore(broadcastdayjsDateTime) ? b.add(1, 'd') : b;\n\n let result = a.isBefore(b) ? -1 : a.isAfter(b) ? 1 : 0;\n return result;\n }\n\n convertNgbDateToMomentInSpecificFormat(ngbDate: NgbDateType, format: string) {\n let converted = null;\n\n if (ngbDate && ngbDate.month && ngbDate.day && ngbDate.year) {\n converted = ngbDate.month + '/' + ngbDate.day + '/' + ngbDate.year;\n converted = dayjs(converted).format(format);\n }\n\n return converted;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n IAngular2MultiSelectSettings,\n INgxAsideSettings,\n INgbDatePickerSettings,\n INgSelectSettings,\n INgxInfiniteScrollSettings,\n INgxSkeletonLoaderSettings,\n IRadioButtonComponentConfig,\n IConfirmationPopupConfig,\n IWeekCalendar,\n ICustomSingleSelect,\n ICustomMultiSelect,\n} from '../models/anna-global-dropdown-config.model';\nimport { IGtHeaderConfig, IGtGeneralConfig } from '../models/anna-non-editable-gt-models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AnnaGlobalConfigService {\n readonly defaultAngular2MultiSelectSettings: IAngular2MultiSelectSettings;\n readonly defaultNgxAsideSettings: INgxAsideSettings;\n readonly defaultNgbDatePickerSettings: INgbDatePickerSettings;\n readonly defaultNgSelectSettings: INgSelectSettings;\n readonly defaultNgxInfiniteScrollSettings: INgxInfiniteScrollSettings;\n readonly defaultNgxSkeletonLoaderSettings: INgxSkeletonLoaderSettings;\n readonly defaultRadioButtonsComponentConfig: IRadioButtonComponentConfig;\n readonly defaultConfirmationPopupConfig: IConfirmationPopupConfig;\n readonly defaultWeekCalendarConfig: IWeekCalendar;\n readonly defaultGtHeaderConfig: IGtHeaderConfig;\n readonly defaultGtGeneralConfig: IGtGeneralConfig;\n readonly defaultSingleSelectConfig: ICustomSingleSelect;\n readonly defaultMultiSelectConfig: ICustomMultiSelect;\n\n /*\n Initializing all default settings\n */\n constructor() {\n this.defaultAngular2MultiSelectSettings = {\n text: 'Select option',\n selectAllText: 'Select All',\n unSelectAllText: 'UnSelect All',\n badgeShowLimit: 1,\n singleSelection: false,\n classes: 'filter-dropdowns',\n enableSearchFilter: true,\n enableCheckAll: true,\n autoPosition: false,\n disabled: false,\n position: 'bottom',\n lazyLoading: false,\n showCheckbox: true,\n maxHeight: 300,\n enableFilterSelectAll: true,\n };\n\n this.defaultNgxAsideSettings = {\n title: '\"Filters\"',\n cancelButtonTitle: '\"Cancel\"',\n submitButtonTitle: '\"Apply\"',\n closeOnEscape: false,\n showOverlay: false,\n showDefaultFooter: false,\n showDefaultHeader: false,\n };\n\n this.defaultNgbDatePickerSettings = {\n autoClose: false,\n placeholder: 'mm-dd-yyyy',\n displayMonths: 1,\n firstDayOfWeek: 1,\n showWeekNumbers: false,\n readonly: true,\n };\n\n this.defaultNgSelectSettings = {\n allowClear: false,\n placeholder: 'Select',\n };\n\n this.defaultNgxInfiniteScrollSettings = {\n infiniteScrollDistance: 1,\n infiniteScrollUpDistance: 2,\n infiniteScrollThrottle: 300,\n scrollWindow: false,\n };\n\n this.defaultNgxSkeletonLoaderSettings = {\n numberOfSkeletonRows: Array(6).fill(0),\n };\n\n this.defaultRadioButtonsComponentConfig = {\n heading: 'Select Option',\n radioButtons: [\n {\n value: 'Yes',\n isDisabled: false,\n label: 'Yes',\n class: '',\n },\n {\n value: 'No',\n isDisabled: false,\n label: 'No',\n class: '',\n },\n ],\n };\n\n this.defaultConfirmationPopupConfig = {\n showCancelButton: true,\n title: 'Are you sure ?',\n showConfirmButton: true,\n cancelButtonLabel: 'No',\n confirmButtonLabel: 'Yes',\n showCloseIcon: true,\n backdrop: 'static',\n windowClass: '',\n size: 'sm',\n keyboard: false,\n };\n\n this.defaultWeekCalendarConfig = {\n firstDayOfWeek: 1,\n showWeekNumbers: true,\n dateFormatToDisplay: 'd MMM y',\n dateFormatForRequest: 'y-MM-dd',\n maxWeeksToShowWithRemainingCount: 2,\n numberOfMonthsToEnableInPast: 1,\n selectMultipleWeeks: false,\n customClass: '',\n emitMultipleWeekObjects: true,\n maxWeeksToSelect: 0,\n showAsDropdown: true,\n selectCurrentWeek: true,\n };\n\n this.defaultGtHeaderConfig = {\n iconColumn: false,\n checkboxColumn: false,\n lastColumnKeys: [],\n };\n\n this.defaultGtGeneralConfig = {\n component: '',\n totalRow: false,\n isHeaderChecked: false,\n disableHeaderCheckbox: false,\n verticalScrollOffsetForFilterTooltip: 0,\n isGrouped: false,\n showAllColumnFilter: true,\n bufferSize: 20,\n page: '',\n };\n\n this.defaultSingleSelectConfig = {\n showSearchBar: false,\n placeholder: 'Select',\n classes: '',\n position: 'BOTTOM',\n maxHeightOfList: 200,\n };\n\n this.defaultMultiSelectConfig = {\n ...this.defaultSingleSelectConfig,\n ...{ showErrorWhenNoOptionSelected: true },\n };\n }\n}\n","// Angular import statements\nimport { DatePipe, NgIf, NgClass } from '@angular/common';\nimport { AfterViewInit, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\n\n// Third party import statements\nimport {\n NgbCalendar,\n NgbDate,\n NgbDatepickerConfig,\n NgbDateStruct,\n NgbInputDatepicker,\n NgbDatepicker,\n} from '@ng-bootstrap/ng-bootstrap';\nimport dayjs from 'dayjs';\nimport { WeekObject } from '../../../anna-core-shared-lib/models/anna-generic-data-type.model';\nimport { IWeekCalendar } from '../../../anna-core-shared-lib/models/anna-global-dropdown-config.model';\nimport { AnnaDateTimeFormatService } from '../../../anna-core-shared-lib/services/anna-date-time-format.service';\nimport { AnnaGlobalConfigService } from '../../../anna-core-shared-lib/services/anna-global-config.service';\nimport { FormsModule } from '@angular/forms';\n\n// User defined import statements\n\n@Component({\n selector: 'anna-core-week-calendar-filter-lib',\n templateUrl: './anna-week-calendar-filter.component.html',\n styleUrls: ['./anna-week-calendar-filter.component.scss'],\n standalone: true,\n imports: [NgIf, FormsModule, NgbInputDatepicker, NgClass, NgbDatepicker],\n})\nexport class AnnaWeekCalendarComponent implements OnInit, OnChanges, AfterViewInit {\n fromDate: NgbDate | null;\n hoveredDate: NgbDate | null = null;\n toDate: NgbDate | null = null;\n today: NgbDate;\n\n model: NgbDateStruct;\n\n weekNumbers: string[] = [];\n pipe: DatePipe;\n dateToDisplay: string = '';\n weekObjects: WeekObject[];\n multiSelectDropdownOpen: boolean = false;\n datepicker: NgbInputDatepicker;\n private formatter: any;\n public formattedStartDate: string;\n public formattedEndDate: string;\n private calendarMap = new Map();\n private flag1: boolean;\n private flag2: boolean;\n @Input('from-date') selectedFromDate: NgbDateStruct;\n @Input('to-date') selectedEndDate: NgbDateStruct;\n @Input('disabled-dates') disabledDates: NgbDate[] = [];\n @Input() maxDate: any;\n @Input() minDate: any;\n\n disabledFunc: any;\n state: any;\n\n //Setting the default values;\n private _defaultValues: IWeekCalendar;\n\n @Input('week-calendar-config') config: IWeekCalendar;\n @Output('apply') applyWeekCalendarChanges = new EventEmitter();\n @Output('toggle-calendar') calendarToggled = new EventEmitter();\n\n ngOnChanges(changes: SimpleChanges): void {\n //if some values are not sent, setting the default values\n this._defaultValues = this.globalConfigService.defaultWeekCalendarConfig;\n this.config = { ...this._defaultValues, ...this.config };\n\n if (this.config.selectCurrentWeek) {\n this.initializeWeekData();\n this.fromDate && this.selectWeek(this.fromDate);\n }\n\n this.formatter = this.formattedDates();\n\n if (this.selectedFromDate && this.selectedEndDate && this.config) {\n // this.selectWeek(this.fromDate);\n this.fromDate = NgbDate.from(this.selectedFromDate);\n this.toDate = NgbDate.from(this.selectedEndDate);\n this.weekNumberGenerator();\n this.displayToUI();\n this.setCalendarMap();\n }\n\n if (this.disabledDates.length > 0) {\n this.disabledFunc = (date: NgbDate, current: { month: number }) => {\n return this.checkIfDateIsDisabled(date);\n };\n }\n }\n\n constructor(\n private calendar: NgbCalendar,\n private datePickerConfig: NgbDatepickerConfig,\n private annaDateTimeFormatService: AnnaDateTimeFormatService,\n private globalConfigService: AnnaGlobalConfigService,\n ) {}\n\n getWeekNumber(week: any, firstDayOfWeek: any) {\n const weekStartDate = dayjs(convertNgbDateToMoment(week[0]), 'MM/DD/YYYY');\n const weekYear = weekStartDate.year();\n const yearStartDate = dayjs(`01/01/${weekYear}`, 'MM/DD/YYYY');\n const weekDay = yearStartDate.day();\n\n const noOfDays = weekStartDate.diff(yearStartDate, 'd') + 1;\n\n function convertNgbDateToMoment(ngbDate: NgbDate): string {\n let formatType = 'MM/DD/YYYY';\n let converted = null;\n if (ngbDate && ngbDate.month && ngbDate.day && ngbDate.year) {\n converted = ngbDate.month + '/' + ngbDate.day + '/' + ngbDate.year;\n converted = dayjs(converted).format(formatType);\n }\n return converted;\n }\n\n function checkIfYearIsBroadcastLeapYear() {\n let isLeapYear = (weekYear % 4 == 0 && weekYear % 100 != 0) || weekYear % 400 == 0;\n return (isLeapYear && (weekDay == 0 || weekDay == 6)) || (!isLeapYear && weekDay == 0);\n }\n\n const isLeapYear = checkIfYearIsBroadcastLeapYear();\n const divider = isLeapYear ? 53 : 52;\n const adder = isLeapYear ? 2 : 1;\n\n let broadcastNumberOfDays = weekDay + noOfDays;\n let broadcastWeekNumber =\n broadcastNumberOfDays % 7 > 0 ? broadcastNumberOfDays / 7 + adder : broadcastNumberOfDays / 7;\n\n if (Math.floor(broadcastWeekNumber % divider) === 0) {\n return divider;\n }\n return Math.floor(broadcastWeekNumber % divider);\n }\n\n ngAfterViewInit(): void {\n // CHANGES@ANNALIB Changed this.\n // this.calendar[\"__proto__\"].getWeekNumber = this.getWeekNumber;\n Object.setPrototypeOf(this.calendar, { getWeekNumber: this.getWeekNumber });\n }\n\n ngOnInit(): void {\n // this.selectWeek(this.fromDate);\n this.setCalendarMap();\n }\n\n initializeWeekData() {\n this.weekObjects = [];\n\n this.fromDate = this.calendar.getToday();\n this.today = this.calendar.getToday();\n\n let backDatedPeriod = JSON.parse(localStorage.getItem('userDetails') || '{}').locking_period_days;\n if (backDatedPeriod < 0) {\n let date: NgbDate = this.calendar.getPrev(this.calendar.getToday(), 'd', Math.abs(backDatedPeriod));\n this.today = NgbDate.from(date);\n this.fromDate = NgbDate.from(date);\n }\n\n // Disable months before numberOfMonthsToEnable\n this.datePickerConfig.markDisabled = (date: NgbDateStruct) => {\n let previousMonth = this.calendar.getPrev(this.today, 'm', this.config.numberOfMonthsToEnableInPast);\n let previousDay = this.calendar.getPrev(previousMonth, 'd', 1);\n return !NgbDate.from(previousDay).before(date);\n };\n this.formatter = this.formattedDates();\n this.flag1 = false;\n this.flag2 = false;\n }\n\n selectWeek(date: NgbDate): void {\n const dateObject = new Date(date.year, date.month - 1, date.day);\n let constructDate = this.buildDate(dateObject);\n\n if (!this.config.selectMultipleWeeks) {\n //Single week selection\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\n this.toDate = this.constructEndDate(dateObject)(constructDate);\n this.weekNumberGenerator();\n } else {\n if (date.before(this.fromDate)) {\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\n if (this.flag1) {\n this.toDate = this.constructEndDate(dateObject)(constructDate);\n }\n this.flag1 = !this.flag1;\n } else if (date.after(this.toDate)) {\n if (this.flag2) {\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\n //this.toDate = this.constructEndDate(dateObject)(constructDate);\n }\n this.flag2 = !this.flag2;\n this.toDate = this.constructEndDate(dateObject)(constructDate);\n } else {\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\n this.toDate = this.constructEndDate(dateObject)(constructDate);\n }\n\n if (this.disabledDates.length > 0) {\n let dayjsStartDate = dayjs(\n this.annaDateTimeFormatService.convertNgbDateToMoment(this.fromDate),\n 'MM/DD/YYYY',\n );\n let dayjsEndDate = dayjs(\n this.annaDateTimeFormatService.convertNgbDateToMoment(this.toDate),\n 'MM/DD/YYYY',\n );\n let ngbDate;\n while (!dayjsStartDate.isSame(dayjsEndDate)) {\n ngbDate = this.annaDateTimeFormatService.convertToNgbDate(dayjsStartDate, 'MM/DD/YYYY');\n if (this.checkIfDateIsDisabled(ngbDate)) {\n break;\n }\n dayjsStartDate.add(1, 'd');\n }\n let newDateObject = new Date(ngbDate.year, ngbDate.month - 1, ngbDate.day - 1);\n let constructDate = this.buildDate(newDateObject);\n this.toDate = this.constructEndDate(newDateObject)(constructDate);\n }\n\n this.weekNumberGenerator();\n }\n\n if (!this.config.showAsDropdown) {\n this.applyChanges();\n }\n }\n\n weekNumberGenerator(): void {\n let dates = [];\n let week = [];\n\n let startDate = NgbDate.from(this.fromDate);\n let endDate = NgbDate.from(this.toDate);\n\n week.push(startDate);\n while (endDate != null && !startDate.equals(endDate)) {\n let date = this.calendar.getNext(startDate, 'd', 1);\n startDate = date;\n week.push(date);\n\n // Collect all days in week to calculate the week number\n if (week.length == 7) {\n dates.push(week);\n week = [];\n }\n }\n if ((this.config.maxWeeksToSelect ?? 0) > 0 && dates.length > (this.config.maxWeeksToSelect ?? 0)) {\n dates.splice(this.config.maxWeeksToSelect ?? 0, dates.length - (this.config.maxWeeksToSelect ?? 0));\n }\n this.selectedDates(dates);\n\n this.weekNumbers = [];\n this.weekObjects = [];\n if (dates.length > 0) {\n for (let date of dates) {\n this.weekNumbers.push(' Week ' + this.calendar.getWeekNumber(date, this.config.firstDayOfWeek));\n let dates = this.formatter(date[0], date[6]);\n let dateObjects = { startDate: dates.formattedStartDate, endDate: dates.formattedEndDate };\n this.weekObjects.push(dateObjects);\n }\n }\n this.displayToUI();\n }\n\n selectedDates(dates: any) {\n this.fromDate = dates[0][0];\n this.toDate = dates[dates.length - 1][6];\n }\n\n formattedDates() {\n let pipe = new DatePipe('en-US');\n let thisObj = this;\n return function (fromDate: NgbDate, toDate: NgbDate) {\n let fromDateObject = new Date(fromDate.year, fromDate.month - 1, fromDate.day);\n let toDateObject = new Date(toDate.year, toDate.month - 1, toDate.day);\n thisObj.formattedStartDate = pipe.transform(fromDateObject, thisObj.config.dateFormatForRequest);\n thisObj.formattedEndDate = pipe.transform(toDateObject, thisObj.config.dateFormatForRequest);\n\n thisObj.dateToDisplay =\n pipe.transform(fromDateObject, thisObj.config.dateFormatToDisplay) +\n ' to ' +\n pipe.transform(toDateObject, thisObj.config.dateFormatToDisplay);\n return thisObj;\n };\n }\n\n displayToUI() {\n if (!this.config.selectMultipleWeeks && this.fromDate && this.toDate) {\n // Display for only Single Week\n this.formatter(this.fromDate, this.toDate);\n } else {\n // Display for Multiple Weeks\n if (this.weekNumbers.length > (this.config.maxWeeksToShowWithRemainingCount ?? 0)) {\n let weekDisplay = [];\n for (let i = 0; i < (this.config.maxWeeksToShowWithRemainingCount ?? 0); i++) {\n weekDisplay.push(this.weekNumbers.shift());\n }\n let remainingWeeks = this.weekNumbers.length;\n this.weekNumbers = [];\n this.weekNumbers.push(weekDisplay + ' +' + remainingWeeks);\n }\n }\n }\n\n constructStartDate(date: Date) {\n let firstDayOfWeek = this.config.firstDayOfWeek;\n return function (constructDate: any) {\n let startDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) - date.getDay() : -6;\n return constructDate(startDay);\n };\n }\n\n constructEndDate(date: Date) {\n let firstDayOfWeek = this.config.firstDayOfWeek;\n return function (constructDate: any) {\n let endDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) + 6 - date.getDay() : 0;\n return constructDate(endDay);\n };\n }\n\n buildDate(date: Date) {\n return function (number: number): NgbDate | null {\n let day = date.getDate() + number;\n const dateObject = new Date(date.getFullYear(), date.getMonth(), day);\n\n let ngbDateObject = {} as NgbDate;\n ngbDateObject.day = day;\n\n if (ngbDateObject.day > 31 || ngbDateObject.day < 1) {\n ngbDateObject.day = dateObject.getDate();\n }\n\n ngbDateObject.month = dateObject.getMonth() + 1;\n ngbDateObject.year = dateObject.getFullYear();\n return NgbDate.from(ngbDateObject);\n };\n }\n\n isHovered(date: NgbDate): boolean | null {\n return (\n this.fromDate &&\n !this.toDate &&\n this.hoveredDate &&\n date.after(this.fromDate) &&\n date.before(this.hoveredDate)\n );\n }\n\n isInside(date: NgbDate): boolean | null {\n return this.toDate && date.after(this.fromDate) && date.before(this.toDate);\n }\n\n isRange(date: NgbDate): boolean | null {\n return (\n date.equals(this.fromDate) ||\n (this.toDate && date.equals(this.toDate)) ||\n this.isInside(date) ||\n this.isHovered(date)\n );\n }\n\n previousWeek(): void {\n if (this.fromDate) {\n this.toDate = this.calendar.getPrev(this.fromDate, 'd', 1);\n this.fromDate = this.calendar.getPrev(this.fromDate, 'd', this.calendar.getDaysPerWeek());\n }\n this.weekNumberGenerator();\n this.applyChanges();\n }\n\n nextWeek(): void {\n if (this.fromDate) {\n this.fromDate = this.calendar.getNext(this.fromDate, 'd', this.calendar.getDaysPerWeek());\n this.toDate = this.calendar.getNext(this.fromDate, 'd', this.calendar.getDaysPerWeek() - 1);\n }\n this.weekNumberGenerator();\n this.applyChanges();\n }\n\n setCalendarMap() {\n let dateObj = { fromDate: this.fromDate, toDate: this.toDate };\n this.calendarMap.set('oldDates', dateObj);\n }\n\n applyChanges() {\n this.multiSelectDropdownOpen = false;\n if (!this.config.emitMultipleWeekObjects) {\n let dates = {} as WeekObject;\n let formattedDates = this.formatter(this.fromDate, this.toDate);\n dates.startDate = formattedDates.formattedStartDate;\n dates.endDate = formattedDates.formattedEndDate;\n this.applyWeekCalendarChanges.emit(dates);\n } else {\n this.applyWeekCalendarChanges.emit(this.weekObjects);\n }\n this.setCalendarMap();\n }\n\n isFocused(value: any) {\n this.calendarToggled.emit(value);\n }\n\n isDropdownOpenedForCalendar(datepicker: NgbInputDatepicker) {\n this.datepicker = datepicker;\n if (this.datepicker.isOpen()) {\n this.revertDates();\n this.datepicker.close();\n this.multiSelectDropdownOpen = false;\n } else {\n this.datepicker.open();\n this.multiSelectDropdownOpen = true;\n }\n }\n\n revertDates() {\n this.multiSelectDropdownOpen = false;\n if (this.calendarMap.get('oldDates')) {\n let dateObj = this.calendarMap.get('oldDates');\n this.fromDate = dateObj.fromDate;\n this.toDate = dateObj.toDate;\n this.weekNumberGenerator();\n this.displayToUI();\n }\n }\n\n checkIfDateIsDisabled(date: any): boolean {\n const validatorFunc = (ngbDate: NgbDate) =>\n ngbDate.year === date.year && ngbDate.month === date.month && ngbDate.day === date.day;\n return this.disabledDates.some(validatorFunc);\n }\n\n closeDatepicker(datepickerRef: any) {\n datepickerRef.close();\n }\n}\n","<form\n class=\"form-inline\"\n *ngIf=\"config.showAsDropdown\"\n>\n <div class=\"form-group hidden\">\n <div class=\"input-group\">\n <input\n name=\"datepicker\"\n class=\"form-control\"\n ngbDatepicker\n #datepicker=\"ngbDatepicker\"\n [autoClose]=\"false\"\n (dateSelect)=\"selectWeek($event)\"\n (closed)=\"isFocused(false)\"\n [displayMonths]=\"1\"\n [dayTemplate]=\"t\"\n [startDate]=\"fromDate!\"\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\n [showWeekNumbers]=\"config.showWeekNumbers\"\n tabindex=\"-1\"\n style=\"display: none\"\n [footerTemplate]=\"footerTemplate\"\n />\n </div>\n </div>\n\n <!--Single week select-->\n <div *ngIf=\"!config.selectMultipleWeeks\">\n <span style=\"position: relative; left: 30px; font-size: 12px\"> {{ weekNumbers }} </span>\n <div class=\"form-group\">\n <div class=\"input-group\">\n <div class=\"single-week\">\n <div class=\"left\">\n <span\n class=\"material-icons next-round-btn\"\n (click)=\"previousWeek()\"\n >\n navigate_next\n </span>\n </div>\n <input\n #dpFromDate\n class=\"form-control\"\n placeholder=\"Select Weeks\"\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\n name=\"dpFromDate\"\n [value]=\"dateToDisplay\"\n [readonly]=\"true\"\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\n />\n <i\n class=\"mdi mdi-menu-down\"\n *ngIf=\"!datepicker.isOpen()\"\n (click)=\"datepicker.open()\"\n ></i>\n <i\n class=\"mdi mdi-menu-up\"\n *ngIf=\"datepicker.isOpen()\"\n (click)=\"isDropdownOpenedForCalendar(datepicker)\"\n ></i>\n <div class=\"right\">\n <span\n class=\"material-icons round-btn\"\n (click)=\"nextWeek()\"\n >\n navigate_next\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!--Multiple week select-->\n <div\n class=\"form-group\"\n *ngIf=\"config.selectMultipleWeeks\"\n >\n <div class=\"input-group\">\n <div class=\"multiple-weeks\">\n <input\n #dpFromDate\n class=\"form-control\"\n placeholder=\"Select Weeks\"\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\n name=\"dpFromDate\"\n [readonly]=\"true\"\n [value]=\"weekNumbers\"\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\n />\n <i\n *ngIf=\"!multiSelectDropdownOpen\"\n class=\"mdi mdi-menu-down multiselect-input-arrow\"\n ></i>\n <i\n *ngIf=\"multiSelectDropdownOpen\"\n class=\"mdi mdi-menu-up multiselect-input-arrow\"\n ></i>\n </div>\n </div>\n </div>\n</form>\n\n<ngb-datepicker\n #weekPicker\n *ngIf=\"!config.showAsDropdown\"\n [displayMonths]=\"1\"\n [startDate]=\"fromDate!\"\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\n [showWeekNumbers]=\"config.showWeekNumbers\"\n [dayTemplate]=\"t\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (dateSelect)=\"selectWeek($event)\"\n [markDisabled]=\"disabledFunc\"\n>\n</ngb-datepicker>\n\n<ng-template #footerTemplate>\n <hr class=\"my-0\" />\n <button\n class=\"btn btn-primary btn-sm m-2 float-right\"\n (click)=\"applyChanges(); closeDatepicker(datepicker)\"\n style=\"background-color: #268bff; color: #ffffff\"\n >\n Apply\n </button>\n <button\n class=\"btn btn-primary btn-sm m-2 float-right\"\n (click)=\"revertDates(); closeDatepicker(datepicker)\"\n style=\"background-color: rgba(38, 139, 255, 0.12); color: #268bff\"\n >\n Cancel\n </button>\n</ng-template>\n\n<ng-template\n #t\n let-date\n let-focused=\"focused\"\n let-disabled=\"disabled\"\n>\n <span\n class=\"custom-day\"\n [class.focused]=\"focused\"\n [class.range]=\"isRange(date)\"\n [class.faded]=\"isHovered(date) || isInside(date)\"\n [class.disabled]=\"disabled\"\n (mouseenter)=\"hoveredDate = date\"\n (mouseleave)=\"hoveredDate = null\"\n >\n {{ date.day }}\n </span>\n</ng-template>\n\n<!--\n\n<hr>\n\n<pre>From: {{ fromDate | json }} </pre>\n<pre>To: {{ toDate | json }} </pre>\n<pre>weekNumbers: {{ weekNumbers | json }} </pre>\n\n-->\n","// Angular import statements\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\n\n//Third party import statements\nimport { NgbDate, NgbDateStruct, NgbInputDatepicker } from '@ng-bootstrap/ng-bootstrap';\nimport { AnnaDateTimeFormatService } from '../../../anna-core-shared-lib/services/anna-date-time-format.service';\nimport dayjs from 'dayjs';\nimport { Placement } from '@ng-bootstrap/ng-bootstrap/util/positioning';\nimport { FormsModule } from '@angular/forms';\nimport { NgIf, NgClass, TitleCasePipe } from '@angular/common';\n\n@Component({\n selector: 'anna-core-calendar-filter-lib',\n templateUrl: './anna-calendar-filter.component.html',\n styleUrls: ['./anna-calendar-filter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, FormsModule, NgbInputDatepicker, NgClass, TitleCasePipe],\n})\nexport class AnnaCalendarFilterComponent implements OnInit, OnChanges {\n @Input() maxDate: any;\n @Input() autoClose: 'inside' | 'outside' | boolean = 'outside';\n @Input() label: string;\n @Input() minDate: any;\n @Input() showLabel: boolean = true;\n @Input() dateFormat: string = 'MM/DD/YYYY';\n @Input() placeholder: string = 'MM/DD/YYYY';\n @Input() disabled: boolean = false;\n @Output() selectedDate = new EventEmitter();\n @Input() selectedFromDate: any;\n @Input() selectedToDate: any;\n @Input() disableFunction: any;\n @Input() showFooterTemplate: boolean = false;\n @Input() placement: Placement[] = ['top-start', 'left', 'bottom-start', 'auto'];\n\n @Output() apply = new EventEmitter();\n @Output() cancel = new EventEmitter();\n fromDate: any;\n toDate: any;\n hoveredDate: any;\n disableApplyBtn: boolean = false;\n dateToBeShownInInput: string = '';\n\n constructor(private annaTimeService: AnnaDateTimeFormatService) {\n this.disableFunction = (date: NgbDateStruct) => {\n return false;\n };\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.setStartAndEndDate();\n this.setInputText();\n }\n\n setStartAndEndDate() {\n this.fromDate = this.selectedFromDate;\n this.toDate = this.selectedToDate;\n }\n\n ngOnInit() {\n this.disableApplyBtn = true;\n // this.fromDate = this.selectedFromDate;\n // this.toDate = this.selectedToDate;\n // this.setInputText();\n }\n\n onDateSelection(date: NgbDate) {\n if (!this.fromDate && !this.toDate) {\n this.fromDate = date;\n } else if (this.fromDate && !this.toDate && (date.after(this.fromDate) || date.equals(this.fromDate))) {\n let isDisabledDatePresent = this.checkIfDisabledDateSelectedInRange(date);\n this.toDate = isDisabledDatePresent ? null : date;\n } else {\n this.toDate = null;\n this.fromDate = date;\n }\n this.selectedDate.emit({ fromDate: this.fromDate, toDate: this.toDate });\n this.disableCalendarApplyBtn();\n this.setInputText();\n }\n\n checkIfDisabledDateSelectedInRange(date: NgbDate) {\n let dayJsStartDate = dayjs(\n this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.fromDate, this.dateFormat),\n this.dateFormat,\n );\n let dayJsEndDate = dayjs(\n this.annaTimeService.convertNgbDateToMomentInSpecificFormat(date, this.dateFormat),\n this.dateFormat,\n );\n\n while (!dayJsStartDate.isSame(dayJsEndDate)) {\n if (\n this.disableFunction(\n this.annaTimeService.convertToNgbDate(dayJsStartDate.format(this.dateFormat), this.dateFormat),\n )\n ) {\n return true;\n } else {\n dayJsStartDate = dayJsStartDate.add(1, 'day');\n }\n }\n }\n\n isHovered(date: NgbDate) {\n return (\n this.fromDate &&\n !this.toDate &&\n this.hoveredDate &&\n date.after(this.fromDate) &&\n date.before(this.hoveredDate)\n );\n }\n\n isInside(date: NgbDate) {\n return this.toDate && date.after(this.fromDate) && date.before(this.toDate);\n }\n\n isRange(date: NgbDate) {\n return (\n date.equals(this.fromDate) ||\n (this.toDate && date.equals(this.toDate)) ||\n this.isInside(date) ||\n this.isHovered(date)\n );\n }\n\n cancelSelection() {\n this.cancel.emit();\n }\n\n applySelection() {\n if (this.fromDate && this.toDate) {\n let dateObj = { fromDate: this.fromDate, toDate: this.toDate };\n this.apply.emit(dateObj);\n }\n }\n\n disableCalendarApplyBtn() {\n this.disableApplyBtn = !(this.fromDate && this.toDate);\n }\n\n setInputText() {\n if (this.fromDate && this.toDate) {\n this.dateToBeShownInInput = `${this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.fromDate, this.dateFormat)} - ${this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.toDate, this.dateFormat)}`;\n } else if (this.fromDate) {\n this.dateToBeShownInInput = `${this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.fromDate, this.dateFormat)}`;\n } else {\n this.dateToBeShownInInput = null;\n }\n }\n\n datepickerClosed() {\n //Required for Pending ec order\n if (this.showFooterTemplate) {\n this.selectedFromDate = this.fromDate = null;\n this.selectedToDate = this.toDate = null;\n this.setInputText();\n this.disableApplyBtn = true;\n }\n }\n}\n","<!-- container=\"body\"\ndatepickerClass = \"calendar-filter\" -->\n\n<p\n class=\"calendar-label\"\n *ngIf=\"showLabel\"\n>\n {{ label | titlecase }}\n</p>\n<form>\n <div\n class=\"padding-class\"\n style=\"padding: 0 12px\"\n >\n <div class=\"dp-hidden position-absolute\">\n <div class=\"input-group\">\n <input\n name=\"datepicker\"\n class=\"form-control\"\n ngbDatepicker\n #datepicker=\"ngbDatepicker\"\n (dateSelect)=\"onDateSelection($event)\"\n [displayMonths]=\"1\"\n [dayTemplate]=\"t\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [autoClose]=\"autoClose\"\n [startDate]=\"fromDate\"\n [markDisabled]=\"disableFunction\"\n [footerTemplate]=\"footerTemplate\"\n navigation=\"select\"\n (closed)=\"datepickerClosed()\"\n [placement]=\"placement\"\n />\n <ng-template\n #t\n let-date\n let-focused=\"focused\"\n >\n <span\n class=\"custom-day\"\n [class.focused]=\"focused\"\n [class.range]=\"isRange(date)\"\n [class.faded]=\"isHovered(date) || isInside(date)\"\n (mouseenter)=\"hoveredDate = date\"\n (mouseleave)=\"hoveredDate = null\"\n >\n {{ date.day }}\n </span>\n </ng-template>\n </div>\n </div>\n <div class=\"input-group\">\n <input\n #dpFromDate\n id=\"datepicker-input\"\n class=\"form-control\"\n [placeholder]=\"placeholder\"\n readonly\n name=\"dpFromDate\"\n [value]=\"dateToBeShownInInput\"\n />\n <button\n class=\"icon-container\"\n (click)=\"datepicker.toggle()\"\n type=\"button\"\n [disabled]=\"disabled\"\n >\n <i\n class=\"mdi mdi-calendar-range\"\n *ngIf=\"!datepicker.isOpen()\"\n ></i>\n <i\n class=\"mdi mdi-check\"\n *ngIf=\"datepicker.isOpen()\"\n ></i>\n </button>\n </div>\n </div>\n</form>\n\n<ng-template #footerTemplate>\n <div\n class=\"buttons-container\"\n *ngIf=\"showFooterTemplate\"\n >\n <button\n class=\"button\"\n (click)=\"cancelSelection(); datepicker.close()\"\n >\n Cancel\n </button>\n <button\n class=\"button\"\n [ngClass]=\"{ disabled: disableApplyBtn }\"\n [disabled]=\"disableApplyBtn\"\n (click)=\"applySelection(); datepicker.close()\"\n >\n Apply\n </button>\n </div>\n</ng-template>\n","export class TooltipModel {\n isSelected: boolean;\n label: string;\n id: number;\n value: string;\n\n constructor(obj: string, id: number) {\n this.label = obj != null ? obj.toString() : '-';\n this.value = obj;\n this.isSelected = false;\n this.id = id;\n }\n}\n\nexport class tooltipModelForColumnLevelFiltering {\n isHidden;\n isSelected: boolean;\n data: string;\n constructor(data: string) {\n this.data = data;\n this.isSelected = true;\n this.isHidden = false;\n }\n}\n\nexport class radioButtonModel {\n key: string;\n label: string;\n isSortRequired: boolean;\n isFilterRequired: boolean;\n\n constructor(key: string, value: string, sort: boolean, filter: boolean) {\n this.key = key;\n this.label = value;\n this.isSortRequired = sort;\n this.isFilterRequired = filter;\n }\n}\n\nexport enum AllSelectedStatus {\n none = 0,\n allSelected = 1,\n fewSelected = 2,\n}\n","// Angular import statements\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { SortType } from '../models/anna-sort.model';\nimport { AnnaDateTimeFormatService } from './anna-date-time-format.service';\nimport { cloneDeep } from 'lodash-es';\n\n// Third party import statements\n\n// User defined import statements\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AnnaSortService {\n columnSortState: Map<string, SortType>;\n noSortingAppliedData: any[];\n updateSortTypeSubject: Subject<string> = new Subject();\n\n dateSet = new Set([\n 'endDate',\n 'startDate',\n 'end_date',\n 'start_date',\n 'flightStartDate',\n 'flightEndDate',\n 'date',\n 'GeneratedOn',\n ]);\n\n constructor(private annaDateTimeFormatService: AnnaDateTimeFormatService) {}\n\n sortDataForComponentOtherThanLurAndCsrPage(isAsc: boolean, data: any[], key: string) {\n let param1: string | number;\n let param2: string | number;\n\n if (this.dateSet.has(key)) {\n data.sort((a, b) => {\n return this.annaDateTimeFormatService.compareDate(a[key], b[key], isAsc);\n });\n } else if (key === 'AirDateAndTime' || key === 'Date') {\n data.sort((a, b) => {\n let first, second;\n if (a[key] == '-') {\n return 1;\n }\n\n if (b[key] == '-') {\n return -1;\n } else {\n first = this.annaDateTimeFormatService.formatDateAndHHMMATimeToStandardFormat(a[key]);\n second = this.annaDateTimeFormatService.formatDateAndHHMMATimeToStandardFormat(b[key]);\n let compareDate = this.annaDateTimeFormatService.compareDate(first, second, isAsc);\n return compareDate;\n }\n });\n } else if (key == 'startEndTime' || key == 'TimeBand') {\n data.sort((a, b) => {\n if (isAsc) {\n param1 = a[key][1];\n param2 = b[key][1];\n } else {\n param1 = a[key][2];\n param2 = b[key][2];\n }\n let val = isAsc\n ? this.annaDateTimeFormatService.sortByTimeAscending(param1, param2)\n : this.annaDateTimeFormatService.sortByTimeDescending(param1, param2);\n return val;\n });\n } else {\n let dataWithoutEmptyOrHyphenValues = data.filter((n) => n[key] != '-');\n let rowsWithHyphenOrZeroValues = data.filter((n) => n[key] == '-');\n\n dataWithoutEmptyOrHyphenValues.sort((a, b) => {\n param1 = a[key];\n param2 = b[key];\n\n if (param1 !== param2) {\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\n }\n\n return 0;\n });\n\n data = isAsc\n ? [...rowsWithHyphenOrZeroValues, ...dataWithoutEmptyOrHyphenValues]\n : [...dataWithoutEmptyOrHyphenValues, ...rowsWithHyphenOrZeroValues];\n }\n\n return data;\n }\n\n sortEnterEditLurAndCsrPage(isAsc: boolean, data: any[], key: any) {\n let param1: string | number;\n let param2: string | number;\n\n if (key.includes('_')) {\n let keys = key.split('_');\n let weekNumber = keys[0];\n let sortKey = keys[1];\n\n if (keys.length > 2) {\n sortKey = keys[2] == true ? 'BookedAurIncludingNoChargeSpots' : 'BookedAurExcludingNoChargeSpots';\n }\n\n data.sort((a, b) => {\n let aInventoryCodeWeekWiseKey = Object.keys(a.WeekWiseInventoryCodeData).filter(\n (key) => key.split('_')[1] == weekNumber,\n );\n let bInventoryCodeWeekWiseKey = Object.keys(b.WeekWiseInventoryCodeData).filter(\n (key) => key.split('_')[1] == weekNumber,\n );\n\n param1 = null;\n param2 = null;\n if (aInventoryCodeWeekWiseKey.length > 0) {\n param1 = a.WeekWiseInventoryCodeData[aInventoryCodeWeekWiseKey[0]][sortKey][1];\n }\n\n if (bInventoryCodeWeekWiseKey.length > 0) {\n param2 = b.WeekWiseInventoryCodeData[bInventoryCodeWeekWiseKey[0]][sortKey][1];\n }\n\n if (param1 !== param2) {\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\n }\n\n return 0;\n });\n } else if (key == 'TimeBand') {\n data.sort((a, b) => {\n if (isAsc) {\n param1 = a[key][1];\n param2 = b[key][1];\n } else {\n param1 = a[key][2];\n param2 = b[key][2];\n }\n let val = isAsc\n ? this.annaDateTimeFormatService.sortByTimeAscending(param1, param2)\n : this.annaDateTimeFormatService.sortByTimeDescending(param1, param2);\n return val;\n });\n } else {\n data.sort((a, b) => {\n param1 = a[key];\n param2 = b[key];\n\n if (param1 !== param2) {\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\n }\n\n return 0;\n });\n }\n\n return data;\n }\n\n checkIfSortingIsApplied(tableData: any[], isLurAndCsrComponent: boolean) {\n for (let [key, value] of this.columnSortState.entries()) {\n if (value == 'ASC') {\n tableData = cloneDeep(\n isLurAndCsrComponent\n ? this.sortEnterEditLurAndCsrPage(true, tableData, key)\n : this.sortDataForComponentOtherThanLurAndCsrPage(true, tableData, key),\n );\n } else if (value == 'DESC') {\n tableData = cloneDeep(\n isLurAndCsrComponent\n ? this.sortEnterEditLurAndCsrPage(false, tableData, key)\n : this.sortDataForComponentOtherThanLurAndCsrPage(false, tableData, key),\n );\n }\n }\n\n return tableData;\n }\n\n applySorting(key: string, tempSortOrder: SortType, tableData: any[], isLurAndCsrComponent: boolean) {\n if (tempSortOrder == 'ASC') {\n tableData = cloneDeep(\n isLurAndCsrComponent\n ? this.sortEnterEditLurAndCsrPage(true, tableData, key)\n : this.sortDataForComponentOtherThanLurAndCsrPage(true, tableData, key),\n );\n } else if (tempSortOrder == 'DESC') {\n tableData = cloneDeep(\n isLurAndCsrComponent\n ? this.sortEnterEditLurAndCsrPage(false, tableData, key)\n : this.sortDataForComponentOtherThanLurAndCsrPage(false, tableData, key),\n );\n } else if (tempSortOrder == 'DEFAULT') {\n tableData = cloneDeep(this.noSortingAppliedData);\n }\n\n return tableData;\n }\n}\n","export type SortType = 'DEFAULT' | 'ASC' | 'DESC';\n\nexport interface SortOption {\n sortType: SortType;\n isOptionActive: boolean;\n text: string;\n}\n\nexport enum SortTypeEnum {\n DEFAULT = 'DEFAULT',\n ASC = 'ASC',\n DESC = 'DESC',\n}\n","// Angular import statements\nimport { Options } from '@angular-slider/ngx-slider';\nimport { Injectable } from '@angular/core';\n\n// Third party import statements\nimport { min, max, map, sortBy, uniq, cloneDeep, isEqual } from 'lodash-es';\nimport dayjs from 'dayjs';\nimport CustomParseFormat from 'dayjs/plugin/customParseFormat';\nimport minMax from 'dayjs/plugin/minMax';\nimport isBetween from 'dayjs/plugin/isBetween';\nimport { SortType, SortTypeEnum } from '../models/anna-sort.model';\n\n// User defined import statements\nimport { AnnaDateTimeFormatService, NgbDateType } from './anna-date-time-format.service';\nimport { AnnaSortService } from './anna-sort.service';\nimport { TooltipModel } from '../models/anna-tooltip.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AnnaFilterService {\n tooltipMap = new Map();\n tooltipSelectedMap = new Map();\n initialValueMap: Map<string, any>;\n translateFunc: string;\n selectedRadio: string;\n subRadioButton: string;\n\n calendarSet: Set<string>;\n sliderSet: Set<string>;\n timeSet: Set<string>;\n\n includeMultiTime: boolean;\n includeZeroTime: boolean;\n includeTimeRange: boolean;\n\n appliedFiltersArray: string[] = [];\n flightDateRange: { minSelectedDate: any; maxSelectedDate: any };\n sliderData: { min: any; max: any };\n ngxSliderObj: Options;\n sliderCurrencySet = new Set([\n 'booked',\n 'cpp',\n 'cpm',\n 'rcvPreempt',\n 'osPreempt',\n 'postedAdu',\n 'scheduledAdu',\n 'audienceDeficit',\n 'Rate',\n 'userADUs',\n 'buyerChanges',\n 'userChanges',\n 'userMG',\n 'udValue',\n 'odValue',\n ]);\n\n public static bufferSize = 20;\n isFilterSortActive: any = {};\n resetFilterSortActiveStatus: boolean = true;\n\n constructor(\n private dateTimeFormatService: AnnaDateTimeFormatService,\n private annaSortService: AnnaSortService,\n ) {\n dayjs.extend(minMax);\n dayjs.extend(isBetween);\n dayjs.extend(CustomParseFormat);\n const sliderArr = [\n 'rcvPreempt',\n 'osPreempt',\n 'rcvUnderDly',\n 'postedAudPercent',\n 'booked',\n 'spots',\n 'grp',\n 'cpp',\n 'imps',\n 'cpm',\n 'osUnderDly',\n 'totalWeeks',\n 'WeekNumber',\n 'Rate',\n 'OrderedRatingsOrImpressions',\n 'PostedRatingsOrImpressions',\n ,\n 'postedAudPercent',\n 'postedAdu',\n 'scheduledAdu',\n 'audienceDeficit',\n 'offeredMGs',\n 'outstandingPE',\n 'offeredADUs',\n 'udDeficitValue',\n 'bookedValue',\n 'bookedSpots',\n 'userChanges',\n 'UDGrp',\n 'UDImps',\n 'ODGrp',\n 'ODImps',\n 'udImpsPercent',\n 'udGrpPercent',\n 'odImpsPercent',\n 'odGrpPercent',\n 'userADUs',\n 'buyerChanges',\n 'userChanges',\n 'userMG',\n 'WeeklyAUR',\n 'WeeklyAURatingOrImpressions',\n 'MGsValue',\n 'ADUsValue',\n 'UserCreditedValue',\n 'UserUnresolvedValue',\n 'BuyerAddedValue',\n 'BuyerDeletedValue',\n 'BuyerChangesValue',\n 'UserChangesValue',\n 'BookedGRPOrIMPS',\n 'BookedCPPOrCPM',\n 'BookedValue',\n 'BookedSpots',\n 'BookedRate',\n 'BookedRTG',\n 'BookedIMPS',\n 'AURTG',\n 'AURTG',\n 'PostedRating',\n 'PostedImpressions',\n 'NormalizedOrderedRating',\n 'NormalizedOrderedImpressions',\n 'NormalizedPostedRating',\n 'NormalizedPostedImpressions',\n 'BookedGRP',\n 'BookedIMPSRevTab',\n 'BookedCPP',\n 'BookedCPM',\n 'AUIMPS',\n 'bookedAmountValue',\n 'equivalizedBookedAmountValue',\n 'IMPS',\n 'udValue',\n 'odValue',\n 'ViolatedBookedValue',\n 'ViolatedBookedEURValue',\n 'ViolatingBookedEURValue',\n 'ViolatingBookedValue',\n 'Rebate',\n 'OtherAvailableSpotsTableWeeklyAUR',\n 'parentRowAnnaEstimatesRtg',\n 'parentRowPostedRtg',\n 'parentRowRollingAverageRtg',\n 'parentRowStationEstimatesRtg',\n 'parentRowAnnaEstimatesImps',\n 'parentRowPostedImps',\n 'parentRowRollingAverageImps',\n 'parentRowStationEstimatesImps',\n 'parentRowAnnaEstimatesShare',\n 'parentRowPostedShare',\n 'parentRowRollingAverageShare',\n 'parentRowAnnaEstimatesPutPer',\n 'parentRowPostedPutPer',\n 'parentRowRollingAveragePutPer',\n 'parentRowAnnaEstimatesPut',\n 'parentRowPostedPut',\n 'parentRowRollingAveragePut',\n 'ProjectedImpressions',\n 'ProjectedRtg',\n ];\n const calendarArr = [\n 'period',\n 'AirDate',\n 'flightStartDate',\n 'flightEndDate',\n 'date',\n 'startDate',\n 'endDate',\n 'revisionStartDate',\n 'GeneratedOn',\n 'Week',\n 'timeoutDate',\n 'ViolatingSpotDate',\n 'ViolatedSpotDate',\n ];\n const timeArr = [\n 'StartTimeForFilter',\n 'EndTimeForFilter',\n 'time',\n 'startTimeForFilter',\n 'endTimeForFilter',\n 'start_time_for_filter',\n 'end_time_for_filter',\n 'startEndTimeMulti',\n 'startEndTime',\n 'timeoutTime',\n 'OtherAvailableSpotsTableStartTime',\n 'OtherAvailableSpotsTableEndTime',\n ];\n this.sliderSet = new Set(sliderArr);\n this.calendarSet = new Set(calendarArr);\n this.timeSet = new Set(timeArr);\n }\n\n returnMaxAndMinValue(data: any[], key: string, isMin: boolean) {\n data = data.filter((obj) => !['', '-', null].includes(obj[key]));\n const values = data.map((x) => x[key]);\n let valueToReturn = isMin ? min(values) : max(values);\n return valueToReturn;\n }\n\n returnMinAndMaxDate(data: any[], key: string) {\n data = data.filter((obj) => !['', '-', null].includes(obj[key]));\n let DateArr = data.map((obj) => dayjs(obj[key]));\n let minDate = dayjs.min(DateArr);\n let maxDate = dayjs.max(DateArr);\n\n return [minDate, maxDate];\n }\n\n isTooltipActive(header: string[], sortMap: Map<string, SortType>): boolean {\n let set: Set<string> = new Set(this.appliedFiltersArray);\n let isSortMapForHeader0Active = sortMap.has(header[0]) && sortMap.get(header[0]) != SortTypeEnum.DEFAULT;\n let isSortMapForHeader1Active = sortMap.has(header[1]) && sortMap.get(header[1]) != SortTypeEnum.DEFAULT;\n\n if (header.length == 1) {\n return (sortMap.size > 0 && isSortMapForHeader0Active) || set.has(header[0]);\n }\n\n return (\n (sortMap.size > 0 && sortMap.has(header[0]) && isSortMapForHeader0Active) ||\n (sortMap.size > 0 && sortMap.has(header[1]) && isSortMapForHeader1Active) ||\n set.has(header[0]) ||\n set.has(header[1])\n );\n }\n\n clearColumnFilter() {\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\n this.tooltipSelectedMap.delete(this.selectedRadio);\n let appliedFilterSet: Set<string> = new Set(this.appliedFiltersArray);\n appliedFilterSet.delete(this.selectedRadio);\n this.appliedFiltersArray = [...appliedFilterSet];\n }\n\n if (this.annaSortService.columnSortState.has(this.selectedRadio)) {\n this.annaSortService.columnSortState.delete(this.selectedRadio);\n }\n }\n\n setOptionValues(minValue: number, maxValue: number) {\n return {\n floor: minValue,\n ceil: maxValue,\n disabled: true,\n translate: this.normalTranslateFunction,\n };\n }\n\n percentTranslateFunction = (data: number): string => {\n if (Math.abs(data) >= 1000) {\n let isNegVal = data < 0;\n const val = (Math.abs(data) / 1000).toFixed(1) + 'k%';\n return isNegVal ? '-' + val : val;\n } else {\n let isNegVal = data < 0;\n let isWholeNum = parseInt(data.toString()) == data;\n let val = isWholeNum ? Math.abs(data).toString() : Math.abs(data).toFixed(1);\n return isNegVal ? '-' + val + '%' : val + '%';\n }\n };\n\n currencyTranslateFunction = (data: number): string => {\n if (Math.abs(data) >= 1000) {\n let isNegVal = data < 0;\n const val = '$' + (Math.abs(data) / 1000).toFixed(1) + 'k';\n return isNegVal ? '-' + val : val;\n } else {\n let isNegVal = data < 0;\n let isWholeNum = parseInt(data.toString()) == data;\n let val = isWholeNum ? Math.abs(data).toString() : Math.abs(data).toFixed(1);\n return isNegVal ? '-$' + val : '$' + val;\n }\n };\n\n normalTranslateFunction = (data: number): string => {\n if (data >= 1000) {\n const val = (data / 1000).toFixed(1) + 'k';\n return val;\n } else if (data != Math.floor(data)) {\n return data.toFixed(1).toString();\n }\n return data.toString();\n };\n\n findUniqueDatesWithData(data: any[]) {\n let uniqueDates = uniq(data.map((u) => u['date']));\n let uniqueDatesInNgbDateFormat: NgbDateType[] = [];\n uniqueDates.forEach((date: any) => {\n uniqueDatesInNgbDateFormat.push(\n this.dateTimeFormatService.convertToNgbDateStandardFormat(dayjs(date, 'MM/DD/YY').format('MM/DD/YYYY')),\n );\n });\n return uniqueDatesInNgbDateFormat;\n }\n\n reOrderAppliedFiltersArray(isHierarchialUserFiltered: boolean, date?: any) {\n let isFiltered = true;\n isFiltered = this.checkIfDataIsFiltered(isFiltered, isHierarchialUserFiltered, date);\n this.removeOrChangeLatestFilterIndex(isFiltered);\n }\n\n checkIfDataIsFiltered(isFiltered: boolean, isHierarchialUserFiltered: boolean, date?: any) {\n if (this.selectedRadio == 'user' && !this.tooltipMap.has('user')) {\n isFiltered = cloneDeep(isHierarchialUserFiltered);\n } else if (\n this.selectedRadio == 'StartTimeForFilter' ||\n this.selectedRadio == 'EndTimeForFilter' ||\n this.selectedRadio == 'startTimeForFilter' ||\n this.selectedRadio == 'endTimeForFilter' ||\n this.selectedRadio == 'time' ||\n this.selectedRadio == 'timeoutTime' ||\n this.selectedRadio == 'OtherAvailableSpotsTableStartTime' ||\n this.selectedRadio == 'OtherAvailableSpotsTableEndTime' ||\n this.selectedRadio == 'start_time_for_filter' ||\n this.selectedRadio == 'end_time_for_filter' ||\n this.selectedRadio == 'startEndTimeMulti'\n ) {\n isFiltered =\n !isEqual(\n this.initialValueMap.get(this.selectedRadio),\n this.tooltipSelectedMap.get(this.selectedRadio),\n ) ||\n !this.includeZeroTime ||\n !this.includeMultiTime;\n } else if (this.selectedRadio == 'startEndTime' || this.selectedRadio == 'TimeBand') {\n isFiltered =\n !isEqual(\n this.initialValueMap.get(this.selectedRadio),\n this.tooltipSelectedMap.get(this.selectedRadio),\n ) ||\n !this.includeZeroTime ||\n !this.includeMultiTime;\n } else if (this.sliderSet.has(this.selectedRadio)) {\n isFiltered =\n !isEqual(\n this.initialValueMap.get(this.selectedRadio),\n this.tooltipSelectedMap.get(this.selectedRadio),\n ) && !isEqual(this.tooltipSelectedMap.get(this.selectedRadio), this.sliderData);\n if (this.selectedRadio == 'postedAdu' && this.subRadioButton == 'notRequired') {\n isFiltered = true;\n }\n if (!isFiltered && this.tooltipSelectedMap.has(this.selectedRadio)) {\n this.tooltipSelectedMap.delete(this.selectedRadio);\n }\n } else if (\n this.selectedRadio == 'startDate' ||\n this.selectedRadio == 'endDate' ||\n this.selectedRadio == 'period' ||\n this.selectedRadio == 'AirDate' ||\n this.selectedRadio == 'timeoutDate' ||\n this.selectedRadio === 'flightStartDate' ||\n this.selectedRadio === 'flightEndDate' ||\n this.selectedRadio == 'date' ||\n this.selectedRadio == 'revisionStartDate' ||\n this.selectedRadio == 'GeneratedOn' ||\n this.selectedRadio == 'Week'\n ) {\n isFiltered =\n !isEqual(\n this.initialValueMap.get(this.selectedRadio),\n this.tooltipSelectedMap.get(this.selectedRadio),\n ) && !isEqual(this.tooltipSelectedMap.get(this.selectedRadio), this.flightDateRange);\n if (!isFiltered && this.tooltipSelectedMap.has(this.selectedRadio)) {\n this.tooltipSelectedMap.delete(this.selectedRadio);\n }\n } else {\n let totalOptionsCount = this.tooltipMap.get(this.selectedRadio).filter((x: any) => !x.isHidden).length;\n let selectedOptionsCount = this.tooltipMap\n .get(this.selectedRadio)\n .filter((x: any) => !x.isHidden && x.isSelected).length;\n isFiltered = selectedOptionsCount > 0 && selectedOptionsCount != totalOptionsCount ? true : false;\n }\n return isFiltered;\n }\n\n removeOrChangeLatestFilterIndex(isFiltered: boolean) {\n let set = new Set(this.appliedFiltersArray);\n\n if (isFiltered && !set.has(this.selectedRadio)) {\n set.add(this.selectedRadio);\n } else if (isFiltered && set.has(this.selectedRadio)) {\n set.delete(this.selectedRadio);\n set.add(this.selectedRadio);\n } else {\n set.delete(this.selectedRadio);\n }\n this.appliedFiltersArray = [...set];\n }\n\n checkIfSortingIsAppliedThenSortTheData(originalData: any[]) {\n if (!this.annaSortService?.columnSortState) return originalData;\n for (let [key, value] of this.annaSortService.columnSortState.entries()) {\n if (value == 'ASC') {\n originalData = cloneDeep(\n this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(true, originalData, key),\n );\n } else if (value == 'DESC') {\n originalData = cloneDeep(\n this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(false, originalData, key),\n );\n }\n }\n return originalData;\n }\n\n filterData(originalData: any[], keyToSkip: string, isLurCsrPage: boolean = false) {\n let filteredData = [...originalData];\n if (!isLurCsrPage) {\n filteredData = this.checkIfSortingIsAppliedThenSortTheData(originalData);\n }\n this.tooltipSelectedMap.forEach((value, key) => {\n if (key != keyToSkip && originalData.length > 0 && Object.keys(originalData[0]).includes(key)) {\n if (this.sliderSet.has(key)) {\n filteredData = filteredData.filter((obj) => obj[key] >= value.min && obj[key] <= value.max);\n } else if (\n key === 'startDate' ||\n key === 'endDate' ||\n key === 'AirDate' ||\n key === 'timeoutDate' ||\n key === 'flightStartDate' ||\n key === 'flightEndDate' ||\n key == 'date' ||\n key == 'Date' ||\n key == 'revisionStartDate' ||\n key == 'GeneratedOn' ||\n key === 'Week' ||\n key === 'ViolatedSpotDate' ||\n key === 'ViolatingSpotDate'\n ) {\n filteredData = filteredData.filter((obj) => this.isObjectInTheRange(obj, value, key));\n } else if (key === 'period') {\n filteredData = filteredData.filter((obj) => this.getDataInTheDateRange(obj, value, key));\n } else if (\n key === 'StartTimeForFilter' ||\n key === 'EndTimeForFilter' ||\n key == 'timeoutTime' ||\n key === 'startTimeForFilter' ||\n key === 'endTimeForFilter' ||\n key === 'OtherAvailableSpotsTableStartTime' ||\n key == 'OtherAvailableSpotsTableEndTime' ||\n key === 'start_time_for_filter' ||\n key === 'end_time_for_filter' ||\n key == 'time'\n ) {\n filteredData = filteredData.filter((obj) => this.returnDataForFromAndToTimeRange(obj, value, key));\n } else if (key === 'startEndTimeMulti' || key == 'startEndTime' || key === 'TimeBand') {\n filteredData = filteredData.filter((obj) =>\n this.returnDataForStartAndEndTimeRange(obj, value, key),\n );\n } else if (value.length > 0) {\n filteredData = filteredData.filter((u) => value.includes(u[key]));\n }\n }\n });\n return filteredData;\n }\n\n returnOrdersInTheRange(order: any, range: any, key: any) {\n let isDateBetweenTheSelectedRange = dayjs(order[key]).isBetween(range.minSelectedDate, range.maxSelectedDate);\n let isDateSameAsTheMinSelectedDate = dayjs(order[key]).isSame(range.minSelectedDate);\n let isDateSameAsTheMaxSelectedDate = dayjs(order[key]).isSame(range.maxSelectedDate);\n return isDateBetweenTheSelectedRange || isDateSameAsTheMinSelectedDate || isDateSameAsTheMaxSelectedDate;\n }\n\n returnDataForTimeRange(obj: any, selectedData: any) {\n let format = 'HH:mm:ss';\n let selectedStartDate = dayjs(selectedData.startTime, format);\n let selectedEndDate = dayjs(selectedData.endTime, format);\n let startTime = dayjs(obj.startTime, format);\n let endTime = dayjs(obj.endTime, format);\n\n let isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedStartDate);\n let isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedStartDate, selectedEndDate);\n let isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedEndDate);\n let isEndTimeBetweenSelectedStartAndEndTime = endTime.isBetween(selectedStartDate, selectedEndDate);\n\n return (\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeBetweenSelectedStartAndEndTime) ||\n (isStartTimeSameAsSelectedStartTime && isEndTimeSameAsSelectedEndTime) ||\n (isStartTimeSameAsSelectedStartTime && isEndTimeBetweenSelectedStartAndEndTime) ||\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeSameAsSelectedEndTime)\n );\n }\n\n returnDataForFromAndToTimeRange(obj: any, selectedData: any, key: any) {\n let format = 'MM/DD/YYYY HH:mm:ss';\n let selectedFromTime = dayjs('01/01/2001 ' + selectedData.fromTime, format);\n let selectedToTime = dayjs('01/01/2001 ' + selectedData.toTime, format);\n let objTime = obj[key];\n\n if (['', '-', null].includes(objTime)) {\n return false;\n }\n if (selectedData.includeMulti && obj[key] == '<multi>') {\n return true;\n }\n if (!selectedData.includeMulti && obj[key] == '<multi>') {\n return false;\n }\n if (selectedData.includeZero && obj[key] == '0') {\n return true;\n }\n if (!selectedData.includeZero && obj[key] == '0') {\n return false;\n }\n if (!selectedData.includeTimeRange) {\n return false;\n }\n\n let dayjsTime = dayjs('01/01/2001 ' + objTime, format);\n\n let isObjTimeSameAsSelectedFromTime = dayjsTime.isSame(selectedFromTime);\n let isObjTimeSameAsSelectedToTime = dayjsTime.isSame(selectedToTime);\n let isObjTimeBetweenSelectedFromTimeAndToTime = dayjsTime.isBetween(selectedFromTime, selectedToTime);\n\n return (\n isObjTimeSameAsSelectedFromTime ||\n isObjTimeSameAsSelectedToTime ||\n isObjTimeBetweenSelectedFromTimeAndToTime\n );\n }\n\n returnDataForStartAndEndTimeRange(obj: any, selectedData: any, key: string) {\n let format = 'MM/DD/YYYY HH:mm:ss';\n let selectedFromTime = dayjs('01/01/2001 ' + selectedData.fromTime, format);\n let selectedToTime = dayjs('01/01/2001 ' + selectedData.toTime, format);\n\n if (selectedData.includeMulti && obj[key][0] == '<multi>') {\n return true;\n }\n\n if (!selectedData.includeMulti && obj[key][0] == '<multi>') {\n return false;\n }\n\n if (selectedData.includeZero && obj[key][0] == '0') {\n return true;\n }\n\n if (!selectedData.includeZero && obj[key][0] == '0') {\n return false;\n }\n\n if (!selectedData.includeTimeRange) {\n return false;\n }\n\n let startTime = dayjs('01/01/2001 ' + obj[key][1], format);\n let endTime = dayjs('01/01/2001 ' + obj[key][2], format);\n\n let isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedFromTime);\n let isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedFromTime, selectedToTime);\n let isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedToTime);\n let isEndTimeBetweenSelectedStartAndEndTime = endTime.isBetween(selectedFromTime, selectedToTime);\n\n return (\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeBetweenSelectedStartAndEndTime) ||\n (isStartTimeSameAsSelectedStartTime && isEndTimeSameAsSelectedEndTime) ||\n (isStartTimeSameAsSelectedStartTime && isEndTimeBetweenSelectedStartAndEndTime) ||\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeSameAsSelectedEndTime)\n );\n }\n\n getDataInTheDateRange(obj: any, value: any, key: any) {\n let parsingFormat: string;\n if (key === 'period') {\n parsingFormat = 'YYYY-MM-DD';\n\n let dayjsStartDate = dayjs(obj.startDate);\n let dayjsEndDate = dayjs(obj.endDate);\n\n let startDateIsBetweenSelDate = dayjsStartDate.isBetween(value.fromDate, value.toDate);\n let endDateIsBetweenSelDate = dayjsEndDate.isBetween(value.fromDate, value.toDate);\n\n let startDateIsSameAsSelStartDate = value.fromDate.isSame(dayjsStartDate);\n let endDateIsSameAsSelEndDate = value.toDate.isSame(dayjsEndDate);\n\n return (\n (startDateIsBetweenSelDate || startDateIsSameAsSelStartDate) &&\n (endDateIsBetweenSelDate || endDateIsSameAsSelEndDate)\n );\n } else if (\n key === 'AirDate' ||\n key === 'flightStartDate' ||\n key === 'flightEndDate' ||\n key === 'Week' ||\n key === 'timeoutDate'\n ) {\n parsingFormat = 'MM/DD/YYYY';\n let dateIsBetweenSelDate = dayjs(obj[key], parsingFormat).isBetween(\n value.minSelectedDate,\n value.maxSelectedDate,\n );\n\n let dateIsSameAsSelStartDate = dayjs(obj[key], parsingFormat).isSame(value.minSelectedDate);\n let dateIsSameAsSelEndDate = dayjs(obj[key], parsingFormat).isSame(value.maxSelectedDate);\n\n return dateIsBetweenSelDate || dateIsSameAsSelStartDate || dateIsSameAsSelEndDate;\n }\n }\n\n public initializeTimeFilterData(clonedData: any[], key = 'startEndTime') {\n let startTimeArr = map(clonedData, 'startTime');\n let endTimeArr = map(clonedData, 'endTime');\n\n startTimeArr.sort((a: any, b: any) => {\n return this.dateTimeFormatService.sortByTimeAscending(a, b);\n });\n\n endTimeArr.sort((a: any, b: any) => {\n return this.dateTimeFormatService.sortByTimeDescending(a, b);\n });\n\n let initialStartEndTime = {\n startTime: startTimeArr[0],\n endTime: endTimeArr[0],\n };\n this.initialValueMap.set(key, initialStartEndTime);\n }\n\n returnColumnFilterStatus(data: any[], headerName: string | number) {\n if (headerName == 'startEndTime') {\n let time = data.map((u) => u[headerName][0]);\n let uniqTime = uniq(time);\n return uniqTime.length == 0;\n }\n\n return uniq(data.map((u) => u[headerName])).length > 1 ? false : true;\n }\n\n getFilterOptionsData(data: any[], clonedData: any[], key?: string) {\n let appliedFilterSet = new Set(this.appliedFiltersArray);\n key = key ? key : this.selectedRadio;\n if (appliedFilterSet.has(key)) {\n return this.filterData(clonedData, key);\n } else {\n return data;\n }\n }\n\n reOrderAppliedFiltersState(clonedData: any[], value: any) {\n let isFiltered = true;\n isFiltered = this.checkIfFilterIsApplied(clonedData, value);\n this.removeOrChangeLatestFilterIndex(isFiltered);\n return isFiltered;\n }\n\n checkIfFilterIsApplied(clonedData: any[], value: any) {\n let initialValueOfColumn = sortBy(clonedData.map((item) => item[this.selectedRadio]));\n let currentValueOfColumn = sortBy(this.applyFilter(clonedData, value).map((item) => item[this.selectedRadio]));\n return !isEqual(initialValueOfColumn, currentValueOfColumn);\n }\n\n applyFilter(data: any[], value: any) {\n let filteredData = data;\n let key = this.selectedRadio;\n if (this.sliderSet.has(key)) {\n filteredData = filteredData.filter((obj) => obj[key] >= value.min && obj[key] <= value.max);\n } else if (\n key === 'startDate' ||\n key === 'endDate' ||\n key === 'AirDate' ||\n key === 'timeoutDate' ||\n key === 'flightStartDate' ||\n key === 'flightEndDate' ||\n key == 'date' ||\n key == 'Date' ||\n key == 'revisionStartDate' ||\n key == 'GeneratedOn' ||\n key === 'Week' ||\n key === 'ViolatedSpotDate' ||\n key === 'ViolatingSpotDate'\n ) {\n filteredData = filteredData.filter((obj) => this.isObjectInTheRange(obj, value, key));\n } else if (key === 'period') {\n filteredData = filteredData.filter((obj) => this.getDataInTheDateRange(obj, value, key));\n } else if (\n key === 'StartTimeForFilter' ||\n key === 'EndTimeForFilter' ||\n key == 'timeoutTime' ||\n key === 'startTimeForFilter' ||\n key === 'endTimeForFilter' ||\n key === 'start_time_for_filter' ||\n key === 'end_time_for_filter' ||\n key == 'time' ||\n key == 'OtherAvailableSpotsTableStartTime' ||\n key == 'OtherAvailableSpotsTableEndTime'\n ) {\n filteredData = filteredData.filter((obj) => this.returnDataForFromAndToTimeRange(obj, value, key));\n } else if (key === 'startEndTimeMulti' || key == 'startEndTime' || key === 'TimeBand') {\n filteredData = filteredData.filter((obj) => this.returnDataForStartAndEndTimeRange(obj, value, key));\n } else if (value.length > 0) {\n filteredData = filteredData.filter((u) => value.includes(u[key]));\n }\n return filteredData;\n }\n\n isObjectInTheRange(obj: any, value: any, key: string) {\n let objVal = obj[key];\n let dayjsDate = dayjs(objVal);\n if (typeof value.fromDate === 'string' && typeof value.toDate === 'string') {\n value.fromDate = dayjs(\n this.dateTimeFormatService.convertNgbDateToMoment(\n this.dateTimeFormatService.convertToNgbDate(value.fromDate, 'DD/MM/YYYY'),\n ),\n );\n value.toDate = dayjs(\n this.dateTimeFormatService.convertNgbDateToMoment(\n this.dateTimeFormatService.convertToNgbDate(value.toDate, 'DD/MM/YYYY'),\n ),\n );\n }\n let isDateSameAsStartOfTheRange = value.fromDate.isSame(objVal);\n let isDateSameAsEndOfTheRange = value.toDate.isSame(objVal);\n let isDateBetweenTheStartAndEndOfRange = dayjsDate.isBetween(value.fromDate, value.toDate);\n return isDateSameAsStartOfTheRange || isDateSameAsEndOfTheRange || isDateBetweenTheStartAndEndOfRange;\n }\n\n updateStateOfTheCurrentFilterTab(sortMap: Map<string, SortType>) {\n let activeKey = this.selectedRadio;\n let keyArr: string[] = [];\n Object.keys(this.isFilterSortActive).forEach((key) => {\n if (key.includes(activeKey)) {\n keyArr = key.split(',');\n this.isFilterSortActive[key] = this.isTooltipActive(keyArr, sortMap);\n }\n });\n }\n\n updateStateOfAllTheKeys(sortMap: Map<string, SortType>) {\n Object.keys(this.isFilterSortActive).forEach((key) => {\n let keyArr = key.split(',');\n this.isFilterSortActive[key] = this.isTooltipActive(keyArr, sortMap);\n });\n }\n\n incrementHour(value: any) {\n if (value == '') {\n value = 1;\n } else if (parseInt(value) < 12) {\n value = parseInt(value) + 1;\n } else {\n value = 1;\n }\n return value;\n }\n\n decrementHour(value: any) {\n if (value == '') {\n value = 12;\n } else if (parseInt(value) > 1) {\n value = parseInt(value) - 1;\n } else {\n value = 12;\n }\n return value;\n }\n\n incrementMinute(value: any) {\n // increment to nearest proper interval(15,30,45)\n let min = parseInt(value);\n if (min <= 14) {\n value = '15';\n } else if (min >= 15 && min <= 29) {\n value = '30';\n } else if (min >= 30 && min <= 44) {\n value = '45';\n } else if (min >= 45) {\n value = '00';\n }\n return value;\n }\n\n decrementMinute(value: any) {\n let min = parseInt(value);\n if (min > 0 && min <= 15) {\n value = '00';\n } else if (min >= 16 && min <= 30) {\n value = '15';\n } else if (min >= 31 && min <= 45) {\n value = '30';\n } else if (min > 45 || min == 0) {\n value = '45';\n }\n return value;\n }\n\n //========================================Checkbox method=============================================================//\n\n disableActiveFilterClearButton() {\n let selectedFilterSet = new Set(this.appliedFiltersArray);\n\n let currentColumnSortFilter = this.getColumnSortStateForSelectedRadio();\n let isSortPresent =\n this.annaSortService.columnSortState &&\n this.annaSortService.columnSortState.size > 0 &&\n currentColumnSortFilter != SortTypeEnum.DEFAULT;\n\n return !(selectedFilterSet.has(this.selectedRadio) || isSortPresent);\n }\n\n getColumnSortStateForSelectedRadio(): string {\n let currentColumnSortFilter =\n this.annaSortService.columnSortState &&\n this.annaSortService.columnSortState.has(this.selectedRadio) &&\n this.annaSortService.columnSortState.get(this.selectedRadio);\n currentColumnSortFilter = currentColumnSortFilter ? currentColumnSortFilter : SortTypeEnum.DEFAULT;\n return currentColumnSortFilter;\n }\n\n createListForCheckboxFilter(header: string, optionData: any[]) {\n let tooltipOptions = this.getTooltipModelFromOptionData(optionData, header);\n\n this.selectUnselectListCheckbox(tooltipOptions, header);\n this.formatNullOptionToSpecifiedString(tooltipOptions, '-');\n\n return tooltipOptions;\n }\n\n getTooltipModelFromOptionData(optionData: any[], header: string) {\n let uniqOptionData = uniq(optionData.map((item) => item[header]));\n return uniqOptionData.map((item, index) => new TooltipModel(item, index + 1));\n }\n\n selectUnselectListCheckbox(tooltipOptions: TooltipModel[], header: string) {\n if (this.tooltipSelectedMap.has(header)) {\n let selectedValueSet = new Set(this.tooltipSelectedMap.get(header));\n tooltipOptions.forEach((item) => (item.isSelected = selectedValueSet.has(item.value) ? true : false));\n } else {\n tooltipOptions.forEach((item) => (item.isSelected = true));\n }\n }\n\n formatNullOptionToSpecifiedString(tooltipOptions: TooltipModel[], formattedString: string) {\n let index = tooltipOptions.findIndex((item) => item.value == null);\n\n if (index != -1) {\n tooltipOptions[index].label = formattedString;\n }\n }\n\n getClonedTooltipAndTooltipOption(tooltipOptions: TooltipModel[], sortByString: string) {\n let [selectedItems, unselectedItems] = this.getSelectedAndUnselectedItems(tooltipOptions);\n let sortedSelectedItems = sortBy(selectedItems, sortByString);\n let sortedUnselectedItems = sortBy(unselectedItems, sortByString);\n\n let clonedTooltipOptions = [...sortedSelectedItems, ...sortedUnselectedItems];\n let updatedTooltipOptions = cloneDeep(clonedTooltipOptions);\n\n return [clonedTooltipOptions, updatedTooltipOptions, selectedItems, unselectedItems];\n }\n\n getHeightOfCheckboxTooltipFilter(dataLength: number, margin: number) {\n return dataLength > 6 ? 200 : 26.03 * dataLength + margin * dataLength + margin;\n }\n\n unCheckAllCheckbox(tooltipOptions: TooltipModel[], clonedTooltipOptions: TooltipModel[]) {\n tooltipOptions.forEach((item) => {\n item.isSelected = false;\n let index = clonedTooltipOptions.findIndex((opt) => opt.id == item.id);\n clonedTooltipOptions[index].isSelected = false;\n });\n }\n\n selectAllCheckbox(tooltipOptions: TooltipModel[], clonedTooltipOptions: TooltipModel[]) {\n tooltipOptions.forEach((item) => {\n item.isSelected = true;\n let index = clonedTooltipOptions.findIndex((opt) => opt.id == item.id);\n clonedTooltipOptions[index].isSelected = true;\n });\n }\n\n selectUnselectCheckbox(data: TooltipModel, clonedTooltipOptions: TooltipModel[]) {\n data.isSelected = !data.isSelected;\n let index = clonedTooltipOptions.findIndex((item) => item.id == data.id);\n clonedTooltipOptions[index].isSelected = data.isSelected;\n }\n\n getSelectedAndUnselectedItems(tooltipOptions: TooltipModel[]) {\n let selectedItems = tooltipOptions.filter((item) => item.isSelected);\n let unselectedItems = tooltipOptions.filter((item) => !item.isSelected);\n\n return [selectedItems, unselectedItems];\n }\n\n getCheckboxPreviousSelectedValue(clonedTableData: any[]) {\n let previousSelectedValue = [];\n\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\n previousSelectedValue = this.tooltipSelectedMap.get(this.selectedRadio);\n\n if (!this.initialValueMap.has(this.selectedRadio)) {\n let initialValue = sortBy(uniq(clonedTableData.map((item) => item[this.selectedRadio])));\n this.initialValueMap.set(this.selectedRadio, initialValue);\n }\n } else if (this.initialValueMap.has(this.selectedRadio)) {\n previousSelectedValue = this.initialValueMap.get(this.selectedRadio);\n } else {\n previousSelectedValue = sortBy(uniq(clonedTableData.map((item) => item[this.selectedRadio])));\n this.initialValueMap.set(this.selectedRadio, previousSelectedValue);\n }\n\n return previousSelectedValue;\n }\n\n getCheckboxCurrentSelectedValue(searchedString: string, tooltipOptions: TooltipModel[]) {\n let currentSelectedValue = [];\n\n if (tooltipOptions) {\n currentSelectedValue = sortBy(tooltipOptions.filter((item) => item.isSelected).map((item) => item.value));\n\n if (\n !searchedString &&\n currentSelectedValue.length == tooltipOptions.length &&\n this.initialValueMap.has(this.selectedRadio)\n ) {\n currentSelectedValue = this.initialValueMap.get(this.selectedRadio);\n }\n }\n\n let blankIndex = currentSelectedValue.findIndex((item: string) => item == null);\n if (blankIndex != -1) {\n currentSelectedValue = sortBy(currentSelectedValue);\n }\n\n return currentSelectedValue;\n }\n\n checkIfSortingChanged(tempSortOrder: SortType) {\n let currentColumnSortFilter = this.getColumnSortStateForSelectedRadio();\n\n let isSortChanged = tempSortOrder != null && tempSortOrder != currentColumnSortFilter;\n return isSortChanged;\n }\n\n getFilteredOptionAsBoldString(str: string, clonedTooltipOptions: TooltipModel[]) {\n let tooltipOptions = cloneDeep(\n clonedTooltipOptions.filter((item) => item.label.toString().toLowerCase().includes(str.toLowerCase())),\n );\n tooltipOptions.forEach((element) => {\n element.label = this.boldString(element.label, str);\n });\n\n return tooltipOptions;\n }\n\n boldString(str: string, find: string) {\n let indexes = this.getIndicesOf(find, str, false);\n\n indexes.forEach((item, index) => {\n let startIndex = item + index * 7; //Multiplying by 7 as there are 7char: <b></b>\n let endIndex = startIndex + find.length;\n let strToBeReplaced = str.substring(startIndex, endIndex);\n str = str.replace(strToBeReplaced, '<b>' + strToBeReplaced + '</b>');\n });\n return str;\n }\n\n getIndicesOf(searchStr: string, str: string, caseSensitive: boolean) {\n var searchStrLen = searchStr.length;\n if (searchStrLen == 0) {\n return [];\n }\n var startIndex = 0,\n index,\n indices = [];\n if (!caseSensitive) {\n str = str.toLowerCase();\n searchStr = searchStr.toLowerCase();\n }\n while ((index = str.indexOf(searchStr, startIndex)) > -1) {\n indices.push(index);\n startIndex = index + searchStrLen;\n }\n return indices;\n }\n\n disableAllBtnsWhenThereAreNoFilteredResults(): [number, boolean, boolean, boolean] {\n // [selectedCheckboxOptionsCount, disableCheckboxApply, disableClearAll, disableSelectAll];\n return [0, true, true, true];\n }\n\n //============================================================Calendar filter===========================================================//\n createRangeForTheDateFilter(optionData: any[]) {\n let minMaxDate;\n //When you want to use startDate and endDate combined as single column then use Period.\n if (\n this.selectedRadio == 'period' ||\n this.selectedRadio == 'buyerFlightDates' ||\n this.selectedRadio == 'trafficFlightDates'\n ) {\n minMaxDate = this.createStartEndDateRange(optionData);\n } else {\n minMaxDate = this.returnMinAndMaxDate(optionData, this.selectedRadio);\n }\n\n return minMaxDate;\n }\n\n createStartEndDateRange(optionData: any[]) {\n let minStartDate = this.returnMinAndMaxDate(optionData, 'startDate');\n let maxEndDate = this.returnMinAndMaxDate(optionData, 'endDate');\n return [minStartDate[0], maxEndDate[1]];\n }\n\n getMinAndMaxDateRangeForCalendar(minMaxDate: any[], parsingFormat: string) {\n let calendarMinEnabledDate = this.dateTimeFormatService.convertToNgbDate(minMaxDate[0], parsingFormat);\n let calendarMaxEnabledDate = this.dateTimeFormatService.convertToNgbDate(minMaxDate[1], parsingFormat);\n return [calendarMinEnabledDate, calendarMaxEnabledDate];\n }\n\n getSelectedDateForCalendar(minMaxDate: any[], parsingFormat: string, minDate: NgbDateType, maxDate: NgbDateType) {\n let selectedMinDate;\n let selectedMaxDate;\n\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\n let selectedDateObj = this.tooltipSelectedMap.get(this.selectedRadio);\n\n if (selectedDateObj.fromDate.isAfter(minMaxDate[0])) {\n selectedMinDate = this.dateTimeFormatService.convertToNgbDate(selectedDateObj.fromDate, parsingFormat);\n } else {\n selectedMinDate = this.dateTimeFormatService.convertToNgbDate(minMaxDate[0], parsingFormat);\n }\n\n if (selectedDateObj.toDate.isAfter(minMaxDate[1])) {\n selectedMaxDate = this.dateTimeFormatService.convertToNgbDate(minMaxDate[1], parsingFormat);\n } else {\n selectedMaxDate = this.dateTimeFormatService.convertToNgbDate(selectedDateObj.toDate, parsingFormat);\n }\n } else {\n selectedMinDate = cloneDeep(minDate);\n selectedMaxDate = cloneDeep(maxDate);\n }\n\n return [selectedMinDate, selectedMaxDate];\n }\n\n getPreviousSelectedDatesForCalendar(optionData: any[]) {\n let previousSelectedDate: { fromDate: any; toDate: any } = { fromDate: null, toDate: null };\n\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\n previousSelectedDate = this.tooltipSelectedMap.get(this.selectedRadio);\n\n if (!this.initialValueMap.has(this.selectedRadio)) {\n this.setInitialValueMapForDateFilter(optionData);\n }\n } else if (this.initialValueMap.has(this.selectedRadio)) {\n previousSelectedDate = this.initialValueMap.get(this.selectedRadio);\n } else {\n this.setInitialValueMapForDateFilter(optionData);\n previousSelectedDate = this.initialValueMap.get(this.selectedRadio);\n }\n\n return previousSelectedDate;\n }\n\n setInitialValueMapForDateFilter(optionData: any[]) {\n let minMaxDate = this.createRangeForTheDateFilter(optionData);\n\n let selectedDate = { fromDate: minMaxDate[0], toDate: minMaxDate[1] };\n this.initialValueMap.set(this.selectedRadio, selectedDate);\n }\n\n getCurrentSelectedDatesForCalendar(currentSelectedDate: any, minDate: NgbDateType, maxDate: NgbDateType) {\n let fromDate = {\n year: currentSelectedDate.fromDate.year,\n month: currentSelectedDate.fromDate.month,\n day: currentSelectedDate.fromDate.day,\n };\n let toDate = {\n year: currentSelectedDate.toDate.year,\n month: currentSelectedDate.toDate.month,\n day: currentSelectedDate.toDate.day,\n };\n\n if (isEqual(minDate, fromDate) && isEqual(maxDate, toDate) && this.initialValueMap.has(this.selectedRadio)) {\n currentSelectedDate = this.initialValueMap.get(this.selectedRadio);\n } else {\n currentSelectedDate.fromDate = dayjs(\n this.dateTimeFormatService.convertNgbDateToMoment(currentSelectedDate.fromDate),\n );\n currentSelectedDate.toDate = dayjs(\n this.dateTimeFormatService.convertNgbDateToMoment(currentSelectedDate.toDate),\n );\n }\n\n return currentSelectedDate;\n }\n\n //==================================================================SLIDER===========================================================//\n\n getSliderTranslateFuncVal(header: string, currencySet: Set<string>) {\n let translateFunc;\n\n if (currencySet.has(header)) {\n translateFunc = 'currency';\n } else if (header == 'postedAudPercent' || header == 'parentRowShares' || header == 'parentRowPutPercent') {\n translateFunc = 'percent';\n } else {\n translateFunc = 'normal';\n }\n\n return translateFunc;\n }\n\n getSliderOptions(optionsData: any[], translateFunc: string, header: string) {\n let minValue = this.returnMaxAndMinValue(optionsData, header, true);\n let maxValue = this.returnMaxAndMinValue(optionsData, header, false);\n\n let obj = this.setOptionValues(minValue, maxValue);\n\n if (translateFunc === 'normal') {\n obj.translate = this.normalTranslateFunction;\n } else if (translateFunc === 'percent') {\n obj.translate = this.percentTranslateFunction;\n } else if (translateFunc === 'currency') {\n obj.translate = this.currencyTranslateFunction;\n }\n\n return obj;\n }\n\n setSelectedRangeForSlider(header: string, options: Options) {\n let sliderMinValue;\n let sliderMaxValue;\n\n if (this.tooltipSelectedMap.has(header)) {\n let selectedObj = this.tooltipSelectedMap.get(header);\n sliderMinValue = selectedObj.min < options.floor ? options.floor : selectedObj.min;\n sliderMaxValue = selectedObj.max < options.ceil ? selectedObj.max : options.ceil;\n } else {\n sliderMinValue = options.floor;\n sliderMaxValue = options.ceil;\n }\n\n return [sliderMinValue, sliderMaxValue];\n }\n\n isValueInRange(options: Options, val: number) {\n return options.floor <= val && val <= options.ceil;\n }\n\n getPreviousSelectedValueForSlider(clonedData: any[]) {\n let previousSliderData: { min: any; max: any } = { min: '', max: '' };\n\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\n previousSliderData = this.tooltipSelectedMap.get(this.selectedRadio);\n if (!this.initialValueMap.has(this.selectedRadio)) {\n this.setInitialValueMapForSliderFilter(clonedData);\n }\n } else if (this.initialValueMap.has(this.selectedRadio)) {\n previousSliderData = this.initialValueMap.get(this.selectedRadio);\n } else {\n this.setInitialValueMapForSliderFilter(clonedData);\n previousSliderData = this.initialValueMap.get(this.selectedRadio);\n }\n\n return previousSliderData;\n }\n\n setInitialValueMapForSliderFilter(clonedData: any[]) {\n let minValue = this.returnMaxAndMinValue(clonedData, this.selectedRadio, true);\n let maxValue = this.returnMaxAndMinValue(clonedData, this.selectedRadio, false);\n let sliderData = { min: minValue, max: maxValue };\n this.initialValueMap.set(this.selectedRadio, sliderData);\n }\n\n getCurrentSelectedValueForSlider(minEnteredVal: number, maxEnteredVal: number, options: Options) {\n let currentSliderData: { min: any; max: any } = { min: null, max: null };\n currentSliderData.max = maxEnteredVal;\n currentSliderData.min = minEnteredVal;\n\n if (\n currentSliderData.min == options.floor &&\n currentSliderData.max == options.ceil &&\n this.initialValueMap.has(this.selectedRadio)\n ) {\n currentSliderData = this.initialValueMap.get(this.selectedRadio);\n }\n\n return currentSliderData;\n }\n\n //==============================================================TIME====================================================================//\n getSelectedTimeRange(header: string, clonedData: any[]) {\n let selectedFromTime: any[];\n let selectedToTime: any[];\n\n if (this.tooltipSelectedMap.has(header)) {\n selectedFromTime = this.tooltipSelectedMap.get(header).fromTime;\n selectedToTime = this.tooltipSelectedMap.get(header).toTime;\n } else {\n this.setInitialValueMapForTimeFilter(clonedData, header);\n selectedFromTime = this.initialValueMap.get(header).fromTime;\n selectedToTime = this.initialValueMap.get(header).toTime;\n }\n\n if (selectedFromTime != undefined || selectedToTime != undefined) {\n selectedFromTime = AnnaDateTimeFormatService.formatToTwelveHrs(selectedFromTime, true);\n selectedToTime = AnnaDateTimeFormatService.formatToTwelveHrs(selectedToTime, true);\n } else {\n selectedFromTime = ['-', '-', '-'];\n selectedToTime = ['-', '-', '-'];\n }\n\n return [selectedFromTime, selectedToTime];\n }\n\n setInitialValueMapForTimeFilter(clonedData: any[], key: string) {\n if (key == 'startEndTime' || key == 'TimeBand') {\n this.setInitialValueForStartAndEndTimeRange(clonedData, key);\n } else {\n this.setInitialValueForStartOrEndTimeRange(clonedData, key);\n }\n }\n\n //use for filter where we have start and end time range in one filter\n //startEndTime: [\"6 - 7A\", \"06: 00 : 00\" , \"07:00:00\"]\n setInitialValueForStartAndEndTimeRange(clonedData: any[], key: string) {\n let includeMulti = clonedData.findIndex((obj) => obj[key][0] == '<multi>') != -1;\n let includeZero = clonedData.findIndex((obj) => obj[key][0] == '0') != -1;\n let includeTimeRange = clonedData.findIndex((obj) => obj[key][0] != '0' && obj[key][0] != '<multi>') != -1;\n\n let filteredStartTime = clonedData.filter((obj) => !['', '-', null, '0', '<multi>'].includes(obj['startTime']));\n let filteredEndTime = clonedData.filter((obj) => !['', '-', null, '0', '<multi>'].includes(obj['endTime']));\n\n let startTimeArr = map(filteredStartTime, 'startTime');\n let endTimeArr = map(filteredEndTime, 'endTime');\n\n startTimeArr.sort((a, b) => {\n return this.dateTimeFormatService.sortByTimeAscending(a, b);\n });\n\n endTimeArr.sort((a, b) => {\n return this.dateTimeFormatService.sortByTimeDescending(a, b);\n });\n\n let obj = {\n fromTime: startTimeArr[0],\n toTime: endTimeArr[0],\n includeMulti: includeMulti,\n includeZero: includeZero,\n includeTimeRange: includeTimeRange,\n };\n\n this.initialValueMap.set(key, obj);\n }\n\n //use for the filters where we have different filter for start and end time\n //startTime: \"06:00:00\"\n setInitialValueForStartOrEndTimeRange(clonedData: any[], key: string) {\n let includeMulti = clonedData.findIndex((obj) => obj[key] == '<multi>') != -1;\n let includeZero = clonedData.findIndex((obj) => obj[key] == '0') != -1;\n let includeTimeRange = clonedData.findIndex((obj) => obj[key] != '0' && obj[key] != '<multi>') != -1;\n\n let data = clonedData.filter((obj) => !['', '-', null, '0', '<multi>'].includes(obj[key]));\n\n let timeArr = map(data, key);\n timeArr.sort((a, b) => {\n return this.dateTimeFormatService.sortByTimeAscending(a, b);\n });\n\n let obj = {\n fromTime: timeArr[0],\n toTime: timeArr[timeArr.length - 1],\n includeMulti: includeMulti,\n includeZero: includeZero,\n includeTimeRange: includeTimeRange,\n };\n\n this.initialValueMap.set(key, obj);\n }\n\n selectUnselectTimeFilterCheckbox(key: string, optionsData: any[]) {\n let showMultiTimeCheckbox = false;\n let showZeroTimeCheckbox = false;\n let showEnterTimeCheckbox = false;\n let multiTimeCheckboxChecked = false;\n let zeroTimeCheckboxChecked = false;\n let enterTimeCheckboxChecked = false;\n\n let selectedTimeObj;\n\n if (this.tooltipSelectedMap.has(key)) {\n selectedTimeObj = this.tooltipSelectedMap.get(key);\n } else {\n selectedTimeObj = this.initialValueMap.get(key);\n }\n\n let timeArr: string[];\n if (key == 'startEndTime' || key == 'TimeBand') {\n timeArr = optionsData.map((item) => item[key][0]);\n } else {\n timeArr = optionsData.map((item) => item[key]);\n }\n\n if (timeArr.findIndex((val) => val == '0') != -1) {\n showZeroTimeCheckbox = true;\n zeroTimeCheckboxChecked = selectedTimeObj.includeZero;\n }\n\n if (timeArr.findIndex((val) => val == '<multi>') != -1) {\n showMultiTimeCheckbox = true;\n multiTimeCheckboxChecked = selectedTimeObj.includeMulti;\n }\n\n if (showZeroTimeCheckbox || showMultiTimeCheckbox) {\n showEnterTimeCheckbox = true;\n }\n\n if (timeArr.findIndex((val) => val != '<multi>' && val != '0') != -1) {\n enterTimeCheckboxChecked = selectedTimeObj?.includeTimeRange;\n }\n\n return {\n showMultiTimeCheckbox: showMultiTimeCheckbox,\n showZeroTimeCheckbox: showZeroTimeCheckbox,\n showEnterTimeCheckbox: showEnterTimeCheckbox,\n multiTimeCheckboxChecked: multiTimeCheckboxChecked,\n zeroTimeCheckboxChecked: zeroTimeCheckboxChecked,\n enterTimeCheckboxChecked: enterTimeCheckboxChecked,\n };\n }\n\n checkIfStartTimeIsAfterEndTime(startTime: string[], endTime: string[]) {\n let timeFormat = 'HH:mm:ss';\n\n let startTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\n startTime[0] + ':' + startTime[1] + ' ' + startTime[2],\n true,\n );\n let startTime24HrFormat = startTime24HrFormatArr[0] + ':' + startTime24HrFormatArr[1] + ':00';\n let endTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\n endTime[0] + ':' + endTime[1] + ' ' + endTime[2],\n true,\n );\n let endTime24HrFormat = endTime24HrFormatArr[0] + ':' + endTime24HrFormatArr[1] + ':00';\n return dayjs(startTime24HrFormat, timeFormat).isAfter(dayjs(endTime24HrFormat, timeFormat));\n }\n\n getPreviousSelectedTimeFilter() {\n let previousSelectedTimeFilter;\n\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\n previousSelectedTimeFilter = this.tooltipSelectedMap.get(this.selectedRadio);\n } else if (this.initialValueMap.has(this.selectedRadio)) {\n previousSelectedTimeFilter = this.initialValueMap.get(this.selectedRadio);\n }\n\n return previousSelectedTimeFilter;\n }\n\n getCurrentSelectedTimeFilter(\n startTime: string[],\n endTime: string[],\n includeMulti: boolean,\n includeZero: boolean,\n includeTimeRange: boolean,\n ) {\n let currentSelectedTimeFilter;\n\n let fromTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\n startTime[0] + ':' + startTime[1] + ' ' + startTime[2],\n true,\n );\n let fromTime24HrFormat = fromTime24HrFormatArr[0] + ':' + fromTime24HrFormatArr[1] + ':00';\n\n let toTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\n endTime[0] + ':' + endTime[1] + ' ' + endTime[2],\n true,\n );\n let toTime24HrFormat = toTime24HrFormatArr[0] + ':' + toTime24HrFormatArr[1] + ':00';\n\n currentSelectedTimeFilter = {\n fromTime: fromTime24HrFormat,\n toTime: toTime24HrFormat,\n includeMulti: includeMulti,\n includeZero: includeZero,\n includeTimeRange: includeTimeRange,\n };\n\n return currentSelectedTimeFilter;\n }\n\n incrementHourInput(arr: any[]) {\n if (arr[0] == '') {\n arr[0] = 1;\n } else if (parseInt(arr[0]) < 12) {\n arr[0] = parseInt(arr[0]) + 1;\n } else {\n arr[0] = 1;\n }\n }\n\n decrementHourInput(arr: any[]) {\n if (arr[0] == '') {\n arr[0] = 12;\n } else if (parseInt(arr[0]) > 1) {\n arr[0] = parseInt(arr[0]) - 1;\n } else {\n arr[0] = 12;\n }\n }\n\n incrementMinuteInput(arr: any[]) {\n // increment to nearest proper interval(15,30,45)\n let min = parseInt(arr[1]);\n if (min <= 14) {\n arr[1] = '15';\n } else if (min >= 15 && min <= 29) {\n arr[1] = '30';\n } else if (min >= 30 && min <= 44) {\n arr[1] = '45';\n } else if (min >= 45) {\n arr[1] = '00';\n }\n }\n\n decrementMinuteInput(arr: any) {\n let min = parseInt(arr[1]);\n if (min > 0 && min <= 15) {\n arr[1] = '00';\n } else if (min >= 16 && min <= 30) {\n arr[1] = '15';\n } else if (min >= 31 && min <= 45) {\n arr[1] = '30';\n } else if (min > 45 || min == 0) {\n arr[1] = '45';\n }\n }\n\n incrementOrDecrementHour(increment: boolean, time: string[]) {\n if (increment) {\n this.incrementHourInput(time);\n } else {\n this.decrementHourInput(time);\n }\n }\n\n incrementOrDecrementMin(increment: boolean, time: string[]) {\n if (increment) {\n this.incrementMinuteInput(time);\n } else {\n this.decrementMinuteInput(time);\n }\n }\n\n isHourValueInvalid(hr: string) {\n return hr.length == 0 || !+hr || 1 > parseInt(hr) || parseInt(hr) > 12 || hr.includes('.');\n }\n\n isMinuteValueInvalid(min: string) {\n return (\n min.length != 2 || (!+min && min != '00') || 0 > parseInt(min) || parseInt(min) > 59 || min.includes('.')\n );\n }\n\n //=============================================================SORT======================================================================//\n updateSortMap(tempSortOrder: SortType, tableData: any[], isLurAndCsrComponent: boolean) {\n this.annaSortService.columnSortState = new Map();\n this.annaSortService.columnSortState.set(this.selectedRadio, tempSortOrder);\n let sortedTableData = this.annaSortService.applySorting(\n this.selectedRadio,\n tempSortOrder,\n tableData,\n isLurAndCsrComponent,\n );\n return sortedTableData;\n }\n}\n","// Angular import statements\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { SortOption, SortType, SortTypeEnum } from '../../../anna-core-shared-lib/models/anna-sort.model';\nimport { AnnaSortService } from '../../../anna-core-shared-lib/services/anna-sort.service';\nimport { NgFor, NgClass } from '@angular/common';\n\n//Add onChange push change detection\n@Component({\n selector: 'anna-core-sort-lib',\n templateUrl: './anna-sort.component.html',\n styleUrls: ['./anna-sort.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgFor, NgClass],\n})\nexport class AnnaSortComponent implements OnChanges {\n @Input() sortObjectKey: string;\n @Output() sortOptionClicked = new EventEmitter<SortType>();\n\n sortOptions: SortOption[] = [\n {\n sortType: SortTypeEnum.ASC,\n isOptionActive: false,\n text: 'A to Z',\n },\n {\n sortType: SortTypeEnum.DESC,\n isOptionActive: false,\n text: 'Z to A',\n },\n {\n sortType: SortTypeEnum.DEFAULT,\n isOptionActive: false,\n text: 'Default',\n },\n ];\n\n constructor(private annaSortService: AnnaSortService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['sortObjectKey'] && changes['sortObjectKey'].currentValue) {\n let sortType = this.annaSortService.columnSortState.get(this.sortObjectKey);\n this.setSortType(sortType);\n }\n }\n\n sortOptionChanged(index: number, sortType: SortType) {\n this.sortOptions.forEach((item) => (item.isOptionActive = false));\n this.sortOptions[index].isOptionActive = true;\n this.sortOptionClicked.emit(sortType);\n }\n\n ngOnInit(): void {\n this.annaSortService.updateSortTypeSubject.subscribe((item: string) => {\n this.setSortType(item);\n });\n }\n\n setSortType(option: string) {\n option = option ? option : SortTypeEnum.DEFAULT;\n this.sortOptions.forEach((item) => (item.isOptionActive = false));\n let index = this.sortOptions.findIndex((item) => item.sortType == option);\n this.sortOptions[index].isOptionActive = true;\n }\n}\n","<p class=\"sort-container\">\n <button\n class=\"sort-btn\"\n *ngFor=\"let option of sortOptions; let i = index\"\n (click)=\"sortOptionChanged(i, option.sortType)\"\n [ngClass]=\"{ active: option.isOptionActive }\"\n >\n {{ option.text }}\n </button>\n</p>\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\n\nimport { cloneDeep, isEqual, truncate } from 'lodash-es';\n\nimport { radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\nimport { SortType } from '../../../../anna-core-shared-lib/models/anna-sort.model';\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\nimport { AnnaDateTimeFormatService } from '../../../../anna-core-shared-lib/services/anna-date-time-format.service';\nimport { IGtGeneralConfig } from '../../../../anna-core-shared-lib/models/anna-non-editable-gt-models';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { FormsModule } from '@angular/forms';\nimport { AnnaSortComponent } from '../../anna-sort/anna-sort.component';\nimport { NgIf, NgFor, NgClass } from '@angular/common';\n\n@Component({\n selector: 'anna-core-anna-column-time-filter',\n templateUrl: './anna-column-time-filter.component.html',\n styleUrls: ['./anna-column-time-filter.component.scss'],\n standalone: true,\n imports: [NgIf, NgFor, NgClass, AnnaSortComponent, FormsModule, MatButtonToggleModule],\n})\nexport class AnnaColumnTimeFilterComponent implements OnInit {\n @Input() tableData: any[];\n @Input() clonedTableData: any[];\n @Input() filterTabObjects: any[];\n @Input() showFilterHeaderTabs: boolean;\n @Input() showAllTimeRangeCheckboxes: boolean;\n @Input() isLurAndCsrComponent: boolean;\n\n @Input() gtGeneralConfig: IGtGeneralConfig;\n @Input() showClearAllFilter: boolean = true;\n @Input() startFromText: string = 'From';\n @Input() endToText: string = 'To';\n @Input() isSortAndFilterAbsent: boolean = false;\n @Output() timeChanges = new EventEmitter();\n @Output() filterAppliedToTable = new EventEmitter();\n @Output() sortingAppliedToTable = new EventEmitter();\n @Output() getSortType = new EventEmitter();\n @Output() closeTooltip = new EventEmitter();\n\n isFilterChanged: boolean;\n tempSortOrder: SortType = null;\n isSortChanged: boolean;\n showSortComponent: boolean = false;\n showFilterComponent: boolean = false;\n disableColumnClearAllBtn: boolean = true;\n\n startTimeHourErr: boolean;\n startTimeMinErr: boolean;\n endTimeHourErr: boolean;\n endTimeMinErr: boolean;\n selectedFromTime: any[];\n selectedToTime: any[];\n clonedSelectedFromTime: any;\n clonedSelectedToTime: any;\n disableTimeFilterApplyBtn: boolean;\n tableColumns: string[] = [];\n totalRowColumns: string[] = null;\n showMultiTimeCheckbox: boolean;\n showZeroTimeCheckbox: boolean;\n showEnterTimeCheckbox: boolean;\n multiTimeCheckboxChecked: boolean;\n zeroTimeCheckboxChecked: boolean;\n enterTimeCheckboxChecked: boolean;\n bindValueFuncCalled: boolean;\n\n constructor(\n private annaSortService: AnnaSortService,\n public annaDateTimeFormatService: AnnaDateTimeFormatService,\n public annaFilterService: AnnaFilterService,\n ) {}\n\n ngOnInit(): void {\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\n }\n\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\n let header = activeTab.key;\n\n this.showSortComponent = activeTab.isSortRequired;\n this.showFilterComponent = activeTab.isFilterRequired;\n\n this.tempSortOrder = null;\n this.isFilterChanged = false;\n this.isSortChanged = false;\n\n this.annaFilterService.selectedRadio = header;\n this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();\n\n if (reload) {\n setTimeout(() => {\n this.createFilterTooltipData(activeTab, header);\n }, 100);\n } else {\n this.createFilterTooltipData(activeTab, header);\n }\n }\n\n createFilterTooltipData(activeTab: radioButtonModel, header: string) {\n this.showSortComponent = activeTab.isSortRequired;\n this.showFilterComponent = activeTab.isFilterRequired;\n\n this.disableTimeFilterApplyBtn = true;\n\n if (this.showFilterComponent) {\n this.getTimeFilterData(header);\n }\n }\n\n getTimeFilterData(header: string): void {\n this.startTimeHourErr = this.startTimeMinErr = this.endTimeHourErr = this.endTimeMinErr = false;\n\n if (this.isSortAndFilterAbsent) {\n this.selectedFromTime = this.clonedTableData[0].time;\n this.selectedToTime = this.clonedTableData[1].time;\n this.selectedFromTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedFromTime, true);\n this.selectedToTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedToTime, true);\n } else {\n [this.selectedFromTime, this.selectedToTime] = this.annaFilterService.getSelectedTimeRange(\n header,\n this.clonedTableData,\n );\n }\n\n this.clonedSelectedFromTime = cloneDeep(this.selectedFromTime);\n this.clonedSelectedToTime = cloneDeep(this.selectedToTime);\n\n let optionsData = this.annaFilterService?.getFilterOptionsData(this.tableData, this.clonedTableData);\n\n let checkedSelectedObj = this.annaFilterService?.selectUnselectTimeFilterCheckbox(header, optionsData);\n\n this.showMultiTimeCheckbox = checkedSelectedObj.showMultiTimeCheckbox;\n this.showZeroTimeCheckbox = checkedSelectedObj.showZeroTimeCheckbox;\n this.showEnterTimeCheckbox = checkedSelectedObj.showEnterTimeCheckbox;\n this.multiTimeCheckboxChecked = checkedSelectedObj.multiTimeCheckboxChecked;\n this.zeroTimeCheckboxChecked = checkedSelectedObj.zeroTimeCheckboxChecked;\n this.enterTimeCheckboxChecked = checkedSelectedObj.enterTimeCheckboxChecked;\n }\n\n selectOrUnselectMultiTimeCheckbox() {\n this.multiTimeCheckboxChecked = !this.multiTimeCheckboxChecked;\n this.disableTimeFilterApplyButton();\n }\n\n selectOrUnselectZeroTimeCheckbox() {\n this.zeroTimeCheckboxChecked = !this.zeroTimeCheckboxChecked;\n this.disableTimeFilterApplyButton();\n }\n\n selectOrUnselectEnterTimeCheckbox() {\n this.enterTimeCheckboxChecked = !this.enterTimeCheckboxChecked;\n this.disableTimeFilterApplyButton();\n }\n\n checkIfTimeTooltipIsFiltered() {\n let previousSelectedTimeFilter = this.annaFilterService.getPreviousSelectedTimeFilter();\n let currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(\n this.selectedFromTime,\n this.selectedToTime,\n this.multiTimeCheckboxChecked,\n this.zeroTimeCheckboxChecked,\n this.enterTimeCheckboxChecked,\n );\n\n this.isFilterChanged = !isEqual(previousSelectedTimeFilter, currentSelectedTimeFilter);\n return this.isFilterChanged;\n }\n checkIfInvalidTimeIsEntered() {\n if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) {\n return true;\n } else {\n return false;\n }\n }\n disableTimeFilterApplyButton() {\n if (this.isSortAndFilterAbsent) {\n this.disableTimeFilterApplyBtn = this.checkIfInvalidTimeIsEntered() || !this.checkIfTimeTooltipIsFiltered();\n } else {\n if (this.showFilterComponent && this.showSortComponent) {\n let isFilterChanged = this.checkIfTimeTooltipIsFiltered();\n let isSortChanged = this.checkIfSortingChanged();\n this.disableTimeFilterApplyBtn =\n !this.validateTimeFilterInput() || (!isSortChanged && !isFilterChanged);\n } else if (this.showFilterComponent) {\n this.disableTimeFilterApplyBtn =\n !this.validateTimeFilterInput() || !this.checkIfTimeTooltipIsFiltered();\n } else if (this.showSortComponent) {\n this.disableTimeFilterApplyBtn = !this.checkIfSortingChanged();\n }\n }\n }\n\n checkIfSortingChanged() {\n this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);\n return this.isSortChanged;\n }\n\n validateTimeFilterInput() {\n if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) {\n return false;\n }\n\n if (\n this.showMultiTimeCheckbox &&\n !this.multiTimeCheckboxChecked &&\n this.showZeroTimeCheckbox &&\n !this.zeroTimeCheckboxChecked &&\n this.showEnterTimeCheckbox &&\n !this.enterTimeCheckboxChecked\n ) {\n return false;\n }\n\n return !this.annaFilterService.checkIfStartTimeIsAfterEndTime(this.selectedFromTime, this.selectedToTime);\n }\n\n applyTimeFilters() {\n if (this.isSortAndFilterAbsent) {\n let timeSelected = [this.selectedFromTime, this.selectedToTime];\n this.timeChanges.emit(timeSelected);\n } else {\n this.applyTimeFilterOnData();\n this.applySortingOnFilteredData();\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n this.emitData();\n }\n\n this.closeTooltip.emit();\n }\n\n emitData() {\n if (this.isFilterChanged && this.isSortChanged) {\n this.filterAppliedToTable.emit(this.tableData);\n } else if (this.isFilterChanged) {\n this.filterAppliedToTable.emit(this.tableData);\n } else if (this.isSortChanged) {\n this.getSortType.emit(this.tempSortOrder);\n this.sortingAppliedToTable.emit(this.tableData);\n }\n }\n\n changeStartTimeHour(increment: boolean) {\n if (!this.startTimeHourErr) {\n this.annaFilterService.incrementOrDecrementHour(increment, this.selectedFromTime);\n this.startTimeHourChange(this.selectedFromTime[0].toString());\n }\n }\n\n changeEndTimeHour(increment: boolean) {\n if (!this.endTimeHourErr) {\n this.annaFilterService.incrementOrDecrementHour(increment, this.selectedToTime);\n this.endTimeHourChange(this.selectedToTime[0].toString());\n }\n }\n\n changeEndTimeMinute(increment: boolean) {\n if (!this.endTimeMinErr) {\n this.annaFilterService.incrementOrDecrementMin(increment, this.selectedToTime);\n this.endTimeMinChange(this.selectedToTime[1].toString());\n }\n }\n\n changeStartTimeMinute(increment: boolean) {\n if (!this.startTimeMinErr) {\n this.annaFilterService.incrementOrDecrementMin(increment, this.selectedFromTime);\n this.startTimeMinChange(this.selectedFromTime[1].toString());\n }\n }\n\n startTimeHourChange(val: string) {\n this.startTimeHourErr = this.annaFilterService.isHourValueInvalid(val);\n this.disableTimeFilterApplyButton();\n }\n\n startTimeMinChange(val: string) {\n this.startTimeMinErr = this.annaFilterService.isMinuteValueInvalid(val);\n this.disableTimeFilterApplyButton();\n }\n\n endTimeHourChange(val: string) {\n this.endTimeHourErr = this.annaFilterService.isHourValueInvalid(val);\n this.disableTimeFilterApplyButton();\n }\n\n endTimeMinChange(val: string) {\n this.endTimeMinErr = this.annaFilterService.isMinuteValueInvalid(val);\n this.disableTimeFilterApplyButton();\n }\n\n applySortingOnFilteredData() {\n if (this.showSortComponent) {\n if (this.isSortChanged) {\n this.tableData = this.annaFilterService.updateSortMap(\n this.tempSortOrder,\n this.tableData,\n this.isLurAndCsrComponent,\n );\n } else if (this.isFilterChanged) {\n this.tableData = this.annaSortService.checkIfSortingIsApplied(\n this.tableData,\n this.isLurAndCsrComponent,\n );\n }\n } else if (this.isFilterChanged) {\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\n }\n }\n\n applyTimeFilterOnData() {\n if (this.showFilterComponent && this.isFilterChanged) {\n let currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(\n this.selectedFromTime,\n this.selectedToTime,\n this.multiTimeCheckboxChecked,\n this.zeroTimeCheckboxChecked,\n this.enterTimeCheckboxChecked,\n );\n\n let isFiltered = this.annaFilterService.reOrderAppliedFiltersState(\n this.clonedTableData,\n currentSelectedTimeFilter,\n );\n this.annaFilterService.tooltipSelectedMap.set(\n this.annaFilterService.selectedRadio,\n currentSelectedTimeFilter,\n );\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, '');\n\n if (!isFiltered) {\n this.annaFilterService.tooltipSelectedMap.delete(this.annaFilterService.selectedRadio);\n }\n this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);\n }\n }\n\n closeTimeFilter() {\n this.selectedFromTime = cloneDeep(this.clonedSelectedFromTime);\n this.selectedToTime = cloneDeep(this.clonedSelectedToTime);\n this.closeTooltip.emit();\n }\n\n clearColumnFilter() {\n this.annaFilterService.clearColumnFilter();\n this.tableData = cloneDeep(this.annaFilterService.filterData(this.clonedTableData, ''));\n this.annaSortService.noSortingAppliedData = this.tableData;\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\n this.annaFilterService.updateStateOfTheCurrentFilterTab(this.annaSortService.columnSortState);\n this.filterAppliedToTable.emit(this.tableData);\n }\n\n storeSortTypeInTempVariable(event: SortType) {\n this.tempSortOrder = event;\n this.disableTimeFilterApplyButton();\n }\n}\n","<div\n class=\"radio-container\"\n *ngIf=\"showFilterHeaderTabs\"\n>\n <div *ngFor=\"let data of filterTabObjects\">\n <p\n class=\"filter-tab\"\n [title]=\"data.label\"\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\n [ngClass]=\"{ active: annaFilterService.selectedRadio == data.key }\"\n *ngIf=\"filterTabObjects.length > 0\"\n >\n {{ data.label }}\n </p>\n </div>\n</div>\n\n<anna-core-sort-lib\n *ngIf=\"showSortComponent\"\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\n></anna-core-sort-lib>\n\n<ng-container *ngIf=\"showFilterComponent\">\n <button\n class=\"column-clear-all\"\n *ngIf=\"showClearAllFilter\"\n [disabled]=\"disableColumnClearAllBtn\"\n (click)=\"clearColumnFilter()\"\n >\n Clear filter\n </button>\n <div\n class=\"time-filter-checkboxes\"\n *ngIf=\"showAllTimeRangeCheckboxes\"\n >\n <!-- Multi time option checkbox -->\n <div\n class=\"d-flex align-items-center\"\n style=\"padding: 0.5rem 0 0.5rem 0.5rem\"\n *ngIf=\"showMultiTimeCheckbox\"\n >\n <span\n *ngIf=\"multiTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!multiTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\n >\n check_box_outline_blank\n </span>\n <p style=\"margin-left: 2px\">Include Multi</p>\n </div>\n <!-- Zero time option checkbox -->\n <div\n class=\"d-flex align-items-center\"\n style=\"padding: 0.5rem 0 0.5rem 0.5rem\"\n *ngIf=\"showZeroTimeCheckbox\"\n >\n <span\n *ngIf=\"zeroTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!zeroTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\n >\n check_box_outline_blank\n </span>\n <p style=\"margin-left: 2px\">Include Zero</p>\n </div>\n <!-- Enter time range option checkbox -->\n <div\n class=\"d-flex align-items-center\"\n style=\"padding: 0.5rem 0 0.5rem 0.5rem\"\n *ngIf=\"showEnterTimeCheckbox\"\n >\n <span\n *ngIf=\"enterTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!enterTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\n >\n check_box_outline_blank\n </span>\n <p style=\"margin-left: 2px\">Enter time range</p>\n </div>\n </div>\n <div class=\"time-label-container\">\n <label>{{ startFromText }}</label>\n </div>\n <div class=\"time-container\">\n <input\n class=\"form-control numberInput\"\n [ngClass]=\"{ 'error-border': startTimeHourErr }\"\n [(ngModel)]=\"selectedFromTime[0]\"\n type=\"text\"\n pattern=\"[1-12]*\"\n (ngModelChange)=\"startTimeHourChange($event)\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeStartTimeHour(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n (click)=\"changeStartTimeHour(false)\"\n ></i>\n </div>\n <span class=\"dot\">:</span>\n <input\n class=\"form-control numberInput\"\n [ngClass]=\"{ 'error-border': startTimeMinErr }\"\n [(ngModel)]=\"selectedFromTime[1]\"\n type=\"text\"\n pattern=\"[0-59]*\"\n (ngModelChange)=\"startTimeMinChange($event)\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeStartTimeMinute(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n style=\"position: relative; left: 0.25px\"\n (click)=\"changeStartTimeMinute(false)\"\n ></i>\n </div>\n <div>\n <mat-button-toggle-group\n [(ngModel)]=\"selectedFromTime[2]\"\n (ngModelChange)=\"disableTimeFilterApplyButton()\"\n >\n <mat-button-toggle value=\"AM\">\n <span>AM</span>\n </mat-button-toggle>\n <mat-button-toggle value=\"PM\">\n <span>PM</span>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n\n <div class=\"time-label-container\">\n <label>{{ endToText }}</label>\n </div>\n <div class=\"time-container\">\n <input\n class=\"form-control numberInput\"\n [(ngModel)]=\"selectedToTime[0]\"\n [ngClass]=\"{ 'error-border': endTimeHourErr }\"\n (ngModelChange)=\"endTimeHourChange($event)\"\n type=\"text\"\n pattern=\"[1-12]*\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeEndTimeHour(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n (click)=\"changeEndTimeHour(false)\"\n ></i>\n </div>\n <span class=\"dot\">:</span>\n <input\n class=\"form-control numberInput\"\n [ngClass]=\"{ 'error-border': endTimeMinErr }\"\n [(ngModel)]=\"selectedToTime[1]\"\n (ngModelChange)=\"endTimeMinChange($event)\"\n type=\"text\"\n pattern=\"[0-59]*\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeEndTimeMinute(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n style=\"position: relative; left: 0.25px\"\n (click)=\"changeEndTimeMinute(false)\"\n ></i>\n </div>\n <div>\n <mat-button-toggle-group\n [(ngModel)]=\"selectedToTime[2]\"\n (ngModelChange)=\"disableTimeFilterApplyButton()\"\n >\n <mat-button-toggle value=\"AM\">\n <span>AM</span>\n </mat-button-toggle>\n <mat-button-toggle value=\"PM\">\n <span>PM</span>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n</ng-container>\n\n<div class=\"buttons-container\">\n <button\n class=\"button\"\n (click)=\"closeTimeFilter()\"\n >\n Cancel\n </button>\n <button\n class=\"button\"\n [ngClass]=\"{ disabled: disableTimeFilterApplyBtn }\"\n (click)=\"applyTimeFilters()\"\n [disabled]=\"disableTimeFilterApplyBtn\"\n >\n Apply\n </button>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport dayjs from 'dayjs';\nimport { cloneDeep, isEqual } from 'lodash-es';\n\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\nimport {\n AnnaDateTimeFormatService,\n NgbDateType,\n} from '../../../../anna-core-shared-lib/services/anna-date-time-format.service';\nimport { SortType, SortTypeEnum } from '../../../../anna-core-shared-lib/models/anna-sort.model';\nimport { radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\nimport { AnnaCalendarFilterComponent } from '../../../../anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component';\nimport { AnnaSortComponent } from '../../anna-sort/anna-sort.component';\nimport { NgIf, NgFor, NgClass } from '@angular/common';\n\n@Component({\n selector: 'anna-core-anna-column-date-range-filter',\n templateUrl: './anna-column-date-range-filter.component.html',\n styleUrls: ['./anna-column-date-range-filter.component.scss'],\n standalone: true,\n imports: [NgIf, NgFor, NgClass, AnnaSortComponent, AnnaCalendarFilterComponent],\n})\nexport class AnnaColumnDateRangeFilterComponent implements OnInit {\n @Input() tableData: any[];\n @Input() clonedTableData: any[];\n @Input() filterTabObjects: any[];\n @Input() isLurAndCsrComponent: boolean;\n @Input() showFilterHeaderTabs: boolean;\n\n @Output() filterAppliedToTable = new EventEmitter();\n @Output() sortingAppliedToTable = new EventEmitter();\n @Output() getSortType = new EventEmitter();\n @Output() closeTooltip = new EventEmitter();\n\n isFilterChanged: boolean;\n tempSortOrder: SortType = null;\n isSortChanged: boolean;\n showSortComponent: boolean = false;\n disableCalendarApplyBtn: boolean;\n selectedLabel: string;\n showFilterComponent: boolean = false;\n disableColumnClearAllBtn: boolean = true;\n\n calendarMinEnabledDate: NgbDateType;\n calendarMaxEnabledDate: NgbDateType;\n selectedMinDate: NgbDateType;\n selectedMaxDate: NgbDateType;\n calendarSelection: any = { fromDate: null, toDate: null };\n\n constructor(\n public annaDateTimeFormatService: AnnaDateTimeFormatService,\n private annaSortService: AnnaSortService,\n public annaFilterService: AnnaFilterService,\n ) {}\n\n ngOnInit(): void {\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\n }\n\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\n let header = activeTab.key;\n this.selectedLabel = activeTab.label;\n\n this.showSortComponent = activeTab.isSortRequired;\n this.showFilterComponent = activeTab.isFilterRequired;\n\n this.tempSortOrder = null;\n this.isFilterChanged = false;\n this.isSortChanged = false;\n\n this.annaFilterService.selectedRadio = header;\n this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();\n\n if (reload) {\n setTimeout(() => {\n this.createFilterTooltipData(activeTab, header);\n }, 100);\n } else {\n this.createFilterTooltipData(activeTab, header);\n }\n }\n\n createFilterTooltipData(activeTab: radioButtonModel, key: string) {\n this.showSortComponent = activeTab.isSortRequired;\n this.showFilterComponent = activeTab.isFilterRequired;\n\n this.disableCalendarApplyBtn = true;\n\n if (this.showFilterComponent) {\n this.getCalendarData();\n }\n }\n\n getCalendarData() {\n const parsingFormat = 'MM/DD/YYYY';\n let optionData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\n let minMaxDate = this.annaFilterService.createRangeForTheDateFilter(optionData);\n this.selectRangeForTheDateFilter(minMaxDate, parsingFormat);\n }\n\n selectRangeForTheDateFilter(minMaxDate: any[], parsingFormat: string) {\n [this.calendarMinEnabledDate, this.calendarMaxEnabledDate] =\n this.annaFilterService.getMinAndMaxDateRangeForCalendar(minMaxDate, parsingFormat);\n\n [this.selectedMinDate, this.selectedMaxDate] = this.annaFilterService.getSelectedDateForCalendar(\n minMaxDate,\n parsingFormat,\n this.calendarMinEnabledDate,\n this.calendarMaxEnabledDate,\n );\n\n this.calendarSelection.fromDate = cloneDeep(this.selectedMinDate);\n this.calendarSelection.toDate = cloneDeep(this.selectedMaxDate);\n }\n\n applyDateFilter() {\n this.applyDateFilterOnData();\n this.applySortingOnFilteredData();\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n this.emitData();\n }\n\n applySortingOnFilteredData() {\n if (this.showSortComponent) {\n if (this.isSortChanged) {\n this.tableData = this.annaFilterService.updateSortMap(\n this.tempSortOrder,\n this.tableData,\n this.isLurAndCsrComponent,\n );\n } else if (this.isFilterChanged) {\n this.tableData = this.annaSortService.checkIfSortingIsApplied(\n this.tableData,\n this.isLurAndCsrComponent,\n );\n }\n } else if (this.isFilterChanged) {\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\n }\n }\n\n emitData() {\n if (this.isFilterChanged && this.isSortChanged) {\n this.filterAppliedToTable.emit(this.tableData);\n } else if (this.isFilterChanged) {\n this.filterAppliedToTable.emit(this.tableData);\n } else if (this.isSortChanged) {\n this.getSortType.emit(this.tempSortOrder);\n this.sortingAppliedToTable.emit(this.tableData);\n }\n }\n\n cancelInDateFilter() {\n this.closeTooltip.emit();\n }\n\n calendarDateChanged(event: any) {\n this.calendarSelection = event;\n this.disableCalendarApplyButton();\n }\n\n disableCalendarApplyButton() {\n if (this.showFilterComponent && this.showSortComponent) {\n let isFilterChanged = this.checkIfDateTooltipIsFiltered();\n let isSortChanged = this.checkIfSortingChanged();\n this.disableCalendarApplyBtn =\n !(this.calendarSelection.fromDate && this.calendarSelection.toDate) ||\n (!isSortChanged && !isFilterChanged);\n } else if (this.showFilterComponent) {\n this.disableCalendarApplyBtn =\n !(this.calendarSelection.fromDate && this.calendarSelection.toDate) ||\n !this.checkIfDateTooltipIsFiltered();\n } else if (this.showSortComponent) {\n this.disableCalendarApplyBtn = !this.checkIfSortingChanged();\n }\n }\n\n checkIfSortingChanged() {\n this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);\n return this.isSortChanged;\n }\n\n checkIfDateTooltipIsFiltered() {\n let previousSelectedDate = this.annaFilterService.getPreviousSelectedDatesForCalendar(this.clonedTableData);\n let currentSelectedDate = cloneDeep(this.calendarSelection);\n\n if (currentSelectedDate.fromDate && currentSelectedDate.toDate) {\n currentSelectedDate = this.annaFilterService.getCurrentSelectedDatesForCalendar(\n cloneDeep(this.calendarSelection),\n this.calendarMinEnabledDate,\n this.calendarMaxEnabledDate,\n );\n this.isFilterChanged = !isEqual(previousSelectedDate, currentSelectedDate);\n }\n\n return this.isFilterChanged;\n }\n\n applyDateFilterOnData() {\n if (this.showFilterComponent && this.isFilterChanged) {\n let currentSelectedDate = this.annaFilterService.getCurrentSelectedDatesForCalendar(\n cloneDeep(this.calendarSelection),\n this.calendarMinEnabledDate,\n this.calendarMaxEnabledDate,\n );\n this.annaFilterService.reOrderAppliedFiltersState(this.clonedTableData, currentSelectedDate);\n this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, currentSelectedDate);\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, '');\n this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);\n }\n }\n\n clearColumnFilter() {\n this.annaFilterService.clearColumnFilter();\n this.tableData = cloneDeep(this.annaFilterService.filterData(this.clonedTableData, ''));\n this.annaSortService.noSortingAppliedData = this.tableData;\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\n this.annaFilterService.updateStateOfTheCurrentFilterTab(this.annaSortService.columnSortState);\n this.filterAppliedToTable.emit(this.tableData);\n }\n\n storeSortTypeInTempVariable(event: SortType) {\n this.tempSortOrder = event;\n this.disableCalendarApplyButton();\n }\n}\n","<div\n class=\"radio-container\"\n *ngIf=\"showFilterHeaderTabs\"\n>\n <div *ngFor=\"let data of filterTabObjects\">\n <p\n class=\"filter-tab\"\n [title]=\"data.label\"\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\n [ngClass]=\"{ active: annaFilterService.selectedRadio == data.key }\"\n *ngIf=\"filterTabObjects.length > 0\"\n >\n {{ data.label }}\n </p>\n </div>\n</div>\n\n<anna-core-sort-lib\n *ngIf=\"showSortComponent\"\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\n></anna-core-sort-lib>\n\n<ng-container *ngIf=\"showFilterComponent\">\n <div class=\"datepicker-container\">\n <button\n class=\"column-clear-all\"\n [disabled]=\"disableColumnClearAllBtn\"\n (click)=\"clearColumnFilter()\"\n >\n Clear filter\n </button>\n <anna-core-calendar-filter-lib\n class=\"filter-calendar\"\n [minDate]=\"calendarMinEnabledDate\"\n [maxDate]=\"calendarMaxEnabledDate\"\n [selectedFromDate]=\"selectedMinDate\"\n [selectedToDate]=\"selectedMaxDate\"\n (selectedDate)=\"calendarDateChanged($event)\"\n [label]=\"selectedLabel\"\n >\n </anna-core-calendar-filter-lib>\n </div>\n</ng-container>\n\n<div class=\"buttons-container\">\n <button\n class=\"button\"\n (click)=\"cancelInDateFilter()\"\n >\n Cancel\n </button>\n <button\n class=\"button\"\n (click)=\"applyDateFilter()\"\n [ngClass]=\"{ disabled: disableCalendarApplyBtn }\"\n [disabled]=\"disableCalendarApplyBtn\"\n >\n Apply\n </button>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\nimport { SortType } from '../../../../anna-core-shared-lib/models/anna-sort.model';\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\nimport { Options, NgxSliderModule } from '@angular-slider/ngx-slider';\nimport { isEqual, cloneDeep } from 'lodash-es';\nimport { FormsModule } from '@angular/forms';\nimport { AnnaSortComponent } from '../../anna-sort/anna-sort.component';\nimport { NgIf, NgFor, NgClass } from '@angular/common';\n\n@Component({\n selector: 'anna-core-anna-column-slider-filter',\n templateUrl: './anna-column-slider-filter.component.html',\n styleUrls: ['./anna-column-slider-filter.component.scss'],\n standalone: true,\n imports: [NgIf, NgFor, NgClass, AnnaSortComponent, FormsModule, NgxSliderModule],\n})\nexport class AnnaColumnSliderFilterComponent {\n @Input() filterTabObjects: any[];\n @Input() isLurAndCsrComponent: boolean;\n @Input() tableData: any[];\n @Input() showFilterHeaderTabs: boolean;\n @Input() clonedTableData: any[];\n\n @Output() closeTooltip = new EventEmitter();\n @Output() filterAppliedToTable = new EventEmitter();\n @Output() getSortType = new EventEmitter();\n @Output() sortingAppliedToTable = new EventEmitter();\n\n showSortComponent: boolean;\n showFilterComponent: boolean;\n\n tempSortOrder: SortType = null;\n isFilterChanged: boolean = false;\n isSortChanged: boolean = false;\n showEmptySpaceForSlider: boolean = false;\n incorrectSliderInput: boolean;\n sliderEnteredMaxValue: number;\n sliderEnteredMinValue: number;\n showSliderMinValueError: boolean;\n showSliderMaxValueError: boolean;\n isMinTextBoxEmpty: boolean;\n isMaxTextBoxEmpty: boolean;\n options: Options;\n sliderFilterTextBoxStep: string;\n sliderMinValue: number;\n sliderMaxValue: number;\n disableSliderApplyButton: boolean;\n sliderValue: { min: number; max: number };\n disableColumnClearAllBtn: boolean = true;\n\n constructor(\n public annaFilterService: AnnaFilterService,\n public annaSortService: AnnaSortService,\n ) {}\n\n ngOnInit() {\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\n }\n\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\n let header = activeTab.key;\n\n this.showSortComponent = activeTab.isSortRequired;\n this.showFilterComponent = activeTab.isFilterRequired;\n\n this.tempSortOrder = null;\n this.isFilterChanged = false;\n this.isSortChanged = false;\n\n this.annaFilterService.selectedRadio = header;\n this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();\n if (reload) {\n setTimeout(() => {\n this.createFilterTooltipData(activeTab, header);\n }, 100);\n } else {\n this.createFilterTooltipData(activeTab, header);\n }\n }\n\n createFilterTooltipData(activeTab: radioButtonModel, key: string) {\n this.showSortComponent = activeTab.isSortRequired;\n this.showFilterComponent = activeTab.isFilterRequired;\n\n this.disableSliderApplyButton = true;\n\n if (this.showFilterComponent) {\n this.getSliderData(key);\n }\n }\n\n getSliderData(key: string) {\n this.showEmptySpaceForSlider = true;\n\n this.createOptionsForSlider(key);\n this.setSelectedRangeForSlider(key);\n\n setTimeout(() => {\n this.showEmptySpaceForSlider = false;\n }, 0);\n }\n\n createOptionsForSlider(key: string) {\n let translateFunc = this.annaFilterService.getSliderTranslateFuncVal(\n key,\n this.annaFilterService.sliderCurrencySet,\n );\n this.incorrectSliderInput = false;\n this.sliderEnteredMaxValue = this.sliderEnteredMinValue = null;\n this.showSliderMinValueError =\n this.showSliderMaxValueError =\n this.isMinTextBoxEmpty =\n this.isMaxTextBoxEmpty =\n false;\n\n let optionsData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\n this.options = this.annaFilterService.getSliderOptions(optionsData, translateFunc, key);\n\n this.options.step = 1;\n this.sliderFilterTextBoxStep = '1';\n if (key !== 'WeekNumber') {\n this.options.step = 0.01;\n this.sliderFilterTextBoxStep = '0.01';\n }\n }\n\n setSelectedRangeForSlider(key: string) {\n [this.sliderMinValue, this.sliderMaxValue] = this.annaFilterService.setSelectedRangeForSlider(\n key,\n this.options,\n );\n this.sliderEnteredMinValue = this.sliderMinValue;\n this.sliderEnteredMaxValue = this.sliderMaxValue;\n }\n\n cancelSliderFilter() {\n this.sliderValue = null;\n this.closeTooltip.emit();\n }\n\n minValueChanged(val: string) {\n if (val || val == '0') {\n this.sliderEnteredMinValue = +val;\n this.isMinTextBoxEmpty = false;\n if (this.isMaxTextBoxEmpty) {\n if (this.sliderEnteredMinValue > this.options.ceil || this.sliderEnteredMinValue < this.options.floor) {\n this.showSliderMinValueError = true;\n this.disableSliderApplyButton = true;\n this.incorrectSliderInput = true;\n } else {\n this.showSliderMinValueError = false;\n this.showSliderMaxValueError = false;\n this.disableSliderApplyButton = false;\n this.incorrectSliderInput = false;\n }\n } else if (this.sliderEnteredMinValue > this.sliderEnteredMaxValue) {\n if (this.annaFilterService.isValueInRange(this.options, this.sliderEnteredMaxValue)) {\n this.showSliderMinValueError = true;\n this.showSliderMaxValueError = false;\n } else {\n this.showSliderMaxValueError = true;\n if (this.annaFilterService.isValueInRange(this.options, this.sliderEnteredMinValue)) {\n this.showSliderMinValueError = false;\n } else {\n this.showSliderMinValueError = true;\n }\n }\n this.disableSliderApplyButton = true;\n this.incorrectSliderInput = true;\n } else if (this.sliderEnteredMinValue < this.options.floor) {\n this.showSliderMinValueError = true;\n this.disableSliderApplyButton = true;\n this.incorrectSliderInput = true;\n } else {\n this.showSliderMinValueError = false;\n this.disableSliderApplyButton = false;\n this.incorrectSliderInput = false;\n }\n } else {\n this.sliderEnteredMinValue = this.options.floor;\n this.isMinTextBoxEmpty = true;\n this.showSliderMinValueError = false;\n }\n this.showErrorForMinAndMaxValue();\n }\n\n maxValueChanged(val: string) {\n if (val || val == '0') {\n this.sliderEnteredMaxValue = +val;\n this.isMaxTextBoxEmpty = false;\n if (this.isMinTextBoxEmpty) {\n if (this.sliderEnteredMaxValue < this.options.floor || this.sliderEnteredMaxValue > this.options.ceil) {\n this.showSliderMaxValueError = true;\n this.disableSliderApplyButton = true;\n this.incorrectSliderInput = true;\n } else {\n this.showSliderMaxValueError = false;\n this.showSliderMinValueError = false;\n this.disableSliderApplyButton = false;\n this.incorrectSliderInput = false;\n }\n } else if (this.sliderEnteredMaxValue < this.sliderEnteredMinValue) {\n if (this.annaFilterService.isValueInRange(this.options, this.sliderEnteredMinValue)) {\n this.showSliderMaxValueError = true;\n this.showSliderMinValueError = false;\n } else {\n this.showSliderMinValueError = true;\n if (this.annaFilterService.isValueInRange(this.options, this.sliderEnteredMaxValue)) {\n this.showSliderMaxValueError = false;\n } else {\n this.showSliderMaxValueError = true;\n }\n }\n this.disableSliderApplyButton = true;\n this.incorrectSliderInput = true;\n // this.showMaxError = true;\n } else if (this.sliderEnteredMaxValue > this.options.ceil) {\n this.showSliderMaxValueError = true;\n this.disableSliderApplyButton = true;\n this.incorrectSliderInput = true;\n } else {\n this.showSliderMaxValueError = false;\n this.disableSliderApplyButton = false;\n this.incorrectSliderInput = false;\n }\n } else {\n this.sliderEnteredMaxValue = this.options.ceil;\n this.isMaxTextBoxEmpty = true;\n this.showSliderMaxValueError = false;\n }\n this.showErrorForMinAndMaxValue();\n }\n\n showErrorForMinAndMaxValue() {\n if (this.isMinTextBoxEmpty && this.isMaxTextBoxEmpty) {\n this.showSliderMinValueError = true;\n this.showSliderMaxValueError = true;\n this.disableSliderApplyButton = true;\n this.incorrectSliderInput = true;\n } else if (this.showSliderMaxValueError || this.showSliderMinValueError) {\n this.incorrectSliderInput = true;\n } else {\n this.incorrectSliderInput = false;\n }\n this.disableSliderApplyBtn();\n }\n\n disableSliderApplyBtn() {\n if (this.showFilterComponent && this.showSortComponent) {\n let isFilterChanged = this.checkIfSliderTooltipIsFiltered();\n let isSortChanged = this.checkIfSortingChanged();\n\n this.disableSliderApplyButton = this.incorrectSliderInput || (!isSortChanged && !isFilterChanged);\n } else if (this.showFilterComponent) {\n this.disableSliderApplyButton = this.incorrectSliderInput || !this.checkIfSliderTooltipIsFiltered();\n } else if (this.showSortComponent) {\n this.disableSliderApplyButton = !this.checkIfSortingChanged();\n }\n }\n\n checkIfSortingChanged() {\n this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);\n return this.isSortChanged;\n }\n\n checkIfSliderTooltipIsFiltered() {\n let previousSelectedValue = this.annaFilterService.getPreviousSelectedValueForSlider(this.clonedTableData);\n let currentSelectedValue = this.annaFilterService.getCurrentSelectedValueForSlider(\n this.sliderEnteredMinValue,\n this.sliderEnteredMaxValue,\n this.options,\n );\n\n this.isFilterChanged = !isEqual(previousSelectedValue, currentSelectedValue);\n return this.isFilterChanged;\n }\n\n storeSortTypeInTempVariable(event: SortType) {\n this.tempSortOrder = event;\n this.disableSliderApplyBtn();\n }\n\n applyFilters() {\n this.applySliderFilter();\n this.applySortingOnFilteredData();\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n this.emitData();\n }\n\n applySliderFilter() {\n if (this.showFilterComponent && this.isFilterChanged) {\n let currentSliderData = this.annaFilterService.getCurrentSelectedValueForSlider(\n this.sliderEnteredMinValue,\n this.sliderEnteredMaxValue,\n this.options,\n );\n this.annaFilterService.reOrderAppliedFiltersState(this.clonedTableData, currentSliderData);\n this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, currentSliderData);\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, '');\n this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);\n }\n }\n\n applySortingOnFilteredData() {\n if (this.showSortComponent) {\n if (this.isSortChanged) {\n this.tableData = this.annaFilterService.updateSortMap(\n this.tempSortOrder,\n this.tableData,\n this.isLurAndCsrComponent,\n );\n } else if (this.isFilterChanged) {\n this.tableData = this.annaSortService.checkIfSortingIsApplied(\n this.tableData,\n this.isLurAndCsrComponent,\n );\n }\n } else if (this.isFilterChanged) {\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\n }\n }\n\n emitData() {\n if (this.isFilterChanged && this.isSortChanged) {\n this.filterAppliedToTable.emit(this.tableData);\n } else if (this.isFilterChanged) {\n this.filterAppliedToTable.emit(this.tableData);\n } else if (this.isSortChanged) {\n this.getSortType.emit(this.tempSortOrder);\n this.sortingAppliedToTable.emit(this.tableData);\n }\n }\n\n clearColumnFilter() {\n this.annaFilterService.clearColumnFilter();\n this.tableData = cloneDeep(this.annaFilterService.filterData(this.clonedTableData, ''));\n this.annaSortService.noSortingAppliedData = this.tableData;\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\n this.annaFilterService.updateStateOfTheCurrentFilterTab(this.annaSortService.columnSortState);\n this.filterAppliedToTable.emit(this.tableData);\n }\n}\n","<div\n class=\"radio-container\"\n *ngIf=\"showFilterHeaderTabs\"\n>\n <div *ngFor=\"let data of filterTabObjects\">\n <p\n class=\"filter-tab\"\n [title]=\"data.label\"\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\n [ngClass]=\"{ active: annaFilterService.selectedRadio == data.key }\"\n *ngIf=\"filterTabObjects.length > 0\"\n >\n {{ data.label }}\n </p>\n </div>\n</div>\n\n<anna-core-sort-lib\n *ngIf=\"showSortComponent\"\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\n></anna-core-sort-lib>\n\n<ng-container *ngIf=\"showFilterComponent\">\n <button\n class=\"column-clear-all\"\n [disabled]=\"disableColumnClearAllBtn\"\n (click)=\"clearColumnFilter()\"\n >\n Clear filter\n </button>\n <section class=\"min-maxContainer\">\n <input\n type=\"number\"\n class=\"slider-text\"\n step=\"{{ sliderFilterTextBoxStep }}\"\n [(ngModel)]=\"sliderMinValue\"\n (ngModelChange)=\"minValueChanged($event)\"\n [ngClass]=\"{ 'red-border': showSliderMinValueError }\"\n placeholder=\"Min\"\n />\n <span>To</span>\n <input\n type=\"number\"\n class=\"slider-text\"\n step=\"{{ sliderFilterTextBoxStep }}\"\n [(ngModel)]=\"sliderMaxValue\"\n (ngModelChange)=\"maxValueChanged($event)\"\n [ngClass]=\"{ 'red-border': showSliderMaxValueError }\"\n placeholder=\"Max\"\n />\n </section>\n <div class=\"sidebar-slider\">\n <ngx-slider\n *ngIf=\"!showEmptySpaceForSlider\"\n [ngClass]=\"{\n 'show-min': sliderMinValue != options.floor,\n 'show-max': sliderMaxValue != options.ceil\n }\"\n class=\"filter-slider\"\n [value]=\"sliderEnteredMinValue\"\n [highValue]=\"sliderEnteredMaxValue\"\n [options]=\"options\"\n ></ngx-slider>\n <div\n *ngIf=\"showEmptySpaceForSlider\"\n class=\"slider-placeholder\"\n ></div>\n </div>\n</ng-container>\n\n<div class=\"buttons-container\">\n <button\n class=\"button\"\n (click)=\"cancelSliderFilter()\"\n >\n Cancel\n </button>\n <button\n class=\"button\"\n [ngClass]=\"{ disabled: disableSliderApplyButton }\"\n (click)=\"applyFilters()\"\n [disabled]=\"disableSliderApplyButton\"\n >\n Apply\n </button>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { cloneDeep, isEqual } from 'lodash-es';\n\nimport { SortType } from '../../../../anna-core-shared-lib/models/anna-sort.model';\nimport { TooltipModel, radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\nimport { CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf } from '@angular/cdk/scrolling';\nimport { FormsModule } from '@angular/forms';\nimport { AnnaSortComponent } from '../../anna-sort/anna-sort.component';\nimport { NgIf, NgFor, NgClass } from '@angular/common';\n\n@Component({\n selector: 'anna-core-anna-column-checkbox-filter',\n templateUrl: './anna-column-checkbox-filter.component.html',\n styleUrls: ['./anna-column-checkbox-filter.component.scss'],\n standalone: true,\n imports: [\n NgIf,\n NgFor,\n NgClass,\n AnnaSortComponent,\n FormsModule,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n ],\n})\nexport class AnnaColumnCheckboxFilterComponent {\n @Input() showFilterHeaderTabs: boolean;\n @Input() isLurAndCsrComponent: boolean;\n @Input() tableData: any[];\n @Input() clonedTableData: any[];\n @Input() filterTabObjects: any[];\n\n @Output() filterAppliedToTable = new EventEmitter();\n @Output() sortingAppliedToTable = new EventEmitter();\n @Output() getSortType = new EventEmitter();\n @Output() closeTooltip = new EventEmitter();\n\n tooltipOptions: TooltipModel[];\n clonedTooltipOptions: TooltipModel[];\n heightOfCheckboxTooltipFilter: number;\n toolTipdata: any;\n tempTooltipData: any;\n selectedCheckboxOptionsCount: number;\n isFilterChanged: boolean;\n tempSortOrder: SortType = null;\n isSortChanged: boolean;\n disableSelectAll: boolean;\n disableClearAll: boolean;\n searchItem: string;\n showSortComponent: boolean = false;\n disableCheckboxApply: boolean;\n showFilterComponent: boolean = false;\n margin = 5;\n\n constructor(\n private annaSortService: AnnaSortService,\n public annaFilterService: AnnaFilterService,\n ) {}\n\n ngOnInit() {\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\n }\n\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\n let header = activeTab.key;\n this.searchItem = null;\n\n this.showSortComponent = activeTab.isSortRequired;\n this.showFilterComponent = activeTab.isFilterRequired;\n this.tempSortOrder = null;\n this.isFilterChanged = false;\n this.isSortChanged = false;\n\n this.annaFilterService.selectedRadio = header;\n if (reload) {\n setTimeout(() => {\n this.createFilterTooltipData(activeTab, header);\n }, 100);\n } else {\n this.createFilterTooltipData(activeTab, header);\n }\n }\n\n createFilterTooltipData(activeTab: radioButtonModel, key: string) {\n this.showSortComponent = activeTab.isSortRequired;\n this.showFilterComponent = activeTab.isFilterRequired;\n\n this.disableCheckboxApply = true;\n\n if (this.showFilterComponent) {\n this.getCheckboxData(key);\n }\n }\n\n getCheckboxData(header: string) {\n let tooltipOptions = this.createListForCheckboxFilter(header);\n\n let [clonedTooltipOptions, updatedTooltipOptions, selectedItems, unselectedItems] =\n this.annaFilterService.getClonedTooltipAndTooltipOption(tooltipOptions, 'label');\n\n this.clonedTooltipOptions = clonedTooltipOptions;\n this.tooltipOptions = updatedTooltipOptions;\n\n this.heightOfCheckboxTooltipFilter = this.annaFilterService.getHeightOfCheckboxTooltipFilter(\n this.tooltipOptions.length,\n this.margin,\n );\n\n this.disableSelectAll = unselectedItems.length == 0;\n this.disableClearAll = selectedItems.length == 0;\n this.selectedCheckboxOptionsCount = selectedItems.length;\n }\n\n createListForCheckboxFilter(header: string) {\n let optionData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\n let tooltipOptions = this.annaFilterService.createListForCheckboxFilter(header, optionData);\n\n return tooltipOptions;\n }\n\n selectUnselectListCheckbox(tooltipOptions: TooltipModel[], header: string) {\n if (this.annaFilterService.tooltipSelectedMap.has(header)) {\n let selectedValueSet = new Set(this.annaFilterService.tooltipSelectedMap.get(header));\n tooltipOptions.forEach((item) => (item.isSelected = selectedValueSet.has(item.value) ? true : false));\n } else {\n tooltipOptions.forEach((item) => (item.isSelected = true));\n }\n }\n\n unCheckAllCheckbox() {\n this.annaFilterService.unCheckAllCheckbox(this.tooltipOptions, this.clonedTooltipOptions);\n this.selectedCheckboxOptionsCount = 0;\n this.disableSelectAll = false;\n this.disableClearAll = true;\n this.disableCheckboxApply = true;\n }\n\n selectAllCheckbox() {\n this.annaFilterService.selectAllCheckbox(this.tooltipOptions, this.clonedTooltipOptions);\n this.selectedCheckboxOptionsCount = this.tooltipOptions.length;\n this.disableSelectAll = true;\n this.disableClearAll = false;\n this.disableCheckboxFilterApplyButton();\n }\n\n searchForTheItem(str: string) {\n if (str) {\n this.tooltipOptions = this.annaFilterService.getFilteredOptionAsBoldString(str, this.clonedTooltipOptions);\n this.calculateHeightForFilterTooltip();\n\n if (this.tooltipOptions.length > 0) {\n let [selectedItems, unselectedItems] = this.annaFilterService.getSelectedAndUnselectedItems(\n this.tooltipOptions,\n );\n this.disableSelectAll = unselectedItems.length == 0;\n this.disableClearAll = selectedItems.length == 0;\n this.selectedCheckboxOptionsCount = selectedItems.length;\n this.disableCheckboxApply = selectedItems.length == 0 || !this.checkIfCheckboxTooltipIsFiltered();\n } else {\n [\n this.selectedCheckboxOptionsCount,\n this.disableCheckboxApply,\n this.disableClearAll,\n this.disableSelectAll,\n ] = this.annaFilterService.disableAllBtnsWhenThereAreNoFilteredResults();\n }\n } else {\n this.tooltipOptions = cloneDeep(this.clonedTooltipOptions);\n this.calculateHeightForFilterTooltip();\n let [selectedItems, unselectedItems] = this.annaFilterService.getSelectedAndUnselectedItems(\n this.tooltipOptions,\n );\n this.selectedCheckboxOptionsCount = selectedItems.length;\n this.disableSelectAll = unselectedItems.length == 0;\n this.disableClearAll = selectedItems.length == 0;\n this.disableCheckboxFilterApplyButton();\n }\n }\n\n calculateHeightForFilterTooltip() {\n let dataLength = this.tooltipOptions.length == 0 ? 1 : this.tooltipOptions.length;\n this.heightOfCheckboxTooltipFilter = this.annaFilterService.getHeightOfCheckboxTooltipFilter(\n dataLength,\n this.margin,\n );\n }\n\n disableCheckboxFilterApplyButton() {\n let selectedItems = this.showFilterComponent ? this.tooltipOptions.filter((item) => item.isSelected) : [];\n\n if (this.showFilterComponent && this.showSortComponent) {\n let isFilterChanged = this.checkIfCheckboxTooltipIsFiltered();\n let isSortChanged = this.checkIfSortingChanged();\n this.disableCheckboxApply = selectedItems.length == 0 || (!isSortChanged && !isFilterChanged);\n } else if (this.showFilterComponent) {\n this.disableCheckboxApply = selectedItems.length == 0 || !this.checkIfCheckboxTooltipIsFiltered();\n } else if (this.showSortComponent) {\n this.disableCheckboxApply = !this.checkIfSortingChanged();\n }\n }\n\n checkIfSortingChanged() {\n this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);\n return this.isSortChanged;\n }\n\n checkIfCheckboxTooltipIsFiltered() {\n let previousSelectedValue = this.annaFilterService.getCheckboxPreviousSelectedValue(this.clonedTableData);\n let currentSelectedValue = this.annaFilterService.getCheckboxCurrentSelectedValue(\n this.searchItem,\n this.tooltipOptions,\n );\n this.isFilterChanged = !isEqual(currentSelectedValue, previousSelectedValue);\n return this.isFilterChanged;\n }\n\n applyFilters() {\n this.applyListFilters();\n this.applySortingOnFilteredData();\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n this.emitData();\n }\n\n applyListFilters() {\n if (this.showFilterComponent && this.isFilterChanged) {\n let currentSelectedValue = this.annaFilterService.getCheckboxCurrentSelectedValue(\n this.searchItem,\n this.tooltipOptions,\n );\n this.annaFilterService.reOrderAppliedFiltersState(this.clonedTableData, currentSelectedValue);\n this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, currentSelectedValue);\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, '');\n this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);\n }\n }\n\n applySortingOnFilteredData() {\n if (this.showSortComponent) {\n if (this.isSortChanged) {\n this.tableData = this.annaFilterService.updateSortMap(\n this.tempSortOrder,\n this.tableData,\n this.isLurAndCsrComponent,\n );\n } else if (this.isFilterChanged) {\n this.tableData = this.annaSortService.checkIfSortingIsApplied(\n this.tableData,\n this.isLurAndCsrComponent,\n );\n }\n } else if (this.isFilterChanged) {\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\n }\n }\n\n emitData() {\n if (this.isFilterChanged && this.isSortChanged) {\n this.filterAppliedToTable.emit(this.tableData);\n } else if (this.isFilterChanged) {\n this.filterAppliedToTable.emit(this.tableData);\n } else if (this.isSortChanged) {\n this.getSortType.emit(this.tempSortOrder);\n this.sortingAppliedToTable.emit(this.tableData);\n }\n }\n\n selectUnselectCheckbox(data: TooltipModel) {\n this.annaFilterService.selectUnselectCheckbox(data, this.clonedTooltipOptions);\n let [selectedItems, unselectedItems] = this.annaFilterService.getSelectedAndUnselectedItems(\n this.tooltipOptions,\n );\n\n this.disableClearAll = selectedItems.length == 0;\n this.disableSelectAll = unselectedItems.length == 0;\n this.selectedCheckboxOptionsCount = selectedItems.length;\n this.disableCheckboxFilterApplyButton();\n }\n\n closeCheckboxFilter() {\n if (this.toolTipdata) {\n this.revert();\n }\n this.closeTooltip.emit();\n }\n\n revert() {\n this.tempTooltipData = cloneDeep(this.toolTipdata);\n this.annaFilterService.tooltipMap.set(this.annaFilterService.selectedRadio, this.tempTooltipData);\n this.toolTipdata = null;\n }\n\n clearSearchedItem() {\n this.searchItem = '';\n this.searchForTheItem('');\n }\n\n storeSortTypeInTempVariable(event: SortType) {\n this.tempSortOrder = event;\n this.disableCheckboxFilterApplyButton();\n }\n}\n","<div\n class=\"radio-container\"\n *ngIf=\"showFilterHeaderTabs\"\n>\n <div\n [ngClass]=\"{ 'full-width': filterTabObjects.length == 1 }\"\n *ngFor=\"let data of filterTabObjects\"\n >\n <p\n class=\"filter-tab\"\n [title]=\"data.label\"\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\n [ngClass]=\"{ active: annaFilterService.selectedRadio == data.key }\"\n *ngIf=\"filterTabObjects.length > 0\"\n >\n {{ data.label }}\n </p>\n </div>\n</div>\n\n<div\n class=\"checkbox-sort\"\n *ngIf=\"showSortComponent\"\n>\n <anna-core-sort-lib\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\n ></anna-core-sort-lib>\n</div>\n\n<ng-container *ngIf=\"showFilterComponent\">\n <p class=\"d-flex justify-content-between\">\n <button\n class=\"filter-text-btn\"\n [disabled]=\"disableClearAll\"\n (click)=\"unCheckAllCheckbox()\"\n >\n Clear all\n </button>\n <button\n class=\"filter-text-btn\"\n [disabled]=\"disableSelectAll\"\n (click)=\"selectAllCheckbox()\"\n >\n Select all\n </button>\n </p>\n <p class=\"search-box\">\n <i class=\"mi mdi-search search-icon search-icon-position\"></i>\n <input\n type=\"text\"\n placeholder=\"Search\"\n class=\"search-input\"\n style=\"margin-left: 2px; border: none; padding: 0px\"\n [(ngModel)]=\"searchItem\"\n (ngModelChange)=\"searchForTheItem($event)\"\n />\n <i\n class=\"mdi mdi-close search-bar-close\"\n [ngClass]=\"{ 'disable-close-icon': !searchItem || searchItem.length == 0 }\"\n (click)=\"clearSearchedItem()\"\n ></i>\n </p>\n <div style=\"position: relative\">\n <!-- Track By func -->\n <cdk-virtual-scroll-viewport\n itemSize=\"18\"\n [style.height.px]=\"heightOfCheckboxTooltipFilter\"\n class=\"dropdown-data-container\"\n >\n <p\n *cdkVirtualFor=\"let option of tooltipOptions\"\n class=\"input example-item\"\n (click)=\"selectUnselectCheckbox(option)\"\n >\n <span\n *ngIf=\"option.isSelected\"\n role=\"button\"\n class=\"mi mdi-check-box check-box\"\n ></span>\n <span\n *ngIf=\"!option.isSelected\"\n role=\"button\"\n class=\"mi mdi-check-box-outline-blank check-box unchecked\"\n ></span>\n <span\n class=\"data\"\n title=\"{{ option.value }}\"\n [innerHTML]=\"option.label\"\n ></span>\n </p>\n\n <p\n class=\"no-data-case\"\n *ngIf=\"tooltipOptions?.length == 0\"\n style=\"padding-left: 0.4375rem\"\n >\n No data found\n </p>\n </cdk-virtual-scroll-viewport>\n <div style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none\"></div>\n </div>\n</ng-container>\n\n<div class=\"buttons-container checkbox-filter-buttons-container\">\n <button\n class=\"button\"\n (click)=\"closeCheckboxFilter()\"\n >\n Cancel\n </button>\n <button\n class=\"button\"\n [ngClass]=\"{ disabled: disableCheckboxApply }\"\n (click)=\"applyFilters()\"\n [disabled]=\"disableCheckboxApply\"\n >\n Apply\n <span *ngIf=\"showFilterComponent\">{{\n selectedCheckboxOptionsCount == tooltipOptions.length && tooltipOptions.length != 0 && !searchItem\n ? \"All (\" + selectedCheckboxOptionsCount + \")\"\n : \"(\" + selectedCheckboxOptionsCount + \")\"\n }}</span>\n </button>\n</div>\n","// Angular import statements\nimport {\n Component,\n OnInit,\n Input,\n ViewChildren,\n QueryList,\n Output,\n EventEmitter,\n SimpleChanges,\n OnChanges,\n ChangeDetectorRef,\n ElementRef,\n AfterViewChecked,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\n// Third party import statements\nimport { cloneDeep, isEqual, uniq } from 'lodash-es';\n\n//sub-entries of anna lib import statement\nimport {\n IGtGeneralConfig,\n IGtTableHeader,\n IHeaderInfo,\n ITotalRowInfo,\n} from '../../../anna-core-shared-lib/models/anna-non-editable-gt-models';\nimport { AnnaDateTimeFormatService } from '../../../anna-core-shared-lib/services/anna-date-time-format.service';\nimport { IWeekCalendar } from '../../../anna-core-shared-lib/models/anna-global-dropdown-config.model';\nimport {\n GtColumnIconEmittedData,\n RatingSellerGroupHierarchy,\n} from '../../../anna-core-shared-lib/models/anna-generic-data-type.model';\nimport { radioButtonModel } from '../../../anna-core-shared-lib/models/anna-tooltip.model';\nimport { AnnaSortService } from '../../../anna-core-shared-lib/services/anna-sort.service';\nimport { AnnaFilterService } from '../../../anna-core-shared-lib/services/anna-filter.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { NgCircleProgressModule } from 'ng-circle-progress';\nimport { AnnaColumnTimeFilterComponent } from '../anna-column-filters/anna-column-time-filter/anna-column-time-filter.component';\nimport { AnnaColumnDateRangeFilterComponent } from '../anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component';\nimport { AnnaColumnSliderFilterComponent } from '../anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component';\nimport { AnnaColumnCheckboxFilterComponent } from '../anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component';\nimport { AnnaNoDataComponent } from '../../../anna-core-shared-lib/components/anna-no-data/anna-no-data.component';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { FormsModule } from '@angular/forms';\nimport { AnnaIconColumnComponent } from '../../../anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component';\nimport { showEllipsisTextOnHoverDirective } from '../../../anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive';\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\nimport { MatTableModule } from '@angular/material/table';\nimport {\n NgClass,\n NgStyle,\n NgFor,\n NgIf,\n NgTemplateOutlet,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n AsyncPipe,\n} from '@angular/common';\n\ninterface keyValueTooltipType {\n key: string;\n value: string;\n}\ninterface tableTooltipType {\n tooltipTableHeader: string[];\n tooltipTableBody: string[][];\n tableHeaderMsg: string[];\n tableFooterMsg: string[];\n innerHtml: string;\n}\n\n@Component({\n selector: 'anna-core-non-editable-generic-table-lib',\n templateUrl: './anna-non-editable-generic-table.component.html',\n styleUrls: ['./anna-non-editable-generic-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgClass,\n NgStyle,\n MatTableModule,\n NgFor,\n NgIf,\n NgTemplateOutlet,\n NgbTooltip,\n NgxSkeletonLoaderModule,\n showEllipsisTextOnHoverDirective,\n NgSwitch,\n NgSwitchCase,\n AnnaIconColumnComponent,\n FormsModule,\n MatRadioModule,\n NgSwitchDefault,\n AnnaNoDataComponent,\n AnnaColumnCheckboxFilterComponent,\n AnnaColumnSliderFilterComponent,\n AnnaColumnDateRangeFilterComponent,\n AnnaColumnTimeFilterComponent,\n NgCircleProgressModule,\n AsyncPipe,\n ],\n})\nexport class AnnaNonEditableGenericTableComponent implements OnInit, OnChanges, AfterViewChecked {\n @Input() showSkeletonLoading: boolean;\n @Input() tableHeaders: IGtTableHeader[];\n @Input() tableData: any[];\n @Input() clonedTableData: any[];\n @Input() gtGeneralConfig: IGtGeneralConfig;\n @Input() totalRowInfo?: ITotalRowInfo[];\n @Input() gtDimension: {\n rowHeight: number;\n headerHeight: number;\n dataOnTopHeight: number;\n marginFromBottom: number;\n tableHeight?: string;\n };\n @Input() tableClass: string;\n @Input() maximumRowsWhichCanBeRenderedWithoutScroll: number = 5;\n @Input() fixNumberOfRowsForPopup: boolean = false;\n @Input() limit: number = 30;\n @Input() includeBorderInTableHeight: boolean = true;\n @Input() downloadInProgress: boolean;\n @Input() percentDone: number;\n @Input() starredInProgress: boolean;\n @Input() clickableRow: boolean = false;\n @Input() setTableHeightWhenRowSizeIsFixed: boolean = true;\n @Input() tableBorderBottomClassRequired: boolean = true;\n @Input() hideSomeTds: boolean = false;\n @Input() tdsHaveRowSpan: boolean = false;\n @Input() multipleTablesPresent: boolean = false;\n\n @Output() toggleCheckbox = new EventEmitter();\n @Output() toggleRowCheckbox = new EventEmitter();\n @Output() toggleHeaderCheckbox = new EventEmitter();\n @Output() undoIconClicked = new EventEmitter();\n @Output() filterAppliedToTable = new EventEmitter();\n @Output() sortingAppliedToTable = new EventEmitter();\n @Output() rowClicked = new EventEmitter();\n @Output() radioButtonSelected = new EventEmitter();\n @Output() columnFilterOpened = new EventEmitter();\n @Output() columnFilterClosed = new EventEmitter();\n @Output() gtIconClicked = new EventEmitter();\n @Output() gtSVGIconClicked = new EventEmitter();\n @Output() gtTextActionClicked = new EventEmitter();\n @Output() gtViewDetailClicked = new EventEmitter();\n @Output() gtInnerHTMLClicked = new EventEmitter();\n @Output() downloadSpotDetails = new EventEmitter();\n @Output() clickableDataClicked = new EventEmitter();\n @Output() totalRowIconClicked = new EventEmitter();\n @Output() notificationIconHover = new EventEmitter();\n @Output() notificationIconHoverLeave = new EventEmitter();\n @Output() editableInputEdited = new EventEmitter();\n @Output() radioButtonMessageIconClicked = new EventEmitter();\n\n numberOfSkeletonRows: number[][] = Array(20).fill(0);\n tableDataWrapper: any[];\n rowChecked: boolean;\n isAllRowsChecked: boolean;\n noDataWidth: string = '50%';\n markedForCreditStatus: string;\n markedForMGStatus: string;\n filterAlignment: string = 'bottom auto';\n\n //Sort and Filter\n tooltipRadioTextMap: Map<any, any>;\n filterTabObjects: any[];\n tooltip: any;\n disableColumnClearAllBtn: boolean = true;\n margin = 5;\n\n //Week Filter\n multiWeekPickerConfig: IWeekCalendar;\n\n tableColumns: string[] = [];\n totalRowColumns: string[] = null;\n bindValueFuncCalled: boolean;\n\n hierarchyTooltip: { open: () => void; close: () => void };\n sellerGroupHierarchy: RatingSellerGroupHierarchy[];\n showFilterTooltipTabs: boolean; //Change the Name\n\n isScrolledLeft: boolean = false;\n rowBorderWidth: number = 2;\n\n sameTooltipClicked: boolean;\n marginTop: string = '';\n @ViewChildren('tableHeader') viewChildTableHeaders: QueryList<ElementRef>;\n\n isDifferenceLessThan25Percent: boolean;\n start: number = 0;\n end: number = this.limit + this.start;\n renderedData: any[];\n selectedInventoryIdForDownload: number;\n selectedDemographicForDownload: any;\n selectedRowTypeForDownload: string;\n heightOfCheckboxTooltipFilter: number;\n isNoDataToDisplaySubject$ = new BehaviorSubject<boolean>(false);\n selectedStarredOrderId: string;\n\n textActionTooltip: keyValueTooltipType[] = [];\n tooltipContainingTable: tableTooltipType = null;\n tableBottomBorderClass: string = null;\n showCheckboxesForTimeFilter: boolean = false;\n\n constructor(\n private cdRef: ChangeDetectorRef,\n private annaSortService: AnnaSortService,\n public annaDateTimeFormatService: AnnaDateTimeFormatService,\n public annaFilterService: AnnaFilterService,\n ) {\n this.setTooltipRadioNames();\n }\n\n ngAfterViewChecked(): void {\n this.setMarginLeftForFilterIcon();\n }\n\n ngOnInit() {\n this.setFilterAlignmentBasedOnScreenResolution();\n }\n\n detectChanges() {\n this.cdRef.detectChanges();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (\n changes &&\n changes['gtDimension'] &&\n changes['gtDimension'].currentValue &&\n this.setTableHeightWhenRowSizeIsFixed\n ) {\n this.setTableHeight();\n this.setTableBottomBorder();\n }\n if (this.showSkeletonLoading) {\n this.tableData = this.numberOfSkeletonRows;\n this.renderedData = this.numberOfSkeletonRows;\n this.isNoDataToDisplaySubject$.next(false);\n this.setTableBottomBorder();\n } else if (\n changes['percentDone'] ||\n changes['downloadInProgress'] ||\n (changes['starredInProgress'] && changes['starredInProgress'].currentValue != undefined)\n ) {\n //no task will be performed\n } else {\n this.setInitialRowsForTable();\n this.disableEnableEachColumnTooltipIcon();\n this.tableColumns = this.tableHeaders.filter((x) => x.visible).map((x) => x.headerInfo[0].objectKey);\n if (\n (this.tableData && this.tableData.length == 0) ||\n (this.tableData.length == 2 && this.checkIfAllTheElementsAreZero())\n ) {\n this.tableData = Array(2).fill(0);\n this.renderedData = cloneDeep(this.tableData);\n this.marginTop = -this.gtDimension.rowHeight - this.gtDimension.rowHeight / 2 + 'px';\n this.isNoDataToDisplaySubject$.next(true);\n } else {\n this.isNoDataToDisplaySubject$.next(false);\n }\n\n this.showSkeletonLoading = false;\n this.setTableBottomBorder();\n }\n\n //setting table column here as well because while showing skeleton loader, we should show table headers.\n if (\n changes['tableHeaders'] &&\n !isEqual(changes['tableHeaders'].currentValue, changes['tableHeaders'].previousValue)\n ) {\n this.tableColumns = this.tableHeaders.filter((x) => x.visible).map((x) => x.headerInfo[0].objectKey);\n this.annaSortService.columnSortState = new Map();\n this.annaFilterService.initialValueMap = new Map();\n // this.setColumnSortStateMap();\n this.setActiveStateObject();\n }\n\n if (changes['totalRowInfo'] && changes['totalRowInfo'].currentValue) {\n this.totalRowColumns = this.totalRowInfo.map((x) => x.colName);\n }\n this.cdRef.detectChanges();\n }\n\n setFilterAlignmentBasedOnScreenResolution() {\n let viewportHeight = window.innerHeight;\n if (viewportHeight < 740) {\n this.filterAlignment = 'left right';\n } else {\n this.filterAlignment = 'bottom left right';\n }\n }\n\n setTableBottomBorder() {\n if (\n this.tableBorderBottomClassRequired &&\n this.tableData &&\n this.tableData.length &&\n this.maximumRowsWhichCanBeRenderedWithoutScroll < this.tableData.length\n ) {\n this.tableBottomBorderClass = 'bottom-border';\n } else {\n this.tableBottomBorderClass = null;\n }\n }\n\n checkIfAllTheElementsAreZero() {\n return !this.tableData.some((item) => item != 0);\n }\n\n setTableHeight() {\n let viewportHeight = window.innerHeight;\n let rowHeight = this.gtDimension.rowHeight;\n let headerHeight = this.gtDimension.headerHeight;\n let dataOnTopHeight = this.gtDimension.dataOnTopHeight;\n let marginFromBottom = this.gtDimension.marginFromBottom;\n let actualTableHeight;\n\n if (this.fixNumberOfRowsForPopup) {\n let maxNoOfRowsToDisplay = viewportHeight < 740 ? 5 : 10;\n this.maximumRowsWhichCanBeRenderedWithoutScroll = maxNoOfRowsToDisplay;\n actualTableHeight = this.maximumRowsWhichCanBeRenderedWithoutScroll * rowHeight + headerHeight;\n } else {\n let minHeightForTable = headerHeight + 3 * rowHeight;\n viewportHeight = viewportHeight <= dataOnTopHeight ? dataOnTopHeight + minHeightForTable : viewportHeight;\n let heightLeftForTable = viewportHeight - dataOnTopHeight - marginFromBottom;\n this.maximumRowsWhichCanBeRenderedWithoutScroll =\n Math.ceil((heightLeftForTable - headerHeight - rowHeight) / rowHeight) + 1;\n actualTableHeight = viewportHeight - dataOnTopHeight - marginFromBottom;\n }\n\n // let actualTableHeight = heightLeftForTable - ((heightLeftForTable - headerHeight - rowHeight) % rowHeight);\n\n this.gtDimension.tableHeight = `${actualTableHeight}px`;\n\n this.numberOfSkeletonRows = this.maximumRowsWhichCanBeRenderedWithoutScroll\n ? Array(this.maximumRowsWhichCanBeRenderedWithoutScroll).fill(0)\n : Array(5).fill(0);\n }\n\n trackByFn(index: number) {\n return index;\n }\n\n setTooltipRadioNames() {\n this.tooltipRadioTextMap = new Map();\n this.tooltipRadioTextMap.set('StartTimeForFilter', 'Start Time');\n this.tooltipRadioTextMap.set('EndTimeForFilter', 'End Time');\n this.tooltipRadioTextMap.set('startTimeForFilter', 'Start Time');\n this.tooltipRadioTextMap.set('endTimeForFilter', 'End Time');\n this.tooltipRadioTextMap.set('start_time_for_filter', 'Start Time');\n this.tooltipRadioTextMap.set('end_time_for_filter', 'End Time');\n this.tooltipRadioTextMap.set('primaryAEName', 'Primary AE');\n this.tooltipRadioTextMap.set('region', 'Region');\n this.tooltipRadioTextMap.set('agencyName', 'Agency');\n this.tooltipRadioTextMap.set('location', 'Location');\n this.tooltipRadioTextMap.set('advertiserName', 'Advertiser');\n this.tooltipRadioTextMap.set('productCode', 'Product Code');\n this.tooltipRadioTextMap.set('flightStartDate', 'Start Date');\n this.tooltipRadioTextMap.set('flightEndDate', 'End Date');\n this.tooltipRadioTextMap.set('orderIdAndRevNumber', 'STN Order#-Rev#');\n this.tooltipRadioTextMap.set('alternateOrderId', 'Alt/Rep Order #');\n this.tooltipRadioTextMap.set('grp', 'GRP');\n this.tooltipRadioTextMap.set('cpp', 'CPP');\n this.tooltipRadioTextMap.set('imps', 'IMPS');\n this.tooltipRadioTextMap.set('cpm', 'CPM');\n this.tooltipRadioTextMap.set('offeredMGs', 'Offered MG');\n this.tooltipRadioTextMap.set('outstandingPE', 'O/S PE');\n this.tooltipRadioTextMap.set('offeredADUs', 'Offered ADUs');\n this.tooltipRadioTextMap.set('udDeficitValue', 'O/S Aud Delta');\n this.tooltipRadioTextMap.set('startEndTimeMulti', 'Time');\n this.tooltipRadioTextMap.set('bookedValue', 'Booked');\n this.tooltipRadioTextMap.set('bookedSpots', 'Spots');\n this.tooltipRadioTextMap.set('UserCreditedValue', 'User Credited');\n this.tooltipRadioTextMap.set('UserUnresolvedValue', 'User Unresolved');\n this.tooltipRadioTextMap.set('BuyerAddedValue', 'Buyer Added');\n this.tooltipRadioTextMap.set('BuyerDeletedValue', 'Buyer Deleted');\n this.tooltipRadioTextMap.set('userChanges', 'User Changes');\n this.tooltipRadioTextMap.set('buyerChanges', 'Buyer Changes');\n this.tooltipRadioTextMap.set('userMG', 'User MG');\n this.tooltipRadioTextMap.set('userADUs', 'User ADUs');\n this.tooltipRadioTextMap.set('inventoryCode', 'Inventory Code');\n this.tooltipRadioTextMap.set('program', 'Program');\n this.tooltipRadioTextMap.set('agency', 'Agency');\n this.tooltipRadioTextMap.set('advertiser', 'Advertiser');\n this.tooltipRadioTextMap.set('startDate', 'Start Date');\n this.tooltipRadioTextMap.set('endDate', 'End Date');\n this.tooltipRadioTextMap.set('date', 'Date');\n this.tooltipRadioTextMap.set('rcvPreempt', '$ Madegood PEs');\n this.tooltipRadioTextMap.set('osPreempt', '$ O/S PEs');\n this.tooltipRadioTextMap.set('rcvUnderDly', 'Recovered UD');\n this.tooltipRadioTextMap.set('osUnderDly', 'O/s Under Dly');\n this.tooltipRadioTextMap.set('primaryAe', 'Primary AE');\n this.tooltipRadioTextMap.set('region', 'Region');\n this.tooltipRadioTextMap.set('revCode1', 'Rev code 1');\n this.tooltipRadioTextMap.set('orderNoRevNo', 'STN Order#-Rev#');\n this.tooltipRadioTextMap.set('revCode2', 'Rev code 2');\n this.tooltipRadioTextMap.set('revCode3', 'Rev code 3');\n this.tooltipRadioTextMap.set('booked', '$ Booked');\n this.tooltipRadioTextMap.set('spots', 'Spots');\n this.tooltipRadioTextMap.set('postedAudPercent', 'Posted %');\n this.tooltipRadioTextMap.set('revision', 'Revision');\n this.tooltipRadioTextMap.set('buyerOrderId', 'ALT/REP Order#');\n this.tooltipRadioTextMap.set('demo', 'Demo');\n this.tooltipRadioTextMap.set('postedAdu', '$ Posted ADUs');\n this.tooltipRadioTextMap.set('scheduledAdu', '$ Scheduled ADUs');\n this.tooltipRadioTextMap.set('audienceDeficit', '$ O/S Audience');\n this.tooltipRadioTextMap.set('postedAudPercent', 'Posted Audience %');\n this.tooltipRadioTextMap.set('potentialUnitsValue', 'POT Units');\n this.tooltipRadioTextMap.set('bookedUnitsValue', 'Booked Eq Units');\n this.tooltipRadioTextMap.set('bookedAmountWithZeroRatingValue', 'Total $ Booked');\n this.tooltipRadioTextMap.set('bookedAmountPercentageWithZeroRatingValue', '% Against All Demos');\n this.tooltipRadioTextMap.set('bookedAmountWithoutZeroRatingValue', '$Booked With Imps(’000)');\n this.tooltipRadioTextMap.set('bookedAmountPercentageWithoutZeroRatingValue', '% Against All Demos');\n\n this.tooltipRadioTextMap.set('totalBookedAmountValue', 'Total $Booked');\n this.tooltipRadioTextMap.set('averageUnitRateValue', ' AUR');\n this.tooltipRadioTextMap.set('totalBookedAmountWithRatingValue', '$Booked With Rating');\n this.tooltipRadioTextMap.set('averageUnitRateWithRatingValue', 'AUR With Rating');\n\n this.tooltipRadioTextMap.set('totalBookedAmountWithImpressionValue', '$Booked With IMPS');\n this.tooltipRadioTextMap.set('averageUnitRateWithImpressionValue', 'AUR With IMPS');\n\n this.tooltipRadioTextMap.set('bookedUnitsWithRatingValue', 'Booked Units With Rating');\n this.tooltipRadioTextMap.set('postedUnitsWithRatingValue', 'Posted Units With Rating');\n\n this.tooltipRadioTextMap.set('bookedUnitsWithImpressionValue', 'Booked Units With IMPS');\n this.tooltipRadioTextMap.set('postedUnitsWithImpressionValue', 'Posted Units With IMPS');\n\n this.tooltipRadioTextMap.set('bookedRatings', 'Booked Rating');\n this.tooltipRadioTextMap.set('postedRatings', 'POSTED Rating');\n this.tooltipRadioTextMap.set('PostedRating', 'Posted RTG');\n\n this.tooltipRadioTextMap.set('bookedImpressions', \"Booked IMP('000)\");\n this.tooltipRadioTextMap.set('postedImpressions', \"Posted IMP('000)\");\n this.tooltipRadioTextMap.set('PostedImpressions', \"Posted IMP('000)\");\n\n this.tooltipRadioTextMap.set('bookedAverageRating', 'Booked AU Rating');\n this.tooltipRadioTextMap.set('postedAverageRating', 'Posted AU Rating');\n\n this.tooltipRadioTextMap.set('bookedAverageImpression', 'Booked AU IMPS');\n this.tooltipRadioTextMap.set('postedAverageImpression', 'Posted AU IMPS');\n\n this.tooltipRadioTextMap.set('bookedCppValue', 'Booked CPP');\n this.tooltipRadioTextMap.set('bookedEffectiveCppValue', 'Effective CPP');\n\n this.tooltipRadioTextMap.set('bookedCpmValue', 'Booked CPM');\n this.tooltipRadioTextMap.set('bookedEffectiveCpmValue', 'Effective CPM');\n\n this.tooltipRadioTextMap.set('orderSource', 'Order Route');\n this.tooltipRadioTextMap.set('orderCategory', 'Rev Category');\n this.tooltipRadioTextMap.set('cashOrTrade', 'C/T');\n this.tooltipRadioTextMap.set('revisionStartDate', 'Revision Start Date');\n this.tooltipRadioTextMap.set('name', 'name');\n this.tooltipRadioTextMap.set('role', 'role');\n this.tooltipRadioTextMap.set('stationCount', 'stationCount');\n this.tooltipRadioTextMap.set('stationList', 'stationList');\n this.tooltipRadioTextMap.set('approvedOn', 'Approved On');\n this.tooltipRadioTextMap.set('approvedBy', 'Approved By');\n this.tooltipRadioTextMap.set('ODImps', 'Proj. OD IMPS');\n this.tooltipRadioTextMap.set('UDImps', 'Proj. UD IMPS');\n this.tooltipRadioTextMap.set('ODGrp', 'Proj. OD GRP');\n this.tooltipRadioTextMap.set('UDGrp', 'Proj. UD GRP');\n this.tooltipRadioTextMap.set('udImpsPercent', 'Proj. UD %');\n this.tooltipRadioTextMap.set('udGrpPercent', 'Proj. UD GRP %');\n this.tooltipRadioTextMap.set('odImpsPercent', 'Proj. OD %');\n this.tooltipRadioTextMap.set('odGrpPercent', 'Proj. OD GRP %');\n\n this.tooltipRadioTextMap.set('RevisionNumber', 'Revision #');\n this.tooltipRadioTextMap.set('RevisionType', 'Revision Type');\n this.tooltipRadioTextMap.set('GeneratedOn', 'Generated On');\n this.tooltipRadioTextMap.set('BookedValueForDisplay', '$ BOOKED');\n this.tooltipRadioTextMap.set('BookedValue', '$ Booked');\n this.tooltipRadioTextMap.set('BookedSpots', 'Spots');\n this.tooltipRadioTextMap.set('BookedGRP', 'GRP');\n this.tooltipRadioTextMap.set('BookedIMPSRevTab', \"IMPS'(000)\");\n this.tooltipRadioTextMap.set('BookedCPP', 'CPP');\n this.tooltipRadioTextMap.set('BookedCPM', 'CPM');\n this.tooltipRadioTextMap.set('MGsValueForDisplay', '$ MGS');\n this.tooltipRadioTextMap.set('MGsValue', '$ MGS');\n this.tooltipRadioTextMap.set('ADUsValueForDisplay', '$ ADUS');\n this.tooltipRadioTextMap.set('ADUsValue', '$ ADUS');\n this.tooltipRadioTextMap.set('BuyerChangesValueForDisplay', '$ Buyer Change');\n this.tooltipRadioTextMap.set('BuyerChangesValue', '$ Buyer Change');\n this.tooltipRadioTextMap.set('UserChangesValueForDisplay', '$ Seller User Change');\n this.tooltipRadioTextMap.set('UserChangesValue', '$ Seller User Change');\n this.tooltipRadioTextMap.set('SellerLine', 'Seller Line #');\n this.tooltipRadioTextMap.set('BuyerLine', 'Buy Line #');\n this.tooltipRadioTextMap.set('SpotStatus', 'Spot Status');\n this.tooltipRadioTextMap.set('InventoryCode', 'Inventory Code');\n this.tooltipRadioTextMap.set('BuyerProgramName', 'Buyer Program Name');\n this.tooltipRadioTextMap.set('RevenueClass', 'Revenue Class');\n this.tooltipRadioTextMap.set('WeeklyAUR', 'Booked Avg. Rate');\n this.tooltipRadioTextMap.set('BookedRate', 'Booked Rate');\n this.tooltipRadioTextMap.set('BookedRTG', 'Booked RTG');\n this.tooltipRadioTextMap.set('BookedIMPS', \"Booked IMP('000)\");\n this.tooltipRadioTextMap.set('IMPS', \"IMP('000)\");\n this.tooltipRadioTextMap.set('AURTG', 'Avg RTG');\n this.tooltipRadioTextMap.set('AUIMPS', \"Avg IMP('000)\");\n this.tooltipRadioTextMap.set('PostedRatingsOrImpressions', 'Posted RTG');\n this.tooltipRadioTextMap.set('ScheduleFlightWeek', 'Schedule Week');\n this.tooltipRadioTextMap.set('ScheduledDay', 'Scheduled Day');\n this.tooltipRadioTextMap.set('AirStatus', 'Air Status');\n this.tooltipRadioTextMap.set('AirDateAndTime', 'Air Date & Time');\n this.tooltipRadioTextMap.set('AirDate', 'Air Date');\n this.tooltipRadioTextMap.set('NormalizedOrderedRating', 'Normalized Booked RTG');\n this.tooltipRadioTextMap.set('NormalizedOrderedImpressions', \"Normalized Booked IMP('000)\");\n this.tooltipRadioTextMap.set('NormalizedPostedRating', 'Normalized Posted RTG');\n this.tooltipRadioTextMap.set('NormalizedPostedImpressions', \"Normalized Posted IMP('000)\");\n this.tooltipRadioTextMap.set('AdId', 'Ad-Id');\n\n this.tooltipRadioTextMap.set('displayimps', 'IMPS');\n this.tooltipRadioTextMap.set('displayGrp', 'GRP');\n this.tooltipRadioTextMap.set('bookedSpotsForDisplay', 'Spots');\n this.tooltipRadioTextMap.set('displaySpots', 'Spots');\n\n this.tooltipRadioTextMap.set('estimateNo', 'Estimate#');\n this.tooltipRadioTextMap.set('primaryBuyer', 'Primary Buyer');\n this.tooltipRadioTextMap.set('primaryBuyerName', 'Primary Buyer');\n this.tooltipRadioTextMap.set('secondaryBuyerName', 'Secondary Buyer');\n this.tooltipRadioTextMap.set('secondaryBuyer', 'Secondary Buyer');\n this.tooltipRadioTextMap.set('timeoutDate', 'Timeout Date');\n this.tooltipRadioTextMap.set('DisplaytSpotStatusBI', 'Spot Status');\n this.tooltipRadioTextMap.set('LineSpot', 'Line.Spot');\n this.tooltipRadioTextMap.set('LurWindowName', 'Political Window');\n\n this.tooltipRadioTextMap.set('udValue', 'Proj. $ UD');\n this.tooltipRadioTextMap.set('odValue', 'Proj. $ OD');\n\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableInventoryCode', 'Inventory Code');\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableBuyerProgramName', 'Buyer Program Name');\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableStartTime', 'Start Time');\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableEndTime', 'End Time');\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableWeeklyAUR', 'Booked Avg. Rate');\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableDisplayRevenueClass', 'Rev Class');\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableActualWeekStartDate', 'Week');\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableWeekDay', 'Day');\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableDisplayLength', 'Length');\n\n this.tooltipRadioTextMap.set('ProjectedImpressions', \"Projected IMP('000)\");\n this.tooltipRadioTextMap.set('ProjectedRtg', 'Projected RTG');\n }\n\n selectOrUnselectCheckbox(rowData: any, columnKeys: any, isCheckboxSelected: any) {\n rowData[columnKeys] = !rowData[columnKeys];\n this.toggleCheckbox.emit({ rowData, columnKeys, isCheckboxSelected });\n }\n\n selectOrUnselectRadiobox(rowData: any, columnKeys: any, isCheckboxSelected: boolean) {\n if (rowData[columnKeys] == isCheckboxSelected) return;\n rowData[columnKeys] = isCheckboxSelected;\n this.toggleCheckbox.emit({ rowData, columnKeys, isCheckboxSelected });\n }\n\n selectUnselectAllRows() {\n this.toggleHeaderCheckbox.emit();\n }\n\n selectUnselectRow(rowData: any) {\n this.toggleRowCheckbox.emit(rowData);\n }\n\n undoCreditedSpot(data: any) {\n this.undoIconClicked.emit({ data, mgOrCredit: 'Credit' });\n }\n\n undoMgSpot(data: any) {\n this.undoIconClicked.emit({ data, mgOrCredit: 'MakeGood' });\n }\n\n //Sort and Filter Logic begins!\n closeTooltip() {\n if (this.tooltip && this.tooltip.isOpen()) {\n this.tooltip.close();\n }\n this.tooltip = null;\n if (!this.bindValueFuncCalled) {\n this.columnFilterClosed.emit();\n }\n }\n\n isTooltipActive(header: any[]) {\n return this.annaFilterService.isTooltipActive(header, this.annaSortService.columnSortState);\n }\n\n bindTheValueToToolTip(tooltip: any, header: IHeaderInfo) {\n this.bindValueFuncCalled = true;\n // if same tooltip opened close it\n if (tooltip == this.tooltip) {\n this.bindValueFuncCalled = false;\n this.closeTooltip();\n } else {\n let enabledHeaders: any[] = [];\n this.checkIfUniqueValuePresentForTheHeader(header, enabledHeaders);\n this.openTooltip(tooltip, enabledHeaders, header);\n\n if (\n window.innerWidth < 1500 &&\n window.innerHeight < 768 &&\n !this.annaFilterService.sliderSet.has(header.filterSortObjectKeys[0])\n ) {\n this.columnFilterOpened.emit();\n }\n\n this.showCheckboxesForTimeFilter =\n this.gtGeneralConfig.component == 'SPOTDETAILS' ||\n this.gtGeneralConfig.component == 'EXCLUDEINVENTORYPOPUP' ||\n this.gtGeneralConfig.component == 'RATING';\n this.showFilterTooltipTabs = header.filterSortObjectKeys.length > 1;\n this.bindValueFuncCalled = false;\n }\n }\n\n checkIfUniqueValuePresentForTheHeader(header: IHeaderInfo, enabledHeaders: any[]) {\n header.filterSortObjectKeys.forEach((item: string) => {\n let dataToCheck = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData, item);\n if (item == 'period') {\n let uniqStartDate = uniq(dataToCheck.map((u: { [x: string]: any }) => u['startDate']));\n let uniqEndDate = uniq(dataToCheck.map((u: { [x: string]: any }) => u['endDate']));\n if (uniqStartDate.length > 1 || uniqEndDate.length > 1 || this.isTooltipActive([item])) {\n enabledHeaders.push(item);\n }\n } else {\n let values = dataToCheck.map((u: { [x: string]: any }) => u[item]);\n // if last applied filter is this header, push it alos as enabledHeader\n let activeAndLastlyAppliedHeader = false;\n if (\n this.annaFilterService.appliedFiltersArray.length > 0 &&\n this.annaFilterService.appliedFiltersArray[this.annaFilterService.appliedFiltersArray.length - 1] ==\n item\n ) {\n activeAndLastlyAppliedHeader = true;\n }\n if (\n header.filter == 'CHECKBOX' &&\n (uniq(values).filter((n) => n != null).length > 1 || activeAndLastlyAppliedHeader)\n ) {\n enabledHeaders.push(item);\n } else if (\n header.filter != 'CHECKBOX' &&\n (uniq(values).filter((n) => n != null && n != '-').length > 1 || activeAndLastlyAppliedHeader)\n ) {\n enabledHeaders.push(item);\n }\n }\n });\n }\n\n openTooltip(tooltip: any, header: any, columnHeader: IHeaderInfo) {\n this.closeTooltip();\n this.tooltip = tooltip;\n this.tooltip.open();\n //convert key into the header\n this.filterTabObjects = header.map((key: string, index: number) => {\n let value = this.tooltipRadioTextMap.has(key) ? this.tooltipRadioTextMap.get(key) : key; //change to display name\n return new radioButtonModel(\n key,\n value,\n columnHeader.isSortRequired[index],\n columnHeader.isFilterRequired[index],\n );\n });\n }\n\n disableEnableEachColumnTooltipIcon() {\n this.tableHeaders.forEach((header) => {\n header.headerInfo.forEach((item) => {\n if (item.showTooltipIcon) {\n let values = [];\n item.disableTooltipIcon = true;\n\n item.filterSortObjectKeys.forEach((key) => {\n let latestFilters = this.annaFilterService.appliedFiltersArray;\n\n if (\n latestFilters.length > 0 &&\n item.disableTooltipIcon &&\n latestFilters[latestFilters.length - 1] == key\n ) {\n item.disableTooltipIcon = false;\n }\n\n if (item.disableTooltipIcon) {\n if (key == 'period') {\n let uniqStartDate = uniq(\n this.tableData.map((u: { [x: string]: any }) => u['startDate']),\n );\n let uniqEndDate = uniq(this.tableData.map((u: { [x: string]: any }) => u['endDate']));\n\n item.disableTooltipIcon =\n uniqStartDate.length > 1 || uniqEndDate.length > 1 ? false : true;\n } else {\n values = this.tableData.map((u: { [x: string]: any }) => u[key]);\n if (\n (item.filter == 'CHECKBOX' && uniq(values).filter((n) => n != null).length > 1) ||\n (item.filter != 'CHECKBOX' &&\n uniq(values).filter((n) => n != null && n != '-').length > 1)\n ) {\n item.disableTooltipIcon = false;\n }\n }\n }\n });\n }\n });\n });\n }\n\n setMarginLeftForFilterIcon() {\n let elementArr = this.viewChildTableHeaders.toArray();\n elementArr.forEach((item) => {\n let childDivElements = item.nativeElement.children;\n\n if (childDivElements.length == 2) {\n let firstParagraphOffsetWidth: number = childDivElements[0]?.children[0]?.offsetWidth\n ? childDivElements[0]?.children[0]?.offsetWidth\n : 0;\n let secondParagraphOffsetWidth: number = childDivElements[1].children[0]?.offsetWidth\n ? childDivElements[1].children[0]?.offsetWidth\n : 0;\n\n if (firstParagraphOffsetWidth > secondParagraphOffsetWidth) {\n let diff = firstParagraphOffsetWidth - secondParagraphOffsetWidth;\n if (childDivElements[0].children.length == 2) {\n childDivElements[0].children[1].style.marginLeft = 4 + 'px';\n }\n\n if (childDivElements[1].children.length == 2) {\n childDivElements[1].children[1].style.marginLeft = diff + 4 + 'px';\n }\n } else {\n let diff = secondParagraphOffsetWidth - firstParagraphOffsetWidth;\n if (childDivElements[0].children.length == 2) {\n childDivElements[0].children[1].style.marginLeft = diff + 4 + 'px';\n }\n\n if (childDivElements[1].children.length == 2) {\n childDivElements[1].children[1].style.marginLeft = 4 + 'px';\n }\n }\n }\n });\n }\n\n dataRowClicked(rowData: any) {\n this.rowClicked.emit(rowData);\n }\n\n radioButtonClicked(data: any, action: string, isDisabled: boolean) {\n if (!isDisabled) {\n this.radioButtonSelected.emit({ data, action });\n }\n }\n\n bindTheValueToSellerGroupTooltip(sellerGroupHierarchy: RatingSellerGroupHierarchy[], tooltip: any): void {\n if (this.hierarchyTooltip && this.hierarchyTooltip.open) {\n this.hierarchyTooltip.close();\n }\n this.sellerGroupHierarchy = sellerGroupHierarchy;\n this.hierarchyTooltip = tooltip;\n this.hierarchyTooltip.open();\n }\n\n iconClicked(rowData: any, iconClass: string) {\n if ('orderId' in rowData && iconClass.includes('mdi-star')) {\n this.selectedStarredOrderId = rowData.orderId;\n }\n\n this.gtIconClicked.emit({ data: rowData, iconClass: iconClass });\n }\n\n svgIconClicked(data: GtColumnIconEmittedData) {\n this.gtSVGIconClicked.emit(data);\n }\n\n textActionClicked(rowData: any, id: any, columnHeader: IHeaderInfo) {\n this.gtTextActionClicked.emit({ data: rowData, id: id, columnHeader: columnHeader, isIconClicked: false });\n }\n\n iconClickedOnStringIconActionType(rowData: any, id: any, columnHeader: IHeaderInfo) {\n this.gtTextActionClicked.emit({ data: rowData, id: id, columnHeader: columnHeader, isIconClicked: true });\n }\n\n innerHTMLCellClicked(event: any, rowData: any) {\n this.gtInnerHTMLClicked.emit({ event, rowData });\n }\n\n viewDetailsClicked(rowData: any) {\n this.gtViewDetailClicked.emit({ data: rowData });\n }\n\n setActiveStateObject() {\n this.annaFilterService.isFilterSortActive =\n !this.annaFilterService.resetFilterSortActiveStatus || this.multipleTablesPresent\n ? this.annaFilterService.isFilterSortActive\n : {};\n this.tableHeaders.forEach((item) => {\n item.headerInfo.forEach((header) => {\n if (header.showTooltipIcon) {\n let key = header.filterSortObjectKeys.join(',');\n header.joinedFilterSortObjectKeys = key;\n // ANNA-4113 fix\n if (this.annaFilterService.resetFilterSortActiveStatus) {\n this.annaFilterService.isFilterSortActive[key] = false;\n }\n }\n });\n });\n this.annaFilterService.resetFilterSortActiveStatus = true;\n }\n\n setIsDifference(value: boolean) {\n this.isDifferenceLessThan25Percent = value;\n }\n\n resetIndex() {\n this.start = 0;\n this.end = this.limit + this.start;\n }\n\n onTableContainerScroll(e: any) {\n const tableViewHeight = e.target.offsetHeight; // viewport\n const tableScrollHeight = e.target.scrollHeight; // length of all table\n const scrollLocation = e.target.scrollTop; // how far user scrolled\n\n this.removeTooltipOnScroll();\n\n // If the user has scrolled within 150px of the bottom, add more data\n const buffer = 150;\n const limit = tableScrollHeight - tableViewHeight - buffer;\n if (scrollLocation > limit) {\n let data = this.getTableData(this.start, this.end);\n this.renderedData = this.renderedData.concat(data);\n this.updateIndex();\n }\n this.tableContainerScrolled(e);\n }\n\n getTableData(start: number, end: number) {\n return this.tableData.filter((value, index) => index >= start && index < end);\n }\n\n updateIndex() {\n this.start = this.end;\n this.end = this.limit + this.start;\n }\n\n setInitialRowsForTable() {\n this.resetIndex();\n this.renderedData = this.getTableData(this.start, this.end);\n this.updateIndex();\n }\n\n spotDetailsDownloadClicked(parentChildOrTotalRow: 'DATAROW' | 'TOTALROW', rowdata?: any) {\n if (rowdata) {\n this.selectedInventoryIdForDownload = rowdata.inventoryCodeId;\n this.selectedDemographicForDownload = rowdata.demographic;\n } else {\n this.selectedInventoryIdForDownload = null;\n this.selectedDemographicForDownload = null;\n }\n this.selectedRowTypeForDownload = parentChildOrTotalRow;\n this.downloadSpotDetails.emit({\n parentChildOrTotalRow: parentChildOrTotalRow,\n inventoryCodeId: this.selectedInventoryIdForDownload,\n demographic: this.selectedDemographicForDownload,\n });\n }\n\n tableContainerScrolled(event: any) {\n this.isScrolledLeft = event.target.scrollLeft > 0;\n this.removeTooltipOnScroll();\n }\n\n mouseEnterOnStringTextActionType(rowData: any, tooltipKey: string) {\n this.textActionTooltip = rowData[tooltipKey];\n this.notificationIconHover.emit({ rowData: rowData, type: 'on-enter' });\n }\n\n mouseEnterOnStringTextActionTypeContainingTable(rowData: any, tooltipKey: string) {\n this.tooltipContainingTable = rowData[tooltipKey];\n }\n\n mouseLeaveTextActionType(rowData: any) {\n this.notificationIconHoverLeave.emit({ rowData: rowData, type: 'on-leave' });\n }\n\n mouseEnterOnTextActionType(rowData: any, tooltipKey: string) {\n this.textActionTooltip = rowData[tooltipKey];\n }\n\n onClickableDataClicked(Rowdata: any, id: number) {\n this.clickableDataClicked.emit({ data: Rowdata, id: id });\n }\n\n removeTooltipOnScroll() {\n const elements = document.getElementsByClassName('remarks-info-tooltip');\n // const tooltipElements = document.getElementsByClassName(\"tooltip\");\n const gtTooltip = document.getElementsByClassName('remove-on-scroll-class');\n const tooltipElements = document.getElementsByClassName('tooltip');\n\n while (elements && elements.length > 0) {\n elements[0].remove();\n }\n while (tooltipElements && tooltipElements.length > 0) {\n tooltipElements[0].remove();\n this.tooltip = null;\n }\n while (gtTooltip && gtTooltip.length > 0) {\n gtTooltip[0].remove();\n }\n }\n\n iconClickedInTotalRow(colName: string) {\n this.totalRowIconClicked.emit(colName);\n }\n\n changesMadeInEditableInputBox(event: any, editedObject: any, pasteEvent: boolean) {\n let enteredValue = pasteEvent ? event.clipboardData.getData('text') : event.key;\n let dotIndex = editedObject.value.indexOf('.');\n\n if (\n event.keyCode != 8 &&\n event.keyCode != 46 &&\n !(event.keyCode >= 37 && event.keyCode <= 40) &&\n ((!editedObject?.allowSpecialCharacters && !/[`0-9.]/.test(enteredValue)) ||\n (editedObject.isDecimalPointCheckRequired &&\n dotIndex >= 0 &&\n event?.target?.selectionStart > dotIndex &&\n editedObject.value.length - (dotIndex + 1) >= editedObject.maxDecimalPointsAllowed))\n ) {\n event.preventDefault();\n }\n }\n\n editableInputValueChanged(value: any, row: any, keyEdited: string) {\n this.editableInputEdited.emit({ row: row, value: value, keyEdited: keyEdited });\n }\n\n radioButtonIconClicked(data: any) {\n this.radioButtonMessageIconClicked.emit(data);\n }\n\n filterApplied(tableData: any[]) {\n this.tableData = tableData;\n this.setInitialRowsForTable();\n this.disableEnableEachColumnTooltipIcon();\n this.filterAppliedToTable.emit(tableData);\n this.closeTooltip();\n }\n\n sortingApplied(tableData: any[]) {\n this.tableData = tableData;\n this.setInitialRowsForTable();\n this.disableEnableEachColumnTooltipIcon();\n this.sortingAppliedToTable.emit(tableData);\n this.closeTooltip();\n }\n}\n","<div\n id=\"generic-table-conatiner\"\n class=\"table-container {{ gtGeneralConfig?.tableOuterContainerName }} {{ tableBottomBorderClass }}\"\n [ngClass]=\"{\n 'scroll-left-shadow-effect': isScrolledLeft,\n 'clickable-row': clickableRow,\n 'no-data-table': (isNoDataToDisplaySubject$ | async)\n }\"\n (scroll)=\"onTableContainerScroll($event)\"\n>\n <div\n [class]=\"gtGeneralConfig.tableContainerName\"\n class=\"horizontal-scroll-for-table-container\"\n [ngStyle]=\"{\n height:\n tableData.length < maximumRowsWhichCanBeRenderedWithoutScroll\n ? 'calc(' +\n (gtDimension.rowHeight * tableData.length +\n (!tableData.length || !gtGeneralConfig.totalRow\n ? gtDimension.headerHeight\n : gtDimension.headerHeight + gtDimension.rowHeight)) +\n 'px)'\n : gtDimension.tableHeight\n }\"\n >\n <table\n class=\"gt\"\n [ngClass]=\"tableClass\"\n mat-table\n [dataSource]=\"renderedData\"\n >\n <tr\n class=\"header-row\"\n mat-header-row\n *matHeaderRowDef=\"tableColumns; sticky: true\"\n [style.height.px]=\"gtDimension.headerHeight\"\n ></tr>\n <tr\n class=\"total-row\"\n mat-header-row\n [style.height.px]=\"gtDimension.rowHeight\"\n *matHeaderRowDef=\"totalRowColumns; sticky: true\"\n [class.hidden]=\"\n showSkeletonLoading ||\n (!showSkeletonLoading && !tableData.length) ||\n (isNoDataToDisplaySubject$ | async) ||\n (!showSkeletonLoading && !gtGeneralConfig.totalRow)\n \"\n ></tr>\n <tr\n [class]=\"rowData.gtClass\"\n [ngClass]=\"{ 'no-border-tr': (isNoDataToDisplaySubject$ | async) }\"\n mat-row\n *matRowDef=\"let rowData; columns: tableColumns\"\n [style.height.px]=\"gtDimension.rowHeight\"\n (click)=\"dataRowClicked(rowData)\"\n ></tr>\n\n <!-- TOTAL ROW -->\n <ng-container\n [matColumnDef]=\"column.colName\"\n *ngFor=\"let column of totalRowInfo; trackBy: trackByFn\"\n >\n <td\n mat-header-cell\n *matHeaderCellDef\n [attr.colspan]=\"column.colspan\"\n class=\"{{ column.class }}\"\n >\n <ng-container *ngIf=\"column['isActionColumn']\">\n <a\n *ngFor=\"let data of column.actionData\"\n [class]=\"data.class\"\n (click)=\"onClickableDataClicked({}, data.id)\"\n >\n {{ data.name }}\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"column['isIconColumn']\">\n <i\n class=\"{{ column?.iconData?.class }}\"\n (click)=\"iconClickedInTotalRow(column?.colName)\"\n >\n </i>\n </ng-container>\n\n <ng-container *ngIf=\"!column['isActionColumn']\">\n <strong class=\"upper-label\">{{ column.data }}</strong>\n <ng-container *ngIf=\"column.lowerData\">\n <br />\n <span\n *ngIf=\"\n column.colName == 'total-potential-booked-unit' &&\n gtGeneralConfig.component == 'RATING';\n else columnLowerData\n \"\n class=\"clickable-data\"\n (click)=\"spotDetailsDownloadClicked('TOTALROW')\"\n [ngClass]=\"{ 'disabled-clickable-data': downloadInProgress }\"\n >{{ column.lowerData }}\n <span class=\"material-icons spot-details-download-icons\">get_app</span>\n <ng-container *ngIf=\"downloadInProgress && selectedRowTypeForDownload == 'TOTALROW'\">\n <ng-container [ngTemplateOutlet]=\"circularProgressBar\"></ng-container>\n </ng-container>\n </span>\n <ng-template #columnLowerData>\n <span class=\"lower-label\">{{ column.lowerData }}</span>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"column.tooltipMessage && gtGeneralConfig.component != 'LUR_VIOLATIONS'\">\n <i\n class=\"{{ column.tooltipIconClass }}\"\n container=\"body\"\n [ngbTooltip]=\"column.tooltipMessage\"\n tooltipClass=\"gt-total-row-tooltip\"\n placement=\"bottom\"\n ></i>\n </ng-container>\n <ng-container *ngIf=\"gtGeneralConfig.component == 'LUR_VIOLATIONS' && column.tooltipMessage\">\n <i\n class=\"mi mdi-info-outline info-label\"\n container=\"body\"\n [ngbTooltip]=\"lurViolationTotalRowToolTip\"\n tooltipClass=\"gt-total-row-tooltip\"\n placement=\"bottom\"\n ></i>\n </ng-container>\n </ng-container>\n </td>\n </ng-container>\n\n <!-- MAIN ROW -->\n <ng-container\n [matColumnDef]=\"columnDef.headerInfo[0].objectKey\"\n *ngFor=\"let columnDef of tableHeaders; trackBy: trackByFn\"\n >\n <th\n #tableHeader\n nowrap\n mat-header-cell\n *matHeaderCellDef\n [style.width]=\"columnDef.width\"\n >\n <div\n class=\"row mx-0\"\n *ngFor=\"let header of columnDef.headerInfo; let j = index\"\n >\n <p\n *ngIf=\"header.typeOfHeaderData === 'STRING'\"\n [ngClass]=\"{ 'upper-label': j === 0, 'lower-label': j === 1 }\"\n >\n <ngx-skeleton-loader\n *ngIf=\"header.name == null\"\n count=\"1\"\n [theme]=\"{\n height: '10px',\n display: 'block',\n width: columnDef.width,\n 'max-width': 'calc(100% - 20px)'\n }\"\n >\n </ngx-skeleton-loader>\n <ng-container *ngIf=\"header.name\">\n {{ header.name }}\n </ng-container>\n\n <i\n *ngIf=\"header.tooltip && header.tooltip.name == 'impsInfoTooltip'\"\n class=\"{{ header['tooltip'].iconClass }}\"\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\n #t=\"ngbTooltip\"\n container=\"body\"\n [ngbTooltip]=\"impsInfoTooltip\"\n container=\"body\"\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\n >\n </i>\n <i\n *ngIf=\"\n header.tooltip && header.tooltip.name == 'spotsColumnEquivalizationMessageTooltip'\n \"\n class=\"{{ header['tooltip'].iconClass }}\"\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\n container=\"body\"\n #t=\"ngbTooltip\"\n container=\"body\"\n [ngbTooltip]=\"spotsColumnEquivalizationMessageTooltip\"\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\n >\n </i>\n <i\n *ngIf=\"header.tooltip && header.tooltip.name == 'underDeliveryTooltip'\"\n class=\"{{ header['tooltip'].iconClass }}\"\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\n container=\"body\"\n #t=\"ngbTooltip\"\n container=\"body\"\n [ngbTooltip]=\"underDeliveryTooltip\"\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\n >\n </i>\n <i\n *ngIf=\"header.tooltip && header.tooltip.name == 'overDeliveryTooltip'\"\n class=\"{{ header['tooltip'].iconClass }}\"\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\n container=\"body\"\n #t=\"ngbTooltip\"\n container=\"body\"\n [ngbTooltip]=\"overDeliveryTooltip\"\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\n >\n </i>\n <i\n *ngIf=\"header.tooltip && header.tooltip.name == 'ratingInfoTooltip'\"\n class=\"{{ header['tooltip'].iconClass }}\"\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\n #t=\"ngbTooltip\"\n container=\"body\"\n [ngbTooltip]=\"ratingInfoTooltip\"\n container=\"body\"\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\n >\n </i>\n <i\n *ngIf=\"header.tooltip && header.tooltip.name == 'rateInfoTooltip'\"\n class=\"{{ header['tooltip'].iconClass }}\"\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\n #t=\"ngbTooltip\"\n container=\"body\"\n [ngbTooltip]=\"rateInfoTooltip\"\n container=\"body\"\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\n >\n </i>\n <i\n *ngIf=\"header.tooltip && header.tooltip.name == 'ongoingRevBookedColumnTooltip'\"\n class=\"{{ header['tooltip'].iconClass }}\"\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\n #t=\"ngbTooltip\"\n container=\"body\"\n [ngbTooltip]=\"ongoingRevBookedColumnTooltip\"\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\n >\n </i>\n <i\n *ngIf=\"header.tooltip && header.tooltip.name == 'completedRevBookedColumnTooltip'\"\n class=\"{{ header['tooltip'].iconClass }}\"\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\n #t=\"ngbTooltip\"\n container=\"body\"\n [ngbTooltip]=\"completedRevBookedColumnTooltip\"\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\n >\n </i>\n <i\n *ngIf=\"header.tooltip && header.tooltip.name == 'avgBookedRate'\"\n class=\"{{ header['tooltip'].iconClass }}\"\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\n #t=\"ngbTooltip\"\n container=\"body\"\n [ngbTooltip]=\"avgBookedRate\"\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\n >\n </i>\n <i\n *ngIf=\"header.tooltip && header.tooltip.name == 'avgBookedRtg'\"\n class=\"{{ header['tooltip'].iconClass }}\"\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\n #t=\"ngbTooltip\"\n container=\"body\"\n [ngbTooltip]=\"avgBookedRtg\"\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\n >\n </i>\n <i\n *ngIf=\"header.tooltip && header.tooltip.name == 'avgBookedImps'\"\n class=\"{{ header['tooltip'].iconClass }}\"\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\n #t=\"ngbTooltip\"\n container=\"body\"\n [ngbTooltip]=\"avgBookedImps\"\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\n >\n </i>\n\n <i\n *ngIf=\"header.tooltip && header.tooltip.name == 'automationTooltip'\"\n class=\"{{ header['tooltip'].iconClass }}\"\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\n #t=\"ngbTooltip\"\n container=\"body\"\n [ngbTooltip]=\"automationTooltip\"\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\n >\n </i>\n\n <i\n *ngIf=\"header.tooltip && header.tooltip.name == 'rebateImpact'\"\n class=\"{{ header['tooltip'].iconClass }}\"\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\n #t=\"ngbTooltip\"\n container=\"body\"\n [ngbTooltip]=\"rebateImpact\"\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\n >\n </i>\n\n <i\n *ngIf=\"header.tooltip && header.tooltip.name == 'projectedImpsRtg'\"\n class=\"{{ header['tooltip'].iconClass }}\"\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\n #t=\"ngbTooltip\"\n container=\"body\"\n [ngbTooltip]=\"projectedImpsRtg\"\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\n >\n </i>\n </p>\n\n <ng-container *ngIf=\"header.typeOfHeaderData === 'CHECKBOX'\">\n <span\n *ngIf=\"gtGeneralConfig.isHeaderChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectUnselectAllRows()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!gtGeneralConfig.isHeaderChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n [ngClass]=\"{ 'disable-checkbox': gtGeneralConfig.disableHeaderCheckbox }\"\n (click)=\"selectUnselectAllRows()\"\n >\n check_box_outline_blank\n </span>\n </ng-container>\n\n <div\n *ngIf=\"gtGeneralConfig.showAllColumnFilter\"\n class=\"sort-filter-container\"\n >\n <ng-container *ngIf=\"header.showTooltipIcon\">\n <!-- Active tooltip Functionality -->\n <ng-container *ngIf=\"header.filter === 'CHECKBOX'\">\n <span\n class=\"mdi mdi-filter-variant\"\n [ngClass]=\"{\n active:\n annaFilterService.isFilterSortActive &&\n annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\n disabled: header.disableTooltipIcon || showSkeletonLoading\n }\"\n [ngbTooltip]=\"filterTooltip\"\n placement=\"{{ filterAlignment }}\"\n container=\"body\"\n tooltipClass=\"non-edit-checkbox-tooltip\"\n [autoClose]=\"'outside'\"\n triggers=\"manual\"\n #t=\"ngbTooltip\"\n (click)=\"bindTheValueToToolTip(t, header)\"\n (hidden)=\"closeTooltip()\"\n >\n </span\n ><br />\n </ng-container>\n <ng-container *ngIf=\"header.filter === 'SLIDER'\">\n <span\n class=\"mdi mdi-filter-variant\"\n [ngClass]=\"{\n active:\n annaFilterService.isFilterSortActive &&\n annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\n disabled: header.disableTooltipIcon || showSkeletonLoading\n }\"\n [ngbTooltip]=\"sliderToolTip\"\n placement=\"bottom left-top\"\n container=\"body\"\n tooltipClass=\"non-edit-slider-tooltip\"\n [autoClose]=\"'outside'\"\n triggers=\"manual\"\n #t1=\"ngbTooltip\"\n (click)=\"bindTheValueToToolTip(t1, header)\"\n (hidden)=\"closeTooltip()\"\n >\n </span\n ><br />\n </ng-container>\n <ng-container *ngIf=\"header.filter === 'DATE'\">\n <span\n class=\"mdi mdi-filter-variant\"\n [ngClass]=\"{\n active:\n annaFilterService.isFilterSortActive &&\n annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\n disabled: header.disableTooltipIcon || showSkeletonLoading\n }\"\n [ngbTooltip]=\"datePickerTooltip\"\n placement=\"bottom auto\"\n container=\"body\"\n tooltipClass=\"non-edit-datepicker-tooltip\"\n [autoClose]=\"'outside'\"\n triggers=\"manual\"\n #t2=\"ngbTooltip\"\n (click)=\"bindTheValueToToolTip(t2, header)\"\n (hidden)=\"closeTooltip()\"\n >\n </span\n ><br />\n </ng-container>\n <ng-container *ngIf=\"header.filter === 'WEEK'\">\n <span\n class=\"mdi mdi-filter-variant\"\n [ngClass]=\"{\n active:\n annaFilterService.isFilterSortActive &&\n annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\n disabled: header.disableTooltipIcon || showSkeletonLoading\n }\"\n [ngbTooltip]=\"weekPickerToolTip\"\n placement=\"bottom left-top\"\n container=\"body\"\n [autoClose]=\"'outside'\"\n triggers=\"manual\"\n #t3=\"ngbTooltip\"\n (click)=\"bindTheValueToToolTip(t3, header)\"\n (hidden)=\"closeTooltip()\"\n >\n </span\n ><br />\n </ng-container>\n <ng-container *ngIf=\"header.filter === 'TIME'\">\n <span\n class=\"mdi mdi-filter-variant\"\n [ngClass]=\"{\n active:\n annaFilterService.isFilterSortActive &&\n annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\n disabled: header.disableTooltipIcon || showSkeletonLoading\n }\"\n [ngbTooltip]=\"timeFilterToolTip\"\n placement=\"bottom left-top auto\"\n container=\"body\"\n tooltipClass=\"non-edit-time-tooltip\"\n [autoClose]=\"'outside'\"\n triggers=\"manual\"\n #t4=\"ngbTooltip\"\n (click)=\"bindTheValueToToolTip(t4, header)\"\n (hidden)=\"closeTooltip()\"\n >\n </span\n ><br />\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!header.showTooltipIcon\">\n <span id=\"no-filter-space\"></span><br />\n </ng-container>\n <i\n *ngIf=\"header.tooltip && header.tooltip.name == 'lurViolationInfoTooltip'\"\n class=\"{{ header['tooltip'].iconClass }}\"\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\n #t=\"ngbTooltip\"\n container=\"body\"\n [ngbTooltip]=\"lurViolationInfoTooltip\"\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\n >\n </i>\n </div>\n </div>\n </th>\n\n <ng-container *matCellDef=\"let ROW_DATA\">\n <td\n mat-cell\n [style.background]=\"ROW_DATA.backgroundColor\"\n [style.border]=\"ROW_DATA.border\"\n class=\"{{ ROW_DATA.rowClass }}\"\n [ngClass]=\"ROW_DATA[columnDef.headerInfo[0].objectKey + 'TdClass']\"\n [attr.rowspan]=\"ROW_DATA[columnDef.headerInfo[0].objectKey + 'Rowspan']\"\n *ngIf=\"\n !hideSomeTds ||\n (hideSomeTds && !ROW_DATA['hide' + columnDef.headerInfo[0].objectKey + 'Td'])\n \"\n >\n <ngx-skeleton-loader\n *ngIf=\"showSkeletonLoading\"\n count=\"1\"\n [theme]=\"{ height: '10px', display: 'block' }\"\n >\n </ngx-skeleton-loader>\n\n <ng-container *ngIf=\"!showSkeletonLoading\">\n <ng-container *ngIf=\"tableData.length > 0 && !(isNoDataToDisplaySubject$ | async)\">\n <ng-container\n *ngFor=\"\n let subline of columnDef.headerInfo;\n let subLineIndex = index;\n trackBy: trackByFn\n \"\n >\n <div showEllipsisTextOnHover>\n <ng-container [ngSwitch]=\"columnDef.headerInfo[subLineIndex].typeOfBodyData\">\n <ng-container *ngSwitchCase=\"'ICON'\">\n <i\n *ngIf=\"\n !(\n starredInProgress &&\n ROW_DATA.orderId == selectedStarredOrderId\n )\n \"\n [class]=\"ROW_DATA.iconClass\"\n (click)=\"iconClicked(ROW_DATA, ROW_DATA.iconClass)\"\n ngbTooltip=\"{{ ROW_DATA.iconTitleText }}\"\n placement=\"bottom\"\n container=\"body\"\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\n ></i>\n <ng-container\n *ngIf=\"\n starredInProgress && ROW_DATA.orderId == selectedStarredOrderId\n \"\n >\n <div class=\"spinner-for-button-directive\"></div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'ICON_CELL'\">\n <ng-container\n *ngFor=\"\n let action of ROW_DATA[\n columnDef.headerInfo[subLineIndex].actionKey\n ]\n \"\n >\n <i\n *ngIf=\"action.showIcon\"\n [class]=\"action.iconClass\"\n (mouseenter)=\"\n mouseEnterOnStringTextActionType(\n ROW_DATA,\n columnDef.headerInfo[subLineIndex].tooltipKey\n )\n \"\n placement=\"bottom auto\"\n container=\"body\"\n [autoClose]=\"true\"\n tooltipClass=\"team-user-tooltip remove-on-scroll-class\"\n [ngbTooltip]=\"action.showTooltip ? userLoggedInDetails : null\"\n (click)=\"\n textActionClicked(\n ROW_DATA,\n action.id,\n columnDef.headerInfo[subLineIndex]\n )\n \"\n [disableTooltip]=\"!action.showTooltip\"\n >\n </i>\n\n <ng-container *ngIf=\"action.showObjectKey\">\n {{ ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey] }}\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'HTML_STRING'\">\n <p\n [innerHTML]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\n (click)=\"innerHTMLCellClicked($event, ROW_DATA)\"\n ></p>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'SVG_ICON'\">\n <anna-core-anna-icon-column\n [componentName]=\"gtGeneralConfig.component\"\n [dataObject]=\"ROW_DATA\"\n [iconToShow]=\"\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\n \"\n (onColumnIconClicked)=\"svgIconClicked($event)\"\n ></anna-core-anna-icon-column>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'TEXT_ACTIONS'\">\n <ng-container\n *ngFor=\"\n let text of ROW_DATA[\n columnDef.headerInfo[subLineIndex].actionKey\n ]\n \"\n >\n <button\n *ngIf=\"text.showTooltip\"\n (click)=\"\n textActionClicked(\n ROW_DATA,\n text.id,\n columnDef.headerInfo[subLineIndex]\n )\n \"\n [disabled]=\"text.isDisabled\"\n class=\"{{ text.class }}\"\n (mouseenter)=\"\n mouseEnterOnTextActionType(\n ROW_DATA,\n columnDef.headerInfo[subLineIndex].tooltipKey\n )\n \"\n [ngbTooltip]=\"textActionTooltipTemplate\"\n placement=\"auto\"\n container=\"body\"\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\n >\n {{ text.name }}\n </button>\n\n <button\n *ngIf=\"!text.showTooltip\"\n (click)=\"\n textActionClicked(\n ROW_DATA,\n text.id,\n columnDef.headerInfo[subLineIndex]\n )\n \"\n [disabled]=\"text.isDisabled\"\n class=\"{{ text.class }}\"\n >\n {{ text.name }}\n </button>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'CHECKBOX'\">\n <span\n *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\n [ngClass]=\"{\n 'disable-checkbox':\n ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\n }\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"\n selectOrUnselectCheckbox(\n ROW_DATA,\n columnDef.headerInfo[subLineIndex].objectKey,\n false\n )\n \"\n >\n check_box\n </span>\n <span\n *ngIf=\"!ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n [ngClass]=\"{\n 'disable-checkbox':\n ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\n }\"\n (click)=\"\n selectOrUnselectCheckbox(\n ROW_DATA,\n columnDef.headerInfo[subLineIndex].objectKey,\n true\n )\n \"\n >\n check_box_outline_blank\n </span>\n\n <ng-container\n *ngFor=\"\n let action of ROW_DATA[\n columnDef.headerInfo[subLineIndex].actionKey\n ]\n \"\n >\n <i\n *ngIf=\"action.showIcon\"\n [class]=\"action.iconClass\"\n [ngClass]=\"{ disabled: action.disabledIcon }\"\n (mouseenter)=\"\n mouseEnterOnStringTextActionTypeContainingTable(\n ROW_DATA,\n columnDef.headerInfo[subLineIndex].tooltipKey\n )\n \"\n placement=\"bottom auto\"\n container=\"body\"\n [autoClose]=\"true\"\n tooltipClass=\"tooltip-containing-table remove-on-scroll-class\"\n [ngbTooltip]=\"tooltipContainingTableTemplate\"\n >\n </i>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'CLICKABLE_DATA'\">\n <a\n *ngFor=\"\n let text of ROW_DATA[\n columnDef.headerInfo[subLineIndex].actionKey\n ]\n \"\n [class]=\"text.class\"\n (click)=\"onClickableDataClicked(ROW_DATA, text.id)\"\n >\n {{ text.name }}\n </a>\n <span\n *ngIf=\"\n subline.objectKey == 'displayBookedUnits' &&\n gtGeneralConfig.component == 'RATING'\n \"\n class=\"clickable-data\"\n (click)=\"spotDetailsDownloadClicked('DATAROW', ROW_DATA)\"\n [ngClass]=\"{ 'disabled-clickable-data': downloadInProgress }\"\n >{{ ROW_DATA.displayBookedUnits }}\n <span class=\"material-icons spot-details-download-icons\"\n >get_app</span\n >\n <ng-container\n *ngIf=\"\n downloadInProgress &&\n ROW_DATA.inventoryCodeId ==\n selectedInventoryIdForDownload &&\n ROW_DATA.demographic == selectedDemographicForDownload\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"circularProgressBar\"\n ></ng-container>\n </ng-container>\n </span>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'STRING___ICON_OR_TEXT_ACTION'\">\n <ng-container\n *ngFor=\"\n let action of ROW_DATA[\n columnDef.headerInfo[subLineIndex].actionKey\n ]\n \"\n >\n <span\n [class]=\"action.additionalTextBeforeLinkClass\"\n [innerHtml]=\"action.additionalTextBeforeLink\"\n ngbTooltip=\"{{ action.additionalTextBeforeLink }}\"\n placement=\"bottom\"\n container=\"body\"\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\n [disableTooltip]=\"!action.enableTooltipForAdditionalText\"\n ></span>\n\n <ng-container *ngIf=\"action && action.typeOfData == 'STRING'\">\n {{ action.data }}\n </ng-container>\n\n <a\n [id]=\"action.id\"\n *ngIf=\"action.showLink\"\n (click)=\"\n textActionClicked(\n ROW_DATA,\n action.id,\n columnDef.headerInfo[subLineIndex]\n )\n \"\n [class]=\"action.linkClass\"\n [ngClass]=\"{ disabled: action.disabledLink }\"\n >{{ action.data }}</a\n >\n <span\n ngbTooltip=\"{{ action.additionalTextAfterLink }}\"\n placement=\"bottom\"\n container=\"body\"\n [class]=\"action.additionalTextAfterLinkClass\"\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\n [disableTooltip]=\"!action.enableTooltipForAdditionalAfterText\"\n >\n {{ action.additionalTextAfterLink }}\n </span>\n\n <ng-container *ngIf=\"action.showTooltip\">\n <ng-container *ngIf=\"action.tooltipData.innerHtml\">\n <i\n *ngIf=\"action.showIcon\"\n [class]=\"action.iconClass\"\n [ngClass]=\"{ disabled: action.disabledIcon }\"\n (mouseenter)=\"\n mouseEnterOnStringTextActionTypeContainingTable(\n ROW_DATA,\n columnDef.headerInfo[subLineIndex].tooltipKey\n )\n \"\n placement=\"bottom auto\"\n container=\"body\"\n [autoClose]=\"true\"\n tooltipClass=\"tooltip-containing-table remove-on-scroll-class\"\n [ngbTooltip]=\"tooltipContainingTableTemplate\"\n >\n </i>\n </ng-container>\n\n <ng-container *ngIf=\"!action.tooltipData.tooltipTableBody\">\n <i\n *ngIf=\"action.showIcon\"\n [class]=\"action.iconClass\"\n [ngClass]=\"{ disabled: action.disabledIcon }\"\n (click)=\"\n iconClickedOnStringIconActionType(\n ROW_DATA,\n action.id,\n columnDef.headerInfo[subLineIndex]\n )\n \"\n (mouseleave)=\"mouseLeaveTextActionType(ROW_DATA)\"\n (mouseenter)=\"\n mouseEnterOnStringTextActionType(\n ROW_DATA,\n columnDef.headerInfo[subLineIndex].tooltipKey\n )\n \"\n [placement]=\"\n action.tooltipPlacement\n ? action.tooltipPlacement\n : 'bottom auto'\n \"\n container=\"body\"\n [autoClose]=\"true\"\n tooltipClass=\"team-user-tooltip remove-on-scroll-class {{\n action.tooltipClass\n }}\"\n [ngbTooltip]=\"userLoggedInDetails\"\n >\n </i>\n <ng-container *ngIf=\"action['showSvgIcon']\">\n <anna-core-anna-est-icon-template\n class=\"float-right\"\n *ngIf=\"action['svgIconName'] == 'anna-icon'\"\n (mouseleave)=\"mouseLeaveTextActionType(ROW_DATA)\"\n (mouseenter)=\"\n mouseEnterOnStringTextActionType(\n ROW_DATA,\n columnDef.headerInfo[subLineIndex]\n .tooltipKey\n )\n \"\n [placement]=\"\n action.tooltipPlacement\n ? action.tooltipPlacement\n : 'bottom auto'\n \"\n tooltipClass=\"team-user-tooltip remove-on-scroll-class {{\n action['tooltipClass']\n }}\"\n [ngbTooltip]=\"userLoggedInDetails\"\n container=\"body\"\n [autoClose]=\"true\"\n >\n </anna-core-anna-est-icon-template>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!action.showTooltip\">\n <i\n *ngIf=\"action.showIcon\"\n [class]=\"action.iconClass\"\n [ngClass]=\"{ disabled: action.disabledIcon }\"\n (click)=\"\n iconClickedOnStringIconActionType(\n ROW_DATA,\n action.id,\n columnDef.headerInfo[subLineIndex]\n )\n \"\n >\n </i>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'STRING_OR_INPUT'\">\n <ng-container\n *ngIf=\"\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]?.type ==\n 'STRING';\n else inputBox\n \"\n >\n <span\n [innerHtml]=\"\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\n ?.value\n \"\n ></span>\n </ng-container>\n <ng-template #inputBox>\n <input\n placeholder=\"{{\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\n ?.placeholder\n }}\"\n showEllipsisTextOnHover\n class=\"{{\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\n .className\n }}\"\n (keydown)=\"\n changesMadeInEditableInputBox(\n $event,\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey],\n false\n )\n \"\n (paste)=\"\n changesMadeInEditableInputBox(\n $event,\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey],\n true\n )\n \"\n (ngModelChange)=\"\n editableInputValueChanged(\n $event,\n ROW_DATA,\n columnDef.headerInfo[subLineIndex].objectKey\n )\n \"\n [ngModel]=\"\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].value\n \"\n [disabled]=\"\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\n .disabled\n \"\n [ngClass]=\"{\n 'red-border':\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\n .hasError\n }\"\n />\n\n <i\n *ngIf=\"\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\n .showIcon\n \"\n container=\"body\"\n [ngbTooltip]=\"\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\n .iconTooltip\n \"\n tooltipClass=\"gt-total-row-tooltip\"\n placement=\"bottom\"\n class=\"{{\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\n .iconClass\n }}\"\n >\n </i>\n <ng-container\n *ngIf=\"\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey][\n 'showSvgIcon'\n ]\n \"\n >\n <anna-core-anna-est-icon-template\n class=\"float-right\"\n *ngIf=\"\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey][\n 'svgIconName'\n ] == 'anna-icon'\n \"\n [placement]=\"'bottom auto'\"\n tooltipClass=\"gt-total-row-tooltip\"\n [ngbTooltip]=\"\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\n .iconTooltip\n \"\n container=\"body\"\n >\n </anna-core-anna-est-icon-template>\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'HTML'\">\n <span\n [innerHtml]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\n ></span>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'SINGLE_RADIO'\">\n <span\n *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\n [ngClass]=\"{\n 'disable-checkbox':\n ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\n }\"\n class=\"mdi mdi-radiobox-marked\"\n (click)=\"(null)\"\n >\n </span>\n <span\n *ngIf=\"!ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\n class=\"mdi mdi-radiobox-blank\"\n [ngClass]=\"{\n 'disable-checkbox':\n ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\n }\"\n (click)=\"\n selectOrUnselectCheckbox(\n ROW_DATA,\n columnDef.headerInfo[subLineIndex].objectKey,\n true\n )\n \"\n >\n </span>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'RADIO'\">\n <mat-radio-group\n *ngIf=\"ROW_DATA['RadioButtonConfig']\"\n [ngModel]=\"ROW_DATA[subline.objectKey]\"\n [disabled]=\"ROW_DATA['RadioButtonConfig'][0].isDisabled\"\n >\n <ng-container\n *ngFor=\"\n let radioButton of ROW_DATA['RadioButtonConfig'];\n let last = last\n \"\n >\n <mat-radio-button\n value=\"{{ radioButton.value }}\"\n class=\"{{ radioButton.class }}\"\n (click)=\"\n radioButtonClicked(\n ROW_DATA,\n radioButton.value,\n ROW_DATA['RadioButtonConfig'][0].isDisabled\n )\n \"\n >{{ radioButton.label }}\n </mat-radio-button>\n <i\n class=\" {{ radioButton.iconClass }}\"\n (click)=\"radioButtonIconClicked(ROW_DATA)\"\n ></i>\n <br *ngIf=\"!last\" />\n </ng-container>\n </mat-radio-group>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'STRING_WITH_TOOLTIP'\">\n <ng-container\n *ngFor=\"\n let action of ROW_DATA[\n columnDef.headerInfo[subLineIndex].actionKey\n ]\n \"\n >\n <span> {{ action?.dataToDisplay }}</span>\n <span\n *ngIf=\"action?.showTooltip\"\n [ngbTooltip]=\"textActionTooltipTemplate\"\n (mouseenter)=\"\n mouseEnterOnStringTextActionType(\n ROW_DATA,\n columnDef.headerInfo[subLineIndex].tooltipKey\n )\n \"\n [placement]=\"action?.tooltipPosition\"\n container=\"body\"\n [class]=\"action?.tooltipIconClass\"\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\n [disableTooltip]=\"action?.disableTooltip\"\n >\n </span>\n <span> {{ action?.dataToDisplayAfterTooltip }}</span>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"subline.objectKey != 'description'\">\n <span>{{\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\n }}</span>\n <i\n *ngIf=\"\n subline.objectKey == 'inventoryCode' &&\n ROW_DATA['isSellerGroup'] &&\n gtGeneralConfig.component == 'RATING'\n \"\n class=\"mi mdi-info-outline seller-tooltip\"\n [ngbTooltip]=\"sellerHierarchyTooltip\"\n placement=\"bottom auto\"\n container=\"body\"\n [autoClose]=\"true\"\n triggers=\"manual\"\n (hidden)=\"closeTooltip()\"\n #info=\"ngbTooltip\"\n tooltipClass=\"hierarchy-tooltip remove-on-scroll-class\"\n (mouseenter)=\"\n bindTheValueToSellerGroupTooltip(\n ROW_DATA.sellerGroupHierarchy,\n info\n )\n \"\n >\n </i>\n\n <i\n *ngIf=\"\n subline.objectKey == 'displayBookedAverageRating' &&\n gtGeneralConfig.component == 'RATING' &&\n ROW_DATA['showRatingAverageIcon']\n \"\n class=\"mi mdi-info-outline seller-tooltip\"\n placement=\"bottom auto\"\n container=\"body\"\n [autoClose]=\"true\"\n (mouseenter)=\"\n setIsDifference(ROW_DATA.isDifferenceLessThan25Percent)\n \"\n tooltipClass=\"posted-avg-tooltip remove-on-scroll-class\"\n [ngbTooltip]=\"postedRatingDifference\"\n >\n </i>\n\n <i\n *ngIf=\"\n subline.objectKey == 'displayBookedAverageImpression' &&\n gtGeneralConfig.component == 'RATING' &&\n ROW_DATA['showImpressionAverageIcon']\n \"\n class=\"mi mdi-info-outline seller-tooltip\"\n placement=\"bottom auto\"\n container=\"body\"\n [autoClose]=\"true\"\n (mouseenter)=\"\n setIsDifference(ROW_DATA.isDifferenceLessThan25Percent)\n \"\n tooltipClass=\"posted-avg-tooltip remove-on-scroll-class\"\n [ngbTooltip]=\"postedImpDifference\"\n >\n </i>\n </ng-container>\n <ng-container *ngIf=\"subline.objectKey == 'description'\">\n <p\n *ngIf=\"\n ROW_DATA.descriptionMessage ||\n ROW_DATA.descriptionEmailReferenceNum\n \"\n >\n <ng-container *ngIf=\"ROW_DATA.descriptionMessage\">\n {{ ROW_DATA.descriptionMessage }}\n <br />\n </ng-container>\n <ng-container\n *ngIf=\"\n ROW_DATA.descriptionEmailReferenceNum != '-' &&\n ROW_DATA.descriptionEmailReferenceNum != ''\n \"\n >\n Email Ref: {{ ROW_DATA.descriptionEmailReferenceNum }}\n <br />\n </ng-container>\n </p>\n <a\n href=\"{{ ROW_DATA.descriptionDetailsUrl }}\"\n target=\"_blank\"\n *ngIf=\"\n ROW_DATA.descriptionDetailsUrlType === 'PDF' ||\n ROW_DATA.descriptionDetailsUrlType === 'EXCEL'\n \"\n >\n <button class=\"btn viewDetailsAndEmailBtn\">Download</button>\n </a>\n <ng-container\n *ngIf=\"ROW_DATA.activityname.toLowerCase() == 'order onboarded'\"\n >\n <a\n *ngIf=\"ROW_DATA.descriptionDetailsUrlType === 'LINK'\"\n (click)=\"viewDetailsClicked(ROW_DATA)\"\n >\n <button class=\"btn viewDetailsAndEmailBtn order-onboarded\">\n View details\n </button>\n </a>\n </ng-container>\n\n <a\n href=\"{{ ROW_DATA.descriptionEmailUrl }}\"\n target=\"_blank\"\n *ngIf=\"\n ROW_DATA.descriptionEmailUrl != '-' &&\n ROW_DATA.descriptionEmailUrl != ''\n \"\n >\n <button class=\"btn viewDetailsAndEmailBtn\">View email</button>\n </a>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"isNoDataToDisplaySubject$ | async\">\n <div>\n {{ null }}\n </div>\n </ng-container>\n </ng-container>\n </td>\n </ng-container>\n </ng-container>\n </table>\n </div>\n <anna-core-no-data-lib\n [width]=\"noDataWidth\"\n [marginTop]=\"marginTop\"\n *ngIf=\"isNoDataToDisplaySubject$ | async\"\n >\n </anna-core-no-data-lib>\n</div>\n\n<!-- Checkbox template -->\n<ng-template #filterTooltip>\n <anna-core-anna-column-checkbox-filter\n [tableData]=\"tableData\"\n [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\n [isLurAndCsrComponent]=\"false\"\n [clonedTableData]=\"clonedTableData\"\n [filterTabObjects]=\"filterTabObjects\"\n (filterAppliedToTable)=\"filterApplied($event)\"\n (sortingAppliedToTable)=\"sortingApplied($event)\"\n (closeTooltip)=\"closeTooltip()\"\n >\n </anna-core-anna-column-checkbox-filter>\n</ng-template>\n\n<!-- Slider template -->\n<ng-template #sliderToolTip>\n <anna-core-anna-column-slider-filter\n [tableData]=\"tableData\"\n [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\n [isLurAndCsrComponent]=\"false\"\n [clonedTableData]=\"clonedTableData\"\n [filterTabObjects]=\"filterTabObjects\"\n (filterAppliedToTable)=\"filterApplied($event)\"\n (sortingAppliedToTable)=\"sortingApplied($event)\"\n (closeTooltip)=\"closeTooltip()\"\n >\n </anna-core-anna-column-slider-filter>\n</ng-template>\n\n<!-- Date Picker Template -->\n<ng-template #datePickerTooltip>\n <anna-core-anna-column-date-range-filter\n [tableData]=\"tableData\"\n [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\n [isLurAndCsrComponent]=\"false\"\n [clonedTableData]=\"clonedTableData\"\n [filterTabObjects]=\"filterTabObjects\"\n (filterAppliedToTable)=\"filterApplied($event)\"\n (sortingAppliedToTable)=\"sortingApplied($event)\"\n (closeTooltip)=\"closeTooltip()\"\n >\n </anna-core-anna-column-date-range-filter>\n</ng-template>\n\n<!-- Week Picker Template -->\n<ng-template #weekPickerToolTip>\n <!-- <div class=\"weekpicker-container\">\n <anna-core-week-calendar-filter-lib\n [week-calendar-config]=\"gtGeneralConfig.multiWeekPickerConfig\"\n (apply)=\"applyWeekFilter($event)\"\n [from-date]=\"calendarMinEnabledDate\"\n [to-date]=\"calendarMaxEnabledDate\"\n >\n </anna-core-week-calendar-filter-lib>\n </div> -->\n</ng-template>\n\n<!-- Time Filter Template -->\n<ng-template #timeFilterToolTip>\n <anna-core-anna-column-time-filter\n [tableData]=\"tableData\"\n [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\n [isLurAndCsrComponent]=\"false\"\n [showAllTimeRangeCheckboxes]=\"showCheckboxesForTimeFilter\"\n [clonedTableData]=\"clonedTableData\"\n [filterTabObjects]=\"filterTabObjects\"\n (filterAppliedToTable)=\"filterApplied($event)\"\n (sortingAppliedToTable)=\"sortingApplied($event)\"\n (closeTooltip)=\"closeTooltip()\"\n >\n </anna-core-anna-column-time-filter>\n</ng-template>\n\n<ng-template #columnInfoTooltip>\n <p style=\"color: black; white-space: nowrap\">This preemption is rejected and not marked for credit.</p>\n</ng-template>\n\n<ng-template #ratingInfoTooltip>\n <p class=\"first-row\">Shows 'Booked Rating' for Preemptions & MakeGood Offered spot(s).</p>\n <p class=\"second-row\">Shows 'Projected Rating' for ADU Offered spot(s).</p>\n</ng-template>\n\n<ng-template #impsInfoTooltip>\n <p class=\"first-row\">Shows 'Booked IMPS' for Preemptions & MakeGood Offered spot(s).</p>\n <p class=\"second-row\">Shows 'Projected IMPS' for ADU Offered spot(s).</p>\n</ng-template>\n\n<ng-template #spotsColumnEquivalizationMessageTooltip>\n <p class=\"spot-column-tooltip-message\">\n This consists of equivalized spots and un-equivalized Paid Programs & un-equivalized Non-spots.\n </p>\n</ng-template>\n\n<ng-template #underDeliveryTooltip>\n <p class=\"spot-column-tooltip-message\">\n Indicates the Under-delivery percentage based on booked and posted RTG/IMPS.\n </p>\n</ng-template>\n\n<ng-template #overDeliveryTooltip>\n <p class=\"spot-column-tooltip-message\">\n Indicates the Over-delivery percentage based on booked and posted RTG/IMPS.\n </p>\n</ng-template>\n\n<ng-template #rateInfoTooltip>\n <p class=\"first-row\">Shows 'Booked Rate' for Preemptions & MakeGood Offered spot(s).</p>\n <p class=\"second-row\">Shows 'Projected $ Value' for ADU Offered spot(s).</p>\n</ng-template>\n\n<ng-template #sellerHierarchyTooltip>\n <ng-container *ngIf=\"sellerGroupHierarchy.length > 0\">\n <section class=\"hierarchy-table-container\">\n <table class=\"seller-hierarchy-table\">\n <thead>\n <tr>\n <th>#</th>\n <th>Inventory Codes</th>\n <th>Program/Description</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let data of sellerGroupHierarchy; let tooltipIndex = index\">\n <td>{{ tooltipIndex + 1 }}</td>\n <td>\n <span showEllipsisTextOnHover>{{ data.InventoryCode }}</span>\n </td>\n <td>\n <span showEllipsisTextOnHover>{{ data.Program }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </section>\n </ng-container>\n <ng-container *ngIf=\"sellerGroupHierarchy.length == 0\">\n <span style=\"color: #000\">Seller group not available for this inventory code</span>\n </ng-container>\n</ng-template>\n\n<ng-template #lurViolationInfoTooltip>\n <p class=\"first-row\">The values are for the entire week.</p>\n</ng-template>\n\n<ng-template #postedRatingDifference>\n <p class=\"difference-text\">\n The difference between posted and booked average rating is\n {{ isDifferenceLessThan25Percent ? \"less\" : \"more\" }} than 25%.\n </p>\n</ng-template>\n\n<ng-template #postedImpDifference>\n <p class=\"difference-text\">\n The difference between posted and booked average impression is\n {{ isDifferenceLessThan25Percent ? \"less\" : \"more\" }} than 25%.\n </p>\n</ng-template>\n\n<ng-template #ongoingRevBookedColumnTooltip>\n <p>The Booked $ value, Spots, GRP, CPP, IMPS, CPM corresponds on the last permanent revision generated</p>\n</ng-template>\n\n<ng-template #completedRevBookedColumnTooltip>\n <p>The Booked $ value corresponds on the last permanent revision generated</p>\n</ng-template>\n\n<ng-template #avgBookedRate>\n <p>This is the booked average Rate</p>\n</ng-template>\n\n<ng-template #avgBookedRtg>\n <p>This is the booked average RTG</p>\n</ng-template>\n\n<ng-template #avgBookedImps>\n <p>This is the booked average IMP(’000)</p>\n</ng-template>\n\n<ng-template #projectedImpsRtg>\n <p>\n All projections are derived from the sum of actual posted information until the last posted date and estimates\n for the remaining selected period.\n </p>\n</ng-template>\n\n<ng-template #automationTooltip>\n <p>\n Please get the order business rules approved to activate the order for automation. Only for the\n automation-activated orders, any approved MGs, ADUs, or credited spots on ANNA will be fed into the traffic\n system i.e. ANNA revisions.\n <!-- removed below line as part of enhancmennt in 14.0 releas -->\n <!-- Additionally, ANNA will only enter buyer revisions into traffic for the selected\n Medialine/WOC orders. -->\n </p>\n</ng-template>\n\n<ng-template #rebateImpact>\n <p>Rebate impact value is for the originally ordered spot length and is not equivalized.</p>\n</ng-template>\n\n<ng-template #lurViolationTotalRowToolTip>\n <ul>\n <li>\n <strong>POLITICAL RATE VIOLATIONS:</strong>\n Violations flagged when non-political spots are booked at a rate lower than the minimum booked rate for\n political candidates for the same week, Inventory Code and Revenue Class.\n </li>\n <li>\n <strong>CANDIDATE TO CANDIDATE VIOLATION:</strong>\n Violations flagged when political spots are booked at different rates to other political spots for the same\n week, Inventory Code and Revenue Class.\n </li>\n </ul>\n</ng-template>\n\n<ng-template #circularProgressBar>\n <circle-progress\n [percent]=\"percentDone\"\n [radius]=\"5\"\n [showTitle]=\"false\"\n [showUnits]=\"false\"\n [showSubtitle]=\"false\"\n [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\"\n [space]=\"-3\"\n [outerStrokeColor]=\"'#268bff'\"\n [innerStrokeColor]=\"'#d5d5d5'\"\n [animationDuration]=\"10\"\n ></circle-progress>\n</ng-template>\n\n<ng-template #userLoggedInDetails>\n <div class=\"tooltip-div-container\">\n <ng-container *ngFor=\"let data of textActionTooltip\">\n <span *ngIf=\"data.key != 'read'\">\n {{ data.key }} <b> {{ data.value }}</b>\n </span>\n <span *ngIf=\"data.key == 'read'\">\n {{ data.value }}\n </span>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #markAsReadTip>\n <div class=\"notification-tooltip-div-container\">\n <ng-container *ngFor=\"let data of textActionTooltip\">\n {{ data.value }}\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #textActionTooltipTemplate>\n <ng-container *ngFor=\"let data of textActionTooltip\">\n {{ data.key }} <b> {{ data.value }}</b>\n </ng-container>\n</ng-template>\n\n<ng-template #tooltipContainingTableTemplate>\n <div\n *ngIf=\"tooltipContainingTable\"\n [innerHTML]=\"tooltipContainingTable.innerHtml\"\n class=\"notification-tooltip-div-container\"\n >\n <!-- <ul>\n <li *ngFor=\"let headerMsg of tooltipContainingTable.tableHeaderMsg\">\n <b> {{headerMsg}} </b>\n </li>\n </ul>\n\n <table class=\"tooltip-table\">\n <thead>\n <tr>\n <th *ngFor=\"let header of tooltipContainingTable.tooltipTableHeader\">\n {{ header}}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rows of tooltipContainingTable.tooltipTableBody\">\n <td *ngFor=\"let data of rows\">\n {{ data }}\n </td>\n </tr>\n </tbody>\n </table>\n\n <ul>\n <li style=\"margin-top:10px; padding:0\" *ngFor=\"let footerMsg of tooltipContainingTable.tableFooterMsg\">\n {{ footerMsg }} \n </li>\n </ul> -->\n </div>\n</ng-template>\n<!-- <ng-template #textActionTooltipTemplate>\n <ng-container *ngFor=\"let data of textActionTooltip\">\n {{ data.key }} <b> {{data.value}}</b>\n </ng-container>\n</ng-template> -->\n","// Angular import statements\nimport { Injectable } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n// Third party import statements\nimport { Subject } from 'rxjs';\nimport { cloneDeep } from 'lodash-es';\n\n//sub-entries of anna lib import statement\nimport { AnnaFilterService } from './anna-filter.service';\nimport { AnnaSortService } from './anna-sort.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AnnaGtHelperService {\n virtualScrollSubject = new Subject();\n constructor(\n private annaFilterService: AnnaFilterService,\n private router: Router,\n private route: ActivatedRoute,\n private annaSortService: AnnaSortService,\n ) {}\n\n calculateNumberOfSkeletonColumnsForTable(tableHeaders: any[]): number[][] {\n let numberOfSkeletonColumns: any[][] = [];\n var headersInEachColumn = 0;\n tableHeaders.forEach((column) => {\n if (column.visible) {\n headersInEachColumn = 0;\n column.headerInfo.forEach(() => {\n headersInEachColumn++;\n });\n numberOfSkeletonColumns.push(Array(headersInEachColumn).fill(0));\n }\n });\n return numberOfSkeletonColumns;\n }\n\n initColumnFilterAndSorting() {\n this.annaFilterService.tooltipSelectedMap = new Map();\n this.annaFilterService.selectedRadio = null;\n this.annaFilterService.appliedFiltersArray = [];\n this.annaFilterService.initialValueMap = new Map();\n this.annaSortService.columnSortState = new Map();\n this.annaSortService.noSortingAppliedData = [];\n }\n\n enableOrDisableClearAllBtn(): boolean {\n let isFilterApplied = this.annaFilterService.appliedFiltersArray.length > 0;\n let isSortApplied = this.isSortingAppliedToTable();\n\n return isFilterApplied || isSortApplied ? false : true;\n }\n\n updateFiltersInURL() {\n let latestQueryParams = this.prepareQueryParamsOnFilter();\n\n if (Object.keys(latestQueryParams).length > 0) {\n this.router.navigate([], {\n queryParams: { filters: JSON.stringify(latestQueryParams) },\n relativeTo: this.route.parent,\n queryParamsHandling: 'merge',\n });\n } else {\n this.router.navigate([], {\n relativeTo: this.route.parent,\n });\n }\n }\n\n prepareQueryParamsOnFilter() {\n let query: any = {};\n\n if (this.annaFilterService.appliedFiltersArray.length > 0) {\n query['appliedFilters'] = this.annaFilterService.appliedFiltersArray;\n query['selectedFilterData'] = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\n }\n\n if (this.checkIfSortingIsApplied()) {\n query['sortState'] = JSON.stringify(Array.from(this.annaSortService.columnSortState));\n }\n\n return query;\n }\n\n checkIfSortingIsApplied() {\n let isSortingApplied = false;\n for (let val of this.annaSortService.columnSortState.values()) {\n if (val == 'ASC' || val == 'DESC') {\n isSortingApplied = true;\n }\n }\n\n return isSortingApplied;\n }\n\n initTableFilters(clonedTableData: any) {\n this.annaFilterService.tooltipSelectedMap = new Map();\n this.annaFilterService.selectedRadio = null;\n this.annaFilterService.appliedFiltersArray = [];\n\n this.annaSortService.columnSortState = new Map();\n\n this.annaSortService.noSortingAppliedData = cloneDeep(clonedTableData);\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n }\n\n initFilters() {\n this.annaFilterService.tooltipSelectedMap = new Map();\n this.annaFilterService.appliedFiltersArray = [];\n }\n\n setDataAsPerPersistingFilter(isPersistingFilter: boolean, clonedTable: any, filters: any): any {\n let usersTable;\n if (isPersistingFilter) {\n usersTable = this.annaFilterService.filterData(clonedTable, '');\n this.annaSortService.noSortingAppliedData = cloneDeep(usersTable);\n } else {\n usersTable = clonedTable;\n this.annaSortService.noSortingAppliedData = cloneDeep(usersTable);\n }\n\n if (filters?.sortState) {\n this.annaSortService.columnSortState = new Map(JSON.parse(filters.sortState));\n usersTable = this.callSort(usersTable);\n }\n\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n\n return usersTable;\n }\n\n callSort(usersTable: any): any {\n for (let [key, value] of this.annaSortService.columnSortState) {\n if (value == 'ASC') {\n usersTable = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(true, usersTable, key);\n } else if (value == 'DESC') {\n usersTable = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(false, usersTable, key);\n }\n }\n return usersTable;\n }\n\n isSortingAppliedToTable() {\n let isSortingApplied = false;\n for (let val of this.annaSortService.columnSortState?.values()) {\n if (val == 'ASC' || val == 'DESC') {\n isSortingApplied = true;\n }\n }\n\n return isSortingApplied;\n }\n\n updateQueryParamsFilter(key: string, value: any, operation: 'ADD' | 'DELETE', queryParamObj: any) {\n if (operation == 'ADD') {\n queryParamObj[key] = value;\n } else if (operation == 'DELETE') {\n delete queryParamObj[key];\n }\n return queryParamObj;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ListRange } from '@angular/cdk/collections';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { animationFrameScheduler, asapScheduler, Observable, Subject, Observer, Subscription } from 'rxjs';\nimport { auditTime, startWith, takeUntil } from 'rxjs/operators';\nimport {\n CdkVirtualScrollViewport,\n CdkScrollable,\n CdkVirtualScrollRepeater,\n VIRTUAL_SCROLL_STRATEGY,\n VirtualScrollStrategy,\n ScrollDispatcher,\n ViewportRuler,\n ExtendedScrollToOptions,\n} from '@angular/cdk/scrolling';\nimport { AnnaGtHelperService } from '../../../anna-core-shared-lib/services/anna-generic-table.service';\n\n/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1: ListRange, r2: ListRange): boolean {\n return r1.start == r2.start && r1.end == r2.end;\n}\n\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n\n/**\n * A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`.\n * Uses `top: #px` instead of `transform: translateY(#px)` like the cdk virtual scroll viewport does\n * which avoids flickering of elements in the transformed container with `position: sticky`.\n */\n@Component({\n selector: 'anna-table-virtual-scroll-viewport',\n templateUrl: 'anna-table-virtual-scroll-viewport.component.html',\n styleUrls: ['anna-table-virtual-scroll-viewport.component.scss'],\n host: {\n class: 'anna-table-virtual-scroll-viewport',\n '[class.anna-table-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n '[class.anna-table-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: CdkScrollable,\n useExisting: AnnaTableVirtualScrollViewportComponent,\n },\n {\n provide: CdkVirtualScrollViewport,\n useExisting: AnnaTableVirtualScrollViewportComponent,\n },\n ],\n standalone: true,\n})\nexport class AnnaTableVirtualScrollViewportComponent extends CdkScrollable implements OnInit, OnDestroy {\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\n private _detachedSubject = new Subject<void>();\n\n /** Emits when the rendered range changes. */\n private _renderedRangeSubject = new Subject<ListRange>();\n\n /** The direction the viewport scrolls. */\n @Input()\n get orientation() {\n return this._orientation;\n }\n set orientation(orientation: 'horizontal' | 'vertical') {\n if (this._orientation !== orientation) {\n this._orientation = orientation;\n this._calculateSpacerSize();\n }\n }\n private _orientation: 'horizontal' | 'vertical' = 'vertical';\n\n // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n // depending on how the strategy calculates the scrolled index, it may come at a cost to\n // performance.\n /** Emits when the index of the first element visible in the viewport changes. */\n @Output() scrolledIndexChange: Observable<number> = new Observable((observer: Observer<number>) =>\n this._scrollStrategy.scrolledIndexChange.subscribe((index) =>\n Promise.resolve().then(() => this.ngZone.run(() => observer.next(index))),\n ),\n );\n\n /** The element that wraps the rendered content. */\n @ViewChild('contentWrapper', { static: true }) _contentWrapper: ElementRef<HTMLElement>;\n\n /** A stream that emits whenever the rendered range changes. */\n renderedRangeStream: Observable<ListRange> = this._renderedRangeSubject;\n\n /**\n * The total size of all content (in pixels), including content that is not currently rendered.\n */\n private _totalContentSize = 0;\n\n /** A string representing the `style.width` property value to be used for the spacer element. */\n _totalContentWidth = '';\n\n /** A string representing the `style.height` property value to be used for the spacer element. */\n _totalContentHeight = '';\n\n /**\n * The CSS transform applied to the rendered subset of items so that they appear within the bounds\n * of the visible viewport.\n */\n private _renderedContentTransform: string;\n\n /** The currently rendered range of indices. */\n private _renderedRange: ListRange = { start: 0, end: 0 };\n\n /** The length of the data bound to this viewport (in number of items). */\n private _dataLength = 0;\n\n /** The size of the viewport (in pixels). */\n private _viewportSize = 0;\n\n /** the currently attached CdkVirtualScrollRepeater. */\n private _forOf: CdkVirtualScrollRepeater<any> | null;\n\n /** The last rendered content offset that was set. */\n private _renderedContentOffset = 0;\n\n /**\n * Whether the last rendered content offset was to the end of the content (and therefore needs to\n * be rewritten as an offset to the start of the content).\n */\n private _renderedContentOffsetNeedsRewrite = false;\n\n /** Whether there is a pending change detection cycle. */\n private _isChangeDetectionPending = false;\n\n /** A list of functions to run after the next change detection cycle. */\n private _runAfterChangeDetection: Function[] = [];\n\n /** Subscription to changes in the viewport size. */\n private _viewportChanges = Subscription.EMPTY;\n\n constructor(\n public override elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n ngZone: NgZone,\n @Optional()\n @Inject(VIRTUAL_SCROLL_STRATEGY)\n private _scrollStrategy: VirtualScrollStrategy,\n @Optional() dir: Directionality,\n scrollDispatcher: ScrollDispatcher,\n viewportRuler: ViewportRuler,\n private annaGtService: AnnaGtHelperService,\n ) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n\n if (!_scrollStrategy) {\n throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n }\n\n this._viewportChanges = viewportRuler.change().subscribe(() => {\n this.checkViewportSize();\n });\n }\n\n override ngOnInit() {\n super.ngOnInit();\n\n // It's still too early to measure the viewport at this point. Deferring with a promise allows\n // the Viewport to be rendered with the correct size before we measure. We run this outside the\n // zone to avoid causing more change detection cycles. We handle the change detection loop\n // ourselves instead.\n this.ngZone.runOutsideAngular(() =>\n Promise.resolve().then(() => {\n this._measureViewportSize();\n this._scrollStrategy.attach(this as any);\n\n this.elementScrolled()\n .pipe(\n // Start off with a fake scroll event so we properly detect our initial position.\n startWith(null),\n // Collect multiple events into one until the next animation frame. This way if\n // there are multiple scroll events in the same frame we only need to recheck\n // our layout once.\n auditTime(0, SCROLL_SCHEDULER),\n )\n .subscribe(() => {\n this._scrollStrategy.onContentScrolled();\n this.annaGtService.virtualScrollSubject.next(true);\n });\n\n this._markChangeDetectionNeeded();\n }),\n );\n }\n\n override ngOnDestroy() {\n this.detach();\n this._scrollStrategy.detach();\n\n // Complete all subjects\n this._renderedRangeSubject.complete();\n this._detachedSubject.complete();\n this._viewportChanges.unsubscribe();\n\n super.ngOnDestroy();\n }\n\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n attach(forOf: CdkVirtualScrollRepeater<any>) {\n if (this._forOf) {\n throw Error('CdkVirtualScrollViewport is already attached.');\n }\n\n // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n // change detection loop ourselves.\n this.ngZone.runOutsideAngular(() => {\n this._forOf = forOf;\n this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe((data) => {\n const newLength = data.length;\n if (newLength !== this._dataLength) {\n this._dataLength = newLength;\n this._scrollStrategy.onDataLengthChanged();\n }\n this._doChangeDetection();\n });\n });\n }\n\n /** Detaches the current `CdkVirtualForOf`. */\n detach() {\n this._forOf = null;\n this._detachedSubject.next();\n }\n\n /** Gets the length of the data bound to this viewport (in number of items). */\n getDataLength(): number {\n return this._dataLength;\n }\n\n /** Gets the size of the viewport (in pixels). */\n getViewportSize(): number {\n return this._viewportSize;\n }\n\n // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n // setting it to something else, but its error prone and should probably be split into\n // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n\n /** Get the current rendered range of items. */\n getRenderedRange(): ListRange {\n return this._renderedRange;\n }\n\n /**\n * Sets the total size of all content (in pixels), including content that is not currently\n * rendered.\n */\n setTotalContentSize(size: number) {\n if (this._totalContentSize !== size) {\n this._totalContentSize = size;\n this._calculateSpacerSize();\n this._markChangeDetectionNeeded();\n }\n }\n\n /** Sets the currently rendered range of indices. */\n setRenderedRange(range: ListRange) {\n if (!rangesEqual(this._renderedRange, range)) {\n this._renderedRangeSubject.next((this._renderedRange = range));\n this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n }\n }\n\n /**\n * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n */\n getOffsetToRenderedContentStart(): number | null {\n return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n }\n\n /**\n * Sets the offset from the start of the viewport to either the start or end of the rendered data\n * (in pixels).\n */\n setRenderedContentOffset(offset: number) {\n let top = `${Number(offset)}px`;\n this._renderedContentOffset = offset;\n if (this._renderedContentTransform != top) {\n // We know this value is safe because we parse `offset` with `Number()` before passing it\n // into the string.\n this._renderedContentTransform = top;\n this._markChangeDetectionNeeded(() => {\n if (this._renderedContentOffsetNeedsRewrite) {\n this._renderedContentOffset -= this.measureRenderedContentSize();\n this._renderedContentOffsetNeedsRewrite = false;\n this.setRenderedContentOffset(this._renderedContentOffset);\n } else {\n this._scrollStrategy.onRenderedOffsetChanged();\n }\n });\n }\n }\n\n /**\n * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n * @param offset The offset to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToOffset(offset: number, behavior: ScrollBehavior = 'auto') {\n const options: ExtendedScrollToOptions = { behavior, top: offset };\n this.scrollTo(options);\n }\n\n /**\n * Scrolls to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToIndex(index: number, behavior: ScrollBehavior = 'auto') {\n this._scrollStrategy.scrollToIndex(index, behavior);\n }\n\n /**\n * Gets the current scroll offset from the start of the viewport (in pixels).\n * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n * in horizontal mode.\n */\n // CHANGES@ANNALIB added override to functions\n override measureScrollOffset(from?: 'top' | 'left' | 'right' | 'bottom' | 'start' | 'end'): number {\n return from ? super.measureScrollOffset(from) : super.measureScrollOffset('top');\n }\n\n /** Measure the combined size of all of the rendered items. */\n measureRenderedContentSize(): number {\n const contentEl = this._contentWrapper.nativeElement;\n return contentEl.offsetHeight;\n }\n\n /**\n * Measure the total combined size of the given range. Throws if the range includes items that are\n * not rendered.\n */\n measureRangeSize(range: ListRange): number {\n if (!this._forOf) {\n return 0;\n }\n return this._forOf.measureRangeSize(range, this.orientation);\n }\n\n /** Update the viewport dimensions and re-render. */\n checkViewportSize() {\n // TODO: Cleanup later when add logic for handling content resize\n this._measureViewportSize();\n this._scrollStrategy.onDataLengthChanged();\n }\n\n /** Measure the viewport size. */\n private _measureViewportSize() {\n const viewportEl = this.elementRef.nativeElement;\n this._viewportSize = viewportEl.clientHeight;\n }\n\n /** Queue up change detection to run. */\n private _markChangeDetectionNeeded(runAfter?: Function) {\n if (runAfter) {\n this._runAfterChangeDetection.push(runAfter);\n }\n\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\n if (!this._isChangeDetectionPending) {\n this._isChangeDetectionPending = true;\n this.ngZone.runOutsideAngular(() =>\n Promise.resolve().then(() => {\n this._doChangeDetection();\n }),\n );\n }\n }\n\n /** Run change detection. */\n private _doChangeDetection() {\n this._isChangeDetectionPending = false;\n\n // Apply the content transform. The transform can't be set via an Angular binding because\n // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n // the `Number` function first to coerce it to a numeric value.\n this._contentWrapper.nativeElement.style.top = this._renderedContentTransform;\n // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n // from the root, since the repeated items are content projected in. Calling `detectChanges`\n // instead does not properly check the projected content.\n this.ngZone.run(() => this._changeDetectorRef.markForCheck());\n\n const runAfterChangeDetection = this._runAfterChangeDetection;\n this._runAfterChangeDetection = [];\n for (const fn of runAfterChangeDetection) {\n fn();\n }\n }\n\n /** Calculates the `style.width` and `style.height` for the spacer element. */\n private _calculateSpacerSize() {\n this._totalContentHeight = `${this._totalContentSize}px`;\n this._totalContentWidth = '';\n }\n}\n","<!--\n Wrap the rendered content in an element that will be used to offset it based on the scroll\n position.\n-->\n<div\n #contentWrapper\n class=\"anna-table-virtual-scroll-content-wrapper\"\n>\n <ng-content></ng-content>\n</div>\n<!--\n Spacer used to force the scrolling container to the correct size for the *total* number of items\n so that the scrollbar captures the size of the entire data set.\n-->\n<div\n class=\"app-table-virtual-scroll-spacer\"\n [style.width]=\"_totalContentWidth\"\n [style.height]=\"_totalContentHeight\"\n></div>\n","import { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { CdkVirtualScrollViewport, VirtualScrollStrategy, VIRTUAL_SCROLL_STRATEGY } from '@angular/cdk/scrolling';\nimport {\n AfterContentInit,\n ContentChildren,\n Directive,\n forwardRef,\n Input,\n QueryList,\n SimpleChanges,\n} from '@angular/core';\nimport { MatHeaderRowDef } from '@angular/material/table';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { AnnaFilterService } from '../../../anna-core-shared-lib/services/anna-filter.service';\n\n/**\n * A custom scroll strategy that accepts a static row height, static header height,\n * and a buffer size. The strategy\n */\nexport class AnnaFixedRowSizeTableVirtualScrollStrategy implements VirtualScrollStrategy {\n viewport: CdkVirtualScrollViewport | null;\n\n private buffer: number;\n\n private headerHeight: number;\n\n private rowHeight: number;\n\n constructor(rowHeight: number, buffer: number, headerHeight: number) {\n this.updateRowHeightAndBuffer(rowHeight, buffer, headerHeight);\n }\n\n private _scrolledIndexChange = new Subject<number>();\n\n scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport: CdkVirtualScrollViewport): void {\n this.viewport = viewport;\n this.updateTotalContentSize();\n this.updateRenderedRange();\n }\n\n /**\n * Detaches this scroll strategy from the currently attached viewport.\n */\n detach(): void {\n this._scrolledIndexChange.complete();\n this.viewport = null;\n }\n\n onContentScrolled(): void {\n this.updateRenderedRange();\n }\n\n onDataLengthChanged(): void {\n this.updateTotalContentSize();\n this.updateRenderedRange();\n }\n\n onContentRendered(): void {\n // This method is useful for virtual scroll strategies that measure the rendered\n // content to determine its height. This scroll strategy assumes that rows have\n // a static height, so there's no need to implement this method.\n }\n\n onRenderedOffsetChanged(): void {\n // Similar to onContentRendered, this method is useful for virtual scroll strategies\n // that need to track the offset as it changes. This scroll strategy is always able\n // to calculate the correct offset from other values, so there's no need to implement\n // this method.\n }\n\n scrollToIndex(index: number, behavior: ScrollBehavior): void {\n this.viewport?.scrollToOffset(index * this.rowHeight, behavior);\n }\n\n /**\n * Update the item size and buffer size.\n * @param rowHeight The height of a row in the virtually scrolling table.\n * @param buffer The number of rows to buffer outside the viewport.\n * @param headerHeight The total height of the table header, including all header rows.\n */\n updateRowHeightAndBuffer(rowHeight: number, buffer: number, headerHeight: number) {\n this.rowHeight = rowHeight;\n this.buffer = buffer;\n this.headerHeight = headerHeight;\n this.updateTotalContentSize();\n this.updateRenderedRange();\n }\n\n protected updateRenderedRange() {\n if (!this.viewport) {\n return;\n }\n\n const viewportSize = this.viewport.getViewportSize();\n const dataLength = this.viewport.getDataLength();\n const scrollOffset = this.viewport.measureScrollOffset();\n\n // the index of the first item that would be at least partially visible in the viewport\n let firstVisibleIndex = Math.floor((scrollOffset + this.headerHeight) / this.rowHeight);\n\n // if the buffer size is 10 but the first visible item is at, say, index 7\n // then the buffered items must be 7, because we don't have 10 items available to buffer.\n const bufferedItems = Math.min(AnnaFilterService.bufferSize, firstVisibleIndex);\n\n const itemsInViewport = Math.ceil(viewportSize / this.rowHeight);\n const itemsToRender = itemsInViewport + this.buffer;\n\n // Clamp the new range between 0 and dataLength\n const newStart = Math.max(0, firstVisibleIndex - bufferedItems);\n const newEnd = Math.min(dataLength, firstVisibleIndex + itemsToRender);\n\n const newRange = {\n start: newStart,\n end: newEnd,\n };\n\n const newOffset = this.rowHeight * (firstVisibleIndex - bufferedItems);\n this.viewport.setRenderedContentOffset(newOffset);\n this.viewport.setRenderedRange(newRange);\n this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n }\n\n protected updateTotalContentSize() {\n this.viewport?.setTotalContentSize(this.viewport.getDataLength() * this.rowHeight);\n }\n}\n\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n * `FixedSizeVirtualScrollStrategy` from.\n */\nexport function fixedSizeVirtualScrollStrategyFactory(\n fixedSizeDir: AnnaFixedRowSizeTableVirtualScrollStrategyDirective,\n) {\n return fixedSizeDir.scrollStrategy;\n}\n\n@Directive({\n selector: 'cdk-virtual-scroll-viewport[rowHeight], anna-table-virtual-scroll-viewport[rowHeight]',\n providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => AnnaFixedRowSizeTableVirtualScrollStrategyDirective)],\n },\n ],\n standalone: true,\n})\nexport class AnnaFixedRowSizeTableVirtualScrollStrategyDirective implements AfterContentInit {\n /** The height of rows in the table (in pixels). Defaults to 30. */\n @Input()\n set rowHeight(value: number) {\n this._rowHeight = coerceNumberProperty(value);\n }\n get rowHeight(): number {\n return this._rowHeight;\n }\n private _rowHeight = 30;\n\n /**\n * The height of header rows in the table (in pixels). Defaults to 30.\n */\n @Input()\n set headerRowHeight(value: number) {\n this._headerRowHeight = coerceNumberProperty(value);\n }\n get headerRowHeight(): number {\n return this._headerRowHeight;\n }\n private _headerRowHeight: number = 30;\n\n /**\n * The number of buffered rows rendered beyond the viewport.\n * If the number of buffered rows dips below this number, more rows will be rendered. Defaults to 20.\n */\n @Input()\n set buffer(value: number) {\n this._buffer = coerceNumberProperty(value);\n }\n get buffer(): number {\n return this._buffer;\n }\n private _buffer = 20;\n\n @Input()\n set headerRows(value: number | null | undefined) {\n this._headerRows = coerceNumberProperty(value, undefined);\n }\n get headerRows(): number | null | undefined {\n return this._headerRows;\n }\n private _headerRows: number | null | undefined = null;\n\n /**\n * Using ContentChildren here fails to pick up row defs that are added programmatically,\n * but we don't really have a way of handling that without accessing private methods of\n * the CdkTable. Adding header row defs programmatically is uncommon, so ContentChildren\n * is usually sufficient. The explicit `headerRows` input above allows the number of rows\n * to be set by the developer to override the QueryList-driven behavior.\n */\n @ContentChildren(MatHeaderRowDef) headerRowsQuery: QueryList<MatHeaderRowDef>;\n\n private headerRowCount: number = 1;\n\n /** The scroll strategy used by this directive. */\n scrollStrategy = new AnnaFixedRowSizeTableVirtualScrollStrategy(\n this.rowHeight,\n this.buffer,\n this.headerRowHeight * this.headerRowCount,\n );\n\n ngOnChanges(change: SimpleChanges) {\n if (this.headerRows != undefined || this.headerRowsQuery) {\n this.handleChange();\n }\n if (change['buffer']?.previousValue != change['buffer']?.currentValue) {\n AnnaFilterService.bufferSize = this.buffer;\n this.scrollStrategy = new AnnaFixedRowSizeTableVirtualScrollStrategy(\n this.rowHeight,\n this.buffer,\n this.headerRowHeight * this.headerRowCount,\n );\n }\n }\n\n ngAfterContentInit(): void {\n this.headerRowsQuery.changes.subscribe(() => {\n this.handleChange();\n });\n }\n\n private handleChange(): void {\n this.scrollStrategy.updateRowHeightAndBuffer(\n this.rowHeight,\n this.buffer,\n // Use the explicit headerRows input value if set.\n // Otherwise, fall back to the QueryList length.\n this.headerRowHeight * (this._headerRows ?? this.headerRowsQuery.length),\n );\n }\n\n static ngAcceptInputType_rowHeight: NumberInput;\n static ngAcceptInputType_buffer: NumberInput;\n static ngAcceptInputType_headerRowHeight: NumberInput;\n}\n","import { ArrayDataSource, CollectionViewer, isDataSource, ListRange } from '@angular/cdk/collections';\nimport { CdkVirtualScrollRepeater, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {\n CdkHeaderRowDef,\n CdkTable,\n DataSource,\n STICKY_POSITIONING_LISTENER,\n _CoalescedStyleScheduler,\n _COALESCED_STYLE_SCHEDULER,\n} from '@angular/cdk/table';\nimport { ContentChildren, Directive, ElementRef, Inject, Input, NgIterable, NgZone, QueryList } from '@angular/core';\nimport { isObservable, Observable, of, Subject } from 'rxjs';\nimport { map, pairwise, shareReplay, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { AnnaTableVirtualScrollViewportComponent } from '../../components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component';\n\n/**\n * Directive that wraps a given data source in a \"virtual\" data source that emits\n * the slice of the original data source that matches the range that should be rendered\n * in the containing virtual scroll viewport.\n */\n@Directive({\n selector: '[mat-table][appVirtualDataSource], mat-table[appVirtualDataSource]',\n providers: [{ provide: STICKY_POSITIONING_LISTENER, useExisting: AnnaVirtualTableDirective }],\n standalone: true,\n})\nexport class AnnaVirtualTableDirective<T> implements CdkVirtualScrollRepeater<T>, CollectionViewer {\n @Input('appVirtualDataSource')\n set dataSource(value: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined) {\n this._dataSource = value;\n if (isDataSource(value)) {\n this.dataSourceChanges.next(value);\n } else {\n this.dataSourceChanges.next(new ArrayDataSource<T>(isObservable(value) ? value : Array.from(value || [])));\n }\n }\n get dataSource(): DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined {\n return this._dataSource;\n }\n private _dataSource: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined;\n\n @ContentChildren(CdkHeaderRowDef) headerRowDefs: QueryList<CdkHeaderRowDef>;\n\n private virtualizedDataStream = new Subject<T[] | ReadonlyArray<T>>();\n\n private dataSourceChanges = new Subject<DataSource<T>>();\n\n /** The raw, unvirtualized data stream. Emits whenever the data in the current DataSource changes. */\n dataStream: Observable<T[] | ReadonlyArray<T>> = this.dataSourceChanges.pipe(\n // Start off with null data source.\n startWith(null),\n // Bundle up the previous and current data sources so we can work with both.\n pairwise(),\n // Use `changeDataSource` to disconnect from the previous data source and connect to the\n // new one, passing back a stream of data changes which we run through `switchMap` to give\n // us a data stream that emits the latest data from whatever the current data source is.\n switchMap(([prev, cur]) => this.changeDataSource(prev, cur)),\n // Replay the last emitted data when someone subscribes.\n shareReplay(1),\n );\n\n viewChange = new Subject<ListRange>();\n\n private data: T[] | readonly T[];\n\n private destroyed$ = new Subject<void>();\n\n private renderedItems: T[] | ReadonlyArray<T>;\n\n private renderedRange: ListRange = { start: 0, end: 0 };\n\n private isNativeHtmlTable: boolean = false;\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private viewport: CdkVirtualScrollViewport,\n private table: CdkTable<T>,\n ngZone: NgZone,\n @Inject(_COALESCED_STYLE_SCHEDULER) private _coalescedStyleScheduler: _CoalescedStyleScheduler,\n ) {\n table.dataSource = this.virtualizedDataStream;\n this.isNativeHtmlTable = elementRef.nativeElement.tagName === 'TABLE';\n this.dataStream.subscribe((data) => {\n this.data = data;\n this.onRenderedDataChange();\n });\n viewport.renderedRangeStream.pipe(takeUntil(this.destroyed$)).subscribe((range: ListRange) => {\n this.renderedRange = range;\n ngZone.run(() => this.viewChange.next(range));\n this.onRenderedDataChange();\n });\n viewport.attach(this);\n }\n\n ngOnInit(): void {\n // This is just a proof of concept, but the AnnaTableVirtualScrollViewportComponent uses `position: absolute` and `top: #px` instead of `transform: translateY(#px)` to position the viewport.\n // This removes the need to account for the translation in the `top` of the sticky header rows.\n if (this.viewport instanceof AnnaTableVirtualScrollViewportComponent) {\n return;\n }\n\n this.viewport.scrolledIndexChange\n .pipe(\n map(() => this.viewport.getOffsetToRenderedContentStart()),\n takeUntil(this.destroyed$),\n )\n .subscribe((offset) => {\n // We need to set the `style.top` property of the sticky header rows\n // to the negative value of the virtual scroll viewport's offset, so\n // make the offset negative.\n offset = -offset;\n\n const stickyStates: boolean[] = this.headerRowDefs.map((rowDef) => rowDef.sticky);\n\n // This logic is exactly the same as what's in the StickyStyler (literally copy + paste).\n // The only difference is that the `stickyOffset` variable starts at the virtual scroll\n // viewport container's offset instead of starting at zero.\n const rows = this.table._getRenderedRows(this.table._headerRowOutlet);\n const stickyOffsets: number[] = [];\n const stickyCellHeights: (number | undefined)[] = [];\n const elementsToStick: HTMLElement[][] = [];\n for (let rowIndex = 0, stickyOffset = offset; rowIndex < rows.length; rowIndex++) {\n stickyOffsets[rowIndex] = stickyOffset;\n\n if (!stickyStates[rowIndex]) {\n continue;\n }\n\n const row = rows[rowIndex];\n elementsToStick[rowIndex] = this.isNativeHtmlTable\n ? (Array.from(row.children) as HTMLElement[])\n : [row];\n\n const height = row.getBoundingClientRect().height;\n stickyOffset += height;\n stickyCellHeights[rowIndex] = height;\n }\n\n // Using the CoalescedStyleScheduler here is optional. It'll work without it,\n // and CoalescedStyleScheduler is not public (yet?), so feel free to remove it.\n this._coalescedStyleScheduler.schedule(() => {\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n if (!stickyStates[rowIndex]) {\n continue;\n }\n\n for (const element of elementsToStick[rowIndex]) {\n element.style.top = `${stickyOffsets[rowIndex]}px`;\n }\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.dataSourceChanges.complete();\n this.virtualizedDataStream.complete();\n }\n\n /** React to scroll state changes in the viewport. */\n private onRenderedDataChange() {\n if (!this.renderedRange) {\n return;\n }\n this.renderedItems = this.data.slice(this.renderedRange.start, this.renderedRange.end + 1);\n // delegate rendering to the table by emitting from the virtualizedDataStream\n this.virtualizedDataStream.next(this.renderedItems);\n }\n\n /** Swap out one data source for another. */\n private changeDataSource(\n oldDataSource: DataSource<T> | null,\n newDs: DataSource<T> | null,\n ): Observable<T[] | ReadonlyArray<T>> {\n oldDataSource?.disconnect(this);\n return newDs ? newDs.connect(this) : of();\n }\n\n /**\n * This method is only used by the experimental AutoSizeVirtualScrollStrategy.\n * We're not using that strategy, but I've implemented it just to show how it oculd be done.\n * I'm not actually sure if this works.\n */\n measureRangeSize(range: ListRange, orientation: 'horizontal' | 'vertical'): number {\n if (orientation === 'horizontal' || range.end < range.start) {\n // virtual scrolling columns are not supported by this directive\n return 0;\n }\n\n const renderedBodyRows = this.table._getRenderedRows(this.table._rowOutlet);\n\n const firstRow: HTMLElement | undefined = renderedBodyRows[range.start];\n const lastRow: HTMLElement | undefined = renderedBodyRows[range.end];\n\n if (!firstRow || !lastRow) {\n return 0;\n }\n\n // We need to include all header and footer rows in the sum, since they're always rendered\n const renderedHeaderRows = this.table._getRenderedRows(this.table._headerRowOutlet);\n const renderedFooterRows = this.table._getRenderedRows(this.table._footerRowOutlet);\n\n // TODO (performance): Can we just measure the offset of the first and last items and do some math to avoid having to measure each row individually?\n const headerHeight = renderedHeaderRows.reduce((sum: number, row: HTMLElement) => {\n return (sum += row.getBoundingClientRect().height);\n }, 0);\n const footerHeight = renderedFooterRows.reduce((sum: number, row: HTMLElement) => {\n return (sum += row.getBoundingClientRect().height);\n }, 0);\n\n const bodyHeight = lastRow.getBoundingClientRect().bottom - firstRow.getBoundingClientRect().top;\n\n return headerHeight + footerHeight + bodyHeight;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'AnnatypeofData',\n standalone: true,\n})\nexport class AnnaTypeofDataPipe implements PipeTransform {\n transform(value: any): any {\n return typeof value;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { memoize } from 'lodash-es';\n\n@Pipe({\n name: 'annaReplaceChar',\n standalone: true,\n})\nexport class AnnaReplaceCharPipe implements PipeTransform {\n converter = memoize(this.replace, (...args) => this.replace(args[0], args[1], args[2]));\n\n transform(value: string, charToBeReplaced: string, replaceBy: string): string {\n if (value !== undefined || value != null) {\n return this.converter(value, charToBeReplaced, replaceBy);\n }\n }\n\n replace(value: string, from: string, to: string): string {\n return value.replace(new RegExp(from, 'g'), to);\n }\n}\n","import { Directive, ElementRef, HostListener, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n@Directive({\n selector: '[digitOnly]',\n standalone: true,\n})\nexport class DigitOnlyDirective implements OnChanges {\n private hasDecimalPoint = false;\n private hasNegativeSign = false;\n private navigationKeys = [\n 'Backspace',\n 'Delete',\n 'Tab',\n 'Escape',\n 'Enter',\n 'Home',\n 'End',\n 'ArrowLeft',\n 'ArrowRight',\n 'Clear',\n 'Copy',\n 'Paste',\n ];\n\n @Input() decimal = false;\n @Input() decimalSeparator = '.';\n @Input() allowNegatives = false;\n @Input() allowPaste = true;\n @Input() negativeSign = '-';\n @Input() min = -Infinity;\n @Input() max = Infinity;\n @Input() pattern?: string | RegExp;\n private regex: RegExp | null = null;\n inputElement: HTMLInputElement;\n\n constructor(public el: ElementRef) {\n this.inputElement = el.nativeElement;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['pattern']) {\n this.regex = this.pattern ? RegExp(this.pattern) : null;\n }\n\n if (changes['min']) {\n const maybeMin = Number(this.min);\n this.min = isNaN(maybeMin) ? -Infinity : maybeMin;\n }\n\n if (changes['max']) {\n const maybeMax = Number(this.max);\n this.max = isNaN(maybeMax) ? Infinity : maybeMax;\n }\n }\n\n @HostListener('beforeinput', ['$event'])\n onBeforeInput(e: InputEvent): any {\n if (isNaN(Number(e.data))) {\n if (e.data === this.decimalSeparator || (e.data === this.negativeSign && this.allowNegatives)) {\n return; // go on\n }\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(e: KeyboardEvent): any {\n if (\n this.navigationKeys.indexOf(e.key) > -1 || // Allow: navigation keys: backspace, delete, arrows etc.\n ((e.key === 'a' || e.code === 'KeyA') && e.ctrlKey === true) || // Allow: Ctrl+A\n ((e.key === 'c' || e.code === 'KeyC') && e.ctrlKey === true) || // Allow: Ctrl+C\n ((e.key === 'v' || e.code === 'KeyV') && e.ctrlKey === true) || // Allow: Ctrl+V\n ((e.key === 'x' || e.code === 'KeyX') && e.ctrlKey === true) || // Allow: Ctrl+X\n ((e.key === 'a' || e.code === 'KeyA') && e.metaKey === true) || // Allow: Cmd+A (Mac)\n ((e.key === 'c' || e.code === 'KeyC') && e.metaKey === true) || // Allow: Cmd+C (Mac)\n ((e.key === 'v' || e.code === 'KeyV') && e.metaKey === true) || // Allow: Cmd+V (Mac)\n ((e.key === 'x' || e.code === 'KeyX') && e.metaKey === true) // Allow: Cmd+X (Mac)\n ) {\n // let it happen, don't do anything\n return;\n }\n\n let newValue = '';\n\n if (this.decimal && e.key === this.decimalSeparator) {\n newValue = this.forecastValue(e.key);\n if (newValue.split(this.decimalSeparator).length > 2) {\n // has two or more decimal points\n e.preventDefault();\n return;\n } else {\n this.hasDecimalPoint = newValue.indexOf(this.decimalSeparator) > -1;\n return; // Allow: only one decimal point\n }\n }\n\n if (e.key === this.negativeSign && this.allowNegatives) {\n newValue = this.forecastValue(e.key);\n if (newValue.charAt(0) !== this.negativeSign || newValue.split(this.negativeSign).length > 2) {\n e.preventDefault();\n return;\n } else {\n this.hasNegativeSign = newValue.split(this.negativeSign).length > -1;\n return;\n }\n }\n\n // Ensure that it is a number and stop the keypress\n if (e.key === ' ' || isNaN(Number(e.key))) {\n e.preventDefault();\n return;\n }\n\n newValue = newValue || this.forecastValue(e.key);\n // check the input pattern RegExp\n if (this.regex) {\n if (!this.regex.test(newValue)) {\n e.preventDefault();\n return;\n }\n }\n\n const newNumber = Number(newValue);\n if (newNumber > this.max || newNumber < this.min) {\n e.preventDefault();\n }\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: any): void {\n if (this.allowPaste === true) {\n let pastedInput: string = '';\n if ((window as { [key: string]: any })['clipboardData']) {\n // Browser is IE\n pastedInput = (window as { [key: string]: any })['clipboardData'].getData('text');\n } else if (event.clipboardData && event.clipboardData.getData) {\n // Other browsers\n pastedInput = event.clipboardData.getData('text/plain');\n }\n\n this.pasteData(pastedInput);\n event.preventDefault();\n } else {\n // this prevents the paste\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n @HostListener('drop', ['$event'])\n onDrop(event: DragEvent): void {\n const textData = event.dataTransfer?.getData('text') ?? '';\n this.inputElement.focus();\n this.pasteData(textData);\n event.preventDefault();\n }\n\n private pasteData(pastedContent: string): void {\n const sanitizedContent = this.sanitizeInput(pastedContent);\n if (\n sanitizedContent.includes(this.negativeSign) &&\n this.hasNegativeSign &&\n !this.getSelection().includes(this.negativeSign)\n ) {\n return;\n }\n const pasted = document.execCommand('insertText', false, sanitizedContent);\n if (!pasted) {\n if (this.inputElement.setRangeText) {\n const { selectionStart: start, selectionEnd: end } = this.inputElement;\n this.inputElement.setRangeText(sanitizedContent, start ?? 0, end ?? 0, 'end');\n // Angular's Reactive Form relies on \"input\" event, but on Firefox, the setRangeText method doesn't trigger it\n // so we have to trigger it ourself.\n if (typeof (window as { [key: string]: any })['InstallTrigger'] !== 'undefined') {\n this.inputElement.dispatchEvent(new Event('input', { cancelable: true }));\n }\n } else {\n // Browser does not support setRangeText, e.g. IE\n this.insertAtCursor(this.inputElement, sanitizedContent);\n }\n }\n if (this.decimal) {\n this.hasDecimalPoint = this.inputElement.value.indexOf(this.decimalSeparator) > -1;\n }\n this.hasNegativeSign = this.inputElement.value.indexOf(this.negativeSign) > -1;\n }\n\n // The following 2 methods were added from the below article for browsers that do not support setRangeText\n // https://stackoverflow.com/questions/11076975/how-to-insert-text-into-the-textarea-at-the-current-cursor-position\n private insertAtCursor(myField: HTMLInputElement, myValue: string): void {\n const startPos = myField.selectionStart ?? 0;\n const endPos = myField.selectionEnd ?? 0;\n\n myField.value =\n myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);\n\n const pos = startPos + myValue.length;\n myField.focus();\n myField.setSelectionRange(pos, pos);\n\n this.triggerEvent(myField, 'input');\n }\n\n private triggerEvent(el: HTMLInputElement, type: string): void {\n if ('createEvent' in document) {\n // modern browsers, IE9+\n const e = document.createEvent('HTMLEvents');\n e.initEvent(type, false, true);\n el.dispatchEvent(e);\n }\n }\n // end stack overflow code\n\n private sanitizeInput(input: string): string {\n let result = '';\n let regex;\n if (this.decimal && this.isValidDecimal(input)) {\n regex = new RegExp(`${this.getNegativeSignRegExp()}[^0-9${this.decimalSeparator}]`, 'g');\n } else {\n regex = new RegExp(`${this.getNegativeSignRegExp()}[^0-9]`, 'g');\n }\n result = input.replace(regex, '');\n\n const maxLength = this.inputElement.maxLength;\n if (maxLength > 0) {\n // the input element has maxLength limit\n const allowedLength =\n maxLength - this.inputElement.value.length + (result.includes(`${this.negativeSign}`) ? 1 : 0);\n result = allowedLength > 0 ? result.substring(0, allowedLength) : '';\n }\n return result;\n }\n\n private getNegativeSignRegExp(): string {\n return this.allowNegatives && (!this.hasNegativeSign || this.getSelection().includes(this.negativeSign))\n ? `(?!^${this.negativeSign})`\n : '';\n }\n\n private isValidDecimal(string: string): boolean {\n if (!this.hasDecimalPoint) {\n return string.split(this.decimalSeparator).length <= 2;\n } else {\n // the input element already has a decimal separator\n const selectedText = this.getSelection();\n if (selectedText && selectedText.indexOf(this.decimalSeparator) > -1) {\n return string.split(this.decimalSeparator).length <= 2;\n } else {\n return string.indexOf(this.decimalSeparator) < 0;\n }\n }\n }\n\n private getSelection(): string {\n return this.inputElement.value.substring(\n this.inputElement.selectionStart ?? 0,\n this.inputElement.selectionEnd ?? 0,\n );\n }\n\n private forecastValue(key: string): string {\n const selectionStart = this.inputElement.selectionStart;\n const selectionEnd = this.inputElement.selectionEnd;\n const oldValue = this.inputElement.value;\n\n if (selectionStart == null && selectionEnd == null) {\n return oldValue + key;\n }\n\n return oldValue.substring(0, selectionStart) + key + oldValue.substring(selectionEnd);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/isSameOrAfter';\n\n@Pipe({\n name: 'AnnaDateFormatter',\n standalone: true,\n})\nexport class AnnaDateFormatterPipe implements PipeTransform {\n constructor() {}\n\n transform(value: any, format: string): any {\n dayjs.extend(customParseFormat);\n let formattedTime = dayjs(value).format(format);\n return formattedTime;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { memoize } from 'lodash-es';\n\n@Pipe({\n name: 'annaConvertArrayToCSV',\n standalone: true,\n})\nexport class AnnaConvertArrayToCommaSeperatedValue implements PipeTransform {\n converter = memoize(this.replace, (...args) => this.replace(args[0], args[1], args[2]));\n\n transform(value: any[], textKeyName?: any, selectedKeyName?: any): string {\n if (value == undefined || value == null) {\n return '-';\n }\n return this.converter(value, textKeyName, selectedKeyName);\n }\n\n replace(value: any[], textKeyName?: any, selectedKeyName?: any): string {\n let stringToDisplay: string = '';\n let anyValueSelected: boolean = false;\n value.forEach((val: any) => {\n if (selectedKeyName && val[selectedKeyName]) {\n stringToDisplay = stringToDisplay + val[textKeyName] + ', ';\n anyValueSelected = true;\n }\n });\n\n if (!anyValueSelected) return '-';\n\n // remove last 2 characters i.e. comma\n stringToDisplay = stringToDisplay.slice(0, -2);\n return stringToDisplay;\n }\n}\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[fixedRowsInPopupTable]',\n standalone: true,\n})\nexport class FixedRowsPopupTableDirective {\n @Input() popupRowHeight: number = 37.5;\n @Input() popupHeaderHeight: number = 38;\n @Input() tableDataLength: number;\n maxRowsRenderedWithoutScrollForPopup: number = 10;\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n @HostListener('window:resize')\n onWindowResize() {\n this.setPopUpTableHeight();\n }\n\n ngOnInit() {\n this.setPopUpTableHeight();\n }\n\n setPopUpTableHeight() {\n const viewportHeight = window.innerHeight;\n const maxNoOfRowsToDisplay = viewportHeight < 740 ? 5 : 10;\n this.maxRowsRenderedWithoutScrollForPopup = maxNoOfRowsToDisplay;\n let totalPopupTableHeight =\n this.maxRowsRenderedWithoutScrollForPopup * this.popupRowHeight + this.popupHeaderHeight;\n\n let tableHeightForPopup =\n this.tableDataLength < this.maxRowsRenderedWithoutScrollForPopup\n ? this.popupRowHeight * (this.tableDataLength ? this.tableDataLength : 1) + this.popupHeaderHeight\n : totalPopupTableHeight;\n\n this.renderer.setStyle(this.el.nativeElement, 'height', `calc(${tableHeightForPopup}px)`);\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'anna-core-anna-est-icon-template',\n templateUrl: './anna-est-icon-template.component.html',\n styleUrls: ['./anna-est-icon-template.component.scss'],\n standalone: true,\n imports: [],\n})\nexport class AnnaEstIconTemplateComponent {}\n","<svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n>\n <path\n d=\"M0 0H14V14H0V0Z\"\n fill=\"url(#pattern0)\"\n />\n <defs>\n <pattern\n id=\"pattern0\"\n patternContentUnits=\"objectBoundingBox\"\n width=\"1\"\n height=\"1\"\n >\n <use\n xlink:href=\"#image0_866_172\"\n transform=\"scale(0.0430107 0.0434783)\"\n />\n </pattern>\n <image\n id=\"image0_866_172\"\n width=\"93\"\n height=\"23\"\n xlink:href=\"data:image/png;base64,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\"\n />\n </defs>\n</svg>\n","// Angular import statements\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatTableModule } from '@angular/material/table';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\n// Third party import statements\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxSliderModule } from '@angular-slider/ngx-slider';\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\nimport { NgCircleProgressModule } from 'ng-circle-progress';\n\n//Anna-core User defined import statements\nimport { AnnaFilterSearchedTextPipe } from './anna-core-shared-lib/pipes/annaFilterSearchedText.pipe';\nimport { AnnaNoDataComponent } from './anna-core-shared-lib/components/anna-no-data/anna-no-data.component';\nimport { AnnaIconColumnComponent } from './anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component';\nimport { AnnaBuyerApprovalIconTemplateComponent } from './anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component';\nimport { AnnaLiveIconTemplateComponent } from './anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component';\nimport { AnnaNotifyIconTemplateComponent } from './anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component';\nimport { AnnaPayForPerformanceIconTemplateComponent } from './anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component';\nimport { AnnaRejectedIconTemplateComponent } from './anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component';\nimport { showEllipsisTextOnHoverDirective } from './anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive';\nimport { AnnaConvertZeroOrNullOrUndefinedPipe } from './anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe';\n\n//Anna-dropdown-lib User defined import statements\nimport { AnnaWeekCalendarComponent } from './anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component';\nimport { AnnaCalendarFilterComponent } from './anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component';\n\n//Anna-generic-table User defined import statements\nimport { AnnaNonEditableGenericTableComponent } from './anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component';\nimport { AnnaSortComponent } from './anna-generic-table-lib/components/anna-sort/anna-sort.component';\nimport { AnnaTableVirtualScrollViewportComponent } from './anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component';\nimport { AnnaFixedRowSizeTableVirtualScrollStrategyDirective } from './anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy';\nimport { AnnaVirtualTableDirective } from './anna-generic-table-lib/directives/anna-virtual-table';\nimport { AnnaTypeofDataPipe } from './anna-core-shared-lib/pipes/annaTypeOfData.pipe';\nimport { AnnaReplaceCharPipe } from './anna-core-shared-lib/pipes/annaReplaceChar.pipe';\nimport { DigitOnlyDirective } from './anna-core-shared-lib/directives/digits-only/digits-only.directive';\nimport { AnnaColumnDateRangeFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component';\nimport { AnnaColumnCheckboxFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component';\nimport { AnnaColumnTimeFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component';\nimport { AnnaDeletedOrderIconTemplateComponent } from './anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component';\nimport { AnnaColumnSliderFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component';\nimport { AnnaDateFormatterPipe } from './anna-core-shared-lib/pipes/annaDateFormatter.pipe';\nimport { AnnaConvertArrayToCommaSeperatedValue } from './anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe';\nimport { FixedRowsPopupTableDirective } from './anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive';\nimport { AnnaEstIconTemplateComponent } from './anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component';\n\n@NgModule({\n imports: [\n CommonModule,\n NgbModule,\n FormsModule,\n MatRadioModule,\n MatButtonToggleModule,\n MatTableModule,\n NgxSliderModule,\n NgxSkeletonLoaderModule,\n ScrollingModule,\n NgCircleProgressModule.forRoot({\n radius: 100,\n outerStrokeWidth: 16,\n innerStrokeWidth: 8,\n outerStrokeColor: '#78C000',\n innerStrokeColor: '#C7E596',\n animationDuration: 300,\n }),\n AnnaNoDataComponent,\n AnnaFilterSearchedTextPipe,\n AnnaConvertZeroOrNullOrUndefinedPipe,\n AnnaTypeofDataPipe,\n AnnaFilterSearchedTextPipe,\n AnnaReplaceCharPipe,\n AnnaBuyerApprovalIconTemplateComponent,\n AnnaLiveIconTemplateComponent,\n AnnaNotifyIconTemplateComponent,\n AnnaPayForPerformanceIconTemplateComponent,\n AnnaRejectedIconTemplateComponent,\n showEllipsisTextOnHoverDirective,\n AnnaIconColumnComponent,\n AnnaWeekCalendarComponent,\n AnnaCalendarFilterComponent,\n AnnaSortComponent,\n AnnaVirtualTableDirective,\n AnnaNonEditableGenericTableComponent,\n AnnaTableVirtualScrollViewportComponent,\n AnnaFixedRowSizeTableVirtualScrollStrategyDirective,\n DigitOnlyDirective,\n AnnaColumnDateRangeFilterComponent,\n AnnaColumnTimeFilterComponent,\n AnnaColumnCheckboxFilterComponent,\n AnnaDeletedOrderIconTemplateComponent,\n AnnaColumnSliderFilterComponent,\n AnnaDateFormatterPipe,\n AnnaConvertArrayToCommaSeperatedValue,\n FixedRowsPopupTableDirective,\n AnnaEstIconTemplateComponent,\n ],\n exports: [\n AnnaNoDataComponent,\n AnnaFilterSearchedTextPipe,\n AnnaConvertZeroOrNullOrUndefinedPipe,\n AnnaTypeofDataPipe,\n AnnaReplaceCharPipe,\n AnnaFilterSearchedTextPipe,\n AnnaBuyerApprovalIconTemplateComponent,\n AnnaLiveIconTemplateComponent,\n AnnaNotifyIconTemplateComponent,\n AnnaPayForPerformanceIconTemplateComponent,\n AnnaRejectedIconTemplateComponent,\n showEllipsisTextOnHoverDirective,\n AnnaIconColumnComponent,\n AnnaWeekCalendarComponent,\n AnnaCalendarFilterComponent,\n AnnaSortComponent,\n AnnaVirtualTableDirective,\n AnnaNonEditableGenericTableComponent,\n AnnaTableVirtualScrollViewportComponent,\n AnnaColumnDateRangeFilterComponent,\n AnnaColumnTimeFilterComponent,\n AnnaColumnCheckboxFilterComponent,\n AnnaFixedRowSizeTableVirtualScrollStrategyDirective,\n DigitOnlyDirective,\n AnnaDeletedOrderIconTemplateComponent,\n AnnaColumnSliderFilterComponent,\n AnnaDateFormatterPipe,\n AnnaConvertArrayToCommaSeperatedValue,\n FixedRowsPopupTableDirective,\n ],\n})\nexport class AnnaCoreModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AnnaNumberFormatService {\n public static GetRoundedValueWithUnits(inputValue: number, digitsToRoundDecimalPoint = 2) {\n let [value, unit] = AnnaNumberFormatService.GetValueInUnits(Math.abs(inputValue));\n value = +(+value).toFixed(digitsToRoundDecimalPoint);\n if (inputValue < 0) {\n value = value * -1;\n }\n return value.toString() + unit;\n // return (Math.Round(value, digitsToRoundDecimalPoint, MidpointRounding.AwayFromZero) + unit);\n }\n\n public static GetRoundedImpressionsWithUnits(inputValue: number, digitsToRoundDecimalPoint: number = 0) {\n let [value, unit] = this.GetValueInUnits(Math.abs(inputValue));\n value = +value;\n if (inputValue < 0) {\n value = value * -1;\n }\n if (digitsToRoundDecimalPoint == 0 && (unit == 'M' || unit == 'B' || unit == 'K')) {\n digitsToRoundDecimalPoint = 2;\n }\n return Number.isInteger(value) ? value.toString() + unit : value.toFixed(digitsToRoundDecimalPoint) + unit;\n // return (Math.round(value, digitsToRoundDecimalPoint, MidpointRounding.AwayFromZero) + unit);\n }\n\n public static GetValueInUnits(inputValue: number) {\n let unit = '';\n let thousand = 1000;\n let million = 1000000;\n let billion = 1000000000;\n\n if (inputValue >= thousand && inputValue < million) {\n inputValue = inputValue / thousand;\n unit = 'K';\n } else if (inputValue >= million && inputValue < billion) {\n inputValue = inputValue / million;\n unit = 'M';\n } else if (inputValue >= billion) {\n inputValue = inputValue / billion;\n unit = 'B';\n }\n\n return [inputValue, unit];\n }\n}\n","import { Injectable } from '@angular/core';\nimport hash from 'object-hash';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AnnaPersistingFilterService {\n constructor() {}\n\n storeKeyValueInLocalStorage(val: any, isFilterKey = true) {\n let filterOrdering: any[];\n\n if (!localStorage.getItem('filterOrdering')) {\n filterOrdering = [];\n } else {\n filterOrdering = JSON.parse(localStorage.getItem('filterOrdering'));\n }\n\n let filterOrderingSet = new Set(filterOrdering);\n let hashCode = null;\n let key = null;\n\n try {\n hashCode = hash(val);\n key = isFilterKey ? 'filter_' + hashCode : hashCode;\n localStorage.setItem(key, JSON.stringify(val));\n\n if (isFilterKey) {\n if (filterOrderingSet.has(key)) {\n filterOrderingSet.delete(key);\n }\n filterOrderingSet.add(key);\n localStorage.setItem('filterOrdering', JSON.stringify(Array.from(filterOrderingSet)));\n }\n } catch (e) {\n let halfArrayLength = filterOrdering.length / 2;\n\n for (let i = 0; i < halfArrayLength; i++) {\n localStorage.removeItem(filterOrdering[i]);\n }\n\n filterOrdering.splice(0, filterOrdering.length / 2);\n\n hashCode = hash(val);\n let key = isFilterKey ? 'filter_' + hashCode : hashCode;\n localStorage.setItem(key, JSON.stringify(val));\n\n if (isFilterKey) {\n if (filterOrderingSet.has(key)) {\n filterOrderingSet.delete(key);\n }\n filterOrderingSet.add(key);\n localStorage.setItem('filterOrdering', JSON.stringify(Array.from(filterOrderingSet)));\n }\n }\n\n return key;\n }\n\n getActualQueryParams(key: string) {\n return localStorage.getItem(key);\n }\n\n convertObjToQueryString(paramsObject: any) {\n return Object.keys(paramsObject)\n .map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(paramsObject[key])}`)\n .join('&');\n }\n}\n","import { IWeekCalendar } from './anna-global-dropdown-config.model';\n\nexport interface IGtTableHeader {\n headerInfo: IHeaderInfo[];\n visible: boolean;\n width: string;\n}\n\nexport interface IHeaderInfo {\n name: string;\n objectKey: string;\n actionKey?: string;\n tooltipKey?: string;\n isDisabledKey?: string;\n typeOfHeaderData: DATATYPE;\n typeOfBodyData: DATATYPE;\n filter?: FILTERTYPE;\n filterSortObjectKeys?: string[];\n isSortRequired?: boolean[];\n isFilterRequired?: boolean[];\n showTooltipIcon: boolean;\n disableTooltipIcon?: boolean;\n tooltip?: ITooltip;\n joinedFilterSortObjectKeys?: string;\n}\n\ntype DATATYPE =\n | 'CHECKBOX'\n | 'ICON'\n | 'STRING'\n | 'RADIO'\n | ''\n | 'SVG_ICON'\n | 'TEXT_ACTIONS'\n | 'CLICKABLE_DATA'\n | 'STRING__TEXT_ACTION'\n | 'STRING__ICON_ACTION'\n | 'STRING___ICON_OR_TEXT_ACTION'\n | 'HTML'\n | 'HTML_STRING'\n | 'ICON_CELL'\n | 'STRING_OR_INPUT'\n | 'SINGLE_RADIO'\n | 'STRING_WITH_TOOLTIP';\ntype FILTERTYPE = 'CHECKBOX' | 'SLIDER' | 'DATE' | 'TIME' | 'WEEK';\ntype TOOLTIPOSITION = 'left' | 'right';\n\nexport interface ITotalRowInfo {\n colspan: number;\n data: string;\n lowerData?: string;\n colName: string;\n class?: string;\n tooltipMessage?: string;\n isActionColumn?: boolean;\n actionData?: ClickableItem[];\n isIconColumn?: boolean;\n iconData?: { class: string; disabled?: boolean };\n tooltipIconClass?: string;\n}\n\nexport interface IGtHeaderConfig {\n iconColumn: boolean;\n checkboxColumn: boolean;\n lastColumnKeys: string[];\n}\n\nexport interface IGtGeneralConfig extends ISpotTableConfig {\n component: COMPONENTNAME;\n totalRow: boolean;\n isHeaderChecked?: boolean;\n disableHeaderCheckbox?: boolean;\n multiWeekPickerConfig?: IWeekCalendar;\n verticalScrollOffsetForFilterTooltip?: number;\n tableContainerName?: string;\n tableOuterContainerName?: string;\n showAllColumnFilter: boolean;\n bufferSize: number;\n page: string;\n}\n\ntype COMPONENTNAME =\n | 'SPOTDETAILS'\n | 'EXCLUDEINVENTORYPOPUP'\n | 'EXCLUDEINVENTORY'\n | 'DRRLISTING'\n | 'DRR'\n | ''\n | 'RATING'\n | 'ORDER_LISTING_INFLIGHT'\n | 'ORDER_LISTING_COMPLETED'\n | 'ORDER_LISTING_BLANK'\n | 'LUR_VIOLATIONS'\n | 'ACTIVITYLOG'\n | 'NOTIFICATIONS'\n | 'DP_RESTRICTIONS';\ninterface ISpotTableConfig {\n isGrouped: boolean;\n}\n\nexport interface ITooltip {\n iconPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after';\n name: string;\n tooltipPosition: string;\n iconClass: string;\n tooltipClass: string;\n}\n\nexport interface IconData {\n data: any;\n iconClass: string;\n}\nexport interface TextAction {\n id: number;\n name: string;\n class: string;\n isDisabled: boolean;\n}\n\nexport class ClickableItem {\n id: any;\n name: string;\n isDisabled: boolean;\n class: string;\n showTooltip: boolean;\n tooltipData: { key: string; value: string };\n enableTooltipForAdditionalText: boolean;\n\n constructor(\n typeOfActionLinkForGt: any,\n name: string,\n className: string,\n showTooltip: boolean,\n tooltipData: { key: string; value: string },\n ) {\n this.id = typeOfActionLinkForGt;\n this.name = name;\n this.class = className;\n this.showTooltip = showTooltip;\n this.tooltipData = tooltipData;\n this.enableTooltipForAdditionalText = false;\n }\n}\n\nexport interface IActionItemTypeSTRING__ICON_OR_TEXT_ACTION {\n id: any;\n data: string;\n\n iconClass: string;\n showIcon: boolean;\n disabledIcon: boolean;\n\n linkClass: string;\n showLink: boolean;\n disabledLink: boolean;\n\n showTooltip: boolean;\n\n tooltipData: { key: string; value: string }[];\n tooltipClass?: string;\n tooltipPlacement?: string;\n\n typeOfData: 'STRING' | 'ICON_TEXT_ACTION';\n additionalTextBeforeLink: string;\n enableTooltipForAdditionalText: boolean;\n}\n\nexport type IconToShow =\n | 'LIVE'\n | 'PAY_FOR_PERFORMANCE_ACTIVE'\n | 'PAY_FOR_PERFORMANCE'\n | 'REJECTED'\n | 'NOTIFY'\n | 'AWAITING_APPROVAL'\n | 'DELETED_ORDER'\n | 'NEED_SELLER_CONFIRMATION'\n | 'NEED_BUYER_CONFIRMATION';\n","export class Constants {\r\n static readonly SUCCESS_STRING = 'success';\r\n static readonly BACKEND_SERVER_URL = '/server/public/index.php/api';\r\n static readonly ERROR_MSG = 'Error occurred please try again.';\r\n static readonly NO_DATA_MSG = 'No Data to display';\r\n static readonly SERVER_ERROR = 'Server error. Please try Again';\r\n static readonly USER_ORIGIN = 'ANNA';\r\n static readonly ACTIVE_USER_STATUS = 'active';\r\n static readonly DELETED_USER_STATUS = 'deleted';\r\n static readonly INACTIVE_USER_STATUS = 'inactive';\r\n static readonly OGAdminRole = 'Ownership Group Admin';\r\n static readonly ASARole = 'Anna Station Admin';\r\n static readonly dollars = '$';\r\n}\r\n\r\nexport class ErrorCodes {\r\n static readonly BAD_REQUEST = 400;\r\n static readonly SERVER_ERROR = 500;\r\n static readonly SUCCESS_CODE = 200;\r\n static readonly SUCCESS_CODE_GET = 200;\r\n static readonly SUCCESS_CODE_POST = 201;\r\n static readonly SUCCESS_CODE_PATCH = 204;\r\n static readonly NO_CONTENT = 204;\r\n static readonly under_review = 409;\r\n}\r\n\r\nexport enum Days {\r\n M = 1,\r\n Tu = 2,\r\n We = 3,\r\n Th = 4,\r\n F = 5,\r\n Sa = 6,\r\n Su = 7,\r\n}\r\n\r\nexport class OrderSources {\r\n static readonly Medialine = 'Medialine';\r\n static readonly Non_electronic = 'Non electronic';\r\n static readonly Others = 'Others';\r\n static readonly WOC_unlinked = 'WOC Unlinked';\r\n static readonly WOC_linked = 'WOC Linked';\r\n static readonly WOZ = 'WOZ';\r\n static readonly Darwin = 'Darwin';\r\n}\r\n","/*\n * Public API Surface of anna-core\n */\n\nexport * from './lib/anna-core.module';\n\n//ANNA-CORE\n//components\nexport * from './lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component';\nexport * from './lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component';\nexport * from './lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component';\nexport * from './lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component';\nexport * from './lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component';\nexport * from './lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component';\nexport * from './lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component';\nexport * from './lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component';\n\n//services\nexport * from './lib/anna-core-shared-lib/services/anna-date-time-format.service';\nexport * from './lib/anna-core-shared-lib/services/anna-global-config.service';\nexport * from './lib/anna-core-shared-lib/services/anna-filter.service';\nexport * from './lib/anna-core-shared-lib/services/anna-sort.service';\nexport * from './lib/anna-core-shared-lib/services/anna-generic-table.service';\nexport * from './lib/anna-core-shared-lib/services/anna-number-format.service';\nexport * from './lib/anna-core-shared-lib/services/anna-persisting-filter.service';\n\n//models\nexport * from './lib/anna-core-shared-lib/models/anna-generic-data-type.model';\nexport * from './lib/anna-core-shared-lib/models/anna-global-dropdown-config.model';\nexport * from './lib/anna-core-shared-lib/models/anna-non-editable-gt-models';\nexport * from './lib/anna-core-shared-lib/models/anna-tooltip.model';\nexport * from './lib/anna-core-shared-lib/models/anna-sort.model';\n\n//constants\nexport * from './lib/anna-core-shared-lib/constants/shared.constant';\n\n//pipes\nexport * from './lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe';\nexport * from './lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe';\nexport * from './lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe';\nexport * from './lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe';\nexport * from './lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe';\nexport * from './lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe';\n\n//directives\nexport * from './lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive';\nexport * from './lib/anna-core-shared-lib/directives/digits-only/digits-only.directive';\nexport * from './lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive';\n\n//ANNA-DROPDOWN LIB\nexport * from './lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component';\nexport * from './lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component';\n\n//ANNA-GENERIC-TABLE-LIB\n//Modules\n\n//Components\nexport * from './lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component';\nexport * from './lib/anna-generic-table-lib/components/anna-sort/anna-sort.component';\nexport * from './lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component';\nexport * from './lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component';\nexport * from './lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component';\nexport * from './lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component';\nexport * from './lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component';\n\n//Directives\nexport * from './lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy';\nexport * from './lib/anna-generic-table-lib/directives/anna-virtual-table';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.AnnaDateTimeFormatService","i3.AnnaGlobalConfigService","i1.AnnaDateTimeFormatService","i2","CustomParseFormat","i2.AnnaSortService","i1.AnnaSortService","i3.AnnaFilterService","i1.AnnaFilterService","i4","i2.AnnaFilterService","i3","i5","i3.AnnaSortService","i1","i3.AnnaGtHelperService","map","customParseFormat"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"annalib-anna-core.mjs","sources":["../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-global-config.service.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.html","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-tooltip.model.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-sort.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-sort.model.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-filter.service.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-generic-table.service.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.html","../../../projects/anna-core/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","../../../projects/anna-core/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core.module.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-number-format.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-persisting-filter.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/constants/shared.constant.ts","../../../projects/anna-core/src/public-api.ts","../../../projects/anna-core/src/annalib-anna-core.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\nimport { memoize } from 'lodash-es';\r\n\r\n@Pipe({\r\n name: 'AnnafilterSearchedText',\r\n standalone: true,\r\n})\r\nexport class AnnaFilterSearchedTextPipe implements PipeTransform {\r\n callFilter = memoize(this.filter, (...args) => this.filter(args[0], args[1], args[2]));\r\n\r\n transform(items: any[], searchText: any, keyName?: any): any[] {\r\n return this.callFilter(items, searchText, keyName);\r\n }\r\n\r\n filter(items: any[], searchText: string, keyName?: any): any[] {\r\n if (!items) return [];\r\n if (!searchText) return items;\r\n searchText = searchText.toString().toLowerCase();\r\n\r\n // if keyName is an array then loop through all the keynames\r\n if (keyName && typeof keyName == 'object') {\r\n let isFoundAtleastOnce = false;\r\n let isFound: any[];\r\n\r\n for (const key of keyName) {\r\n isFound = items.filter((item) => item[key].toString().toLowerCase().includes(searchText));\r\n if (isFound.length) {\r\n isFoundAtleastOnce = true;\r\n break;\r\n }\r\n }\r\n return isFoundAtleastOnce ? isFound : [];\r\n } else {\r\n //if keyName is undefined every key will be considered for filtering.\r\n let searchResult = [];\r\n if (!keyName)\r\n searchResult = items.filter(\r\n (item) =>\r\n Object.values(item).filter((n) => (n ? n.toString().toLowerCase().includes(searchText) : false))\r\n .length > 0,\r\n );\r\n else if (keyName == 'NoKey') {\r\n searchResult = items.filter((item) => item.toString().toLowerCase().includes(searchText));\r\n } else {\r\n searchResult = items.filter((item) =>\r\n item[keyName] ? item[keyName].toString().toLowerCase().includes(searchText) : false,\r\n );\r\n }\r\n return searchResult;\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\n@Component({\r\n selector: 'anna-core-no-data-lib',\r\n templateUrl: './anna-no-data.component.html',\r\n styleUrls: ['./anna-no-data.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n})\r\nexport class AnnaNoDataComponent implements OnInit {\r\n @Input() width;\r\n @Input() marginTop;\r\n message: string;\r\n constructor() {\r\n this.width = '48%';\r\n this.marginTop = '1.25rem';\r\n }\r\n\r\n ngOnInit() {\r\n this.message = 'No data to display';\r\n }\r\n}\r\n","<div\r\n [style.marginRight]=\"width\"\r\n [style.marginTop]=\"marginTop\"\r\n class=\"no-data\"\r\n>\r\n <label>{{ message }}</label>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-deleted-order-icon-template',\r\n templateUrl: './anna-deleted-order-icon-template.component.html',\r\n styleUrls: ['./anna-deleted-order-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n})\r\nexport class AnnaDeletedOrderIconTemplateComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<i class=\"mdi mdi-file-remove-outline\"></i>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'anna-buyer-approval-icon-template',\r\n templateUrl: './anna-buyer-approval-icon-template.component.html',\r\n styleUrls: ['./anna-buyer-approval-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [NgTemplateOutlet],\r\n})\r\nexport class AnnaBuyerApprovalIconTemplateComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"buyerApprovalIcon\"></ng-container>\r\n\r\n<ng-template #buyerApprovalIcon>\r\n <svg\r\n width=\"15px\"\r\n height=\"15px\"\r\n viewBox=\"0 0 20 20\"\r\n >\r\n <g\r\n id=\"Awaiting-Buyer-Approval-icon\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <g\r\n id=\"time-left\"\r\n transform=\"translate(3.000000, 2.000000)\"\r\n fill=\"#4A4A4A\"\r\n fill-rule=\"nonzero\"\r\n >\r\n <path\r\n d=\"M6.23157622,14.1696467 C5.70535057,14.0721422 5.2005579,13.9061054 4.72188769,13.6745242 C4.71622258,13.6714711 4.71115545,13.6679958 4.70520709,13.6652025 C4.59240848,13.6104091 4.47979871,13.551718 4.37065094,13.4903961 C4.37027327,13.4899414 4.36958087,13.4896491 4.36898288,13.4893893 C4.16872129,13.37558 3.97327504,13.2496557 3.78339947,13.1117139 C1.01467199,11.0989392 0.348958764,7.13679055 2.29945571,4.27950803 C2.72358352,3.65842885 3.23684237,3.14027823 3.80904983,2.72960334 C3.81609974,2.72453649 3.82314965,2.71950212 3.83013662,2.71440279 C5.84650619,1.28061347 8.58442178,1.183986 10.7254867,2.65733574 L10.2656372,3.34301728 C10.1377946,3.53386873 10.2164452,3.67294733 10.4402485,3.65216024 L12.4377343,3.46760989 C12.6618209,3.4468228 12.7958322,3.24677957 12.7355617,3.0234483 L12.1991703,1.02899228 C12.1391202,0.805401178 11.9853754,0.778637804 11.8574069,0.969456765 L11.3964873,1.6567623 C9.82523796,0.568265989 7.94067659,0.153206329 6.0701521,0.487943386 C5.88175576,0.521592483 5.69600314,0.562776899 5.51279981,0.610717118 C5.51138354,0.610976957 5.51025052,0.611139356 5.50911749,0.611399194 C5.50203611,0.613185585 5.4948603,0.615556612 5.48796775,0.617537881 C3.8749854,1.04500483 2.46767797,2.01585923 1.46347449,3.40105873 C1.4550083,3.41141979 1.44629033,3.4215535 1.43829623,3.432824 C1.40490356,3.47923766 1.37176268,3.52672316 1.33931419,3.57420867 C1.28625101,3.65203032 1.23394317,3.73180077 1.18390138,3.81157121 C1.17763828,3.82118524 1.17285441,3.83096167 1.16737814,3.84067314 C0.338698623,5.1658824 -0.0610062726,6.69795566 0.00754154337,8.25770173 C0.00769890751,8.26283354 0.00741565207,8.26799784 0.00754154337,8.27325957 C0.0141823097,8.42562242 0.0258902012,8.58009646 0.0417839785,8.73216699 C0.0426337448,8.7419759 0.0447424242,8.75126512 0.0463475384,8.76107403 C0.0627763537,8.91398904 0.0833910551,9.06726132 0.109230246,9.22050113 C0.371839509,10.7840149 1.08652445,12.1909434 2.15745032,13.2856758 C2.15993667,13.2882417 2.16251744,13.291035 2.16503527,13.2936983 C2.16591651,13.2947052 2.16689216,13.2952249 2.16774193,13.2961668 C2.45546651,13.5890373 2.7684323,13.8599191 3.10541185,14.1048494 C3.98728044,14.7461311 4.9692641,15.1700252 6.02385557,15.3653264 C6.3438398,15.424667 6.64950389,15.2048436 6.70691032,14.8747836 C6.76428528,14.5444963 6.55146603,14.2287924 6.23157622,14.1696467 Z\"\r\n id=\"Path\"\r\n ></path>\r\n <path\r\n d=\"M9.22237925,14.6588011 C9.29073073,14.9263505 9.1292489,15.198652 8.86169949,15.2670034 C8.51639563,15.355219 8.1641424,15.4188128 7.8069689,15.4570516 C7.53239558,15.4864472 7.28598003,15.2876915 7.25658436,15.0131182 C7.22718869,14.7385449 7.42594445,14.4921293 7.70051776,14.4627336 C8.01004537,14.4295958 8.31515603,14.3745129 8.61417689,14.2981213 C8.8817263,14.2297698 9.15402777,14.3912517 9.22237925,14.6588011 Z M12.5552524,12.2886551 C12.7611952,12.4726175 12.7790139,12.7886982 12.5950515,12.994641 C12.3569806,13.2611574 12.1001968,13.5104915 11.8267859,13.7406023 C11.6155121,13.9184167 11.3000937,13.8912925 11.1222793,13.6800187 C10.9444648,13.4687448 10.9715891,13.1533264 11.1828629,12.975512 C11.4200152,12.7759175 11.6427598,12.5596351 11.8492666,12.3284542 C12.033229,12.1225114 12.3493096,12.1046927 12.5552524,12.2886551 Z M13.9945063,8.57622811 C14.2674538,8.61811209 14.4547678,8.87333344 14.4128838,9.14628095 C14.3584322,9.50112883 14.2787427,9.85020038 14.1746496,10.1914009 C14.0940709,10.4555252 13.8146338,10.6043183 13.5505094,10.5237395 C13.2863851,10.4431608 13.137592,10.1637237 13.2181708,9.89959931 C13.3082912,9.6041989 13.3772907,9.30195366 13.4244534,8.99460564 C13.4663374,8.72165813 13.7215588,8.53434413 13.9945063,8.57622811 Z M13.8741743,4.99628976 C14.0173723,5.32357494 14.1370467,5.66111195 14.2320931,6.00667963 C14.305325,6.27293459 14.1488489,6.54814305 13.8825939,6.62137492 C13.6163389,6.6946068 13.3411305,6.53813067 13.2678986,6.27187571 C13.1856167,5.97271686 13.0820133,5.68050756 12.958028,5.39713383 C12.847338,5.14414702 12.9626923,4.84932868 13.2156791,4.73863865 C13.4686659,4.62794862 13.7634843,4.74330295 13.8741743,4.99628976 Z\"\r\n id=\"Combined-Shape\"\r\n ></path>\r\n <path\r\n d=\"M6.49684035,4 C6.22234237,4 6,4.21290493 6,4.47514225 L6,9.20888548 L10.5252942,11.4469308 C10.5981282,11.4830116 10.6761155,11.5 10.7528554,11.5 C10.9325937,11.5 11.106194,11.4063595 11.1944548,11.2429754 C11.3203307,11.0097848 11.2250786,10.7233052 10.9813357,10.6028789 L6.9931227,8.63027395 L6.9931227,4.47514225 C6.99308988,4.21290493 6.77101009,4 6.49684035,4 Z\"\r\n id=\"Path\"\r\n ></path>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-notify-icon-template',\r\n templateUrl: './anna-notify-icon-template.component.html',\r\n styleUrls: ['./anna-notify-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n})\r\nexport class AnnaNotifyIconTemplateComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<i class=\"mdi mdi-bell\"></i>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'anna-rejected-icon-template',\r\n templateUrl: './anna-rejected-icon-template.component.html',\r\n styleUrls: ['./anna-rejected-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [NgTemplateOutlet],\r\n})\r\nexport class AnnaRejectedIconTemplateComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"rejectedIcon\"></ng-container>\r\n\r\n<ng-template #rejectedIcon>\r\n <svg\r\n width=\"15px\"\r\n height=\"15px\"\r\n viewBox=\"0 0 20 20\"\r\n >\r\n <g\r\n id=\"Buyer-rejected-icon\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <path\r\n d=\"M15.7822266,4.21777344 C14.3671875,2.80276367 12.4951465,2 10.5,2 C6.37918945,2 3,5.37253906 3,9.5 C3,13.6296289 6.37133789,17 10.5,17 C14.6105273,17 18,13.6429004 18,9.5 C18,7.50485352 17.1972656,5.6327832 15.7822266,4.21777344 Z M10.5,15.2128906 C7.34220703,15.2128906 4.78710938,12.664502 4.78710938,9.5 C4.78710938,8.26950195 5.17382812,7.10055664 5.88574219,6.13375977 L13.8662402,14.1054395 C12.8993848,14.8261719 11.730498,15.2128906 10.5,15.2128906 Z M15.1054688,12.8661816 L7.13375977,4.88574219 C8.10061523,4.17382813 9.26950195,3.78710938 10.5,3.78710938 C13.6578809,3.78710938 16.2128906,6.33549805 16.2128906,9.5 C16.2128906,10.7304395 15.8261719,11.8993848 15.1054688,12.8661816 Z\"\r\n id=\"Shape\"\r\n fill=\"#4A4A4A\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'anna-live-icon-template',\r\n templateUrl: './anna-live-icon-template.component.html',\r\n styleUrls: ['./anna-live-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [NgTemplateOutlet],\r\n})\r\nexport class AnnaLiveIconTemplateComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"liveIcon\"></ng-container>\r\n<ng-template #liveIcon>\r\n <svg\r\n width=\"15px\"\r\n height=\"15px\"\r\n viewBox=\"0 0 20 20\"\r\n >\r\n <g\r\n id=\"Live-Icon\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <g\r\n id=\"next\"\r\n transform=\"translate(2.000000, 2.000000)\"\r\n fill-rule=\"nonzero\"\r\n >\r\n <path\r\n d=\"M8,0 C3.58171139,0 0,3.58171139 0,8 C0,12.4182886 3.58171139,16 8,16 C12.4182886,16 16,12.4182886 16,8 C15.9950435,3.58379835 12.4162343,0.00498913721 8,0 Z\"\r\n id=\"Path\"\r\n fill=\"#C2E361\"\r\n ></path>\r\n <path\r\n d=\"M8,16 C3.58171139,16 0,12.4182633 0,7.9999837 C0,3.58170409 3.58171139,0 8,0 C12.4182886,0 16,3.58170409 16,7.9999837 C15.9950435,12.416209 12.4162343,15.9950109 8,16 Z M8,0.695640832 C3.96590756,0.695640832 0.69564225,3.96589948 0.69564225,7.9999837 C0.69564225,12.0340679 3.96590756,15.3043266 8,15.3043266 C12.0340924,15.3043266 15.3043578,12.0340679 15.3043578,7.9999837 C15.2997599,3.96782339 12.0322011,0.700238655 8,0.695640832 Z\"\r\n id=\"Shape\"\r\n fill=\"#8BAC2A\"\r\n ></path>\r\n <circle\r\n id=\"Oval\"\r\n fill=\"#8BAC2A\"\r\n cx=\"8\"\r\n cy=\"8\"\r\n r=\"4\"\r\n ></circle>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'anna-pay-for-performance-icon-template',\r\n templateUrl: './anna-pay-for-performance-icon-template.component.html',\r\n styleUrls: ['./anna-pay-for-performance-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [NgTemplateOutlet],\r\n})\r\nexport class AnnaPayForPerformanceIconTemplateComponent implements OnInit {\r\n @Input() isTitle: boolean;\r\n @Input() color: string;\r\n @Input() width: string;\r\n @Input() height: string;\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n}\r\n","<ng-container\r\n [ngTemplateOutlet]=\"PayForPerformanceIcon\"\r\n [ngTemplateOutletContext]=\"{ color: color, width: width, height: height }\"\r\n>\r\n</ng-container>\r\n\r\n<ng-template\r\n #PayForPerformanceIcon\r\n let-color=\"color\"\r\n let-width=\"width\"\r\n let-height=\"height\"\r\n>\r\n <svg\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 20 20\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g\r\n id=\"Page-1\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <g\r\n id=\"02.-PAY-FOR-PERFORMANCE-MARKED\"\r\n transform=\"translate(-100.000000, -537.000000)\"\r\n [attr.fill]=\"color\"\r\n fill-rule=\"nonzero\"\r\n >\r\n <g\r\n id=\"PFP\"\r\n transform=\"translate(100.000000, 537.000000)\"\r\n >\r\n <path\r\n d=\"M20,3.125 L20,8.3984375 C20,8.82995605 19.6502686,9.1796875 19.21875,9.1796875 C18.7872314,9.1796875 18.4375,8.82995605 18.4375,8.3984375 L18.4375,3.125 C18.4375,2.26348875 17.7365112,1.5625 16.875,1.5625 L3.125,1.5625 C2.26348875,1.5625 1.5625,2.26348875 1.5625,3.125 L1.5625,16.875 C1.5625,17.7365112 2.26348875,18.4375 3.125,18.4375 L12.96875,18.4375 C13.4002686,18.4375 13.75,18.7872314 13.75,19.21875 C13.75,19.6502686 13.4002686,20 12.96875,20 L3.125,20 C1.40182496,20 0,18.598175 0,16.875 L0,3.125 C0,1.40182496 1.40182496,0 3.125,0 L16.875,0 C18.598175,0 20,1.40182496 20,3.125 Z M15.9622314,5.43584332 C15.9447753,5.38514929 15.9230346,5.33649554 15.8936766,5.29255022 C15.8924071,5.290196 15.891455,5.28799875 15.8901855,5.28580147 C15.8589232,5.23981585 15.8206786,5.19995115 15.7789427,5.16322545 C15.7689451,5.15427945 15.7584715,5.1459612 15.7475217,5.13764299 C15.7022947,5.10280065 15.6545285,5.07203893 15.6008908,5.04975236 C15.6008908,5.04975236 15.6008908,5.04975236 15.6005734,5.04975236 C15.5488399,5.02825056 15.4929805,5.01600867 15.4358516,5.00863213 C15.4218867,5.00674875 15.4082392,5.00549317 15.3942744,5.00455147 C15.3791987,5.0036098 15.3652338,5 15.3499994,5 L13.0749975,5 C12.7161959,5 12.4249969,5.28799875 12.4249969,5.64285714 C12.4249969,5.99771553 12.7161959,6.28571429 13.0749975,6.28571429 L13.7624492,6.28571429 L11.4499961,8.53571429 C11.4415854,8.52708216 11.4320639,8.5182931 11.4230185,8.5102888 L10.4034253,7.61160714 C9.89545371,7.12554061 9.08263561,7.13071987 8.58291595,7.62416295 L3.19264032,12.9001116 C2.937623,13.1498152 2.93555998,13.557094 3.18787956,13.8094657 C3.31530888,13.9362793 3.48225238,14 3.64998933,14 C3.8153459,14 3.98054383,13.9383196 4.10733834,13.8141741 L9.5,8.53571429 C9.50840503,8.54434641 9.51792652,8.55313547 9.52697193,8.56113977 L10.5462477,9.45982143 C10.7899979,9.69320244 11.1100788,9.82142857 11.4499961,9.82142857 C11.7970545,9.82142857 12.1233243,9.68770926 12.3651702,9.44852121 L14.6999989,7.1770194 L14.6999989,7.89285714 C14.6999989,8.24771553 14.9911979,8.53571429 15.3499994,8.53571429 C15.708801,8.53571429 16,8.24771553 16,7.89285714 L16,5.64285714 C16,5.58431572 15.9895264,5.52844239 15.9746094,5.47445244 C15.9711181,5.46126884 15.9668335,5.44871304 15.9622314,5.43584332 Z M17.7789307,14.21875 L17.0629883,14.21875 C16.71875,14.21875 16.4280701,13.9146423 16.4280701,13.5546875 L16.4280701,13.2698059 C16.4280701,12.9200745 16.7010498,12.65625 17.0629883,12.65625 L17.7400207,12.65625 C17.9388428,12.65625 18.1446838,12.7894592 18.1446838,13.0123902 C18.1446838,13.4437561 18.4945679,13.7936402 18.9259338,13.7936402 C19.3574524,13.7936402 19.7071838,13.4437561 19.7071838,13.0123902 C19.7071838,12.0761109 19.0158081,11.2947082 18.1048584,11.1273193 L18.1048584,10.625 C18.1048584,10.1934814 17.755127,9.84375 17.3236084,9.84375 C16.8920898,9.84375 16.5423584,10.1934814 16.5423584,10.625 L16.5423584,11.1541748 C16.1557007,11.2454223 15.8015442,11.4382934 15.5142212,11.7193604 C15.0959778,12.1286011 14.8655701,12.6792908 14.8655701,13.2696533 L14.8655701,13.5546875 C14.8655701,14.7824097 15.8512879,15.78125 17.0629883,15.78125 L17.7789307,15.78125 C18.1373596,15.78125 18.4181213,16.053009 18.4181213,16.3999939 L18.4181213,16.5917969 C18.4181213,16.9313049 18.1433105,17.1875 17.7789307,17.1875 L16.615448,17.1875 C16.4233398,17.1875 16.2290955,17.0666504 16.2290955,16.8359375 C16.2290955,16.4044189 15.879364,16.0546875 15.4478455,16.0546875 C15.0163269,16.0546875 14.6665955,16.4044189 14.6665955,16.8359375 C14.6665955,17.8851318 15.4847717,18.7117004 16.5423584,18.7481689 L16.5423584,19.1796875 C16.5423584,19.6112061 16.8920898,19.9609375 17.3236084,19.9609375 C17.755127,19.9609375 18.1048584,19.6112061 18.1048584,19.1796875 L18.1048584,18.7272644 C19.1795349,18.5771179 19.9806213,17.6931763 19.9806213,16.5917969 L19.9806213,16.3999939 C19.9806213,15.8096313 19.7496033,15.2581787 19.3299866,14.8472595 C18.9161682,14.4419861 18.3653259,14.21875 17.7789307,14.21875 Z\"\r\n id=\"Shape-Copy-9\"\r\n ></path>\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { GtColumnIconEmittedData } from '../../models/anna-generic-data-type.model';\r\nimport { IconToShow } from '../../models/anna-non-editable-gt-models';\r\nimport { AnnaDeletedOrderIconTemplateComponent } from '../anna-deleted-order-icon-template/anna-deleted-order-icon-template.component';\r\nimport { AnnaBuyerApprovalIconTemplateComponent } from '../anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component';\r\nimport { AnnaNotifyIconTemplateComponent } from '../anna-notify-icon-template/anna-notify-icon-template.component';\r\nimport { AnnaRejectedIconTemplateComponent } from '../anna-rejected-icon-template/anna-rejected-icon-template.component';\r\nimport { AnnaLiveIconTemplateComponent } from '../anna-live-icon-template/anna-live-icon-template.component';\r\nimport { AnnaPayForPerformanceIconTemplateComponent } from '../anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component';\r\nimport { NgIf } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-icon-column',\r\n templateUrl: './anna-icon-column.component.html',\r\n styleUrls: ['./anna-icon-column.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n AnnaPayForPerformanceIconTemplateComponent,\r\n AnnaLiveIconTemplateComponent,\r\n AnnaRejectedIconTemplateComponent,\r\n AnnaNotifyIconTemplateComponent,\r\n AnnaBuyerApprovalIconTemplateComponent,\r\n AnnaDeletedOrderIconTemplateComponent,\r\n ],\r\n})\r\nexport class AnnaIconColumnComponent implements OnInit {\r\n @Input() componentName: string;\r\n @Input() iconToShow: IconToShow;\r\n // @Input() objectKey: string;\r\n @Input() dataObject: any;\r\n PfpIconActiveColor = '#9B1B93';\r\n PfpIconDisableColor = 'rgba(189,189,189,0.5)';\r\n @Output() onColumnIconClicked = new EventEmitter<GtColumnIconEmittedData>();\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n svgIconClicked(rowData: any, key: string) {\r\n this.onColumnIconClicked.emit({ data: rowData, key: key });\r\n }\r\n}\r\n","<span\r\n *ngIf=\"iconToShow == 'PAY_FOR_PERFORMANCE_ACTIVE'\"\r\n class=\"cursor-not-allowed\"\r\n (click)=\"$event.stopPropagation()\"\r\n>\r\n <anna-pay-for-performance-icon-template\r\n [color]=\"PfpIconActiveColor\"\r\n [width]=\"'15px'\"\r\n [height]=\"'15px'\"\r\n >\r\n </anna-pay-for-performance-icon-template>\r\n</span>\r\n<span\r\n *ngIf=\"iconToShow == 'PAY_FOR_PERFORMANCE'\"\r\n (click)=\"svgIconClicked(dataObject, 'payForPerformance')\"\r\n>\r\n <anna-pay-for-performance-icon-template\r\n [color]=\"PfpIconDisableColor\"\r\n [width]=\"'15px'\"\r\n [height]=\"'15px'\"\r\n >\r\n </anna-pay-for-performance-icon-template>\r\n</span>\r\n\r\n<anna-live-icon-template *ngIf=\"iconToShow == 'LIVE'\"></anna-live-icon-template>\r\n\r\n<anna-rejected-icon-template *ngIf=\"iconToShow == 'REJECTED'\"></anna-rejected-icon-template>\r\n<anna-notify-icon-template *ngIf=\"iconToShow == 'NOTIFY'\"></anna-notify-icon-template>\r\n<anna-buyer-approval-icon-template *ngIf=\"iconToShow == 'AWAITING_APPROVAL'\"></anna-buyer-approval-icon-template>\r\n<anna-deleted-order-icon-template *ngIf=\"iconToShow == 'DELETED_ORDER'\"></anna-deleted-order-icon-template>\r\n\r\n<i\r\n class=\"mdi mdi-alert\"\r\n *ngIf=\"iconToShow == 'NEED_SELLER_CONFIRMATION'\"\r\n></i>\r\n<i\r\n class=\"mdi mdi-alert\"\r\n *ngIf=\"iconToShow == 'NEED_BUYER_CONFIRMATION'\"\r\n></i>\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[showEllipsisTextOnHover]',\r\n standalone: true,\r\n})\r\nexport class showEllipsisTextOnHoverDirective {\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n let domElement = this.elementRef.nativeElement;\r\n if (domElement.offsetWidth < domElement.scrollWidth || this.checkPositionsInDecimals(domElement)) {\r\n domElement.title = domElement.textContent == '' ? domElement.value : domElement.textContent;\r\n } else if (domElement.title) domElement.removeAttribute('title');\r\n }\r\n\r\n checkPositionsInDecimals(domElement: Element): boolean {\r\n // if we don't have any children element Then we can't calculate and compare anything so we are returning false from here\r\n if (!domElement.children || (domElement.children && domElement.children.length == 0)) return false;\r\n\r\n let elementRect = domElement.getBoundingClientRect();\r\n let childRect = domElement.children[0].getBoundingClientRect();\r\n\r\n let paddingOnRight = window.getComputedStyle(domElement).paddingRight;\r\n let padding = +(paddingOnRight.endsWith('px') ? paddingOnRight.slice(0, -2) : paddingOnRight);\r\n\r\n // If overflow happens then Child element's right side position will be greater than container element's right side position.\r\n return childRect.right + padding > elementRect.right;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { memoize } from 'lodash-es';\r\n\r\n@Pipe({\r\n name: 'AnnaConvertZeroOrNullOrUndefined',\r\n standalone: true,\r\n})\r\nexport class AnnaConvertZeroOrNullOrUndefinedPipe implements PipeTransform {\r\n transformer = memoize(this.replace, (...args) => this.replace(args[0], args[1]));\r\n\r\n transform(value: any, convertTo: any): number | string {\r\n return this.transformer(value, convertTo);\r\n }\r\n\r\n replace(value: any, convertTo: any): number | string {\r\n if (value === 'undefined' || value === null || value === '' || Number(value) === 0) {\r\n return convertTo;\r\n }\r\n return value;\r\n }\r\n}\r\n","// Angular import statements\r\nimport { Injectable } from '@angular/core';\r\nimport { NgbDate } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n// Third party import statements\r\nimport dayjs from 'dayjs';\r\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\r\n\r\n// User defined import statements\r\nexport type NgbDateType = { year: number; month: number; day: number };\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AnnaDateTimeFormatService {\r\n constructor() {\r\n dayjs.extend(customParseFormat);\r\n }\r\n\r\n convertToNgbDateStandardFormat(date: any): NgbDateType | NgbDate {\r\n return {\r\n year: parseInt(dayjs(date, 'MM/DD/YYYY').format('YYYY')),\r\n month: parseInt(dayjs(date, 'MM/DD/YYYY').format('M')),\r\n day: parseInt(dayjs(date, 'MM/DD/YYYY').format('D')),\r\n };\r\n }\r\n\r\n convertToNgbDate(date: any, parseFormat: any): NgbDateType | NgbDate {\r\n return {\r\n year: parseInt(dayjs(date, parseFormat).format('YYYY')),\r\n month: parseInt(dayjs(date, parseFormat).format('M')),\r\n day: parseInt(dayjs(date, parseFormat).format('D')),\r\n };\r\n }\r\n\r\n public static formatToTwelveHrs(time: any, callRemoveZero: boolean) {\r\n if (time.endsWith('A') || time.endsWith('P')) {\r\n time = time.substring(0, time.length - 1);\r\n }\r\n let tmp = time.split(':');\r\n let formattedTime = [];\r\n if (+tmp[0] > 12) {\r\n formattedTime[0] = (+tmp[0] - 12).toString();\r\n if (+tmp[0] == 24) formattedTime[2] = 'AM';\r\n else formattedTime[2] = 'PM';\r\n } else if (tmp[0] == '12') {\r\n formattedTime[0] = tmp[0];\r\n formattedTime[2] = 'PM';\r\n } else if (tmp[0] == '00') {\r\n formattedTime[0] = '12';\r\n formattedTime[2] = 'AM';\r\n } else {\r\n formattedTime[0] = tmp[0];\r\n formattedTime[2] = 'AM';\r\n }\r\n formattedTime[1] = tmp[1];\r\n if (callRemoveZero) formattedTime = AnnaDateTimeFormatService.removeZero(formattedTime);\r\n return formattedTime;\r\n }\r\n\r\n convertTotwentyFourHrsFormat(time: any, callAddZero: any) {\r\n let tmp = time.split(/[ :]+/);\r\n let formattedTime = [];\r\n if (tmp[0] != '12' && tmp[2] == 'PM') {\r\n formattedTime[0] = (+tmp[0] + 12).toString();\r\n } else if (tmp[0] == '12' && tmp[2] == 'AM') {\r\n formattedTime[0] = '00';\r\n } else formattedTime[0] = tmp[0].toString();\r\n formattedTime[1] = tmp[1].toString();\r\n if (callAddZero) formattedTime = this.addZero(formattedTime);\r\n return formattedTime;\r\n }\r\n\r\n public static removeZero(time: any) {\r\n let removedZero;\r\n let formattedTime = time;\r\n if (\r\n time[0] == '01' ||\r\n time[0] == '02' ||\r\n time[0] == '03' ||\r\n time[0] == '04' ||\r\n time[0] == '05' ||\r\n time[0] == '06' ||\r\n time[0] == '07' ||\r\n time[0] == '08' ||\r\n time[0] == '09'\r\n ) {\r\n removedZero = time[0].toString();\r\n formattedTime[0] = removedZero.charAt(1);\r\n formattedTime[1] = time[1];\r\n formattedTime[2] = time[2];\r\n }\r\n return formattedTime;\r\n }\r\n\r\n addZero(time: any) {\r\n let addedZero;\r\n let formattedTime = time;\r\n if (time[1] == '0') time[1] = '0' + time[1];\r\n if (\r\n time[0] == '0' ||\r\n time[0] == '1' ||\r\n time[0] == '2' ||\r\n time[0] == '3' ||\r\n time[0] == '4' ||\r\n time[0] == '5' ||\r\n time[0] == '6' ||\r\n time[0] == '7' ||\r\n time[0] == '8' ||\r\n time[0] == '9'\r\n ) {\r\n addedZero = '0' + time[0];\r\n formattedTime[0] = addedZero;\r\n formattedTime[1] = time[1];\r\n }\r\n return formattedTime;\r\n }\r\n\r\n sortByTimeAscending(a: any, b: any) {\r\n let format = 'MM/DD/YYYY HH:mm:ss';\r\n a = dayjs('01/01/2001 ' + a, format);\r\n b = dayjs('01/01/2001 ' + b, format);\r\n\r\n let results;\r\n\r\n results = a.get('hour') > b.get('hour') ? 1 : a.get('hour') < b.get('hour') ? -1 : 0;\r\n\r\n if (results === 0) results = a.get('minute') > b.get('minute') ? 1 : a.get('minute') < b.get('minute') ? -1 : 0;\r\n\r\n if (results === 0) results = a.get('second') > b.get('second') ? 1 : a.get('second') < b.get('second') ? -1 : 0;\r\n\r\n return results;\r\n }\r\n\r\n sortByTimeDescending(a: any, b: any) {\r\n let format = 'MM/DD/YYYY HH:mm:ss';\r\n a = dayjs('01/01/2001 ' + a, format);\r\n b = dayjs('01/01/2001 ' + b, format);\r\n\r\n let results;\r\n\r\n results = a.get('hour') < b.get('hour') ? 1 : a.get('hour') > b.get('hour') ? -1 : 0;\r\n\r\n if (results === 0) results = a.get('minute') < b.get('minute') ? 1 : a.get('minute') > b.get('minute') ? -1 : 0;\r\n\r\n if (results === 0) results = a.get('second') < b.get('second') ? 1 : a.get('second') > b.get('second') ? -1 : 0;\r\n\r\n return results;\r\n }\r\n\r\n convertNgbDateToMoment(ngbDate: NgbDate | NgbDateType): string {\r\n let formatType = 'MM/DD/YYYY';\r\n let converted = null;\r\n if (ngbDate && ngbDate.month && ngbDate.day && ngbDate.year) {\r\n converted = ngbDate.month + '/' + ngbDate.day + '/' + ngbDate.year;\r\n converted = dayjs(converted).format(formatType);\r\n }\r\n return converted;\r\n }\r\n\r\n compareDate(a: string, b: string, isAsc: boolean) {\r\n return isAsc ? dayjs(a).diff(b) : dayjs(b).diff(a);\r\n }\r\n\r\n public static formatTwentyFourHourTimeToHHMMAFormat(value: any, date?: string): string {\r\n value = dayjs(date ? date : '01/01/2000 ' + value).format('MM/DD/YYYY HH:mm:ss');\r\n return value[14] == '0' && value[15] == '0'\r\n ? dayjs(value, ['MM/DD/YYYY HH:mm:ss']).format('hA').slice(0, -1)\r\n : dayjs(value, ['MM/DD/YYYY HH:mm:ss']).format('h:mmA').slice(0, -1);\r\n }\r\n\r\n public static formatTwelveHourTimeToHHMMAFormat(timeValue: any, date?: string): string {\r\n timeValue = dayjs(date ? date : '01/01/2000 ' + timeValue).format('MM/DD/YYYY HH:mm:ss');\r\n // check if min==00\r\n return timeValue[14] == '0' && timeValue[15] == '0'\r\n ? dayjs(timeValue, ['MM/DD/YYYY HH:mm:ss']).format('hA').slice(0, -1)\r\n : dayjs(timeValue, ['MM/DD/YYYY HH:mm:ss']).format('h:mmA').slice(0, -1);\r\n }\r\n\r\n formatDateAndHHMMATimeToStandardFormat(dateAndTime: any) {\r\n let standardFormat, date, time;\r\n if (dateAndTime.includes('|')) {\r\n date = dateAndTime.slice(0, dateAndTime.indexOf('|'));\r\n time = dateAndTime.slice(dateAndTime.indexOf('|') + 1, dateAndTime.length).trim();\r\n\r\n time = time.slice(0, 2) + ':' + time.slice(2, 4) + ' ' + time.slice(4, 5);\r\n time = time + 'M';\r\n standardFormat = date + time;\r\n } else {\r\n standardFormat = dateAndTime + ' 00:00 AM';\r\n }\r\n return dayjs(standardFormat).format('MM/DD/YYYY hh:mm A');\r\n }\r\n\r\n compare(a: number | string, b: number | string, isAsc: boolean) {\r\n if (typeof a == 'string' && typeof b == 'string') {\r\n a = a == '-' ? '0' : a.toLowerCase();\r\n b = b == '-' ? '0' : b.toLowerCase();\r\n }\r\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\r\n }\r\n\r\n sortDataByBroadcastTimeAsc(firstParamTime: string, secondParamTime: string, broadcastTime: string) {\r\n let format = 'HH:mm:ss';\r\n\r\n let a = dayjs(firstParamTime, format);\r\n let b = dayjs(secondParamTime, format);\r\n\r\n let broadcastdayjsDateTime = dayjs(broadcastTime, 'HH:mm:ss');\r\n\r\n a = a.isBefore(broadcastdayjsDateTime) ? a.add(1, 'd') : a;\r\n b = b.isBefore(broadcastdayjsDateTime) ? b.add(1, 'd') : b;\r\n\r\n let result = a.isBefore(b) ? -1 : a.isAfter(b) ? 1 : 0;\r\n return result;\r\n }\r\n\r\n convertNgbDateToMomentInSpecificFormat(ngbDate: NgbDateType, format: string) {\r\n let converted = null;\r\n\r\n if (ngbDate && ngbDate.month && ngbDate.day && ngbDate.year) {\r\n converted = ngbDate.month + '/' + ngbDate.day + '/' + ngbDate.year;\r\n converted = dayjs(converted).format(format);\r\n }\r\n\r\n return converted;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n IAngular2MultiSelectSettings,\r\n INgxAsideSettings,\r\n INgbDatePickerSettings,\r\n INgSelectSettings,\r\n INgxInfiniteScrollSettings,\r\n INgxSkeletonLoaderSettings,\r\n IRadioButtonComponentConfig,\r\n IConfirmationPopupConfig,\r\n IWeekCalendar,\r\n ICustomSingleSelect,\r\n ICustomMultiSelect,\r\n} from '../models/anna-global-dropdown-config.model';\r\nimport { IGtHeaderConfig, IGtGeneralConfig } from '../models/anna-non-editable-gt-models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AnnaGlobalConfigService {\r\n readonly defaultAngular2MultiSelectSettings: IAngular2MultiSelectSettings;\r\n readonly defaultNgxAsideSettings: INgxAsideSettings;\r\n readonly defaultNgbDatePickerSettings: INgbDatePickerSettings;\r\n readonly defaultNgSelectSettings: INgSelectSettings;\r\n readonly defaultNgxInfiniteScrollSettings: INgxInfiniteScrollSettings;\r\n readonly defaultNgxSkeletonLoaderSettings: INgxSkeletonLoaderSettings;\r\n readonly defaultRadioButtonsComponentConfig: IRadioButtonComponentConfig;\r\n readonly defaultConfirmationPopupConfig: IConfirmationPopupConfig;\r\n readonly defaultWeekCalendarConfig: IWeekCalendar;\r\n readonly defaultGtHeaderConfig: IGtHeaderConfig;\r\n readonly defaultGtGeneralConfig: IGtGeneralConfig;\r\n readonly defaultSingleSelectConfig: ICustomSingleSelect;\r\n readonly defaultMultiSelectConfig: ICustomMultiSelect;\r\n\r\n /*\r\n Initializing all default settings\r\n */\r\n constructor() {\r\n this.defaultAngular2MultiSelectSettings = {\r\n text: 'Select option',\r\n selectAllText: 'Select All',\r\n unSelectAllText: 'UnSelect All',\r\n badgeShowLimit: 1,\r\n singleSelection: false,\r\n classes: 'filter-dropdowns',\r\n enableSearchFilter: true,\r\n enableCheckAll: true,\r\n autoPosition: false,\r\n disabled: false,\r\n position: 'bottom',\r\n lazyLoading: false,\r\n showCheckbox: true,\r\n maxHeight: 300,\r\n enableFilterSelectAll: true,\r\n };\r\n\r\n this.defaultNgxAsideSettings = {\r\n title: '\"Filters\"',\r\n cancelButtonTitle: '\"Cancel\"',\r\n submitButtonTitle: '\"Apply\"',\r\n closeOnEscape: false,\r\n showOverlay: false,\r\n showDefaultFooter: false,\r\n showDefaultHeader: false,\r\n };\r\n\r\n this.defaultNgbDatePickerSettings = {\r\n autoClose: false,\r\n placeholder: 'mm-dd-yyyy',\r\n displayMonths: 1,\r\n firstDayOfWeek: 1,\r\n showWeekNumbers: false,\r\n readonly: true,\r\n };\r\n\r\n this.defaultNgSelectSettings = {\r\n allowClear: false,\r\n placeholder: 'Select',\r\n };\r\n\r\n this.defaultNgxInfiniteScrollSettings = {\r\n infiniteScrollDistance: 1,\r\n infiniteScrollUpDistance: 2,\r\n infiniteScrollThrottle: 300,\r\n scrollWindow: false,\r\n };\r\n\r\n this.defaultNgxSkeletonLoaderSettings = {\r\n numberOfSkeletonRows: Array(6).fill(0),\r\n };\r\n\r\n this.defaultRadioButtonsComponentConfig = {\r\n heading: 'Select Option',\r\n radioButtons: [\r\n {\r\n value: 'Yes',\r\n isDisabled: false,\r\n label: 'Yes',\r\n class: '',\r\n },\r\n {\r\n value: 'No',\r\n isDisabled: false,\r\n label: 'No',\r\n class: '',\r\n },\r\n ],\r\n };\r\n\r\n this.defaultConfirmationPopupConfig = {\r\n showCancelButton: true,\r\n title: 'Are you sure ?',\r\n showConfirmButton: true,\r\n cancelButtonLabel: 'No',\r\n confirmButtonLabel: 'Yes',\r\n showCloseIcon: true,\r\n backdrop: 'static',\r\n windowClass: '',\r\n size: 'sm',\r\n keyboard: false,\r\n };\r\n\r\n this.defaultWeekCalendarConfig = {\r\n firstDayOfWeek: 1,\r\n showWeekNumbers: true,\r\n dateFormatToDisplay: 'd MMM y',\r\n dateFormatForRequest: 'y-MM-dd',\r\n maxWeeksToShowWithRemainingCount: 2,\r\n numberOfMonthsToEnableInPast: 1,\r\n selectMultipleWeeks: false,\r\n customClass: '',\r\n emitMultipleWeekObjects: true,\r\n maxWeeksToSelect: 0,\r\n showAsDropdown: true,\r\n selectCurrentWeek: true,\r\n };\r\n\r\n this.defaultGtHeaderConfig = {\r\n iconColumn: false,\r\n checkboxColumn: false,\r\n lastColumnKeys: [],\r\n };\r\n\r\n this.defaultGtGeneralConfig = {\r\n component: '',\r\n totalRow: false,\r\n isHeaderChecked: false,\r\n disableHeaderCheckbox: false,\r\n verticalScrollOffsetForFilterTooltip: 0,\r\n isGrouped: false,\r\n showAllColumnFilter: true,\r\n bufferSize: 20,\r\n page: '',\r\n };\r\n\r\n this.defaultSingleSelectConfig = {\r\n showSearchBar: false,\r\n placeholder: 'Select',\r\n classes: '',\r\n position: 'BOTTOM',\r\n maxHeightOfList: 200,\r\n };\r\n\r\n this.defaultMultiSelectConfig = {\r\n ...this.defaultSingleSelectConfig,\r\n ...{ showErrorWhenNoOptionSelected: true },\r\n };\r\n }\r\n}\r\n","// Angular import statements\r\nimport { DatePipe, NgIf, NgClass } from '@angular/common';\r\nimport { AfterViewInit, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\n\r\n// Third party import statements\r\nimport {\r\n NgbCalendar,\r\n NgbDate,\r\n NgbDatepickerConfig,\r\n NgbDateStruct,\r\n NgbInputDatepicker,\r\n NgbDatepicker,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport dayjs from 'dayjs';\r\nimport { WeekObject } from '../../../anna-core-shared-lib/models/anna-generic-data-type.model';\r\nimport { IWeekCalendar } from '../../../anna-core-shared-lib/models/anna-global-dropdown-config.model';\r\nimport { AnnaDateTimeFormatService } from '../../../anna-core-shared-lib/services/anna-date-time-format.service';\r\nimport { AnnaGlobalConfigService } from '../../../anna-core-shared-lib/services/anna-global-config.service';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n// User defined import statements\r\n\r\n@Component({\r\n selector: 'anna-core-week-calendar-filter-lib',\r\n templateUrl: './anna-week-calendar-filter.component.html',\r\n styleUrls: ['./anna-week-calendar-filter.component.scss'],\r\n standalone: true,\r\n imports: [NgIf, FormsModule, NgbInputDatepicker, NgClass, NgbDatepicker],\r\n})\r\nexport class AnnaWeekCalendarComponent implements OnInit, OnChanges, AfterViewInit {\r\n fromDate: NgbDate | null;\r\n hoveredDate: NgbDate | null = null;\r\n toDate: NgbDate | null = null;\r\n today: NgbDate;\r\n\r\n model: NgbDateStruct;\r\n\r\n weekNumbers: string[] = [];\r\n pipe: DatePipe;\r\n dateToDisplay: string = '';\r\n weekObjects: WeekObject[];\r\n multiSelectDropdownOpen: boolean = false;\r\n datepicker: NgbInputDatepicker;\r\n private formatter: any;\r\n public formattedStartDate: string;\r\n public formattedEndDate: string;\r\n private calendarMap = new Map();\r\n private flag1: boolean;\r\n private flag2: boolean;\r\n @Input('from-date') selectedFromDate: NgbDateStruct;\r\n @Input('to-date') selectedEndDate: NgbDateStruct;\r\n @Input('disabled-dates') disabledDates: NgbDate[] = [];\r\n @Input() maxDate: any;\r\n @Input() minDate: any;\r\n\r\n disabledFunc: any;\r\n state: any;\r\n\r\n //Setting the default values;\r\n private _defaultValues: IWeekCalendar;\r\n\r\n @Input('week-calendar-config') config: IWeekCalendar;\r\n @Output('apply') applyWeekCalendarChanges = new EventEmitter();\r\n @Output('toggle-calendar') calendarToggled = new EventEmitter();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n //if some values are not sent, setting the default values\r\n this._defaultValues = this.globalConfigService.defaultWeekCalendarConfig;\r\n this.config = { ...this._defaultValues, ...this.config };\r\n\r\n if (this.config.selectCurrentWeek) {\r\n this.initializeWeekData();\r\n this.fromDate && this.selectWeek(this.fromDate);\r\n }\r\n\r\n this.formatter = this.formattedDates();\r\n\r\n if (this.selectedFromDate && this.selectedEndDate && this.config) {\r\n // this.selectWeek(this.fromDate);\r\n this.fromDate = NgbDate.from(this.selectedFromDate);\r\n this.toDate = NgbDate.from(this.selectedEndDate);\r\n this.weekNumberGenerator();\r\n this.displayToUI();\r\n this.setCalendarMap();\r\n }\r\n\r\n if (this.disabledDates.length > 0) {\r\n this.disabledFunc = (date: NgbDate, current: { month: number }) => {\r\n return this.checkIfDateIsDisabled(date);\r\n };\r\n }\r\n }\r\n\r\n constructor(\r\n private calendar: NgbCalendar,\r\n private datePickerConfig: NgbDatepickerConfig,\r\n private annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n private globalConfigService: AnnaGlobalConfigService,\r\n ) {}\r\n\r\n getWeekNumber(week: any, firstDayOfWeek: any) {\r\n const weekStartDate = dayjs(convertNgbDateToMoment(week[0]), 'MM/DD/YYYY');\r\n const weekYear = weekStartDate.year();\r\n const yearStartDate = dayjs(`01/01/${weekYear}`, 'MM/DD/YYYY');\r\n const weekDay = yearStartDate.day();\r\n\r\n const noOfDays = weekStartDate.diff(yearStartDate, 'd') + 1;\r\n\r\n function convertNgbDateToMoment(ngbDate: NgbDate): string {\r\n let formatType = 'MM/DD/YYYY';\r\n let converted = null;\r\n if (ngbDate && ngbDate.month && ngbDate.day && ngbDate.year) {\r\n converted = ngbDate.month + '/' + ngbDate.day + '/' + ngbDate.year;\r\n converted = dayjs(converted).format(formatType);\r\n }\r\n return converted;\r\n }\r\n\r\n function checkIfYearIsBroadcastLeapYear() {\r\n let isLeapYear = (weekYear % 4 == 0 && weekYear % 100 != 0) || weekYear % 400 == 0;\r\n return (isLeapYear && (weekDay == 0 || weekDay == 6)) || (!isLeapYear && weekDay == 0);\r\n }\r\n\r\n const isLeapYear = checkIfYearIsBroadcastLeapYear();\r\n const divider = isLeapYear ? 53 : 52;\r\n const adder = isLeapYear ? 2 : 1;\r\n\r\n let broadcastNumberOfDays = weekDay + noOfDays;\r\n let broadcastWeekNumber =\r\n broadcastNumberOfDays % 7 > 0 ? broadcastNumberOfDays / 7 + adder : broadcastNumberOfDays / 7;\r\n\r\n if (Math.floor(broadcastWeekNumber % divider) === 0) {\r\n return divider;\r\n }\r\n return Math.floor(broadcastWeekNumber % divider);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // CHANGES@ANNALIB Changed this.\r\n // this.calendar[\"__proto__\"].getWeekNumber = this.getWeekNumber;\r\n Object.setPrototypeOf(this.calendar, { getWeekNumber: this.getWeekNumber });\r\n }\r\n\r\n ngOnInit(): void {\r\n // this.selectWeek(this.fromDate);\r\n this.setCalendarMap();\r\n }\r\n\r\n initializeWeekData() {\r\n this.weekObjects = [];\r\n\r\n this.fromDate = this.calendar.getToday();\r\n this.today = this.calendar.getToday();\r\n\r\n let backDatedPeriod = JSON.parse(localStorage.getItem('userDetails') || '{}').locking_period_days;\r\n if (backDatedPeriod < 0) {\r\n let date: NgbDate = this.calendar.getPrev(this.calendar.getToday(), 'd', Math.abs(backDatedPeriod));\r\n this.today = NgbDate.from(date);\r\n this.fromDate = NgbDate.from(date);\r\n }\r\n\r\n // Disable months before numberOfMonthsToEnable\r\n this.datePickerConfig.markDisabled = (date: NgbDateStruct) => {\r\n let previousMonth = this.calendar.getPrev(this.today, 'm', this.config.numberOfMonthsToEnableInPast);\r\n let previousDay = this.calendar.getPrev(previousMonth, 'd', 1);\r\n return !NgbDate.from(previousDay).before(date);\r\n };\r\n this.formatter = this.formattedDates();\r\n this.flag1 = false;\r\n this.flag2 = false;\r\n }\r\n\r\n selectWeek(date: NgbDate): void {\r\n const dateObject = new Date(date.year, date.month - 1, date.day);\r\n let constructDate = this.buildDate(dateObject);\r\n\r\n if (!this.config.selectMultipleWeeks) {\r\n //Single week selection\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n this.weekNumberGenerator();\r\n } else {\r\n if (date.before(this.fromDate)) {\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n if (this.flag1) {\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n }\r\n this.flag1 = !this.flag1;\r\n } else if (date.after(this.toDate)) {\r\n if (this.flag2) {\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n //this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n }\r\n this.flag2 = !this.flag2;\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n } else {\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n }\r\n\r\n if (this.disabledDates.length > 0) {\r\n let dayjsStartDate = dayjs(\r\n this.annaDateTimeFormatService.convertNgbDateToMoment(this.fromDate),\r\n 'MM/DD/YYYY',\r\n );\r\n let dayjsEndDate = dayjs(\r\n this.annaDateTimeFormatService.convertNgbDateToMoment(this.toDate),\r\n 'MM/DD/YYYY',\r\n );\r\n let ngbDate;\r\n while (!dayjsStartDate.isSame(dayjsEndDate)) {\r\n ngbDate = this.annaDateTimeFormatService.convertToNgbDate(dayjsStartDate, 'MM/DD/YYYY');\r\n if (this.checkIfDateIsDisabled(ngbDate)) {\r\n break;\r\n }\r\n dayjsStartDate.add(1, 'd');\r\n }\r\n let newDateObject = new Date(ngbDate.year, ngbDate.month - 1, ngbDate.day - 1);\r\n let constructDate = this.buildDate(newDateObject);\r\n this.toDate = this.constructEndDate(newDateObject)(constructDate);\r\n }\r\n\r\n this.weekNumberGenerator();\r\n }\r\n\r\n if (!this.config.showAsDropdown) {\r\n this.applyChanges();\r\n }\r\n }\r\n\r\n weekNumberGenerator(): void {\r\n let dates = [];\r\n let week = [];\r\n\r\n let startDate = NgbDate.from(this.fromDate);\r\n let endDate = NgbDate.from(this.toDate);\r\n\r\n week.push(startDate);\r\n while (endDate != null && !startDate.equals(endDate)) {\r\n let date = this.calendar.getNext(startDate, 'd', 1);\r\n startDate = date;\r\n week.push(date);\r\n\r\n // Collect all days in week to calculate the week number\r\n if (week.length == 7) {\r\n dates.push(week);\r\n week = [];\r\n }\r\n }\r\n if ((this.config.maxWeeksToSelect ?? 0) > 0 && dates.length > (this.config.maxWeeksToSelect ?? 0)) {\r\n dates.splice(this.config.maxWeeksToSelect ?? 0, dates.length - (this.config.maxWeeksToSelect ?? 0));\r\n }\r\n this.selectedDates(dates);\r\n\r\n this.weekNumbers = [];\r\n this.weekObjects = [];\r\n if (dates.length > 0) {\r\n for (let date of dates) {\r\n this.weekNumbers.push(' Week ' + this.calendar.getWeekNumber(date, this.config.firstDayOfWeek));\r\n let dates = this.formatter(date[0], date[6]);\r\n let dateObjects = { startDate: dates.formattedStartDate, endDate: dates.formattedEndDate };\r\n this.weekObjects.push(dateObjects);\r\n }\r\n }\r\n this.displayToUI();\r\n }\r\n\r\n selectedDates(dates: any) {\r\n this.fromDate = dates[0][0];\r\n this.toDate = dates[dates.length - 1][6];\r\n }\r\n\r\n formattedDates() {\r\n let pipe = new DatePipe('en-US');\r\n let thisObj = this;\r\n return function (fromDate: NgbDate, toDate: NgbDate) {\r\n let fromDateObject = new Date(fromDate.year, fromDate.month - 1, fromDate.day);\r\n let toDateObject = new Date(toDate.year, toDate.month - 1, toDate.day);\r\n thisObj.formattedStartDate = pipe.transform(fromDateObject, thisObj.config.dateFormatForRequest);\r\n thisObj.formattedEndDate = pipe.transform(toDateObject, thisObj.config.dateFormatForRequest);\r\n\r\n thisObj.dateToDisplay =\r\n pipe.transform(fromDateObject, thisObj.config.dateFormatToDisplay) +\r\n ' to ' +\r\n pipe.transform(toDateObject, thisObj.config.dateFormatToDisplay);\r\n return thisObj;\r\n };\r\n }\r\n\r\n displayToUI() {\r\n if (!this.config.selectMultipleWeeks && this.fromDate && this.toDate) {\r\n // Display for only Single Week\r\n this.formatter(this.fromDate, this.toDate);\r\n } else {\r\n // Display for Multiple Weeks\r\n if (this.weekNumbers.length > (this.config.maxWeeksToShowWithRemainingCount ?? 0)) {\r\n let weekDisplay = [];\r\n for (let i = 0; i < (this.config.maxWeeksToShowWithRemainingCount ?? 0); i++) {\r\n weekDisplay.push(this.weekNumbers.shift());\r\n }\r\n let remainingWeeks = this.weekNumbers.length;\r\n this.weekNumbers = [];\r\n this.weekNumbers.push(weekDisplay + ' +' + remainingWeeks);\r\n }\r\n }\r\n }\r\n\r\n constructStartDate(date: Date) {\r\n let firstDayOfWeek = this.config.firstDayOfWeek;\r\n return function (constructDate: any) {\r\n let startDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) - date.getDay() : -6;\r\n return constructDate(startDay);\r\n };\r\n }\r\n\r\n constructEndDate(date: Date) {\r\n let firstDayOfWeek = this.config.firstDayOfWeek;\r\n return function (constructDate: any) {\r\n let endDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) + 6 - date.getDay() : 0;\r\n return constructDate(endDay);\r\n };\r\n }\r\n\r\n buildDate(date: Date) {\r\n return function (number: number): NgbDate | null {\r\n let day = date.getDate() + number;\r\n const dateObject = new Date(date.getFullYear(), date.getMonth(), day);\r\n\r\n let ngbDateObject = {} as NgbDate;\r\n ngbDateObject.day = day;\r\n\r\n if (ngbDateObject.day > 31 || ngbDateObject.day < 1) {\r\n ngbDateObject.day = dateObject.getDate();\r\n }\r\n\r\n ngbDateObject.month = dateObject.getMonth() + 1;\r\n ngbDateObject.year = dateObject.getFullYear();\r\n return NgbDate.from(ngbDateObject);\r\n };\r\n }\r\n\r\n isHovered(date: NgbDate): boolean | null {\r\n return (\r\n this.fromDate &&\r\n !this.toDate &&\r\n this.hoveredDate &&\r\n date.after(this.fromDate) &&\r\n date.before(this.hoveredDate)\r\n );\r\n }\r\n\r\n isInside(date: NgbDate): boolean | null {\r\n return this.toDate && date.after(this.fromDate) && date.before(this.toDate);\r\n }\r\n\r\n isRange(date: NgbDate): boolean | null {\r\n return (\r\n date.equals(this.fromDate) ||\r\n (this.toDate && date.equals(this.toDate)) ||\r\n this.isInside(date) ||\r\n this.isHovered(date)\r\n );\r\n }\r\n\r\n previousWeek(): void {\r\n if (this.fromDate) {\r\n this.toDate = this.calendar.getPrev(this.fromDate, 'd', 1);\r\n this.fromDate = this.calendar.getPrev(this.fromDate, 'd', this.calendar.getDaysPerWeek());\r\n }\r\n this.weekNumberGenerator();\r\n this.applyChanges();\r\n }\r\n\r\n nextWeek(): void {\r\n if (this.fromDate) {\r\n this.fromDate = this.calendar.getNext(this.fromDate, 'd', this.calendar.getDaysPerWeek());\r\n this.toDate = this.calendar.getNext(this.fromDate, 'd', this.calendar.getDaysPerWeek() - 1);\r\n }\r\n this.weekNumberGenerator();\r\n this.applyChanges();\r\n }\r\n\r\n setCalendarMap() {\r\n let dateObj = { fromDate: this.fromDate, toDate: this.toDate };\r\n this.calendarMap.set('oldDates', dateObj);\r\n }\r\n\r\n applyChanges() {\r\n this.multiSelectDropdownOpen = false;\r\n if (!this.config.emitMultipleWeekObjects) {\r\n let dates = {} as WeekObject;\r\n let formattedDates = this.formatter(this.fromDate, this.toDate);\r\n dates.startDate = formattedDates.formattedStartDate;\r\n dates.endDate = formattedDates.formattedEndDate;\r\n this.applyWeekCalendarChanges.emit(dates);\r\n } else {\r\n this.applyWeekCalendarChanges.emit(this.weekObjects);\r\n }\r\n this.setCalendarMap();\r\n }\r\n\r\n isFocused(value: any) {\r\n this.calendarToggled.emit(value);\r\n }\r\n\r\n isDropdownOpenedForCalendar(datepicker: NgbInputDatepicker) {\r\n this.datepicker = datepicker;\r\n if (this.datepicker.isOpen()) {\r\n this.revertDates();\r\n this.datepicker.close();\r\n this.multiSelectDropdownOpen = false;\r\n } else {\r\n this.datepicker.open();\r\n this.multiSelectDropdownOpen = true;\r\n }\r\n }\r\n\r\n revertDates() {\r\n this.multiSelectDropdownOpen = false;\r\n if (this.calendarMap.get('oldDates')) {\r\n let dateObj = this.calendarMap.get('oldDates');\r\n this.fromDate = dateObj.fromDate;\r\n this.toDate = dateObj.toDate;\r\n this.weekNumberGenerator();\r\n this.displayToUI();\r\n }\r\n }\r\n\r\n checkIfDateIsDisabled(date: any): boolean {\r\n const validatorFunc = (ngbDate: NgbDate) =>\r\n ngbDate.year === date.year && ngbDate.month === date.month && ngbDate.day === date.day;\r\n return this.disabledDates.some(validatorFunc);\r\n }\r\n\r\n closeDatepicker(datepickerRef: any) {\r\n datepickerRef.close();\r\n }\r\n}\r\n","<form\r\n class=\"form-inline\"\r\n *ngIf=\"config.showAsDropdown\"\r\n>\r\n <div class=\"form-group hidden\">\r\n <div class=\"input-group\">\r\n <input\r\n name=\"datepicker\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"false\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n (closed)=\"isFocused(false)\"\r\n [displayMonths]=\"1\"\r\n [dayTemplate]=\"t\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n tabindex=\"-1\"\r\n style=\"display: none\"\r\n [footerTemplate]=\"footerTemplate\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!--Single week select-->\r\n <div *ngIf=\"!config.selectMultipleWeeks\">\r\n <span style=\"position: relative; left: 30px; font-size: 12px\"> {{ weekNumbers }} </span>\r\n <div class=\"form-group\">\r\n <div class=\"input-group\">\r\n <div class=\"single-week\">\r\n <div class=\"left\">\r\n <span\r\n class=\"material-icons next-round-btn\"\r\n (click)=\"previousWeek()\"\r\n >\r\n navigate_next\r\n </span>\r\n </div>\r\n <input\r\n #dpFromDate\r\n class=\"form-control\"\r\n placeholder=\"Select Weeks\"\r\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\r\n name=\"dpFromDate\"\r\n [value]=\"dateToDisplay\"\r\n [readonly]=\"true\"\r\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n />\r\n <i\r\n class=\"mdi mdi-menu-down\"\r\n *ngIf=\"!datepicker.isOpen()\"\r\n (click)=\"datepicker.open()\"\r\n ></i>\r\n <i\r\n class=\"mdi mdi-menu-up\"\r\n *ngIf=\"datepicker.isOpen()\"\r\n (click)=\"isDropdownOpenedForCalendar(datepicker)\"\r\n ></i>\r\n <div class=\"right\">\r\n <span\r\n class=\"material-icons round-btn\"\r\n (click)=\"nextWeek()\"\r\n >\r\n navigate_next\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Multiple week select-->\r\n <div\r\n class=\"form-group\"\r\n *ngIf=\"config.selectMultipleWeeks\"\r\n >\r\n <div class=\"input-group\">\r\n <div class=\"multiple-weeks\">\r\n <input\r\n #dpFromDate\r\n class=\"form-control\"\r\n placeholder=\"Select Weeks\"\r\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\r\n name=\"dpFromDate\"\r\n [readonly]=\"true\"\r\n [value]=\"weekNumbers\"\r\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n />\r\n <i\r\n *ngIf=\"!multiSelectDropdownOpen\"\r\n class=\"mdi mdi-menu-down multiselect-input-arrow\"\r\n ></i>\r\n <i\r\n *ngIf=\"multiSelectDropdownOpen\"\r\n class=\"mdi mdi-menu-up multiselect-input-arrow\"\r\n ></i>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ngb-datepicker\r\n #weekPicker\r\n *ngIf=\"!config.showAsDropdown\"\r\n [displayMonths]=\"1\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n [dayTemplate]=\"t\"\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n [markDisabled]=\"disabledFunc\"\r\n>\r\n</ngb-datepicker>\r\n\r\n<ng-template #footerTemplate>\r\n <hr class=\"my-0\" />\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"applyChanges(); closeDatepicker(datepicker)\"\r\n style=\"background-color: #268bff; color: #ffffff\"\r\n >\r\n Apply\r\n </button>\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"revertDates(); closeDatepicker(datepicker)\"\r\n style=\"background-color: rgba(38, 139, 255, 0.12); color: #268bff\"\r\n >\r\n Cancel\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template\r\n #t\r\n let-date\r\n let-focused=\"focused\"\r\n let-disabled=\"disabled\"\r\n>\r\n <span\r\n class=\"custom-day\"\r\n [class.focused]=\"focused\"\r\n [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\"\r\n [class.disabled]=\"disabled\"\r\n (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\"\r\n >\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n<!--\r\n\r\n<hr>\r\n\r\n<pre>From: {{ fromDate | json }} </pre>\r\n<pre>To: {{ toDate | json }} </pre>\r\n<pre>weekNumbers: {{ weekNumbers | json }} </pre>\r\n\r\n-->\r\n","// Angular import statements\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\n\r\n//Third party import statements\r\nimport { NgbDate, NgbDateStruct, NgbInputDatepicker } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AnnaDateTimeFormatService } from '../../../anna-core-shared-lib/services/anna-date-time-format.service';\r\nimport dayjs from 'dayjs';\r\nimport { Placement } from '@ng-bootstrap/ng-bootstrap/util/positioning';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgIf, NgClass, TitleCasePipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'anna-core-calendar-filter-lib',\r\n templateUrl: './anna-calendar-filter.component.html',\r\n styleUrls: ['./anna-calendar-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [NgIf, FormsModule, NgbInputDatepicker, NgClass, TitleCasePipe],\r\n})\r\nexport class AnnaCalendarFilterComponent implements OnInit, OnChanges {\r\n @Input() maxDate: any;\r\n @Input() autoClose: 'inside' | 'outside' | boolean = 'outside';\r\n @Input() label: string;\r\n @Input() minDate: any;\r\n @Input() showLabel: boolean = true;\r\n @Input() dateFormat: string = 'MM/DD/YYYY';\r\n @Input() placeholder: string = 'MM/DD/YYYY';\r\n @Input() disabled: boolean = false;\r\n @Output() selectedDate = new EventEmitter();\r\n @Input() selectedFromDate: any;\r\n @Input() selectedToDate: any;\r\n @Input() disableFunction: any;\r\n @Input() showFooterTemplate: boolean = false;\r\n @Input() placement: Placement[] = ['top-start', 'left', 'bottom-start', 'auto'];\r\n\r\n @Output() apply = new EventEmitter();\r\n @Output() cancel = new EventEmitter();\r\n fromDate: any;\r\n toDate: any;\r\n hoveredDate: any;\r\n disableApplyBtn: boolean = false;\r\n dateToBeShownInInput: string = '';\r\n\r\n constructor(private annaTimeService: AnnaDateTimeFormatService) {\r\n this.disableFunction = (date: NgbDateStruct) => {\r\n return false;\r\n };\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.setStartAndEndDate();\r\n this.setInputText();\r\n }\r\n\r\n setStartAndEndDate() {\r\n this.fromDate = this.selectedFromDate;\r\n this.toDate = this.selectedToDate;\r\n }\r\n\r\n ngOnInit() {\r\n this.disableApplyBtn = true;\r\n // this.fromDate = this.selectedFromDate;\r\n // this.toDate = this.selectedToDate;\r\n // this.setInputText();\r\n }\r\n\r\n onDateSelection(date: NgbDate) {\r\n if (!this.fromDate && !this.toDate) {\r\n this.fromDate = date;\r\n } else if (this.fromDate && !this.toDate && (date.after(this.fromDate) || date.equals(this.fromDate))) {\r\n let isDisabledDatePresent = this.checkIfDisabledDateSelectedInRange(date);\r\n this.toDate = isDisabledDatePresent ? null : date;\r\n } else {\r\n this.toDate = null;\r\n this.fromDate = date;\r\n }\r\n this.selectedDate.emit({ fromDate: this.fromDate, toDate: this.toDate });\r\n this.disableCalendarApplyBtn();\r\n this.setInputText();\r\n }\r\n\r\n checkIfDisabledDateSelectedInRange(date: NgbDate) {\r\n let dayJsStartDate = dayjs(\r\n this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.fromDate, this.dateFormat),\r\n this.dateFormat,\r\n );\r\n let dayJsEndDate = dayjs(\r\n this.annaTimeService.convertNgbDateToMomentInSpecificFormat(date, this.dateFormat),\r\n this.dateFormat,\r\n );\r\n\r\n while (!dayJsStartDate.isSame(dayJsEndDate)) {\r\n if (\r\n this.disableFunction(\r\n this.annaTimeService.convertToNgbDate(dayJsStartDate.format(this.dateFormat), this.dateFormat),\r\n )\r\n ) {\r\n return true;\r\n } else {\r\n dayJsStartDate = dayJsStartDate.add(1, 'day');\r\n }\r\n }\r\n }\r\n\r\n isHovered(date: NgbDate) {\r\n return (\r\n this.fromDate &&\r\n !this.toDate &&\r\n this.hoveredDate &&\r\n date.after(this.fromDate) &&\r\n date.before(this.hoveredDate)\r\n );\r\n }\r\n\r\n isInside(date: NgbDate) {\r\n return this.toDate && date.after(this.fromDate) && date.before(this.toDate);\r\n }\r\n\r\n isRange(date: NgbDate) {\r\n return (\r\n date.equals(this.fromDate) ||\r\n (this.toDate && date.equals(this.toDate)) ||\r\n this.isInside(date) ||\r\n this.isHovered(date)\r\n );\r\n }\r\n\r\n cancelSelection() {\r\n this.cancel.emit();\r\n }\r\n\r\n applySelection() {\r\n if (this.fromDate && this.toDate) {\r\n let dateObj = { fromDate: this.fromDate, toDate: this.toDate };\r\n this.apply.emit(dateObj);\r\n }\r\n }\r\n\r\n disableCalendarApplyBtn() {\r\n this.disableApplyBtn = !(this.fromDate && this.toDate);\r\n }\r\n\r\n setInputText() {\r\n if (this.fromDate && this.toDate) {\r\n this.dateToBeShownInInput = `${this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.fromDate, this.dateFormat)} - ${this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.toDate, this.dateFormat)}`;\r\n } else if (this.fromDate) {\r\n this.dateToBeShownInInput = `${this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.fromDate, this.dateFormat)}`;\r\n } else {\r\n this.dateToBeShownInInput = null;\r\n }\r\n }\r\n\r\n datepickerClosed() {\r\n //Required for Pending ec order\r\n if (this.showFooterTemplate) {\r\n this.selectedFromDate = this.fromDate = null;\r\n this.selectedToDate = this.toDate = null;\r\n this.setInputText();\r\n this.disableApplyBtn = true;\r\n }\r\n }\r\n}\r\n","<!-- container=\"body\"\r\ndatepickerClass = \"calendar-filter\" -->\r\n\r\n<p\r\n class=\"calendar-label\"\r\n *ngIf=\"showLabel\"\r\n>\r\n {{ label | titlecase }}\r\n</p>\r\n<form>\r\n <div\r\n class=\"padding-class\"\r\n style=\"padding: 0 12px\"\r\n >\r\n <div class=\"dp-hidden position-absolute\">\r\n <div class=\"input-group\">\r\n <input\r\n name=\"datepicker\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n (dateSelect)=\"onDateSelection($event)\"\r\n [displayMonths]=\"1\"\r\n [dayTemplate]=\"t\"\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n [autoClose]=\"autoClose\"\r\n [startDate]=\"fromDate\"\r\n [markDisabled]=\"disableFunction\"\r\n [footerTemplate]=\"footerTemplate\"\r\n navigation=\"select\"\r\n (closed)=\"datepickerClosed()\"\r\n [placement]=\"placement\"\r\n />\r\n <ng-template\r\n #t\r\n let-date\r\n let-focused=\"focused\"\r\n >\r\n <span\r\n class=\"custom-day\"\r\n [class.focused]=\"focused\"\r\n [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\"\r\n (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\"\r\n >\r\n {{ date.day }}\r\n </span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"input-group\">\r\n <input\r\n #dpFromDate\r\n id=\"datepicker-input\"\r\n class=\"form-control\"\r\n [placeholder]=\"placeholder\"\r\n readonly\r\n name=\"dpFromDate\"\r\n [value]=\"dateToBeShownInInput\"\r\n />\r\n <button\r\n class=\"icon-container\"\r\n (click)=\"datepicker.toggle()\"\r\n type=\"button\"\r\n [disabled]=\"disabled\"\r\n >\r\n <i\r\n class=\"mdi mdi-calendar-range\"\r\n *ngIf=\"!datepicker.isOpen()\"\r\n ></i>\r\n <i\r\n class=\"mdi mdi-check\"\r\n *ngIf=\"datepicker.isOpen()\"\r\n ></i>\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #footerTemplate>\r\n <div\r\n class=\"buttons-container\"\r\n *ngIf=\"showFooterTemplate\"\r\n >\r\n <button\r\n class=\"button\"\r\n (click)=\"cancelSelection(); datepicker.close()\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n class=\"button\"\r\n [ngClass]=\"{ disabled: disableApplyBtn }\"\r\n [disabled]=\"disableApplyBtn\"\r\n (click)=\"applySelection(); datepicker.close()\"\r\n >\r\n Apply\r\n </button>\r\n </div>\r\n</ng-template>\r\n","export class TooltipModel {\r\n isSelected: boolean;\r\n label: string;\r\n id: number;\r\n value: string;\r\n\r\n constructor(obj: string, id: number) {\r\n this.label = obj != null ? obj.toString() : '-';\r\n this.value = obj;\r\n this.isSelected = false;\r\n this.id = id;\r\n }\r\n}\r\n\r\nexport class tooltipModelForColumnLevelFiltering {\r\n isHidden;\r\n isSelected: boolean;\r\n data: string;\r\n constructor(data: string) {\r\n this.data = data;\r\n this.isSelected = true;\r\n this.isHidden = false;\r\n }\r\n}\r\n\r\nexport class radioButtonModel {\r\n key: string;\r\n label: string;\r\n isSortRequired: boolean;\r\n isFilterRequired: boolean;\r\n\r\n constructor(key: string, value: string, sort: boolean, filter: boolean) {\r\n this.key = key;\r\n this.label = value;\r\n this.isSortRequired = sort;\r\n this.isFilterRequired = filter;\r\n }\r\n}\r\n\r\nexport enum AllSelectedStatus {\r\n none = 0,\r\n allSelected = 1,\r\n fewSelected = 2,\r\n}\r\n","// Angular import statements\r\nimport { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { SortType } from '../models/anna-sort.model';\r\nimport { AnnaDateTimeFormatService } from './anna-date-time-format.service';\r\nimport { cloneDeep } from 'lodash-es';\r\n\r\n// Third party import statements\r\n\r\n// User defined import statements\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AnnaSortService {\r\n columnSortState: Map<string, SortType>;\r\n noSortingAppliedData: any[];\r\n updateSortTypeSubject: Subject<string> = new Subject();\r\n\r\n dateSet = new Set([\r\n 'endDate',\r\n 'startDate',\r\n 'end_date',\r\n 'start_date',\r\n 'flightStartDate',\r\n 'flightEndDate',\r\n 'date',\r\n 'GeneratedOn',\r\n ]);\r\n\r\n constructor(private annaDateTimeFormatService: AnnaDateTimeFormatService) {}\r\n\r\n sortDataForComponentOtherThanLurAndCsrPage(isAsc: boolean, data: any[], key: string) {\r\n let param1: string | number;\r\n let param2: string | number;\r\n\r\n if (this.dateSet.has(key)) {\r\n data.sort((a, b) => {\r\n return this.annaDateTimeFormatService.compareDate(a[key], b[key], isAsc);\r\n });\r\n } else if (key === 'AirDateAndTime' || key === 'Date') {\r\n data.sort((a, b) => {\r\n let first, second;\r\n if (a[key] == '-') {\r\n return 1;\r\n }\r\n\r\n if (b[key] == '-') {\r\n return -1;\r\n } else {\r\n first = this.annaDateTimeFormatService.formatDateAndHHMMATimeToStandardFormat(a[key]);\r\n second = this.annaDateTimeFormatService.formatDateAndHHMMATimeToStandardFormat(b[key]);\r\n let compareDate = this.annaDateTimeFormatService.compareDate(first, second, isAsc);\r\n return compareDate;\r\n }\r\n });\r\n } else if (key == 'startEndTime' || key == 'TimeBand') {\r\n data.sort((a, b) => {\r\n if (isAsc) {\r\n param1 = a[key][1];\r\n param2 = b[key][1];\r\n } else {\r\n param1 = a[key][2];\r\n param2 = b[key][2];\r\n }\r\n let val = isAsc\r\n ? this.annaDateTimeFormatService.sortByTimeAscending(param1, param2)\r\n : this.annaDateTimeFormatService.sortByTimeDescending(param1, param2);\r\n return val;\r\n });\r\n } else {\r\n let dataWithoutEmptyOrHyphenValues = data.filter((n) => n[key] != '-');\r\n let rowsWithHyphenOrZeroValues = data.filter((n) => n[key] == '-');\r\n\r\n dataWithoutEmptyOrHyphenValues.sort((a, b) => {\r\n param1 = a[key];\r\n param2 = b[key];\r\n\r\n if (param1 !== param2) {\r\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n data = isAsc\r\n ? [...rowsWithHyphenOrZeroValues, ...dataWithoutEmptyOrHyphenValues]\r\n : [...dataWithoutEmptyOrHyphenValues, ...rowsWithHyphenOrZeroValues];\r\n }\r\n\r\n return data;\r\n }\r\n\r\n sortEnterEditLurAndCsrPage(isAsc: boolean, data: any[], key: any) {\r\n let param1: string | number;\r\n let param2: string | number;\r\n\r\n if (key.includes('_')) {\r\n let keys = key.split('_');\r\n let weekNumber = keys[0];\r\n let sortKey = keys[1];\r\n\r\n if (keys.length > 2) {\r\n sortKey = keys[2] == true ? 'BookedAurIncludingNoChargeSpots' : 'BookedAurExcludingNoChargeSpots';\r\n }\r\n\r\n data.sort((a, b) => {\r\n let aInventoryCodeWeekWiseKey = Object.keys(a.WeekWiseInventoryCodeData).filter(\r\n (key) => key.split('_')[1] == weekNumber,\r\n );\r\n let bInventoryCodeWeekWiseKey = Object.keys(b.WeekWiseInventoryCodeData).filter(\r\n (key) => key.split('_')[1] == weekNumber,\r\n );\r\n\r\n param1 = null;\r\n param2 = null;\r\n if (aInventoryCodeWeekWiseKey.length > 0) {\r\n param1 = a.WeekWiseInventoryCodeData[aInventoryCodeWeekWiseKey[0]][sortKey][1];\r\n }\r\n\r\n if (bInventoryCodeWeekWiseKey.length > 0) {\r\n param2 = b.WeekWiseInventoryCodeData[bInventoryCodeWeekWiseKey[0]][sortKey][1];\r\n }\r\n\r\n if (param1 !== param2) {\r\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\r\n }\r\n\r\n return 0;\r\n });\r\n } else if (key == 'TimeBand') {\r\n data.sort((a, b) => {\r\n if (isAsc) {\r\n param1 = a[key][1];\r\n param2 = b[key][1];\r\n } else {\r\n param1 = a[key][2];\r\n param2 = b[key][2];\r\n }\r\n let val = isAsc\r\n ? this.annaDateTimeFormatService.sortByTimeAscending(param1, param2)\r\n : this.annaDateTimeFormatService.sortByTimeDescending(param1, param2);\r\n return val;\r\n });\r\n } else {\r\n data.sort((a, b) => {\r\n param1 = a[key];\r\n param2 = b[key];\r\n\r\n if (param1 !== param2) {\r\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\r\n }\r\n\r\n return 0;\r\n });\r\n }\r\n\r\n return data;\r\n }\r\n\r\n checkIfSortingIsApplied(tableData: any[], isLurAndCsrComponent: boolean) {\r\n for (let [key, value] of this.columnSortState.entries()) {\r\n if (value == 'ASC') {\r\n tableData = cloneDeep(\r\n isLurAndCsrComponent\r\n ? this.sortEnterEditLurAndCsrPage(true, tableData, key)\r\n : this.sortDataForComponentOtherThanLurAndCsrPage(true, tableData, key),\r\n );\r\n } else if (value == 'DESC') {\r\n tableData = cloneDeep(\r\n isLurAndCsrComponent\r\n ? this.sortEnterEditLurAndCsrPage(false, tableData, key)\r\n : this.sortDataForComponentOtherThanLurAndCsrPage(false, tableData, key),\r\n );\r\n }\r\n }\r\n\r\n return tableData;\r\n }\r\n\r\n applySorting(key: string, tempSortOrder: SortType, tableData: any[], isLurAndCsrComponent: boolean) {\r\n if (tempSortOrder == 'ASC') {\r\n tableData = cloneDeep(\r\n isLurAndCsrComponent\r\n ? this.sortEnterEditLurAndCsrPage(true, tableData, key)\r\n : this.sortDataForComponentOtherThanLurAndCsrPage(true, tableData, key),\r\n );\r\n } else if (tempSortOrder == 'DESC') {\r\n tableData = cloneDeep(\r\n isLurAndCsrComponent\r\n ? this.sortEnterEditLurAndCsrPage(false, tableData, key)\r\n : this.sortDataForComponentOtherThanLurAndCsrPage(false, tableData, key),\r\n );\r\n } else if (tempSortOrder == 'DEFAULT') {\r\n tableData = cloneDeep(this.noSortingAppliedData);\r\n }\r\n\r\n return tableData;\r\n }\r\n}\r\n","export type SortType = 'DEFAULT' | 'ASC' | 'DESC';\r\n\r\nexport interface SortOption {\r\n sortType: SortType;\r\n isOptionActive: boolean;\r\n text: string;\r\n}\r\n\r\nexport enum SortTypeEnum {\r\n DEFAULT = 'DEFAULT',\r\n ASC = 'ASC',\r\n DESC = 'DESC',\r\n}\r\n","// Angular import statements\r\nimport { Options } from '@angular-slider/ngx-slider';\r\nimport { Injectable } from '@angular/core';\r\n\r\n// Third party import statements\r\nimport { min, max, map, sortBy, uniq, cloneDeep, isEqual } from 'lodash-es';\r\nimport dayjs from 'dayjs';\r\nimport CustomParseFormat from 'dayjs/plugin/customParseFormat';\r\nimport minMax from 'dayjs/plugin/minMax';\r\nimport isBetween from 'dayjs/plugin/isBetween';\r\nimport { SortType, SortTypeEnum } from '../models/anna-sort.model';\r\n\r\n// User defined import statements\r\nimport { AnnaDateTimeFormatService, NgbDateType } from './anna-date-time-format.service';\r\nimport { AnnaSortService } from './anna-sort.service';\r\nimport { TooltipModel } from '../models/anna-tooltip.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AnnaFilterService {\r\n tooltipMap = new Map();\r\n tooltipSelectedMap = new Map();\r\n initialValueMap: Map<string, any>;\r\n translateFunc: string;\r\n selectedRadio: string;\r\n subRadioButton: string;\r\n\r\n calendarSet: Set<string>;\r\n sliderSet: Set<string>;\r\n timeSet: Set<string>;\r\n\r\n includeMultiTime: boolean;\r\n includeZeroTime: boolean;\r\n includeTimeRange: boolean;\r\n\r\n appliedFiltersArray: string[] = [];\r\n flightDateRange: { minSelectedDate: any; maxSelectedDate: any };\r\n sliderData: { min: any; max: any };\r\n ngxSliderObj: Options;\r\n sliderCurrencySet = new Set([\r\n 'booked',\r\n 'cpp',\r\n 'cpm',\r\n 'rcvPreempt',\r\n 'osPreempt',\r\n 'postedAdu',\r\n 'scheduledAdu',\r\n 'audienceDeficit',\r\n 'Rate',\r\n 'userADUs',\r\n 'buyerChanges',\r\n 'userChanges',\r\n 'userMG',\r\n 'udValue',\r\n 'odValue',\r\n ]);\r\n\r\n public static bufferSize = 20;\r\n isFilterSortActive: any = {};\r\n resetFilterSortActiveStatus: boolean = true;\r\n\r\n constructor(\r\n private dateTimeFormatService: AnnaDateTimeFormatService,\r\n private annaSortService: AnnaSortService,\r\n ) {\r\n dayjs.extend(minMax);\r\n dayjs.extend(isBetween);\r\n dayjs.extend(CustomParseFormat);\r\n const sliderArr = [\r\n 'rcvPreempt',\r\n 'osPreempt',\r\n 'rcvUnderDly',\r\n 'postedAudPercent',\r\n 'booked',\r\n 'spots',\r\n 'grp',\r\n 'cpp',\r\n 'imps',\r\n 'cpm',\r\n 'osUnderDly',\r\n 'totalWeeks',\r\n 'WeekNumber',\r\n 'Rate',\r\n 'OrderedRatingsOrImpressions',\r\n 'PostedRatingsOrImpressions',\r\n ,\r\n 'postedAudPercent',\r\n 'postedAdu',\r\n 'scheduledAdu',\r\n 'audienceDeficit',\r\n 'offeredMGs',\r\n 'outstandingPE',\r\n 'offeredADUs',\r\n 'udDeficitValue',\r\n 'bookedValue',\r\n 'bookedSpots',\r\n 'userChanges',\r\n 'UDGrp',\r\n 'UDImps',\r\n 'ODGrp',\r\n 'ODImps',\r\n 'udImpsPercent',\r\n 'udGrpPercent',\r\n 'odImpsPercent',\r\n 'odGrpPercent',\r\n 'userADUs',\r\n 'buyerChanges',\r\n 'userChanges',\r\n 'userMG',\r\n 'WeeklyAUR',\r\n 'WeeklyAURatingOrImpressions',\r\n 'MGsValue',\r\n 'ADUsValue',\r\n 'UserCreditedValue',\r\n 'UserUnresolvedValue',\r\n 'BuyerAddedValue',\r\n 'BuyerDeletedValue',\r\n 'BuyerChangesValue',\r\n 'UserChangesValue',\r\n 'BookedGRPOrIMPS',\r\n 'BookedCPPOrCPM',\r\n 'BookedValue',\r\n 'BookedSpots',\r\n 'BookedRate',\r\n 'averageRate',\r\n 'projectedIMPS',\r\n 'projectedRTG',\r\n 'desiredCPM',\r\n 'desiredCPP',\r\n 'inventoryFillPercentageSameWeek',\r\n 'inventoryFillPercentageFinal',\r\n 'inventoryFillPercentageTillDate',\r\n 'dollarRateImpact',\r\n 'dollarIMPSImpact',\r\n 'IMPSImpact',\r\n 'dollarRTGImpact',\r\n 'RTGImpact',\r\n 'BookedRTG',\r\n 'BookedIMPS',\r\n 'AURTG',\r\n 'AURTG',\r\n 'PostedRating',\r\n 'PostedImpressions',\r\n 'NormalizedOrderedRating',\r\n 'NormalizedOrderedImpressions',\r\n 'NormalizedPostedRating',\r\n 'NormalizedPostedImpressions',\r\n 'BookedGRP',\r\n 'BookedIMPSRevTab',\r\n 'BookedCPP',\r\n 'BookedCPM',\r\n 'AUIMPS',\r\n 'bookedAmountValue',\r\n 'equivalizedBookedAmountValue',\r\n 'IMPS',\r\n 'udValue',\r\n 'odValue',\r\n 'ViolatedBookedValue',\r\n 'ViolatedBookedEURValue',\r\n 'ViolatingBookedEURValue',\r\n 'ViolatingBookedValue',\r\n 'Rebate',\r\n 'OtherAvailableSpotsTableWeeklyAUR',\r\n 'parentRowAnnaEstimatesRtg',\r\n 'parentRowPostedRtg',\r\n 'parentRowRollingAverageRtg',\r\n 'parentRowStationEstimatesRtg',\r\n 'parentRowAnnaEstimatesImps',\r\n 'parentRowPostedImps',\r\n 'parentRowRollingAverageImps',\r\n 'parentRowStationEstimatesImps',\r\n 'parentRowAnnaEstimatesShare',\r\n 'parentRowPostedShare',\r\n 'parentRowRollingAverageShare',\r\n 'parentRowAnnaEstimatesPutPer',\r\n 'parentRowPostedPutPer',\r\n 'parentRowRollingAveragePutPer',\r\n 'parentRowAnnaEstimatesPut',\r\n 'parentRowPostedPut',\r\n 'parentRowRollingAveragePut',\r\n 'ProjectedImpressions',\r\n 'ProjectedRtg',\r\n ];\r\n const calendarArr = [\r\n 'period',\r\n 'AirDate',\r\n 'flightStartDate',\r\n 'flightEndDate',\r\n 'date',\r\n 'startDate',\r\n 'endDate',\r\n 'revisionStartDate',\r\n 'GeneratedOn',\r\n 'Week',\r\n 'timeoutDate',\r\n 'ViolatingSpotDate',\r\n 'ViolatedSpotDate',\r\n ];\r\n const timeArr = [\r\n 'StartTimeForFilter',\r\n 'EndTimeForFilter',\r\n 'time',\r\n 'startTimeForFilter',\r\n 'endTimeForFilter',\r\n 'start_time_for_filter',\r\n 'end_time_for_filter',\r\n 'startEndTimeMulti',\r\n 'startEndTime',\r\n 'timeoutTime',\r\n 'OtherAvailableSpotsTableStartTime',\r\n 'OtherAvailableSpotsTableEndTime',\r\n ];\r\n this.sliderSet = new Set(sliderArr);\r\n this.calendarSet = new Set(calendarArr);\r\n this.timeSet = new Set(timeArr);\r\n }\r\n\r\n returnMaxAndMinValue(data: any[], key: string, isMin: boolean) {\r\n data = data.filter((obj) => !['', '-', null].includes(obj[key]));\r\n const values = data.map((x) => x[key]);\r\n let valueToReturn = isMin ? min(values) : max(values);\r\n return valueToReturn;\r\n }\r\n\r\n returnMinAndMaxDate(data: any[], key: string) {\r\n data = data.filter((obj) => !['', '-', null].includes(obj[key]));\r\n let DateArr = data.map((obj) => dayjs(obj[key]));\r\n let minDate = dayjs.min(DateArr);\r\n let maxDate = dayjs.max(DateArr);\r\n\r\n return [minDate, maxDate];\r\n }\r\n\r\n isTooltipActive(header: string[], sortMap: Map<string, SortType>): boolean {\r\n let set: Set<string> = new Set(this.appliedFiltersArray);\r\n let isSortMapForHeader0Active = sortMap.has(header[0]) && sortMap.get(header[0]) != SortTypeEnum.DEFAULT;\r\n let isSortMapForHeader1Active = sortMap.has(header[1]) && sortMap.get(header[1]) != SortTypeEnum.DEFAULT;\r\n\r\n if (header.length == 1) {\r\n return (sortMap.size > 0 && isSortMapForHeader0Active) || set.has(header[0]);\r\n }\r\n\r\n return (\r\n (sortMap.size > 0 && sortMap.has(header[0]) && isSortMapForHeader0Active) ||\r\n (sortMap.size > 0 && sortMap.has(header[1]) && isSortMapForHeader1Active) ||\r\n set.has(header[0]) ||\r\n set.has(header[1])\r\n );\r\n }\r\n\r\n clearColumnFilter() {\r\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n this.tooltipSelectedMap.delete(this.selectedRadio);\r\n let appliedFilterSet: Set<string> = new Set(this.appliedFiltersArray);\r\n appliedFilterSet.delete(this.selectedRadio);\r\n this.appliedFiltersArray = [...appliedFilterSet];\r\n }\r\n\r\n if (this.annaSortService.columnSortState.has(this.selectedRadio)) {\r\n this.annaSortService.columnSortState.delete(this.selectedRadio);\r\n }\r\n }\r\n\r\n setOptionValues(minValue: number, maxValue: number) {\r\n return {\r\n floor: minValue,\r\n ceil: maxValue,\r\n disabled: true,\r\n translate: this.normalTranslateFunction,\r\n };\r\n }\r\n\r\n percentTranslateFunction = (data: number): string => {\r\n if (Math.abs(data) >= 1000) {\r\n let isNegVal = data < 0;\r\n const val = (Math.abs(data) / 1000).toFixed(1) + 'k%';\r\n return isNegVal ? '-' + val : val;\r\n } else {\r\n let isNegVal = data < 0;\r\n let isWholeNum = parseInt(data.toString()) == data;\r\n let val = isWholeNum ? Math.abs(data).toString() : Math.abs(data).toFixed(1);\r\n return isNegVal ? '-' + val + '%' : val + '%';\r\n }\r\n };\r\n\r\n currencyTranslateFunction = (data: number): string => {\r\n if (Math.abs(data) >= 1000) {\r\n let isNegVal = data < 0;\r\n const val = '$' + (Math.abs(data) / 1000).toFixed(1) + 'k';\r\n return isNegVal ? '-' + val : val;\r\n } else {\r\n let isNegVal = data < 0;\r\n let isWholeNum = parseInt(data.toString()) == data;\r\n let val = isWholeNum ? Math.abs(data).toString() : Math.abs(data).toFixed(1);\r\n return isNegVal ? '-$' + val : '$' + val;\r\n }\r\n };\r\n\r\n normalTranslateFunction = (data: number): string => {\r\n if (data >= 1000) {\r\n const val = (data / 1000).toFixed(1) + 'k';\r\n return val;\r\n } else if (data != Math.floor(data)) {\r\n return data.toFixed(1).toString();\r\n }\r\n return data.toString();\r\n };\r\n\r\n findUniqueDatesWithData(data: any[]) {\r\n let uniqueDates = uniq(data.map((u) => u['date']));\r\n let uniqueDatesInNgbDateFormat: NgbDateType[] = [];\r\n uniqueDates.forEach((date: any) => {\r\n uniqueDatesInNgbDateFormat.push(\r\n this.dateTimeFormatService.convertToNgbDateStandardFormat(dayjs(date, 'MM/DD/YY').format('MM/DD/YYYY')),\r\n );\r\n });\r\n return uniqueDatesInNgbDateFormat;\r\n }\r\n\r\n reOrderAppliedFiltersArray(isHierarchialUserFiltered: boolean, date?: any) {\r\n let isFiltered = true;\r\n isFiltered = this.checkIfDataIsFiltered(isFiltered, isHierarchialUserFiltered, date);\r\n this.removeOrChangeLatestFilterIndex(isFiltered);\r\n }\r\n\r\n checkIfDataIsFiltered(isFiltered: boolean, isHierarchialUserFiltered: boolean, date?: any) {\r\n if (this.selectedRadio == 'user' && !this.tooltipMap.has('user')) {\r\n isFiltered = cloneDeep(isHierarchialUserFiltered);\r\n } else if (\r\n this.selectedRadio == 'StartTimeForFilter' ||\r\n this.selectedRadio == 'EndTimeForFilter' ||\r\n this.selectedRadio == 'startTimeForFilter' ||\r\n this.selectedRadio == 'endTimeForFilter' ||\r\n this.selectedRadio == 'time' ||\r\n this.selectedRadio == 'timeoutTime' ||\r\n this.selectedRadio == 'OtherAvailableSpotsTableStartTime' ||\r\n this.selectedRadio == 'OtherAvailableSpotsTableEndTime' ||\r\n this.selectedRadio == 'start_time_for_filter' ||\r\n this.selectedRadio == 'end_time_for_filter' ||\r\n this.selectedRadio == 'startEndTimeMulti'\r\n ) {\r\n isFiltered =\r\n !isEqual(\r\n this.initialValueMap.get(this.selectedRadio),\r\n this.tooltipSelectedMap.get(this.selectedRadio),\r\n ) ||\r\n !this.includeZeroTime ||\r\n !this.includeMultiTime;\r\n } else if (this.selectedRadio == 'startEndTime' || this.selectedRadio == 'TimeBand') {\r\n isFiltered =\r\n !isEqual(\r\n this.initialValueMap.get(this.selectedRadio),\r\n this.tooltipSelectedMap.get(this.selectedRadio),\r\n ) ||\r\n !this.includeZeroTime ||\r\n !this.includeMultiTime;\r\n } else if (this.sliderSet.has(this.selectedRadio)) {\r\n isFiltered =\r\n !isEqual(\r\n this.initialValueMap.get(this.selectedRadio),\r\n this.tooltipSelectedMap.get(this.selectedRadio),\r\n ) && !isEqual(this.tooltipSelectedMap.get(this.selectedRadio), this.sliderData);\r\n if (this.selectedRadio == 'postedAdu' && this.subRadioButton == 'notRequired') {\r\n isFiltered = true;\r\n }\r\n if (!isFiltered && this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n this.tooltipSelectedMap.delete(this.selectedRadio);\r\n }\r\n } else if (\r\n this.selectedRadio == 'startDate' ||\r\n this.selectedRadio == 'endDate' ||\r\n this.selectedRadio == 'period' ||\r\n this.selectedRadio == 'AirDate' ||\r\n this.selectedRadio == 'timeoutDate' ||\r\n this.selectedRadio === 'flightStartDate' ||\r\n this.selectedRadio === 'flightEndDate' ||\r\n this.selectedRadio == 'date' ||\r\n this.selectedRadio == 'revisionStartDate' ||\r\n this.selectedRadio == 'GeneratedOn' ||\r\n this.selectedRadio == 'Week'\r\n ) {\r\n isFiltered =\r\n !isEqual(\r\n this.initialValueMap.get(this.selectedRadio),\r\n this.tooltipSelectedMap.get(this.selectedRadio),\r\n ) && !isEqual(this.tooltipSelectedMap.get(this.selectedRadio), this.flightDateRange);\r\n if (!isFiltered && this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n this.tooltipSelectedMap.delete(this.selectedRadio);\r\n }\r\n } else {\r\n let totalOptionsCount = this.tooltipMap.get(this.selectedRadio).filter((x: any) => !x.isHidden).length;\r\n let selectedOptionsCount = this.tooltipMap\r\n .get(this.selectedRadio)\r\n .filter((x: any) => !x.isHidden && x.isSelected).length;\r\n isFiltered = selectedOptionsCount > 0 && selectedOptionsCount != totalOptionsCount ? true : false;\r\n }\r\n return isFiltered;\r\n }\r\n\r\n removeOrChangeLatestFilterIndex(isFiltered: boolean) {\r\n let set = new Set(this.appliedFiltersArray);\r\n\r\n if (isFiltered && !set.has(this.selectedRadio)) {\r\n set.add(this.selectedRadio);\r\n } else if (isFiltered && set.has(this.selectedRadio)) {\r\n set.delete(this.selectedRadio);\r\n set.add(this.selectedRadio);\r\n } else {\r\n set.delete(this.selectedRadio);\r\n }\r\n this.appliedFiltersArray = [...set];\r\n }\r\n\r\n checkIfSortingIsAppliedThenSortTheData(originalData: any[]) {\r\n if (!this.annaSortService?.columnSortState) return originalData;\r\n for (let [key, value] of this.annaSortService.columnSortState.entries()) {\r\n if (value == 'ASC') {\r\n originalData = cloneDeep(\r\n this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(true, originalData, key),\r\n );\r\n } else if (value == 'DESC') {\r\n originalData = cloneDeep(\r\n this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(false, originalData, key),\r\n );\r\n }\r\n }\r\n return originalData;\r\n }\r\n\r\n filterData(originalData: any[], keyToSkip: string, isLurCsrPage: boolean = false) {\r\n let filteredData = [...originalData];\r\n if (!isLurCsrPage) {\r\n filteredData = this.checkIfSortingIsAppliedThenSortTheData(originalData);\r\n }\r\n this.tooltipSelectedMap.forEach((value, key) => {\r\n if (key != keyToSkip && originalData.length > 0 && Object.keys(originalData[0]).includes(key)) {\r\n if (this.sliderSet.has(key)) {\r\n filteredData = filteredData.filter((obj) => obj[key] >= value.min && obj[key] <= value.max);\r\n } else if (\r\n key === 'startDate' ||\r\n key === 'endDate' ||\r\n key === 'AirDate' ||\r\n key === 'timeoutDate' ||\r\n key === 'flightStartDate' ||\r\n key === 'flightEndDate' ||\r\n key == 'date' ||\r\n key == 'Date' ||\r\n key == 'revisionStartDate' ||\r\n key == 'GeneratedOn' ||\r\n key === 'Week' ||\r\n key === 'ViolatedSpotDate' ||\r\n key === 'ViolatingSpotDate'\r\n ) {\r\n filteredData = filteredData.filter((obj) => this.isObjectInTheRange(obj, value, key));\r\n } else if (key === 'period') {\r\n filteredData = filteredData.filter((obj) => this.getDataInTheDateRange(obj, value, key));\r\n } else if (\r\n key === 'StartTimeForFilter' ||\r\n key === 'EndTimeForFilter' ||\r\n key == 'timeoutTime' ||\r\n key === 'startTimeForFilter' ||\r\n key === 'endTimeForFilter' ||\r\n key === 'OtherAvailableSpotsTableStartTime' ||\r\n key == 'OtherAvailableSpotsTableEndTime' ||\r\n key === 'start_time_for_filter' ||\r\n key === 'end_time_for_filter' ||\r\n key == 'time'\r\n ) {\r\n filteredData = filteredData.filter((obj) => this.returnDataForFromAndToTimeRange(obj, value, key));\r\n } else if (key === 'startEndTimeMulti' || key == 'startEndTime' || key === 'TimeBand') {\r\n filteredData = filteredData.filter((obj) =>\r\n this.returnDataForStartAndEndTimeRange(obj, value, key),\r\n );\r\n } else if (value.length > 0) {\r\n filteredData = filteredData.filter((u) => value.includes(u[key]));\r\n }\r\n }\r\n });\r\n return filteredData;\r\n }\r\n\r\n returnOrdersInTheRange(order: any, range: any, key: any) {\r\n let isDateBetweenTheSelectedRange = dayjs(order[key]).isBetween(range.minSelectedDate, range.maxSelectedDate);\r\n let isDateSameAsTheMinSelectedDate = dayjs(order[key]).isSame(range.minSelectedDate);\r\n let isDateSameAsTheMaxSelectedDate = dayjs(order[key]).isSame(range.maxSelectedDate);\r\n return isDateBetweenTheSelectedRange || isDateSameAsTheMinSelectedDate || isDateSameAsTheMaxSelectedDate;\r\n }\r\n\r\n returnDataForTimeRange(obj: any, selectedData: any) {\r\n let format = 'HH:mm:ss';\r\n let selectedStartDate = dayjs(selectedData.startTime, format);\r\n let selectedEndDate = dayjs(selectedData.endTime, format);\r\n let startTime = dayjs(obj.startTime, format);\r\n let endTime = dayjs(obj.endTime, format);\r\n\r\n let isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedStartDate);\r\n let isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedStartDate, selectedEndDate);\r\n let isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedEndDate);\r\n let isEndTimeBetweenSelectedStartAndEndTime = endTime.isBetween(selectedStartDate, selectedEndDate);\r\n\r\n return (\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeSameAsSelectedEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeSameAsSelectedEndTime)\r\n );\r\n }\r\n\r\n returnDataForFromAndToTimeRange(obj: any, selectedData: any, key: any) {\r\n let format = 'MM/DD/YYYY HH:mm:ss';\r\n let selectedFromTime = dayjs('01/01/2001 ' + selectedData.fromTime, format);\r\n let selectedToTime = dayjs('01/01/2001 ' + selectedData.toTime, format);\r\n let objTime = obj[key];\r\n\r\n if (['', '-', null].includes(objTime)) {\r\n return false;\r\n }\r\n if (selectedData.includeMulti && obj[key] == '<multi>') {\r\n return true;\r\n }\r\n if (!selectedData.includeMulti && obj[key] == '<multi>') {\r\n return false;\r\n }\r\n if (selectedData.includeZero && obj[key] == '0') {\r\n return true;\r\n }\r\n if (!selectedData.includeZero && obj[key] == '0') {\r\n return false;\r\n }\r\n if (!selectedData.includeTimeRange) {\r\n return false;\r\n }\r\n\r\n let dayjsTime = dayjs('01/01/2001 ' + objTime, format);\r\n\r\n let isObjTimeSameAsSelectedFromTime = dayjsTime.isSame(selectedFromTime);\r\n let isObjTimeSameAsSelectedToTime = dayjsTime.isSame(selectedToTime);\r\n let isObjTimeBetweenSelectedFromTimeAndToTime = dayjsTime.isBetween(selectedFromTime, selectedToTime);\r\n\r\n return (\r\n isObjTimeSameAsSelectedFromTime ||\r\n isObjTimeSameAsSelectedToTime ||\r\n isObjTimeBetweenSelectedFromTimeAndToTime\r\n );\r\n }\r\n\r\n returnDataForStartAndEndTimeRange(obj: any, selectedData: any, key: string) {\r\n let format = 'MM/DD/YYYY HH:mm:ss';\r\n let selectedFromTime = dayjs('01/01/2001 ' + selectedData.fromTime, format);\r\n let selectedToTime = dayjs('01/01/2001 ' + selectedData.toTime, format);\r\n\r\n if (selectedData.includeMulti && obj[key][0] == '<multi>') {\r\n return true;\r\n }\r\n\r\n if (!selectedData.includeMulti && obj[key][0] == '<multi>') {\r\n return false;\r\n }\r\n\r\n if (selectedData.includeZero && obj[key][0] == '0') {\r\n return true;\r\n }\r\n\r\n if (!selectedData.includeZero && obj[key][0] == '0') {\r\n return false;\r\n }\r\n\r\n if (!selectedData.includeTimeRange) {\r\n return false;\r\n }\r\n\r\n let startTime = dayjs('01/01/2001 ' + obj[key][1], format);\r\n let endTime = dayjs('01/01/2001 ' + obj[key][2], format);\r\n\r\n let isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedFromTime);\r\n let isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedFromTime, selectedToTime);\r\n let isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedToTime);\r\n let isEndTimeBetweenSelectedStartAndEndTime = endTime.isBetween(selectedFromTime, selectedToTime);\r\n\r\n return (\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeSameAsSelectedEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeSameAsSelectedEndTime)\r\n );\r\n }\r\n\r\n getDataInTheDateRange(obj: any, value: any, key: any) {\r\n let parsingFormat: string;\r\n if (key === 'period') {\r\n parsingFormat = 'YYYY-MM-DD';\r\n\r\n let dayjsStartDate = dayjs(obj.startDate);\r\n let dayjsEndDate = dayjs(obj.endDate);\r\n\r\n let startDateIsBetweenSelDate = dayjsStartDate.isBetween(value.fromDate, value.toDate);\r\n let endDateIsBetweenSelDate = dayjsEndDate.isBetween(value.fromDate, value.toDate);\r\n\r\n let startDateIsSameAsSelStartDate = value.fromDate.isSame(dayjsStartDate);\r\n let endDateIsSameAsSelEndDate = value.toDate.isSame(dayjsEndDate);\r\n\r\n return (\r\n (startDateIsBetweenSelDate || startDateIsSameAsSelStartDate) &&\r\n (endDateIsBetweenSelDate || endDateIsSameAsSelEndDate)\r\n );\r\n } else if (\r\n key === 'AirDate' ||\r\n key === 'flightStartDate' ||\r\n key === 'flightEndDate' ||\r\n key === 'Week' ||\r\n key === 'timeoutDate'\r\n ) {\r\n parsingFormat = 'MM/DD/YYYY';\r\n let dateIsBetweenSelDate = dayjs(obj[key], parsingFormat).isBetween(\r\n value.minSelectedDate,\r\n value.maxSelectedDate,\r\n );\r\n\r\n let dateIsSameAsSelStartDate = dayjs(obj[key], parsingFormat).isSame(value.minSelectedDate);\r\n let dateIsSameAsSelEndDate = dayjs(obj[key], parsingFormat).isSame(value.maxSelectedDate);\r\n\r\n return dateIsBetweenSelDate || dateIsSameAsSelStartDate || dateIsSameAsSelEndDate;\r\n }\r\n }\r\n\r\n public initializeTimeFilterData(clonedData: any[], key = 'startEndTime') {\r\n let startTimeArr = map(clonedData, 'startTime');\r\n let endTimeArr = map(clonedData, 'endTime');\r\n\r\n startTimeArr.sort((a: any, b: any) => {\r\n return this.dateTimeFormatService.sortByTimeAscending(a, b);\r\n });\r\n\r\n endTimeArr.sort((a: any, b: any) => {\r\n return this.dateTimeFormatService.sortByTimeDescending(a, b);\r\n });\r\n\r\n let initialStartEndTime = {\r\n startTime: startTimeArr[0],\r\n endTime: endTimeArr[0],\r\n };\r\n this.initialValueMap.set(key, initialStartEndTime);\r\n }\r\n\r\n returnColumnFilterStatus(data: any[], headerName: string | number) {\r\n if (headerName == 'startEndTime') {\r\n let time = data.map((u) => u[headerName][0]);\r\n let uniqTime = uniq(time);\r\n return uniqTime.length == 0;\r\n }\r\n\r\n return uniq(data.map((u) => u[headerName])).length > 1 ? false : true;\r\n }\r\n\r\n getFilterOptionsData(data: any[], clonedData: any[], key?: string) {\r\n let appliedFilterSet = new Set(this.appliedFiltersArray);\r\n key = key ? key : this.selectedRadio;\r\n if (appliedFilterSet.has(key)) {\r\n return this.filterData(clonedData, key);\r\n } else {\r\n return data;\r\n }\r\n }\r\n\r\n reOrderAppliedFiltersState(clonedData: any[], value: any) {\r\n let isFiltered = true;\r\n isFiltered = this.checkIfFilterIsApplied(clonedData, value);\r\n this.removeOrChangeLatestFilterIndex(isFiltered);\r\n return isFiltered;\r\n }\r\n\r\n checkIfFilterIsApplied(clonedData: any[], value: any) {\r\n let initialValueOfColumn = sortBy(clonedData.map((item) => item[this.selectedRadio]));\r\n let currentValueOfColumn = sortBy(this.applyFilter(clonedData, value).map((item) => item[this.selectedRadio]));\r\n return !isEqual(initialValueOfColumn, currentValueOfColumn);\r\n }\r\n\r\n applyFilter(data: any[], value: any) {\r\n let filteredData = data;\r\n let key = this.selectedRadio;\r\n if (this.sliderSet.has(key)) {\r\n filteredData = filteredData.filter((obj) => obj[key] >= value.min && obj[key] <= value.max);\r\n } else if (\r\n key === 'startDate' ||\r\n key === 'endDate' ||\r\n key === 'AirDate' ||\r\n key === 'timeoutDate' ||\r\n key === 'flightStartDate' ||\r\n key === 'flightEndDate' ||\r\n key == 'date' ||\r\n key == 'Date' ||\r\n key == 'revisionStartDate' ||\r\n key == 'GeneratedOn' ||\r\n key === 'Week' ||\r\n key === 'ViolatedSpotDate' ||\r\n key === 'ViolatingSpotDate'\r\n ) {\r\n filteredData = filteredData.filter((obj) => this.isObjectInTheRange(obj, value, key));\r\n } else if (key === 'period') {\r\n filteredData = filteredData.filter((obj) => this.getDataInTheDateRange(obj, value, key));\r\n } else if (\r\n key === 'StartTimeForFilter' ||\r\n key === 'EndTimeForFilter' ||\r\n key == 'timeoutTime' ||\r\n key === 'startTimeForFilter' ||\r\n key === 'endTimeForFilter' ||\r\n key === 'start_time_for_filter' ||\r\n key === 'end_time_for_filter' ||\r\n key == 'time' ||\r\n key == 'OtherAvailableSpotsTableStartTime' ||\r\n key == 'OtherAvailableSpotsTableEndTime'\r\n ) {\r\n filteredData = filteredData.filter((obj) => this.returnDataForFromAndToTimeRange(obj, value, key));\r\n } else if (key === 'startEndTimeMulti' || key == 'startEndTime' || key === 'TimeBand') {\r\n filteredData = filteredData.filter((obj) => this.returnDataForStartAndEndTimeRange(obj, value, key));\r\n } else if (value.length > 0) {\r\n filteredData = filteredData.filter((u) => value.includes(u[key]));\r\n }\r\n return filteredData;\r\n }\r\n\r\n isObjectInTheRange(obj: any, value: any, key: string) {\r\n let objVal = obj[key];\r\n let dayjsDate = dayjs(objVal);\r\n if (typeof value.fromDate === 'string' && typeof value.toDate === 'string') {\r\n value.fromDate = dayjs(\r\n this.dateTimeFormatService.convertNgbDateToMoment(\r\n this.dateTimeFormatService.convertToNgbDate(value.fromDate, 'DD/MM/YYYY'),\r\n ),\r\n );\r\n value.toDate = dayjs(\r\n this.dateTimeFormatService.convertNgbDateToMoment(\r\n this.dateTimeFormatService.convertToNgbDate(value.toDate, 'DD/MM/YYYY'),\r\n ),\r\n );\r\n }\r\n let isDateSameAsStartOfTheRange = value.fromDate.isSame(objVal);\r\n let isDateSameAsEndOfTheRange = value.toDate.isSame(objVal);\r\n let isDateBetweenTheStartAndEndOfRange = dayjsDate.isBetween(value.fromDate, value.toDate);\r\n return isDateSameAsStartOfTheRange || isDateSameAsEndOfTheRange || isDateBetweenTheStartAndEndOfRange;\r\n }\r\n\r\n updateStateOfTheCurrentFilterTab(sortMap: Map<string, SortType>) {\r\n let activeKey = this.selectedRadio;\r\n let keyArr: string[] = [];\r\n Object.keys(this.isFilterSortActive).forEach((key) => {\r\n if (key.includes(activeKey)) {\r\n keyArr = key.split(',');\r\n this.isFilterSortActive[key] = this.isTooltipActive(keyArr, sortMap);\r\n }\r\n });\r\n }\r\n\r\n updateStateOfAllTheKeys(sortMap: Map<string, SortType>) {\r\n Object.keys(this.isFilterSortActive).forEach((key) => {\r\n let keyArr = key.split(',');\r\n this.isFilterSortActive[key] = this.isTooltipActive(keyArr, sortMap);\r\n });\r\n }\r\n\r\n incrementHour(value: any) {\r\n if (value == '') {\r\n value = 1;\r\n } else if (parseInt(value) < 12) {\r\n value = parseInt(value) + 1;\r\n } else {\r\n value = 1;\r\n }\r\n return value;\r\n }\r\n\r\n decrementHour(value: any) {\r\n if (value == '') {\r\n value = 12;\r\n } else if (parseInt(value) > 1) {\r\n value = parseInt(value) - 1;\r\n } else {\r\n value = 12;\r\n }\r\n return value;\r\n }\r\n\r\n incrementMinute(value: any) {\r\n // increment to nearest proper interval(15,30,45)\r\n let min = parseInt(value);\r\n if (min <= 14) {\r\n value = '15';\r\n } else if (min >= 15 && min <= 29) {\r\n value = '30';\r\n } else if (min >= 30 && min <= 44) {\r\n value = '45';\r\n } else if (min >= 45) {\r\n value = '00';\r\n }\r\n return value;\r\n }\r\n\r\n decrementMinute(value: any) {\r\n let min = parseInt(value);\r\n if (min > 0 && min <= 15) {\r\n value = '00';\r\n } else if (min >= 16 && min <= 30) {\r\n value = '15';\r\n } else if (min >= 31 && min <= 45) {\r\n value = '30';\r\n } else if (min > 45 || min == 0) {\r\n value = '45';\r\n }\r\n return value;\r\n }\r\n\r\n //========================================Checkbox method=============================================================//\r\n\r\n disableActiveFilterClearButton() {\r\n let selectedFilterSet = new Set(this.appliedFiltersArray);\r\n\r\n let currentColumnSortFilter = this.getColumnSortStateForSelectedRadio();\r\n let isSortPresent =\r\n this.annaSortService.columnSortState &&\r\n this.annaSortService.columnSortState.size > 0 &&\r\n currentColumnSortFilter != SortTypeEnum.DEFAULT;\r\n\r\n return !(selectedFilterSet.has(this.selectedRadio) || isSortPresent);\r\n }\r\n\r\n getColumnSortStateForSelectedRadio(): string {\r\n let currentColumnSortFilter =\r\n this.annaSortService.columnSortState &&\r\n this.annaSortService.columnSortState.has(this.selectedRadio) &&\r\n this.annaSortService.columnSortState.get(this.selectedRadio);\r\n currentColumnSortFilter = currentColumnSortFilter ? currentColumnSortFilter : SortTypeEnum.DEFAULT;\r\n return currentColumnSortFilter;\r\n }\r\n\r\n createListForCheckboxFilter(header: string, optionData: any[]) {\r\n let tooltipOptions = this.getTooltipModelFromOptionData(optionData, header);\r\n\r\n this.selectUnselectListCheckbox(tooltipOptions, header);\r\n this.formatNullOptionToSpecifiedString(tooltipOptions, '-');\r\n\r\n return tooltipOptions;\r\n }\r\n\r\n getTooltipModelFromOptionData(optionData: any[], header: string) {\r\n let uniqOptionData = uniq(optionData.map((item) => item[header]));\r\n return uniqOptionData.map((item, index) => new TooltipModel(item, index + 1));\r\n }\r\n\r\n selectUnselectListCheckbox(tooltipOptions: TooltipModel[], header: string) {\r\n if (this.tooltipSelectedMap.has(header)) {\r\n let selectedValueSet = new Set(this.tooltipSelectedMap.get(header));\r\n tooltipOptions.forEach((item) => (item.isSelected = selectedValueSet.has(item.value) ? true : false));\r\n } else {\r\n tooltipOptions.forEach((item) => (item.isSelected = true));\r\n }\r\n }\r\n\r\n formatNullOptionToSpecifiedString(tooltipOptions: TooltipModel[], formattedString: string) {\r\n let index = tooltipOptions.findIndex((item) => item.value == null);\r\n\r\n if (index != -1) {\r\n tooltipOptions[index].label = formattedString;\r\n }\r\n }\r\n\r\n getClonedTooltipAndTooltipOption(tooltipOptions: TooltipModel[], sortByString: string) {\r\n let [selectedItems, unselectedItems] = this.getSelectedAndUnselectedItems(tooltipOptions);\r\n let sortedSelectedItems = sortBy(selectedItems, sortByString);\r\n let sortedUnselectedItems = sortBy(unselectedItems, sortByString);\r\n\r\n let clonedTooltipOptions = [...sortedSelectedItems, ...sortedUnselectedItems];\r\n let updatedTooltipOptions = cloneDeep(clonedTooltipOptions);\r\n\r\n return [clonedTooltipOptions, updatedTooltipOptions, selectedItems, unselectedItems];\r\n }\r\n\r\n getHeightOfCheckboxTooltipFilter(dataLength: number, margin: number) {\r\n return dataLength > 6 ? 200 : 26.03 * dataLength + margin * dataLength + margin;\r\n }\r\n\r\n unCheckAllCheckbox(tooltipOptions: TooltipModel[], clonedTooltipOptions: TooltipModel[]) {\r\n tooltipOptions.forEach((item) => {\r\n item.isSelected = false;\r\n let index = clonedTooltipOptions.findIndex((opt) => opt.id == item.id);\r\n clonedTooltipOptions[index].isSelected = false;\r\n });\r\n }\r\n\r\n selectAllCheckbox(tooltipOptions: TooltipModel[], clonedTooltipOptions: TooltipModel[]) {\r\n tooltipOptions.forEach((item) => {\r\n item.isSelected = true;\r\n let index = clonedTooltipOptions.findIndex((opt) => opt.id == item.id);\r\n clonedTooltipOptions[index].isSelected = true;\r\n });\r\n }\r\n\r\n selectUnselectCheckbox(data: TooltipModel, clonedTooltipOptions: TooltipModel[]) {\r\n data.isSelected = !data.isSelected;\r\n let index = clonedTooltipOptions.findIndex((item) => item.id == data.id);\r\n clonedTooltipOptions[index].isSelected = data.isSelected;\r\n }\r\n\r\n getSelectedAndUnselectedItems(tooltipOptions: TooltipModel[]) {\r\n let selectedItems = tooltipOptions.filter((item) => item.isSelected);\r\n let unselectedItems = tooltipOptions.filter((item) => !item.isSelected);\r\n\r\n return [selectedItems, unselectedItems];\r\n }\r\n\r\n getCheckboxPreviousSelectedValue(clonedTableData: any[]) {\r\n let previousSelectedValue = [];\r\n\r\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n previousSelectedValue = this.tooltipSelectedMap.get(this.selectedRadio);\r\n\r\n if (!this.initialValueMap.has(this.selectedRadio)) {\r\n let initialValue = sortBy(uniq(clonedTableData.map((item) => item[this.selectedRadio])));\r\n this.initialValueMap.set(this.selectedRadio, initialValue);\r\n }\r\n } else if (this.initialValueMap.has(this.selectedRadio)) {\r\n previousSelectedValue = this.initialValueMap.get(this.selectedRadio);\r\n } else {\r\n previousSelectedValue = sortBy(uniq(clonedTableData.map((item) => item[this.selectedRadio])));\r\n this.initialValueMap.set(this.selectedRadio, previousSelectedValue);\r\n }\r\n\r\n return previousSelectedValue;\r\n }\r\n\r\n getCheckboxCurrentSelectedValue(searchedString: string, tooltipOptions: TooltipModel[]) {\r\n let currentSelectedValue = [];\r\n\r\n if (tooltipOptions) {\r\n currentSelectedValue = sortBy(tooltipOptions.filter((item) => item.isSelected).map((item) => item.value));\r\n\r\n if (\r\n !searchedString &&\r\n currentSelectedValue.length == tooltipOptions.length &&\r\n this.initialValueMap.has(this.selectedRadio)\r\n ) {\r\n currentSelectedValue = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n }\r\n\r\n let blankIndex = currentSelectedValue.findIndex((item: string) => item == null);\r\n if (blankIndex != -1) {\r\n currentSelectedValue = sortBy(currentSelectedValue);\r\n }\r\n\r\n return currentSelectedValue;\r\n }\r\n\r\n checkIfSortingChanged(tempSortOrder: SortType) {\r\n let currentColumnSortFilter = this.getColumnSortStateForSelectedRadio();\r\n\r\n let isSortChanged = tempSortOrder != null && tempSortOrder != currentColumnSortFilter;\r\n return isSortChanged;\r\n }\r\n\r\n getFilteredOptionAsBoldString(str: string, clonedTooltipOptions: TooltipModel[]) {\r\n let tooltipOptions = cloneDeep(\r\n clonedTooltipOptions.filter((item) => item.label.toString().toLowerCase().includes(str.toLowerCase())),\r\n );\r\n tooltipOptions.forEach((element) => {\r\n element.label = this.boldString(element.label, str);\r\n });\r\n\r\n return tooltipOptions;\r\n }\r\n\r\n boldString(str: string, find: string) {\r\n let indexes = this.getIndicesOf(find, str, false);\r\n\r\n indexes.forEach((item, index) => {\r\n let startIndex = item + index * 7; //Multiplying by 7 as there are 7char: <b></b>\r\n let endIndex = startIndex + find.length;\r\n let strToBeReplaced = str.substring(startIndex, endIndex);\r\n str = str.replace(strToBeReplaced, '<b>' + strToBeReplaced + '</b>');\r\n });\r\n return str;\r\n }\r\n\r\n getIndicesOf(searchStr: string, str: string, caseSensitive: boolean) {\r\n var searchStrLen = searchStr.length;\r\n if (searchStrLen == 0) {\r\n return [];\r\n }\r\n var startIndex = 0,\r\n index,\r\n indices = [];\r\n if (!caseSensitive) {\r\n str = str.toLowerCase();\r\n searchStr = searchStr.toLowerCase();\r\n }\r\n while ((index = str.indexOf(searchStr, startIndex)) > -1) {\r\n indices.push(index);\r\n startIndex = index + searchStrLen;\r\n }\r\n return indices;\r\n }\r\n\r\n disableAllBtnsWhenThereAreNoFilteredResults(): [number, boolean, boolean, boolean] {\r\n // [selectedCheckboxOptionsCount, disableCheckboxApply, disableClearAll, disableSelectAll];\r\n return [0, true, true, true];\r\n }\r\n\r\n //============================================================Calendar filter===========================================================//\r\n createRangeForTheDateFilter(optionData: any[]) {\r\n let minMaxDate;\r\n //When you want to use startDate and endDate combined as single column then use Period.\r\n if (\r\n this.selectedRadio == 'period' ||\r\n this.selectedRadio == 'buyerFlightDates' ||\r\n this.selectedRadio == 'trafficFlightDates'\r\n ) {\r\n minMaxDate = this.createStartEndDateRange(optionData);\r\n } else {\r\n minMaxDate = this.returnMinAndMaxDate(optionData, this.selectedRadio);\r\n }\r\n\r\n return minMaxDate;\r\n }\r\n\r\n createStartEndDateRange(optionData: any[]) {\r\n let minStartDate = this.returnMinAndMaxDate(optionData, 'startDate');\r\n let maxEndDate = this.returnMinAndMaxDate(optionData, 'endDate');\r\n return [minStartDate[0], maxEndDate[1]];\r\n }\r\n\r\n getMinAndMaxDateRangeForCalendar(minMaxDate: any[], parsingFormat: string) {\r\n let calendarMinEnabledDate = this.dateTimeFormatService.convertToNgbDate(minMaxDate[0], parsingFormat);\r\n let calendarMaxEnabledDate = this.dateTimeFormatService.convertToNgbDate(minMaxDate[1], parsingFormat);\r\n return [calendarMinEnabledDate, calendarMaxEnabledDate];\r\n }\r\n\r\n getSelectedDateForCalendar(minMaxDate: any[], parsingFormat: string, minDate: NgbDateType, maxDate: NgbDateType) {\r\n let selectedMinDate;\r\n let selectedMaxDate;\r\n\r\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n let selectedDateObj = this.tooltipSelectedMap.get(this.selectedRadio);\r\n\r\n if (selectedDateObj.fromDate.isAfter(minMaxDate[0])) {\r\n selectedMinDate = this.dateTimeFormatService.convertToNgbDate(selectedDateObj.fromDate, parsingFormat);\r\n } else {\r\n selectedMinDate = this.dateTimeFormatService.convertToNgbDate(minMaxDate[0], parsingFormat);\r\n }\r\n\r\n if (selectedDateObj.toDate.isAfter(minMaxDate[1])) {\r\n selectedMaxDate = this.dateTimeFormatService.convertToNgbDate(minMaxDate[1], parsingFormat);\r\n } else {\r\n selectedMaxDate = this.dateTimeFormatService.convertToNgbDate(selectedDateObj.toDate, parsingFormat);\r\n }\r\n } else {\r\n selectedMinDate = cloneDeep(minDate);\r\n selectedMaxDate = cloneDeep(maxDate);\r\n }\r\n\r\n return [selectedMinDate, selectedMaxDate];\r\n }\r\n\r\n getPreviousSelectedDatesForCalendar(optionData: any[]) {\r\n let previousSelectedDate: { fromDate: any; toDate: any } = { fromDate: null, toDate: null };\r\n\r\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n previousSelectedDate = this.tooltipSelectedMap.get(this.selectedRadio);\r\n\r\n if (!this.initialValueMap.has(this.selectedRadio)) {\r\n this.setInitialValueMapForDateFilter(optionData);\r\n }\r\n } else if (this.initialValueMap.has(this.selectedRadio)) {\r\n previousSelectedDate = this.initialValueMap.get(this.selectedRadio);\r\n } else {\r\n this.setInitialValueMapForDateFilter(optionData);\r\n previousSelectedDate = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n\r\n return previousSelectedDate;\r\n }\r\n\r\n setInitialValueMapForDateFilter(optionData: any[]) {\r\n let minMaxDate = this.createRangeForTheDateFilter(optionData);\r\n\r\n let selectedDate = { fromDate: minMaxDate[0], toDate: minMaxDate[1] };\r\n this.initialValueMap.set(this.selectedRadio, selectedDate);\r\n }\r\n\r\n getCurrentSelectedDatesForCalendar(currentSelectedDate: any, minDate: NgbDateType, maxDate: NgbDateType) {\r\n let fromDate = {\r\n year: currentSelectedDate.fromDate.year,\r\n month: currentSelectedDate.fromDate.month,\r\n day: currentSelectedDate.fromDate.day,\r\n };\r\n let toDate = {\r\n year: currentSelectedDate.toDate.year,\r\n month: currentSelectedDate.toDate.month,\r\n day: currentSelectedDate.toDate.day,\r\n };\r\n\r\n if (isEqual(minDate, fromDate) && isEqual(maxDate, toDate) && this.initialValueMap.has(this.selectedRadio)) {\r\n currentSelectedDate = this.initialValueMap.get(this.selectedRadio);\r\n } else {\r\n currentSelectedDate.fromDate = dayjs(\r\n this.dateTimeFormatService.convertNgbDateToMoment(currentSelectedDate.fromDate),\r\n );\r\n currentSelectedDate.toDate = dayjs(\r\n this.dateTimeFormatService.convertNgbDateToMoment(currentSelectedDate.toDate),\r\n );\r\n }\r\n\r\n return currentSelectedDate;\r\n }\r\n\r\n //==================================================================SLIDER===========================================================//\r\n\r\n getSliderTranslateFuncVal(header: string, currencySet: Set<string>) {\r\n let translateFunc;\r\n\r\n if (currencySet.has(header)) {\r\n translateFunc = 'currency';\r\n } else if (header == 'postedAudPercent' || header == 'parentRowShares' || header == 'parentRowPutPercent') {\r\n translateFunc = 'percent';\r\n } else {\r\n translateFunc = 'normal';\r\n }\r\n\r\n return translateFunc;\r\n }\r\n\r\n getSliderOptions(optionsData: any[], translateFunc: string, header: string) {\r\n let minValue = this.returnMaxAndMinValue(optionsData, header, true);\r\n let maxValue = this.returnMaxAndMinValue(optionsData, header, false);\r\n\r\n let obj = this.setOptionValues(minValue, maxValue);\r\n\r\n if (translateFunc === 'normal') {\r\n obj.translate = this.normalTranslateFunction;\r\n } else if (translateFunc === 'percent') {\r\n obj.translate = this.percentTranslateFunction;\r\n } else if (translateFunc === 'currency') {\r\n obj.translate = this.currencyTranslateFunction;\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n setSelectedRangeForSlider(header: string, options: Options) {\r\n let sliderMinValue;\r\n let sliderMaxValue;\r\n\r\n if (this.tooltipSelectedMap.has(header)) {\r\n let selectedObj = this.tooltipSelectedMap.get(header);\r\n sliderMinValue = selectedObj.min < options.floor ? options.floor : selectedObj.min;\r\n sliderMaxValue = selectedObj.max < options.ceil ? selectedObj.max : options.ceil;\r\n } else {\r\n sliderMinValue = options.floor;\r\n sliderMaxValue = options.ceil;\r\n }\r\n\r\n return [sliderMinValue, sliderMaxValue];\r\n }\r\n\r\n isValueInRange(options: Options, val: number) {\r\n return options.floor <= val && val <= options.ceil;\r\n }\r\n\r\n getPreviousSelectedValueForSlider(clonedData: any[]) {\r\n let previousSliderData: { min: any; max: any } = { min: '', max: '' };\r\n\r\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n previousSliderData = this.tooltipSelectedMap.get(this.selectedRadio);\r\n if (!this.initialValueMap.has(this.selectedRadio)) {\r\n this.setInitialValueMapForSliderFilter(clonedData);\r\n }\r\n } else if (this.initialValueMap.has(this.selectedRadio)) {\r\n previousSliderData = this.initialValueMap.get(this.selectedRadio);\r\n } else {\r\n this.setInitialValueMapForSliderFilter(clonedData);\r\n previousSliderData = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n\r\n return previousSliderData;\r\n }\r\n\r\n setInitialValueMapForSliderFilter(clonedData: any[]) {\r\n let minValue = this.returnMaxAndMinValue(clonedData, this.selectedRadio, true);\r\n let maxValue = this.returnMaxAndMinValue(clonedData, this.selectedRadio, false);\r\n let sliderData = { min: minValue, max: maxValue };\r\n this.initialValueMap.set(this.selectedRadio, sliderData);\r\n }\r\n\r\n getCurrentSelectedValueForSlider(minEnteredVal: number, maxEnteredVal: number, options: Options) {\r\n let currentSliderData: { min: any; max: any } = { min: null, max: null };\r\n currentSliderData.max = maxEnteredVal;\r\n currentSliderData.min = minEnteredVal;\r\n\r\n if (\r\n currentSliderData.min == options.floor &&\r\n currentSliderData.max == options.ceil &&\r\n this.initialValueMap.has(this.selectedRadio)\r\n ) {\r\n currentSliderData = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n\r\n return currentSliderData;\r\n }\r\n\r\n //==============================================================TIME====================================================================//\r\n getSelectedTimeRange(header: string, clonedData: any[]) {\r\n let selectedFromTime: any[];\r\n let selectedToTime: any[];\r\n\r\n if (this.tooltipSelectedMap.has(header)) {\r\n selectedFromTime = this.tooltipSelectedMap.get(header).fromTime;\r\n selectedToTime = this.tooltipSelectedMap.get(header).toTime;\r\n } else {\r\n this.setInitialValueMapForTimeFilter(clonedData, header);\r\n selectedFromTime = this.initialValueMap.get(header).fromTime;\r\n selectedToTime = this.initialValueMap.get(header).toTime;\r\n }\r\n\r\n if (selectedFromTime != undefined || selectedToTime != undefined) {\r\n selectedFromTime = AnnaDateTimeFormatService.formatToTwelveHrs(selectedFromTime, true);\r\n selectedToTime = AnnaDateTimeFormatService.formatToTwelveHrs(selectedToTime, true);\r\n } else {\r\n selectedFromTime = ['-', '-', '-'];\r\n selectedToTime = ['-', '-', '-'];\r\n }\r\n\r\n return [selectedFromTime, selectedToTime];\r\n }\r\n\r\n setInitialValueMapForTimeFilter(clonedData: any[], key: string) {\r\n if (key == 'startEndTime' || key == 'TimeBand') {\r\n this.setInitialValueForStartAndEndTimeRange(clonedData, key);\r\n } else {\r\n this.setInitialValueForStartOrEndTimeRange(clonedData, key);\r\n }\r\n }\r\n\r\n //use for filter where we have start and end time range in one filter\r\n //startEndTime: [\"6 - 7A\", \"06: 00 : 00\" , \"07:00:00\"]\r\n setInitialValueForStartAndEndTimeRange(clonedData: any[], key: string) {\r\n let includeMulti = clonedData.findIndex((obj) => obj[key][0] == '<multi>') != -1;\r\n let includeZero = clonedData.findIndex((obj) => obj[key][0] == '0') != -1;\r\n let includeTimeRange = clonedData.findIndex((obj) => obj[key][0] != '0' && obj[key][0] != '<multi>') != -1;\r\n\r\n let filteredStartTime = clonedData.filter((obj) => !['', '-', null, '0', '<multi>'].includes(obj['startTime']));\r\n let filteredEndTime = clonedData.filter((obj) => !['', '-', null, '0', '<multi>'].includes(obj['endTime']));\r\n\r\n let startTimeArr = map(filteredStartTime, 'startTime');\r\n let endTimeArr = map(filteredEndTime, 'endTime');\r\n\r\n startTimeArr.sort((a, b) => {\r\n return this.dateTimeFormatService.sortByTimeAscending(a, b);\r\n });\r\n\r\n endTimeArr.sort((a, b) => {\r\n return this.dateTimeFormatService.sortByTimeDescending(a, b);\r\n });\r\n\r\n let obj = {\r\n fromTime: startTimeArr[0],\r\n toTime: endTimeArr[0],\r\n includeMulti: includeMulti,\r\n includeZero: includeZero,\r\n includeTimeRange: includeTimeRange,\r\n };\r\n\r\n this.initialValueMap.set(key, obj);\r\n }\r\n\r\n //use for the filters where we have different filter for start and end time\r\n //startTime: \"06:00:00\"\r\n setInitialValueForStartOrEndTimeRange(clonedData: any[], key: string) {\r\n let includeMulti = clonedData.findIndex((obj) => obj[key] == '<multi>') != -1;\r\n let includeZero = clonedData.findIndex((obj) => obj[key] == '0') != -1;\r\n let includeTimeRange = clonedData.findIndex((obj) => obj[key] != '0' && obj[key] != '<multi>') != -1;\r\n\r\n let data = clonedData.filter((obj) => !['', '-', null, '0', '<multi>'].includes(obj[key]));\r\n\r\n let timeArr = map(data, key);\r\n timeArr.sort((a, b) => {\r\n return this.dateTimeFormatService.sortByTimeAscending(a, b);\r\n });\r\n\r\n let obj = {\r\n fromTime: timeArr[0],\r\n toTime: timeArr[timeArr.length - 1],\r\n includeMulti: includeMulti,\r\n includeZero: includeZero,\r\n includeTimeRange: includeTimeRange,\r\n };\r\n\r\n this.initialValueMap.set(key, obj);\r\n }\r\n\r\n selectUnselectTimeFilterCheckbox(key: string, optionsData: any[]) {\r\n let showMultiTimeCheckbox = false;\r\n let showZeroTimeCheckbox = false;\r\n let showEnterTimeCheckbox = false;\r\n let multiTimeCheckboxChecked = false;\r\n let zeroTimeCheckboxChecked = false;\r\n let enterTimeCheckboxChecked = false;\r\n\r\n let selectedTimeObj;\r\n\r\n if (this.tooltipSelectedMap.has(key)) {\r\n selectedTimeObj = this.tooltipSelectedMap.get(key);\r\n } else {\r\n selectedTimeObj = this.initialValueMap.get(key);\r\n }\r\n\r\n let timeArr: string[];\r\n if (key == 'startEndTime' || key == 'TimeBand') {\r\n timeArr = optionsData.map((item) => item[key][0]);\r\n } else {\r\n timeArr = optionsData.map((item) => item[key]);\r\n }\r\n\r\n if (timeArr.findIndex((val) => val == '0') != -1) {\r\n showZeroTimeCheckbox = true;\r\n zeroTimeCheckboxChecked = selectedTimeObj.includeZero;\r\n }\r\n\r\n if (timeArr.findIndex((val) => val == '<multi>') != -1) {\r\n showMultiTimeCheckbox = true;\r\n multiTimeCheckboxChecked = selectedTimeObj.includeMulti;\r\n }\r\n\r\n if (showZeroTimeCheckbox || showMultiTimeCheckbox) {\r\n showEnterTimeCheckbox = true;\r\n }\r\n\r\n if (timeArr.findIndex((val) => val != '<multi>' && val != '0') != -1) {\r\n enterTimeCheckboxChecked = selectedTimeObj?.includeTimeRange;\r\n }\r\n\r\n return {\r\n showMultiTimeCheckbox: showMultiTimeCheckbox,\r\n showZeroTimeCheckbox: showZeroTimeCheckbox,\r\n showEnterTimeCheckbox: showEnterTimeCheckbox,\r\n multiTimeCheckboxChecked: multiTimeCheckboxChecked,\r\n zeroTimeCheckboxChecked: zeroTimeCheckboxChecked,\r\n enterTimeCheckboxChecked: enterTimeCheckboxChecked,\r\n };\r\n }\r\n\r\n checkIfStartTimeIsAfterEndTime(startTime: string[], endTime: string[]) {\r\n let timeFormat = 'HH:mm:ss';\r\n\r\n let startTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n startTime[0] + ':' + startTime[1] + ' ' + startTime[2],\r\n true,\r\n );\r\n let startTime24HrFormat = startTime24HrFormatArr[0] + ':' + startTime24HrFormatArr[1] + ':00';\r\n let endTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n endTime[0] + ':' + endTime[1] + ' ' + endTime[2],\r\n true,\r\n );\r\n let endTime24HrFormat = endTime24HrFormatArr[0] + ':' + endTime24HrFormatArr[1] + ':00';\r\n return dayjs(startTime24HrFormat, timeFormat).isAfter(dayjs(endTime24HrFormat, timeFormat));\r\n }\r\n\r\n getPreviousSelectedTimeFilter() {\r\n let previousSelectedTimeFilter;\r\n\r\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n previousSelectedTimeFilter = this.tooltipSelectedMap.get(this.selectedRadio);\r\n } else if (this.initialValueMap.has(this.selectedRadio)) {\r\n previousSelectedTimeFilter = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n\r\n return previousSelectedTimeFilter;\r\n }\r\n\r\n getCurrentSelectedTimeFilter(\r\n startTime: string[],\r\n endTime: string[],\r\n includeMulti: boolean,\r\n includeZero: boolean,\r\n includeTimeRange: boolean,\r\n ) {\r\n let currentSelectedTimeFilter;\r\n\r\n let fromTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n startTime[0] + ':' + startTime[1] + ' ' + startTime[2],\r\n true,\r\n );\r\n let fromTime24HrFormat = fromTime24HrFormatArr[0] + ':' + fromTime24HrFormatArr[1] + ':00';\r\n\r\n let toTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n endTime[0] + ':' + endTime[1] + ' ' + endTime[2],\r\n true,\r\n );\r\n let toTime24HrFormat = toTime24HrFormatArr[0] + ':' + toTime24HrFormatArr[1] + ':00';\r\n\r\n currentSelectedTimeFilter = {\r\n fromTime: fromTime24HrFormat,\r\n toTime: toTime24HrFormat,\r\n includeMulti: includeMulti,\r\n includeZero: includeZero,\r\n includeTimeRange: includeTimeRange,\r\n };\r\n\r\n return currentSelectedTimeFilter;\r\n }\r\n\r\n incrementHourInput(arr: any[]) {\r\n if (arr[0] == '') {\r\n arr[0] = 1;\r\n } else if (parseInt(arr[0]) < 12) {\r\n arr[0] = parseInt(arr[0]) + 1;\r\n } else {\r\n arr[0] = 1;\r\n }\r\n }\r\n\r\n decrementHourInput(arr: any[]) {\r\n if (arr[0] == '') {\r\n arr[0] = 12;\r\n } else if (parseInt(arr[0]) > 1) {\r\n arr[0] = parseInt(arr[0]) - 1;\r\n } else {\r\n arr[0] = 12;\r\n }\r\n }\r\n\r\n incrementMinuteInput(arr: any[]) {\r\n // increment to nearest proper interval(15,30,45)\r\n let min = parseInt(arr[1]);\r\n if (min <= 14) {\r\n arr[1] = '15';\r\n } else if (min >= 15 && min <= 29) {\r\n arr[1] = '30';\r\n } else if (min >= 30 && min <= 44) {\r\n arr[1] = '45';\r\n } else if (min >= 45) {\r\n arr[1] = '00';\r\n }\r\n }\r\n\r\n decrementMinuteInput(arr: any) {\r\n let min = parseInt(arr[1]);\r\n if (min > 0 && min <= 15) {\r\n arr[1] = '00';\r\n } else if (min >= 16 && min <= 30) {\r\n arr[1] = '15';\r\n } else if (min >= 31 && min <= 45) {\r\n arr[1] = '30';\r\n } else if (min > 45 || min == 0) {\r\n arr[1] = '45';\r\n }\r\n }\r\n\r\n incrementOrDecrementHour(increment: boolean, time: string[]) {\r\n if (increment) {\r\n this.incrementHourInput(time);\r\n } else {\r\n this.decrementHourInput(time);\r\n }\r\n }\r\n\r\n incrementOrDecrementMin(increment: boolean, time: string[]) {\r\n if (increment) {\r\n this.incrementMinuteInput(time);\r\n } else {\r\n this.decrementMinuteInput(time);\r\n }\r\n }\r\n\r\n isHourValueInvalid(hr: string) {\r\n return hr.length == 0 || !+hr || 1 > parseInt(hr) || parseInt(hr) > 12 || hr.includes('.');\r\n }\r\n\r\n isMinuteValueInvalid(min: string) {\r\n return (\r\n min.length != 2 || (!+min && min != '00') || 0 > parseInt(min) || parseInt(min) > 59 || min.includes('.')\r\n );\r\n }\r\n\r\n //=============================================================SORT======================================================================//\r\n updateSortMap(tempSortOrder: SortType, tableData: any[], isLurAndCsrComponent: boolean) {\r\n this.annaSortService.columnSortState = new Map();\r\n this.annaSortService.columnSortState.set(this.selectedRadio, tempSortOrder);\r\n let sortedTableData = this.annaSortService.applySorting(\r\n this.selectedRadio,\r\n tempSortOrder,\r\n tableData,\r\n isLurAndCsrComponent,\r\n );\r\n return sortedTableData;\r\n }\r\n}\r\n","// Angular import statements\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { SortOption, SortType, SortTypeEnum } from '../../../anna-core-shared-lib/models/anna-sort.model';\r\nimport { AnnaSortService } from '../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { NgFor, NgClass } from '@angular/common';\r\n\r\n//Add onChange push change detection\r\n@Component({\r\n selector: 'anna-core-sort-lib',\r\n templateUrl: './anna-sort.component.html',\r\n styleUrls: ['./anna-sort.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [NgFor, NgClass],\r\n})\r\nexport class AnnaSortComponent implements OnChanges {\r\n @Input() sortObjectKey: string;\r\n @Output() sortOptionClicked = new EventEmitter<SortType>();\r\n\r\n sortOptions: SortOption[] = [\r\n {\r\n sortType: SortTypeEnum.ASC,\r\n isOptionActive: false,\r\n text: 'A to Z',\r\n },\r\n {\r\n sortType: SortTypeEnum.DESC,\r\n isOptionActive: false,\r\n text: 'Z to A',\r\n },\r\n {\r\n sortType: SortTypeEnum.DEFAULT,\r\n isOptionActive: false,\r\n text: 'Default',\r\n },\r\n ];\r\n\r\n constructor(private annaSortService: AnnaSortService) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['sortObjectKey'] && changes['sortObjectKey'].currentValue) {\r\n let sortType = this.annaSortService.columnSortState.get(this.sortObjectKey);\r\n this.setSortType(sortType);\r\n }\r\n }\r\n\r\n sortOptionChanged(index: number, sortType: SortType) {\r\n this.sortOptions.forEach((item) => (item.isOptionActive = false));\r\n this.sortOptions[index].isOptionActive = true;\r\n this.sortOptionClicked.emit(sortType);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.annaSortService.updateSortTypeSubject.subscribe((item: string) => {\r\n this.setSortType(item);\r\n });\r\n }\r\n\r\n setSortType(option: string) {\r\n option = option ? option : SortTypeEnum.DEFAULT;\r\n this.sortOptions.forEach((item) => (item.isOptionActive = false));\r\n let index = this.sortOptions.findIndex((item) => item.sortType == option);\r\n this.sortOptions[index].isOptionActive = true;\r\n }\r\n}\r\n","<p class=\"sort-container\">\r\n <button\r\n class=\"sort-btn\"\r\n *ngFor=\"let option of sortOptions; let i = index\"\r\n (click)=\"sortOptionChanged(i, option.sortType)\"\r\n [ngClass]=\"{ active: option.isOptionActive }\"\r\n >\r\n {{ option.text }}\r\n </button>\r\n</p>\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { cloneDeep, isEqual, truncate } from 'lodash-es';\r\n\r\nimport { radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\r\nimport { SortType } from '../../../../anna-core-shared-lib/models/anna-sort.model';\r\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\r\nimport { AnnaDateTimeFormatService } from '../../../../anna-core-shared-lib/services/anna-date-time-format.service';\r\nimport { IGtGeneralConfig } from '../../../../anna-core-shared-lib/models/anna-non-editable-gt-models';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AnnaSortComponent } from '../../anna-sort/anna-sort.component';\r\nimport { NgIf, NgFor, NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-column-time-filter',\r\n templateUrl: './anna-column-time-filter.component.html',\r\n styleUrls: ['./anna-column-time-filter.component.scss'],\r\n standalone: true,\r\n imports: [NgIf, NgFor, NgClass, AnnaSortComponent, FormsModule, MatButtonToggleModule],\r\n})\r\nexport class AnnaColumnTimeFilterComponent implements OnInit {\r\n @Input() tableData: any[];\r\n @Input() clonedTableData: any[];\r\n @Input() filterTabObjects: any[];\r\n @Input() showFilterHeaderTabs: boolean;\r\n @Input() showAllTimeRangeCheckboxes: boolean;\r\n @Input() isLurAndCsrComponent: boolean;\r\n\r\n @Input() gtGeneralConfig: IGtGeneralConfig;\r\n @Input() showClearAllFilter: boolean = true;\r\n @Input() startFromText: string = 'From';\r\n @Input() endToText: string = 'To';\r\n @Input() isSortAndFilterAbsent: boolean = false;\r\n @Output() timeChanges = new EventEmitter();\r\n @Output() filterAppliedToTable = new EventEmitter();\r\n @Output() sortingAppliedToTable = new EventEmitter();\r\n @Output() getSortType = new EventEmitter();\r\n @Output() closeTooltip = new EventEmitter();\r\n\r\n isFilterChanged: boolean;\r\n tempSortOrder: SortType = null;\r\n isSortChanged: boolean;\r\n showSortComponent: boolean = false;\r\n showFilterComponent: boolean = false;\r\n disableColumnClearAllBtn: boolean = true;\r\n\r\n startTimeHourErr: boolean;\r\n startTimeMinErr: boolean;\r\n endTimeHourErr: boolean;\r\n endTimeMinErr: boolean;\r\n selectedFromTime: any[];\r\n selectedToTime: any[];\r\n clonedSelectedFromTime: any;\r\n clonedSelectedToTime: any;\r\n disableTimeFilterApplyBtn: boolean;\r\n tableColumns: string[] = [];\r\n totalRowColumns: string[] = null;\r\n showMultiTimeCheckbox: boolean;\r\n showZeroTimeCheckbox: boolean;\r\n showEnterTimeCheckbox: boolean;\r\n multiTimeCheckboxChecked: boolean;\r\n zeroTimeCheckboxChecked: boolean;\r\n enterTimeCheckboxChecked: boolean;\r\n bindValueFuncCalled: boolean;\r\n\r\n constructor(\r\n private annaSortService: AnnaSortService,\r\n public annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n public annaFilterService: AnnaFilterService,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\r\n }\r\n\r\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\r\n let header = activeTab.key;\r\n\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n\r\n this.tempSortOrder = null;\r\n this.isFilterChanged = false;\r\n this.isSortChanged = false;\r\n\r\n this.annaFilterService.selectedRadio = header;\r\n this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();\r\n\r\n if (reload) {\r\n setTimeout(() => {\r\n this.createFilterTooltipData(activeTab, header);\r\n }, 100);\r\n } else {\r\n this.createFilterTooltipData(activeTab, header);\r\n }\r\n }\r\n\r\n createFilterTooltipData(activeTab: radioButtonModel, header: string) {\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n\r\n this.disableTimeFilterApplyBtn = true;\r\n\r\n if (this.showFilterComponent) {\r\n this.getTimeFilterData(header);\r\n }\r\n }\r\n\r\n getTimeFilterData(header: string): void {\r\n this.startTimeHourErr = this.startTimeMinErr = this.endTimeHourErr = this.endTimeMinErr = false;\r\n\r\n if (this.isSortAndFilterAbsent) {\r\n this.selectedFromTime = this.clonedTableData[0].time;\r\n this.selectedToTime = this.clonedTableData[1].time;\r\n this.selectedFromTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedFromTime, true);\r\n this.selectedToTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedToTime, true);\r\n } else {\r\n [this.selectedFromTime, this.selectedToTime] = this.annaFilterService.getSelectedTimeRange(\r\n header,\r\n this.clonedTableData,\r\n );\r\n }\r\n\r\n this.clonedSelectedFromTime = cloneDeep(this.selectedFromTime);\r\n this.clonedSelectedToTime = cloneDeep(this.selectedToTime);\r\n\r\n let optionsData = this.annaFilterService?.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n\r\n let checkedSelectedObj = this.annaFilterService?.selectUnselectTimeFilterCheckbox(header, optionsData);\r\n\r\n this.showMultiTimeCheckbox = checkedSelectedObj.showMultiTimeCheckbox;\r\n this.showZeroTimeCheckbox = checkedSelectedObj.showZeroTimeCheckbox;\r\n this.showEnterTimeCheckbox = checkedSelectedObj.showEnterTimeCheckbox;\r\n this.multiTimeCheckboxChecked = checkedSelectedObj.multiTimeCheckboxChecked;\r\n this.zeroTimeCheckboxChecked = checkedSelectedObj.zeroTimeCheckboxChecked;\r\n this.enterTimeCheckboxChecked = checkedSelectedObj.enterTimeCheckboxChecked;\r\n }\r\n\r\n selectOrUnselectMultiTimeCheckbox() {\r\n this.multiTimeCheckboxChecked = !this.multiTimeCheckboxChecked;\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n selectOrUnselectZeroTimeCheckbox() {\r\n this.zeroTimeCheckboxChecked = !this.zeroTimeCheckboxChecked;\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n selectOrUnselectEnterTimeCheckbox() {\r\n this.enterTimeCheckboxChecked = !this.enterTimeCheckboxChecked;\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n checkIfTimeTooltipIsFiltered() {\r\n let previousSelectedTimeFilter = this.annaFilterService.getPreviousSelectedTimeFilter();\r\n let currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(\r\n this.selectedFromTime,\r\n this.selectedToTime,\r\n this.multiTimeCheckboxChecked,\r\n this.zeroTimeCheckboxChecked,\r\n this.enterTimeCheckboxChecked,\r\n );\r\n\r\n this.isFilterChanged = !isEqual(previousSelectedTimeFilter, currentSelectedTimeFilter);\r\n return this.isFilterChanged;\r\n }\r\n checkIfInvalidTimeIsEntered() {\r\n if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n disableTimeFilterApplyButton() {\r\n if (this.isSortAndFilterAbsent) {\r\n this.disableTimeFilterApplyBtn = this.checkIfInvalidTimeIsEntered() || !this.checkIfTimeTooltipIsFiltered();\r\n } else {\r\n if (this.showFilterComponent && this.showSortComponent) {\r\n let isFilterChanged = this.checkIfTimeTooltipIsFiltered();\r\n let isSortChanged = this.checkIfSortingChanged();\r\n this.disableTimeFilterApplyBtn =\r\n !this.validateTimeFilterInput() || (!isSortChanged && !isFilterChanged);\r\n } else if (this.showFilterComponent) {\r\n this.disableTimeFilterApplyBtn =\r\n !this.validateTimeFilterInput() || !this.checkIfTimeTooltipIsFiltered();\r\n } else if (this.showSortComponent) {\r\n this.disableTimeFilterApplyBtn = !this.checkIfSortingChanged();\r\n }\r\n }\r\n }\r\n\r\n checkIfSortingChanged() {\r\n this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);\r\n return this.isSortChanged;\r\n }\r\n\r\n validateTimeFilterInput() {\r\n if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) {\r\n return false;\r\n }\r\n\r\n if (\r\n this.showMultiTimeCheckbox &&\r\n !this.multiTimeCheckboxChecked &&\r\n this.showZeroTimeCheckbox &&\r\n !this.zeroTimeCheckboxChecked &&\r\n this.showEnterTimeCheckbox &&\r\n !this.enterTimeCheckboxChecked\r\n ) {\r\n return false;\r\n }\r\n\r\n return !this.annaFilterService.checkIfStartTimeIsAfterEndTime(this.selectedFromTime, this.selectedToTime);\r\n }\r\n\r\n applyTimeFilters() {\r\n if (this.isSortAndFilterAbsent) {\r\n let timeSelected = [this.selectedFromTime, this.selectedToTime];\r\n this.timeChanges.emit(timeSelected);\r\n } else {\r\n this.applyTimeFilterOnData();\r\n this.applySortingOnFilteredData();\r\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n this.emitData();\r\n }\r\n\r\n this.closeTooltip.emit();\r\n }\r\n\r\n emitData() {\r\n if (this.isFilterChanged && this.isSortChanged) {\r\n this.filterAppliedToTable.emit(this.tableData);\r\n } else if (this.isFilterChanged) {\r\n this.filterAppliedToTable.emit(this.tableData);\r\n } else if (this.isSortChanged) {\r\n this.getSortType.emit(this.tempSortOrder);\r\n this.sortingAppliedToTable.emit(this.tableData);\r\n }\r\n }\r\n\r\n changeStartTimeHour(increment: boolean) {\r\n if (!this.startTimeHourErr) {\r\n this.annaFilterService.incrementOrDecrementHour(increment, this.selectedFromTime);\r\n this.startTimeHourChange(this.selectedFromTime[0].toString());\r\n }\r\n }\r\n\r\n changeEndTimeHour(increment: boolean) {\r\n if (!this.endTimeHourErr) {\r\n this.annaFilterService.incrementOrDecrementHour(increment, this.selectedToTime);\r\n this.endTimeHourChange(this.selectedToTime[0].toString());\r\n }\r\n }\r\n\r\n changeEndTimeMinute(increment: boolean) {\r\n if (!this.endTimeMinErr) {\r\n this.annaFilterService.incrementOrDecrementMin(increment, this.selectedToTime);\r\n this.endTimeMinChange(this.selectedToTime[1].toString());\r\n }\r\n }\r\n\r\n changeStartTimeMinute(increment: boolean) {\r\n if (!this.startTimeMinErr) {\r\n this.annaFilterService.incrementOrDecrementMin(increment, this.selectedFromTime);\r\n this.startTimeMinChange(this.selectedFromTime[1].toString());\r\n }\r\n }\r\n\r\n startTimeHourChange(val: string) {\r\n this.startTimeHourErr = this.annaFilterService.isHourValueInvalid(val);\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n startTimeMinChange(val: string) {\r\n this.startTimeMinErr = this.annaFilterService.isMinuteValueInvalid(val);\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n endTimeHourChange(val: string) {\r\n this.endTimeHourErr = this.annaFilterService.isHourValueInvalid(val);\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n endTimeMinChange(val: string) {\r\n this.endTimeMinErr = this.annaFilterService.isMinuteValueInvalid(val);\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n applySortingOnFilteredData() {\r\n if (this.showSortComponent) {\r\n if (this.isSortChanged) {\r\n this.tableData = this.annaFilterService.updateSortMap(\r\n this.tempSortOrder,\r\n this.tableData,\r\n this.isLurAndCsrComponent,\r\n );\r\n } else if (this.isFilterChanged) {\r\n this.tableData = this.annaSortService.checkIfSortingIsApplied(\r\n this.tableData,\r\n this.isLurAndCsrComponent,\r\n );\r\n }\r\n } else if (this.isFilterChanged) {\r\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\r\n }\r\n }\r\n\r\n applyTimeFilterOnData() {\r\n if (this.showFilterComponent && this.isFilterChanged) {\r\n let currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(\r\n this.selectedFromTime,\r\n this.selectedToTime,\r\n this.multiTimeCheckboxChecked,\r\n this.zeroTimeCheckboxChecked,\r\n this.enterTimeCheckboxChecked,\r\n );\r\n\r\n let isFiltered = this.annaFilterService.reOrderAppliedFiltersState(\r\n this.clonedTableData,\r\n currentSelectedTimeFilter,\r\n );\r\n this.annaFilterService.tooltipSelectedMap.set(\r\n this.annaFilterService.selectedRadio,\r\n currentSelectedTimeFilter,\r\n );\r\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, '');\r\n\r\n if (!isFiltered) {\r\n this.annaFilterService.tooltipSelectedMap.delete(this.annaFilterService.selectedRadio);\r\n }\r\n this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);\r\n }\r\n }\r\n\r\n closeTimeFilter() {\r\n this.selectedFromTime = cloneDeep(this.clonedSelectedFromTime);\r\n this.selectedToTime = cloneDeep(this.clonedSelectedToTime);\r\n this.closeTooltip.emit();\r\n }\r\n\r\n clearColumnFilter() {\r\n this.annaFilterService.clearColumnFilter();\r\n this.tableData = cloneDeep(this.annaFilterService.filterData(this.clonedTableData, ''));\r\n this.annaSortService.noSortingAppliedData = this.tableData;\r\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\r\n this.annaFilterService.updateStateOfTheCurrentFilterTab(this.annaSortService.columnSortState);\r\n this.filterAppliedToTable.emit(this.tableData);\r\n }\r\n\r\n storeSortTypeInTempVariable(event: SortType) {\r\n this.tempSortOrder = event;\r\n this.disableTimeFilterApplyButton();\r\n }\r\n}\r\n","<div\r\n class=\"radio-container\"\r\n *ngIf=\"showFilterHeaderTabs\"\r\n>\r\n <div *ngFor=\"let data of filterTabObjects\">\r\n <p\r\n class=\"filter-tab\"\r\n [title]=\"data.label\"\r\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\r\n [ngClass]=\"{ active: annaFilterService.selectedRadio == data.key }\"\r\n *ngIf=\"filterTabObjects.length > 0\"\r\n >\r\n {{ data.label }}\r\n </p>\r\n </div>\r\n</div>\r\n\r\n<anna-core-sort-lib\r\n *ngIf=\"showSortComponent\"\r\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\r\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\r\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\r\n></anna-core-sort-lib>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <button\r\n class=\"column-clear-all\"\r\n *ngIf=\"showClearAllFilter\"\r\n [disabled]=\"disableColumnClearAllBtn\"\r\n (click)=\"clearColumnFilter()\"\r\n >\r\n Clear filter\r\n </button>\r\n <div\r\n class=\"time-filter-checkboxes\"\r\n *ngIf=\"showAllTimeRangeCheckboxes\"\r\n >\r\n <!-- Multi time option checkbox -->\r\n <div\r\n class=\"d-flex align-items-center\"\r\n style=\"padding: 0.5rem 0 0.5rem 0.5rem\"\r\n *ngIf=\"showMultiTimeCheckbox\"\r\n >\r\n <span\r\n *ngIf=\"multiTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!multiTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Include Multi</p>\r\n </div>\r\n <!-- Zero time option checkbox -->\r\n <div\r\n class=\"d-flex align-items-center\"\r\n style=\"padding: 0.5rem 0 0.5rem 0.5rem\"\r\n *ngIf=\"showZeroTimeCheckbox\"\r\n >\r\n <span\r\n *ngIf=\"zeroTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!zeroTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Include Zero</p>\r\n </div>\r\n <!-- Enter time range option checkbox -->\r\n <div\r\n class=\"d-flex align-items-center\"\r\n style=\"padding: 0.5rem 0 0.5rem 0.5rem\"\r\n *ngIf=\"showEnterTimeCheckbox\"\r\n >\r\n <span\r\n *ngIf=\"enterTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!enterTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Enter time range</p>\r\n </div>\r\n </div>\r\n <div class=\"time-label-container\">\r\n <label>{{ startFromText }}</label>\r\n </div>\r\n <div class=\"time-container\">\r\n <input\r\n class=\"form-control numberInput\"\r\n [ngClass]=\"{ 'error-border': startTimeHourErr }\"\r\n [(ngModel)]=\"selectedFromTime[0]\"\r\n type=\"text\"\r\n pattern=\"[1-12]*\"\r\n (ngModelChange)=\"startTimeHourChange($event)\"\r\n />\r\n <div class=\"arrow-container\">\r\n <i\r\n class=\"mdi mdi-menu-up upward\"\r\n (click)=\"changeStartTimeHour(true)\"\r\n ></i>\r\n <i\r\n class=\"mdi mdi-menu-down downward\"\r\n (click)=\"changeStartTimeHour(false)\"\r\n ></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input\r\n class=\"form-control numberInput\"\r\n [ngClass]=\"{ 'error-border': startTimeMinErr }\"\r\n [(ngModel)]=\"selectedFromTime[1]\"\r\n type=\"text\"\r\n pattern=\"[0-59]*\"\r\n (ngModelChange)=\"startTimeMinChange($event)\"\r\n />\r\n <div class=\"arrow-container\">\r\n <i\r\n class=\"mdi mdi-menu-up upward\"\r\n (click)=\"changeStartTimeMinute(true)\"\r\n ></i>\r\n <i\r\n class=\"mdi mdi-menu-down downward\"\r\n style=\"position: relative; left: 0.25px\"\r\n (click)=\"changeStartTimeMinute(false)\"\r\n ></i>\r\n </div>\r\n <div>\r\n <mat-button-toggle-group\r\n [(ngModel)]=\"selectedFromTime[2]\"\r\n (ngModelChange)=\"disableTimeFilterApplyButton()\"\r\n >\r\n <mat-button-toggle value=\"AM\">\r\n <span>AM</span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"PM\">\r\n <span>PM</span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n\r\n <div class=\"time-label-container\">\r\n <label>{{ endToText }}</label>\r\n </div>\r\n <div class=\"time-container\">\r\n <input\r\n class=\"form-control numberInput\"\r\n [(ngModel)]=\"selectedToTime[0]\"\r\n [ngClass]=\"{ 'error-border': endTimeHourErr }\"\r\n (ngModelChange)=\"endTimeHourChange($event)\"\r\n type=\"text\"\r\n pattern=\"[1-12]*\"\r\n />\r\n <div class=\"arrow-container\">\r\n <i\r\n class=\"mdi mdi-menu-up upward\"\r\n (click)=\"changeEndTimeHour(true)\"\r\n ></i>\r\n <i\r\n class=\"mdi mdi-menu-down downward\"\r\n (click)=\"changeEndTimeHour(false)\"\r\n ></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input\r\n class=\"form-control numberInput\"\r\n [ngClass]=\"{ 'error-border': endTimeMinErr }\"\r\n [(ngModel)]=\"selectedToTime[1]\"\r\n (ngModelChange)=\"endTimeMinChange($event)\"\r\n type=\"text\"\r\n pattern=\"[0-59]*\"\r\n />\r\n <div class=\"arrow-container\">\r\n <i\r\n class=\"mdi mdi-menu-up upward\"\r\n (click)=\"changeEndTimeMinute(true)\"\r\n ></i>\r\n <i\r\n class=\"mdi mdi-menu-down downward\"\r\n style=\"position: relative; left: 0.25px\"\r\n (click)=\"changeEndTimeMinute(false)\"\r\n ></i>\r\n </div>\r\n <div>\r\n <mat-button-toggle-group\r\n [(ngModel)]=\"selectedToTime[2]\"\r\n (ngModelChange)=\"disableTimeFilterApplyButton()\"\r\n >\r\n <mat-button-toggle value=\"AM\">\r\n <span>AM</span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"PM\">\r\n <span>PM</span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"buttons-container\">\r\n <button\r\n class=\"button\"\r\n (click)=\"closeTimeFilter()\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n class=\"button\"\r\n [ngClass]=\"{ disabled: disableTimeFilterApplyBtn }\"\r\n (click)=\"applyTimeFilters()\"\r\n [disabled]=\"disableTimeFilterApplyBtn\"\r\n >\r\n Apply\r\n </button>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\nimport dayjs from 'dayjs';\r\nimport { cloneDeep, isEqual } from 'lodash-es';\r\n\r\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\r\nimport {\r\n AnnaDateTimeFormatService,\r\n NgbDateType,\r\n} from '../../../../anna-core-shared-lib/services/anna-date-time-format.service';\r\nimport { SortType, SortTypeEnum } from '../../../../anna-core-shared-lib/models/anna-sort.model';\r\nimport { radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\r\nimport { AnnaCalendarFilterComponent } from '../../../../anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component';\r\nimport { AnnaSortComponent } from '../../anna-sort/anna-sort.component';\r\nimport { NgIf, NgFor, NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-column-date-range-filter',\r\n templateUrl: './anna-column-date-range-filter.component.html',\r\n styleUrls: ['./anna-column-date-range-filter.component.scss'],\r\n standalone: true,\r\n imports: [NgIf, NgFor, NgClass, AnnaSortComponent, AnnaCalendarFilterComponent],\r\n})\r\nexport class AnnaColumnDateRangeFilterComponent implements OnInit {\r\n @Input() tableData: any[];\r\n @Input() clonedTableData: any[];\r\n @Input() filterTabObjects: any[];\r\n @Input() isLurAndCsrComponent: boolean;\r\n @Input() showFilterHeaderTabs: boolean;\r\n\r\n @Output() filterAppliedToTable = new EventEmitter();\r\n @Output() sortingAppliedToTable = new EventEmitter();\r\n @Output() getSortType = new EventEmitter();\r\n @Output() closeTooltip = new EventEmitter();\r\n\r\n isFilterChanged: boolean;\r\n tempSortOrder: SortType = null;\r\n isSortChanged: boolean;\r\n showSortComponent: boolean = false;\r\n disableCalendarApplyBtn: boolean;\r\n selectedLabel: string;\r\n showFilterComponent: boolean = false;\r\n disableColumnClearAllBtn: boolean = true;\r\n\r\n calendarMinEnabledDate: NgbDateType;\r\n calendarMaxEnabledDate: NgbDateType;\r\n selectedMinDate: NgbDateType;\r\n selectedMaxDate: NgbDateType;\r\n calendarSelection: any = { fromDate: null, toDate: null };\r\n\r\n constructor(\r\n public annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n private annaSortService: AnnaSortService,\r\n public annaFilterService: AnnaFilterService,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\r\n }\r\n\r\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\r\n let header = activeTab.key;\r\n this.selectedLabel = activeTab.label;\r\n\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n\r\n this.tempSortOrder = null;\r\n this.isFilterChanged = false;\r\n this.isSortChanged = false;\r\n\r\n this.annaFilterService.selectedRadio = header;\r\n this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();\r\n\r\n if (reload) {\r\n setTimeout(() => {\r\n this.createFilterTooltipData(activeTab, header);\r\n }, 100);\r\n } else {\r\n this.createFilterTooltipData(activeTab, header);\r\n }\r\n }\r\n\r\n createFilterTooltipData(activeTab: radioButtonModel, key: string) {\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n\r\n this.disableCalendarApplyBtn = true;\r\n\r\n if (this.showFilterComponent) {\r\n this.getCalendarData();\r\n }\r\n }\r\n\r\n getCalendarData() {\r\n const parsingFormat = 'MM/DD/YYYY';\r\n let optionData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n let minMaxDate = this.annaFilterService.createRangeForTheDateFilter(optionData);\r\n this.selectRangeForTheDateFilter(minMaxDate, parsingFormat);\r\n }\r\n\r\n selectRangeForTheDateFilter(minMaxDate: any[], parsingFormat: string) {\r\n [this.calendarMinEnabledDate, this.calendarMaxEnabledDate] =\r\n this.annaFilterService.getMinAndMaxDateRangeForCalendar(minMaxDate, parsingFormat);\r\n\r\n [this.selectedMinDate, this.selectedMaxDate] = this.annaFilterService.getSelectedDateForCalendar(\r\n minMaxDate,\r\n parsingFormat,\r\n this.calendarMinEnabledDate,\r\n this.calendarMaxEnabledDate,\r\n );\r\n\r\n this.calendarSelection.fromDate = cloneDeep(this.selectedMinDate);\r\n this.calendarSelection.toDate = cloneDeep(this.selectedMaxDate);\r\n }\r\n\r\n applyDateFilter() {\r\n this.applyDateFilterOnData();\r\n this.applySortingOnFilteredData();\r\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n this.emitData();\r\n }\r\n\r\n applySortingOnFilteredData() {\r\n if (this.showSortComponent) {\r\n if (this.isSortChanged) {\r\n this.tableData = this.annaFilterService.updateSortMap(\r\n this.tempSortOrder,\r\n this.tableData,\r\n this.isLurAndCsrComponent,\r\n );\r\n } else if (this.isFilterChanged) {\r\n this.tableData = this.annaSortService.checkIfSortingIsApplied(\r\n this.tableData,\r\n this.isLurAndCsrComponent,\r\n );\r\n }\r\n } else if (this.isFilterChanged) {\r\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\r\n }\r\n }\r\n\r\n emitData() {\r\n if (this.isFilterChanged && this.isSortChanged) {\r\n this.filterAppliedToTable.emit(this.tableData);\r\n } else if (this.isFilterChanged) {\r\n this.filterAppliedToTable.emit(this.tableData);\r\n } else if (this.isSortChanged) {\r\n this.getSortType.emit(this.tempSortOrder);\r\n this.sortingAppliedToTable.emit(this.tableData);\r\n }\r\n }\r\n\r\n cancelInDateFilter() {\r\n this.closeTooltip.emit();\r\n }\r\n\r\n calendarDateChanged(event: any) {\r\n this.calendarSelection = event;\r\n this.disableCalendarApplyButton();\r\n }\r\n\r\n disableCalendarApplyButton() {\r\n if (this.showFilterComponent && this.showSortComponent) {\r\n let isFilterChanged = this.checkIfDateTooltipIsFiltered();\r\n let isSortChanged = this.checkIfSortingChanged();\r\n this.disableCalendarApplyBtn =\r\n !(this.calendarSelection.fromDate && this.calendarSelection.toDate) ||\r\n (!isSortChanged && !isFilterChanged);\r\n } else if (this.showFilterComponent) {\r\n this.disableCalendarApplyBtn =\r\n !(this.calendarSelection.fromDate && this.calendarSelection.toDate) ||\r\n !this.checkIfDateTooltipIsFiltered();\r\n } else if (this.showSortComponent) {\r\n this.disableCalendarApplyBtn = !this.checkIfSortingChanged();\r\n }\r\n }\r\n\r\n checkIfSortingChanged() {\r\n this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);\r\n return this.isSortChanged;\r\n }\r\n\r\n checkIfDateTooltipIsFiltered() {\r\n let previousSelectedDate = this.annaFilterService.getPreviousSelectedDatesForCalendar(this.clonedTableData);\r\n let currentSelectedDate = cloneDeep(this.calendarSelection);\r\n\r\n if (currentSelectedDate.fromDate && currentSelectedDate.toDate) {\r\n currentSelectedDate = this.annaFilterService.getCurrentSelectedDatesForCalendar(\r\n cloneDeep(this.calendarSelection),\r\n this.calendarMinEnabledDate,\r\n this.calendarMaxEnabledDate,\r\n );\r\n this.isFilterChanged = !isEqual(previousSelectedDate, currentSelectedDate);\r\n }\r\n\r\n return this.isFilterChanged;\r\n }\r\n\r\n applyDateFilterOnData() {\r\n if (this.showFilterComponent && this.isFilterChanged) {\r\n let currentSelectedDate = this.annaFilterService.getCurrentSelectedDatesForCalendar(\r\n cloneDeep(this.calendarSelection),\r\n this.calendarMinEnabledDate,\r\n this.calendarMaxEnabledDate,\r\n );\r\n this.annaFilterService.reOrderAppliedFiltersState(this.clonedTableData, currentSelectedDate);\r\n this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, currentSelectedDate);\r\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, '');\r\n this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);\r\n }\r\n }\r\n\r\n clearColumnFilter() {\r\n this.annaFilterService.clearColumnFilter();\r\n this.tableData = cloneDeep(this.annaFilterService.filterData(this.clonedTableData, ''));\r\n this.annaSortService.noSortingAppliedData = this.tableData;\r\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\r\n this.annaFilterService.updateStateOfTheCurrentFilterTab(this.annaSortService.columnSortState);\r\n this.filterAppliedToTable.emit(this.tableData);\r\n }\r\n\r\n storeSortTypeInTempVariable(event: SortType) {\r\n this.tempSortOrder = event;\r\n this.disableCalendarApplyButton();\r\n }\r\n}\r\n","<div\r\n class=\"radio-container\"\r\n *ngIf=\"showFilterHeaderTabs\"\r\n>\r\n <div *ngFor=\"let data of filterTabObjects\">\r\n <p\r\n class=\"filter-tab\"\r\n [title]=\"data.label\"\r\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\r\n [ngClass]=\"{ active: annaFilterService.selectedRadio == data.key }\"\r\n *ngIf=\"filterTabObjects.length > 0\"\r\n >\r\n {{ data.label }}\r\n </p>\r\n </div>\r\n</div>\r\n\r\n<anna-core-sort-lib\r\n *ngIf=\"showSortComponent\"\r\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\r\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\r\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\r\n></anna-core-sort-lib>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <div class=\"datepicker-container\">\r\n <button\r\n class=\"column-clear-all\"\r\n [disabled]=\"disableColumnClearAllBtn\"\r\n (click)=\"clearColumnFilter()\"\r\n >\r\n Clear filter\r\n </button>\r\n <anna-core-calendar-filter-lib\r\n class=\"filter-calendar\"\r\n [minDate]=\"calendarMinEnabledDate\"\r\n [maxDate]=\"calendarMaxEnabledDate\"\r\n [selectedFromDate]=\"selectedMinDate\"\r\n [selectedToDate]=\"selectedMaxDate\"\r\n (selectedDate)=\"calendarDateChanged($event)\"\r\n [label]=\"selectedLabel\"\r\n >\r\n </anna-core-calendar-filter-lib>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"buttons-container\">\r\n <button\r\n class=\"button\"\r\n (click)=\"cancelInDateFilter()\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n class=\"button\"\r\n (click)=\"applyDateFilter()\"\r\n [ngClass]=\"{ disabled: disableCalendarApplyBtn }\"\r\n [disabled]=\"disableCalendarApplyBtn\"\r\n >\r\n Apply\r\n </button>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\r\nimport { SortType } from '../../../../anna-core-shared-lib/models/anna-sort.model';\r\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\r\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { Options, NgxSliderModule } from '@angular-slider/ngx-slider';\r\nimport { isEqual, cloneDeep } from 'lodash-es';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AnnaSortComponent } from '../../anna-sort/anna-sort.component';\r\nimport { NgIf, NgFor, NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-column-slider-filter',\r\n templateUrl: './anna-column-slider-filter.component.html',\r\n styleUrls: ['./anna-column-slider-filter.component.scss'],\r\n standalone: true,\r\n imports: [NgIf, NgFor, NgClass, AnnaSortComponent, FormsModule, NgxSliderModule],\r\n})\r\nexport class AnnaColumnSliderFilterComponent {\r\n @Input() filterTabObjects: any[];\r\n @Input() isLurAndCsrComponent: boolean;\r\n @Input() tableData: any[];\r\n @Input() showFilterHeaderTabs: boolean;\r\n @Input() clonedTableData: any[];\r\n\r\n @Output() closeTooltip = new EventEmitter();\r\n @Output() filterAppliedToTable = new EventEmitter();\r\n @Output() getSortType = new EventEmitter();\r\n @Output() sortingAppliedToTable = new EventEmitter();\r\n\r\n showSortComponent: boolean;\r\n showFilterComponent: boolean;\r\n\r\n tempSortOrder: SortType = null;\r\n isFilterChanged: boolean = false;\r\n isSortChanged: boolean = false;\r\n showEmptySpaceForSlider: boolean = false;\r\n incorrectSliderInput: boolean;\r\n sliderEnteredMaxValue: number;\r\n sliderEnteredMinValue: number;\r\n showSliderMinValueError: boolean;\r\n showSliderMaxValueError: boolean;\r\n isMinTextBoxEmpty: boolean;\r\n isMaxTextBoxEmpty: boolean;\r\n options: Options;\r\n sliderFilterTextBoxStep: string;\r\n sliderMinValue: number;\r\n sliderMaxValue: number;\r\n disableSliderApplyButton: boolean;\r\n sliderValue: { min: number; max: number };\r\n disableColumnClearAllBtn: boolean = true;\r\n\r\n constructor(\r\n public annaFilterService: AnnaFilterService,\r\n public annaSortService: AnnaSortService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\r\n }\r\n\r\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\r\n let header = activeTab.key;\r\n\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n\r\n this.tempSortOrder = null;\r\n this.isFilterChanged = false;\r\n this.isSortChanged = false;\r\n\r\n this.annaFilterService.selectedRadio = header;\r\n this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();\r\n if (reload) {\r\n setTimeout(() => {\r\n this.createFilterTooltipData(activeTab, header);\r\n }, 100);\r\n } else {\r\n this.createFilterTooltipData(activeTab, header);\r\n }\r\n }\r\n\r\n createFilterTooltipData(activeTab: radioButtonModel, key: string) {\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n\r\n this.disableSliderApplyButton = true;\r\n\r\n if (this.showFilterComponent) {\r\n this.getSliderData(key);\r\n }\r\n }\r\n\r\n getSliderData(key: string) {\r\n this.showEmptySpaceForSlider = true;\r\n\r\n this.createOptionsForSlider(key);\r\n this.setSelectedRangeForSlider(key);\r\n\r\n setTimeout(() => {\r\n this.showEmptySpaceForSlider = false;\r\n }, 0);\r\n }\r\n\r\n createOptionsForSlider(key: string) {\r\n let translateFunc = this.annaFilterService.getSliderTranslateFuncVal(\r\n key,\r\n this.annaFilterService.sliderCurrencySet,\r\n );\r\n this.incorrectSliderInput = false;\r\n this.sliderEnteredMaxValue = this.sliderEnteredMinValue = null;\r\n this.showSliderMinValueError =\r\n this.showSliderMaxValueError =\r\n this.isMinTextBoxEmpty =\r\n this.isMaxTextBoxEmpty =\r\n false;\r\n\r\n let optionsData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n this.options = this.annaFilterService.getSliderOptions(optionsData, translateFunc, key);\r\n\r\n this.options.step = 1;\r\n this.sliderFilterTextBoxStep = '1';\r\n if (key !== 'WeekNumber') {\r\n this.options.step = 0.01;\r\n this.sliderFilterTextBoxStep = '0.01';\r\n }\r\n }\r\n\r\n setSelectedRangeForSlider(key: string) {\r\n [this.sliderMinValue, this.sliderMaxValue] = this.annaFilterService.setSelectedRangeForSlider(\r\n key,\r\n this.options,\r\n );\r\n this.sliderEnteredMinValue = this.sliderMinValue;\r\n this.sliderEnteredMaxValue = this.sliderMaxValue;\r\n }\r\n\r\n cancelSliderFilter() {\r\n this.sliderValue = null;\r\n this.closeTooltip.emit();\r\n }\r\n\r\n minValueChanged(val: string) {\r\n if (val || val == '0') {\r\n this.sliderEnteredMinValue = +val;\r\n this.isMinTextBoxEmpty = false;\r\n if (this.isMaxTextBoxEmpty) {\r\n if (this.sliderEnteredMinValue > this.options.ceil || this.sliderEnteredMinValue < this.options.floor) {\r\n this.showSliderMinValueError = true;\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n } else {\r\n this.showSliderMinValueError = false;\r\n this.showSliderMaxValueError = false;\r\n this.disableSliderApplyButton = false;\r\n this.incorrectSliderInput = false;\r\n }\r\n } else if (this.sliderEnteredMinValue > this.sliderEnteredMaxValue) {\r\n if (this.annaFilterService.isValueInRange(this.options, this.sliderEnteredMaxValue)) {\r\n this.showSliderMinValueError = true;\r\n this.showSliderMaxValueError = false;\r\n } else {\r\n this.showSliderMaxValueError = true;\r\n if (this.annaFilterService.isValueInRange(this.options, this.sliderEnteredMinValue)) {\r\n this.showSliderMinValueError = false;\r\n } else {\r\n this.showSliderMinValueError = true;\r\n }\r\n }\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n } else if (this.sliderEnteredMinValue < this.options.floor) {\r\n this.showSliderMinValueError = true;\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n } else {\r\n this.showSliderMinValueError = false;\r\n this.disableSliderApplyButton = false;\r\n this.incorrectSliderInput = false;\r\n }\r\n } else {\r\n this.sliderEnteredMinValue = this.options.floor;\r\n this.isMinTextBoxEmpty = true;\r\n this.showSliderMinValueError = false;\r\n }\r\n this.showErrorForMinAndMaxValue();\r\n }\r\n\r\n maxValueChanged(val: string) {\r\n if (val || val == '0') {\r\n this.sliderEnteredMaxValue = +val;\r\n this.isMaxTextBoxEmpty = false;\r\n if (this.isMinTextBoxEmpty) {\r\n if (this.sliderEnteredMaxValue < this.options.floor || this.sliderEnteredMaxValue > this.options.ceil) {\r\n this.showSliderMaxValueError = true;\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n } else {\r\n this.showSliderMaxValueError = false;\r\n this.showSliderMinValueError = false;\r\n this.disableSliderApplyButton = false;\r\n this.incorrectSliderInput = false;\r\n }\r\n } else if (this.sliderEnteredMaxValue < this.sliderEnteredMinValue) {\r\n if (this.annaFilterService.isValueInRange(this.options, this.sliderEnteredMinValue)) {\r\n this.showSliderMaxValueError = true;\r\n this.showSliderMinValueError = false;\r\n } else {\r\n this.showSliderMinValueError = true;\r\n if (this.annaFilterService.isValueInRange(this.options, this.sliderEnteredMaxValue)) {\r\n this.showSliderMaxValueError = false;\r\n } else {\r\n this.showSliderMaxValueError = true;\r\n }\r\n }\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n // this.showMaxError = true;\r\n } else if (this.sliderEnteredMaxValue > this.options.ceil) {\r\n this.showSliderMaxValueError = true;\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n } else {\r\n this.showSliderMaxValueError = false;\r\n this.disableSliderApplyButton = false;\r\n this.incorrectSliderInput = false;\r\n }\r\n } else {\r\n this.sliderEnteredMaxValue = this.options.ceil;\r\n this.isMaxTextBoxEmpty = true;\r\n this.showSliderMaxValueError = false;\r\n }\r\n this.showErrorForMinAndMaxValue();\r\n }\r\n\r\n showErrorForMinAndMaxValue() {\r\n if (this.isMinTextBoxEmpty && this.isMaxTextBoxEmpty) {\r\n this.showSliderMinValueError = true;\r\n this.showSliderMaxValueError = true;\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n } else if (this.showSliderMaxValueError || this.showSliderMinValueError) {\r\n this.incorrectSliderInput = true;\r\n } else {\r\n this.incorrectSliderInput = false;\r\n }\r\n this.disableSliderApplyBtn();\r\n }\r\n\r\n disableSliderApplyBtn() {\r\n if (this.showFilterComponent && this.showSortComponent) {\r\n let isFilterChanged = this.checkIfSliderTooltipIsFiltered();\r\n let isSortChanged = this.checkIfSortingChanged();\r\n\r\n this.disableSliderApplyButton = this.incorrectSliderInput || (!isSortChanged && !isFilterChanged);\r\n } else if (this.showFilterComponent) {\r\n this.disableSliderApplyButton = this.incorrectSliderInput || !this.checkIfSliderTooltipIsFiltered();\r\n } else if (this.showSortComponent) {\r\n this.disableSliderApplyButton = !this.checkIfSortingChanged();\r\n }\r\n }\r\n\r\n checkIfSortingChanged() {\r\n this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);\r\n return this.isSortChanged;\r\n }\r\n\r\n checkIfSliderTooltipIsFiltered() {\r\n let previousSelectedValue = this.annaFilterService.getPreviousSelectedValueForSlider(this.clonedTableData);\r\n let currentSelectedValue = this.annaFilterService.getCurrentSelectedValueForSlider(\r\n this.sliderEnteredMinValue,\r\n this.sliderEnteredMaxValue,\r\n this.options,\r\n );\r\n\r\n this.isFilterChanged = !isEqual(previousSelectedValue, currentSelectedValue);\r\n return this.isFilterChanged;\r\n }\r\n\r\n storeSortTypeInTempVariable(event: SortType) {\r\n this.tempSortOrder = event;\r\n this.disableSliderApplyBtn();\r\n }\r\n\r\n applyFilters() {\r\n this.applySliderFilter();\r\n this.applySortingOnFilteredData();\r\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n this.emitData();\r\n }\r\n\r\n applySliderFilter() {\r\n if (this.showFilterComponent && this.isFilterChanged) {\r\n let currentSliderData = this.annaFilterService.getCurrentSelectedValueForSlider(\r\n this.sliderEnteredMinValue,\r\n this.sliderEnteredMaxValue,\r\n this.options,\r\n );\r\n this.annaFilterService.reOrderAppliedFiltersState(this.clonedTableData, currentSliderData);\r\n this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, currentSliderData);\r\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, '');\r\n this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);\r\n }\r\n }\r\n\r\n applySortingOnFilteredData() {\r\n if (this.showSortComponent) {\r\n if (this.isSortChanged) {\r\n this.tableData = this.annaFilterService.updateSortMap(\r\n this.tempSortOrder,\r\n this.tableData,\r\n this.isLurAndCsrComponent,\r\n );\r\n } else if (this.isFilterChanged) {\r\n this.tableData = this.annaSortService.checkIfSortingIsApplied(\r\n this.tableData,\r\n this.isLurAndCsrComponent,\r\n );\r\n }\r\n } else if (this.isFilterChanged) {\r\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\r\n }\r\n }\r\n\r\n emitData() {\r\n if (this.isFilterChanged && this.isSortChanged) {\r\n this.filterAppliedToTable.emit(this.tableData);\r\n } else if (this.isFilterChanged) {\r\n this.filterAppliedToTable.emit(this.tableData);\r\n } else if (this.isSortChanged) {\r\n this.getSortType.emit(this.tempSortOrder);\r\n this.sortingAppliedToTable.emit(this.tableData);\r\n }\r\n }\r\n\r\n clearColumnFilter() {\r\n this.annaFilterService.clearColumnFilter();\r\n this.tableData = cloneDeep(this.annaFilterService.filterData(this.clonedTableData, ''));\r\n this.annaSortService.noSortingAppliedData = this.tableData;\r\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\r\n this.annaFilterService.updateStateOfTheCurrentFilterTab(this.annaSortService.columnSortState);\r\n this.filterAppliedToTable.emit(this.tableData);\r\n }\r\n}\r\n","<div\r\n class=\"radio-container\"\r\n *ngIf=\"showFilterHeaderTabs\"\r\n>\r\n <div *ngFor=\"let data of filterTabObjects\">\r\n <p\r\n class=\"filter-tab\"\r\n [title]=\"data.label\"\r\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\r\n [ngClass]=\"{ active: annaFilterService.selectedRadio == data.key }\"\r\n *ngIf=\"filterTabObjects.length > 0\"\r\n >\r\n {{ data.label }}\r\n </p>\r\n </div>\r\n</div>\r\n\r\n<anna-core-sort-lib\r\n *ngIf=\"showSortComponent\"\r\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\r\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\r\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\r\n></anna-core-sort-lib>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <button\r\n class=\"column-clear-all\"\r\n [disabled]=\"disableColumnClearAllBtn\"\r\n (click)=\"clearColumnFilter()\"\r\n >\r\n Clear filter\r\n </button>\r\n <section class=\"min-maxContainer\">\r\n <input\r\n type=\"number\"\r\n class=\"slider-text\"\r\n step=\"{{ sliderFilterTextBoxStep }}\"\r\n [(ngModel)]=\"sliderMinValue\"\r\n (ngModelChange)=\"minValueChanged($event)\"\r\n [ngClass]=\"{ 'red-border': showSliderMinValueError }\"\r\n placeholder=\"Min\"\r\n />\r\n <span>To</span>\r\n <input\r\n type=\"number\"\r\n class=\"slider-text\"\r\n step=\"{{ sliderFilterTextBoxStep }}\"\r\n [(ngModel)]=\"sliderMaxValue\"\r\n (ngModelChange)=\"maxValueChanged($event)\"\r\n [ngClass]=\"{ 'red-border': showSliderMaxValueError }\"\r\n placeholder=\"Max\"\r\n />\r\n </section>\r\n <div class=\"sidebar-slider\">\r\n <ngx-slider\r\n *ngIf=\"!showEmptySpaceForSlider\"\r\n [ngClass]=\"{\r\n 'show-min': sliderMinValue != options.floor,\r\n 'show-max': sliderMaxValue != options.ceil\r\n }\"\r\n class=\"filter-slider\"\r\n [value]=\"sliderEnteredMinValue\"\r\n [highValue]=\"sliderEnteredMaxValue\"\r\n [options]=\"options\"\r\n ></ngx-slider>\r\n <div\r\n *ngIf=\"showEmptySpaceForSlider\"\r\n class=\"slider-placeholder\"\r\n ></div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"buttons-container\">\r\n <button\r\n class=\"button\"\r\n (click)=\"cancelSliderFilter()\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n class=\"button\"\r\n [ngClass]=\"{ disabled: disableSliderApplyButton }\"\r\n (click)=\"applyFilters()\"\r\n [disabled]=\"disableSliderApplyButton\"\r\n >\r\n Apply\r\n </button>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { cloneDeep, isEqual } from 'lodash-es';\r\n\r\nimport { SortType } from '../../../../anna-core-shared-lib/models/anna-sort.model';\r\nimport { TooltipModel, radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\r\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\r\nimport { CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf } from '@angular/cdk/scrolling';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AnnaSortComponent } from '../../anna-sort/anna-sort.component';\r\nimport { NgIf, NgFor, NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-column-checkbox-filter',\r\n templateUrl: './anna-column-checkbox-filter.component.html',\r\n styleUrls: ['./anna-column-checkbox-filter.component.scss'],\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n NgFor,\r\n NgClass,\r\n AnnaSortComponent,\r\n FormsModule,\r\n CdkVirtualScrollViewport,\r\n CdkFixedSizeVirtualScroll,\r\n CdkVirtualForOf,\r\n ],\r\n})\r\nexport class AnnaColumnCheckboxFilterComponent {\r\n @Input() showFilterHeaderTabs: boolean;\r\n @Input() isLurAndCsrComponent: boolean;\r\n @Input() tableData: any[];\r\n @Input() clonedTableData: any[];\r\n @Input() filterTabObjects: any[];\r\n\r\n @Output() filterAppliedToTable = new EventEmitter();\r\n @Output() sortingAppliedToTable = new EventEmitter();\r\n @Output() getSortType = new EventEmitter();\r\n @Output() closeTooltip = new EventEmitter();\r\n\r\n tooltipOptions: TooltipModel[];\r\n clonedTooltipOptions: TooltipModel[];\r\n heightOfCheckboxTooltipFilter: number;\r\n toolTipdata: any;\r\n tempTooltipData: any;\r\n selectedCheckboxOptionsCount: number;\r\n isFilterChanged: boolean;\r\n tempSortOrder: SortType = null;\r\n isSortChanged: boolean;\r\n disableSelectAll: boolean;\r\n disableClearAll: boolean;\r\n searchItem: string;\r\n showSortComponent: boolean = false;\r\n disableCheckboxApply: boolean;\r\n showFilterComponent: boolean = false;\r\n margin = 5;\r\n\r\n constructor(\r\n private annaSortService: AnnaSortService,\r\n public annaFilterService: AnnaFilterService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\r\n }\r\n\r\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\r\n let header = activeTab.key;\r\n this.searchItem = null;\r\n\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n this.tempSortOrder = null;\r\n this.isFilterChanged = false;\r\n this.isSortChanged = false;\r\n\r\n this.annaFilterService.selectedRadio = header;\r\n if (reload) {\r\n setTimeout(() => {\r\n this.createFilterTooltipData(activeTab, header);\r\n }, 100);\r\n } else {\r\n this.createFilterTooltipData(activeTab, header);\r\n }\r\n }\r\n\r\n createFilterTooltipData(activeTab: radioButtonModel, key: string) {\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n\r\n this.disableCheckboxApply = true;\r\n\r\n if (this.showFilterComponent) {\r\n this.getCheckboxData(key);\r\n }\r\n }\r\n\r\n getCheckboxData(header: string) {\r\n let tooltipOptions = this.createListForCheckboxFilter(header);\r\n\r\n let [clonedTooltipOptions, updatedTooltipOptions, selectedItems, unselectedItems] =\r\n this.annaFilterService.getClonedTooltipAndTooltipOption(tooltipOptions, 'label');\r\n\r\n this.clonedTooltipOptions = clonedTooltipOptions;\r\n this.tooltipOptions = updatedTooltipOptions;\r\n\r\n this.heightOfCheckboxTooltipFilter = this.annaFilterService.getHeightOfCheckboxTooltipFilter(\r\n this.tooltipOptions.length,\r\n this.margin,\r\n );\r\n\r\n this.disableSelectAll = unselectedItems.length == 0;\r\n this.disableClearAll = selectedItems.length == 0;\r\n this.selectedCheckboxOptionsCount = selectedItems.length;\r\n }\r\n\r\n createListForCheckboxFilter(header: string) {\r\n let optionData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n let tooltipOptions = this.annaFilterService.createListForCheckboxFilter(header, optionData);\r\n\r\n return tooltipOptions;\r\n }\r\n\r\n selectUnselectListCheckbox(tooltipOptions: TooltipModel[], header: string) {\r\n if (this.annaFilterService.tooltipSelectedMap.has(header)) {\r\n let selectedValueSet = new Set(this.annaFilterService.tooltipSelectedMap.get(header));\r\n tooltipOptions.forEach((item) => (item.isSelected = selectedValueSet.has(item.value) ? true : false));\r\n } else {\r\n tooltipOptions.forEach((item) => (item.isSelected = true));\r\n }\r\n }\r\n\r\n unCheckAllCheckbox() {\r\n this.annaFilterService.unCheckAllCheckbox(this.tooltipOptions, this.clonedTooltipOptions);\r\n this.selectedCheckboxOptionsCount = 0;\r\n this.disableSelectAll = false;\r\n this.disableClearAll = true;\r\n this.disableCheckboxApply = true;\r\n }\r\n\r\n selectAllCheckbox() {\r\n this.annaFilterService.selectAllCheckbox(this.tooltipOptions, this.clonedTooltipOptions);\r\n this.selectedCheckboxOptionsCount = this.tooltipOptions.length;\r\n this.disableSelectAll = true;\r\n this.disableClearAll = false;\r\n this.disableCheckboxFilterApplyButton();\r\n }\r\n\r\n searchForTheItem(str: string) {\r\n if (str) {\r\n this.tooltipOptions = this.annaFilterService.getFilteredOptionAsBoldString(str, this.clonedTooltipOptions);\r\n this.calculateHeightForFilterTooltip();\r\n\r\n if (this.tooltipOptions.length > 0) {\r\n let [selectedItems, unselectedItems] = this.annaFilterService.getSelectedAndUnselectedItems(\r\n this.tooltipOptions,\r\n );\r\n this.disableSelectAll = unselectedItems.length == 0;\r\n this.disableClearAll = selectedItems.length == 0;\r\n this.selectedCheckboxOptionsCount = selectedItems.length;\r\n this.disableCheckboxApply = selectedItems.length == 0 || !this.checkIfCheckboxTooltipIsFiltered();\r\n } else {\r\n [\r\n this.selectedCheckboxOptionsCount,\r\n this.disableCheckboxApply,\r\n this.disableClearAll,\r\n this.disableSelectAll,\r\n ] = this.annaFilterService.disableAllBtnsWhenThereAreNoFilteredResults();\r\n }\r\n } else {\r\n this.tooltipOptions = cloneDeep(this.clonedTooltipOptions);\r\n this.calculateHeightForFilterTooltip();\r\n let [selectedItems, unselectedItems] = this.annaFilterService.getSelectedAndUnselectedItems(\r\n this.tooltipOptions,\r\n );\r\n this.selectedCheckboxOptionsCount = selectedItems.length;\r\n this.disableSelectAll = unselectedItems.length == 0;\r\n this.disableClearAll = selectedItems.length == 0;\r\n this.disableCheckboxFilterApplyButton();\r\n }\r\n }\r\n\r\n calculateHeightForFilterTooltip() {\r\n let dataLength = this.tooltipOptions.length == 0 ? 1 : this.tooltipOptions.length;\r\n this.heightOfCheckboxTooltipFilter = this.annaFilterService.getHeightOfCheckboxTooltipFilter(\r\n dataLength,\r\n this.margin,\r\n );\r\n }\r\n\r\n disableCheckboxFilterApplyButton() {\r\n let selectedItems = this.showFilterComponent ? this.tooltipOptions.filter((item) => item.isSelected) : [];\r\n\r\n if (this.showFilterComponent && this.showSortComponent) {\r\n let isFilterChanged = this.checkIfCheckboxTooltipIsFiltered();\r\n let isSortChanged = this.checkIfSortingChanged();\r\n this.disableCheckboxApply = selectedItems.length == 0 || (!isSortChanged && !isFilterChanged);\r\n } else if (this.showFilterComponent) {\r\n this.disableCheckboxApply = selectedItems.length == 0 || !this.checkIfCheckboxTooltipIsFiltered();\r\n } else if (this.showSortComponent) {\r\n this.disableCheckboxApply = !this.checkIfSortingChanged();\r\n }\r\n }\r\n\r\n checkIfSortingChanged() {\r\n this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);\r\n return this.isSortChanged;\r\n }\r\n\r\n checkIfCheckboxTooltipIsFiltered() {\r\n let previousSelectedValue = this.annaFilterService.getCheckboxPreviousSelectedValue(this.clonedTableData);\r\n let currentSelectedValue = this.annaFilterService.getCheckboxCurrentSelectedValue(\r\n this.searchItem,\r\n this.tooltipOptions,\r\n );\r\n this.isFilterChanged = !isEqual(currentSelectedValue, previousSelectedValue);\r\n return this.isFilterChanged;\r\n }\r\n\r\n applyFilters() {\r\n this.applyListFilters();\r\n this.applySortingOnFilteredData();\r\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n this.emitData();\r\n }\r\n\r\n applyListFilters() {\r\n if (this.showFilterComponent && this.isFilterChanged) {\r\n let currentSelectedValue = this.annaFilterService.getCheckboxCurrentSelectedValue(\r\n this.searchItem,\r\n this.tooltipOptions,\r\n );\r\n this.annaFilterService.reOrderAppliedFiltersState(this.clonedTableData, currentSelectedValue);\r\n this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, currentSelectedValue);\r\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, '');\r\n this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);\r\n }\r\n }\r\n\r\n applySortingOnFilteredData() {\r\n if (this.showSortComponent) {\r\n if (this.isSortChanged) {\r\n this.tableData = this.annaFilterService.updateSortMap(\r\n this.tempSortOrder,\r\n this.tableData,\r\n this.isLurAndCsrComponent,\r\n );\r\n } else if (this.isFilterChanged) {\r\n this.tableData = this.annaSortService.checkIfSortingIsApplied(\r\n this.tableData,\r\n this.isLurAndCsrComponent,\r\n );\r\n }\r\n } else if (this.isFilterChanged) {\r\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\r\n }\r\n }\r\n\r\n emitData() {\r\n if (this.isFilterChanged && this.isSortChanged) {\r\n this.filterAppliedToTable.emit(this.tableData);\r\n } else if (this.isFilterChanged) {\r\n this.filterAppliedToTable.emit(this.tableData);\r\n } else if (this.isSortChanged) {\r\n this.getSortType.emit(this.tempSortOrder);\r\n this.sortingAppliedToTable.emit(this.tableData);\r\n }\r\n }\r\n\r\n selectUnselectCheckbox(data: TooltipModel) {\r\n this.annaFilterService.selectUnselectCheckbox(data, this.clonedTooltipOptions);\r\n let [selectedItems, unselectedItems] = this.annaFilterService.getSelectedAndUnselectedItems(\r\n this.tooltipOptions,\r\n );\r\n\r\n this.disableClearAll = selectedItems.length == 0;\r\n this.disableSelectAll = unselectedItems.length == 0;\r\n this.selectedCheckboxOptionsCount = selectedItems.length;\r\n this.disableCheckboxFilterApplyButton();\r\n }\r\n\r\n closeCheckboxFilter() {\r\n if (this.toolTipdata) {\r\n this.revert();\r\n }\r\n this.closeTooltip.emit();\r\n }\r\n\r\n revert() {\r\n this.tempTooltipData = cloneDeep(this.toolTipdata);\r\n this.annaFilterService.tooltipMap.set(this.annaFilterService.selectedRadio, this.tempTooltipData);\r\n this.toolTipdata = null;\r\n }\r\n\r\n clearSearchedItem() {\r\n this.searchItem = '';\r\n this.searchForTheItem('');\r\n }\r\n\r\n storeSortTypeInTempVariable(event: SortType) {\r\n this.tempSortOrder = event;\r\n this.disableCheckboxFilterApplyButton();\r\n }\r\n}\r\n","<div\r\n class=\"radio-container\"\r\n *ngIf=\"showFilterHeaderTabs\"\r\n>\r\n <div\r\n [ngClass]=\"{ 'full-width': filterTabObjects.length == 1 }\"\r\n *ngFor=\"let data of filterTabObjects\"\r\n >\r\n <p\r\n class=\"filter-tab\"\r\n [title]=\"data.label\"\r\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\r\n [ngClass]=\"{ active: annaFilterService.selectedRadio == data.key }\"\r\n *ngIf=\"filterTabObjects.length > 0\"\r\n >\r\n {{ data.label }}\r\n </p>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"checkbox-sort\"\r\n *ngIf=\"showSortComponent\"\r\n>\r\n <anna-core-sort-lib\r\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\r\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\r\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\r\n ></anna-core-sort-lib>\r\n</div>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <p class=\"d-flex justify-content-between\">\r\n <button\r\n class=\"filter-text-btn\"\r\n [disabled]=\"disableClearAll\"\r\n (click)=\"unCheckAllCheckbox()\"\r\n >\r\n Clear all\r\n </button>\r\n <button\r\n class=\"filter-text-btn\"\r\n [disabled]=\"disableSelectAll\"\r\n (click)=\"selectAllCheckbox()\"\r\n >\r\n Select all\r\n </button>\r\n </p>\r\n <p class=\"search-box\">\r\n <i class=\"mi mdi-search search-icon search-icon-position\"></i>\r\n <input\r\n type=\"text\"\r\n placeholder=\"Search\"\r\n class=\"search-input\"\r\n style=\"margin-left: 2px; border: none; padding: 0px\"\r\n [(ngModel)]=\"searchItem\"\r\n (ngModelChange)=\"searchForTheItem($event)\"\r\n />\r\n <i\r\n class=\"mdi mdi-close search-bar-close\"\r\n [ngClass]=\"{ 'disable-close-icon': !searchItem || searchItem.length == 0 }\"\r\n (click)=\"clearSearchedItem()\"\r\n ></i>\r\n </p>\r\n <div style=\"position: relative\">\r\n <!-- Track By func -->\r\n <cdk-virtual-scroll-viewport\r\n itemSize=\"18\"\r\n [style.height.px]=\"heightOfCheckboxTooltipFilter\"\r\n class=\"dropdown-data-container\"\r\n >\r\n <p\r\n *cdkVirtualFor=\"let option of tooltipOptions\"\r\n class=\"input example-item\"\r\n (click)=\"selectUnselectCheckbox(option)\"\r\n >\r\n <span\r\n *ngIf=\"option.isSelected\"\r\n role=\"button\"\r\n class=\"mi mdi-check-box check-box\"\r\n ></span>\r\n <span\r\n *ngIf=\"!option.isSelected\"\r\n role=\"button\"\r\n class=\"mi mdi-check-box-outline-blank check-box unchecked\"\r\n ></span>\r\n <span\r\n class=\"data\"\r\n title=\"{{ option.value }}\"\r\n [innerHTML]=\"option.label\"\r\n ></span>\r\n </p>\r\n\r\n <p\r\n class=\"no-data-case\"\r\n *ngIf=\"tooltipOptions?.length == 0\"\r\n style=\"padding-left: 0.4375rem\"\r\n >\r\n No data found\r\n </p>\r\n </cdk-virtual-scroll-viewport>\r\n <div style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none\"></div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"buttons-container checkbox-filter-buttons-container\">\r\n <button\r\n class=\"button\"\r\n (click)=\"closeCheckboxFilter()\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n class=\"button\"\r\n [ngClass]=\"{ disabled: disableCheckboxApply }\"\r\n (click)=\"applyFilters()\"\r\n [disabled]=\"disableCheckboxApply\"\r\n >\r\n Apply\r\n <span *ngIf=\"showFilterComponent\">{{\r\n selectedCheckboxOptionsCount == tooltipOptions.length && tooltipOptions.length != 0 && !searchItem\r\n ? \"All (\" + selectedCheckboxOptionsCount + \")\"\r\n : \"(\" + selectedCheckboxOptionsCount + \")\"\r\n }}</span>\r\n </button>\r\n</div>\r\n","// Angular import statements\r\nimport {\r\n Component,\r\n OnInit,\r\n Input,\r\n ViewChildren,\r\n QueryList,\r\n Output,\r\n EventEmitter,\r\n SimpleChanges,\r\n OnChanges,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\n// Third party import statements\r\nimport { cloneDeep, isEqual, uniq } from 'lodash-es';\r\n\r\n//sub-entries of anna lib import statement\r\nimport {\r\n IGtGeneralConfig,\r\n IGtTableHeader,\r\n IHeaderInfo,\r\n ITotalRowInfo,\r\n} from '../../../anna-core-shared-lib/models/anna-non-editable-gt-models';\r\nimport { AnnaDateTimeFormatService } from '../../../anna-core-shared-lib/services/anna-date-time-format.service';\r\nimport { IWeekCalendar } from '../../../anna-core-shared-lib/models/anna-global-dropdown-config.model';\r\nimport {\r\n GtColumnIconEmittedData,\r\n RatingSellerGroupHierarchy,\r\n} from '../../../anna-core-shared-lib/models/anna-generic-data-type.model';\r\nimport { radioButtonModel } from '../../../anna-core-shared-lib/models/anna-tooltip.model';\r\nimport { AnnaSortService } from '../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { AnnaFilterService } from '../../../anna-core-shared-lib/services/anna-filter.service';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { NgCircleProgressModule } from 'ng-circle-progress';\r\nimport { AnnaColumnTimeFilterComponent } from '../anna-column-filters/anna-column-time-filter/anna-column-time-filter.component';\r\nimport { AnnaColumnDateRangeFilterComponent } from '../anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component';\r\nimport { AnnaColumnSliderFilterComponent } from '../anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component';\r\nimport { AnnaColumnCheckboxFilterComponent } from '../anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component';\r\nimport { AnnaNoDataComponent } from '../../../anna-core-shared-lib/components/anna-no-data/anna-no-data.component';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AnnaIconColumnComponent } from '../../../anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component';\r\nimport { showEllipsisTextOnHoverDirective } from '../../../anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive';\r\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport {\r\n NgClass,\r\n NgStyle,\r\n NgFor,\r\n NgIf,\r\n NgTemplateOutlet,\r\n NgSwitch,\r\n NgSwitchCase,\r\n NgSwitchDefault,\r\n AsyncPipe,\r\n} from '@angular/common';\r\n\r\ninterface keyValueTooltipType {\r\n key: string;\r\n value: string;\r\n}\r\ninterface tableTooltipType {\r\n tooltipTableHeader: string[];\r\n tooltipTableBody: string[][];\r\n tableHeaderMsg: string[];\r\n tableFooterMsg: string[];\r\n innerHtml: string;\r\n}\r\n\r\n@Component({\r\n selector: 'anna-core-non-editable-generic-table-lib',\r\n templateUrl: './anna-non-editable-generic-table.component.html',\r\n styleUrls: ['./anna-non-editable-generic-table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n NgStyle,\r\n MatTableModule,\r\n NgFor,\r\n NgIf,\r\n NgTemplateOutlet,\r\n NgbTooltip,\r\n NgxSkeletonLoaderModule,\r\n showEllipsisTextOnHoverDirective,\r\n NgSwitch,\r\n NgSwitchCase,\r\n AnnaIconColumnComponent,\r\n FormsModule,\r\n MatRadioModule,\r\n NgSwitchDefault,\r\n AnnaNoDataComponent,\r\n AnnaColumnCheckboxFilterComponent,\r\n AnnaColumnSliderFilterComponent,\r\n AnnaColumnDateRangeFilterComponent,\r\n AnnaColumnTimeFilterComponent,\r\n NgCircleProgressModule,\r\n AsyncPipe,\r\n ],\r\n})\r\nexport class AnnaNonEditableGenericTableComponent implements OnInit, OnChanges, AfterViewChecked {\r\n @Input() showSkeletonLoading: boolean;\r\n @Input() tableHeaders: IGtTableHeader[];\r\n @Input() tableData: any[];\r\n @Input() clonedTableData: any[];\r\n @Input() gtGeneralConfig: IGtGeneralConfig;\r\n @Input() totalRowInfo?: ITotalRowInfo[];\r\n @Input() gtDimension: {\r\n rowHeight: number;\r\n headerHeight: number;\r\n dataOnTopHeight: number;\r\n marginFromBottom: number;\r\n tableHeight?: string;\r\n };\r\n @Input() tableClass: string;\r\n @Input() maximumRowsWhichCanBeRenderedWithoutScroll: number = 5;\r\n @Input() fixNumberOfRowsForPopup: boolean = false;\r\n @Input() limit: number = 30;\r\n @Input() includeBorderInTableHeight: boolean = true;\r\n @Input() downloadInProgress: boolean;\r\n @Input() percentDone: number;\r\n @Input() starredInProgress: boolean;\r\n @Input() clickableRow: boolean = false;\r\n @Input() setTableHeightWhenRowSizeIsFixed: boolean = true;\r\n @Input() tableBorderBottomClassRequired: boolean = true;\r\n @Input() hideSomeTds: boolean = false;\r\n @Input() tdsHaveRowSpan: boolean = false;\r\n @Input() multipleTablesPresent: boolean = false;\r\n\r\n @Output() toggleCheckbox = new EventEmitter();\r\n @Output() toggleRowCheckbox = new EventEmitter();\r\n @Output() toggleHeaderCheckbox = new EventEmitter();\r\n @Output() undoIconClicked = new EventEmitter();\r\n @Output() filterAppliedToTable = new EventEmitter();\r\n @Output() sortingAppliedToTable = new EventEmitter();\r\n @Output() rowClicked = new EventEmitter();\r\n @Output() radioButtonSelected = new EventEmitter();\r\n @Output() columnFilterOpened = new EventEmitter();\r\n @Output() columnFilterClosed = new EventEmitter();\r\n @Output() gtIconClicked = new EventEmitter();\r\n @Output() gtSVGIconClicked = new EventEmitter();\r\n @Output() gtTextActionClicked = new EventEmitter();\r\n @Output() gtViewDetailClicked = new EventEmitter();\r\n @Output() gtInnerHTMLClicked = new EventEmitter();\r\n @Output() downloadSpotDetails = new EventEmitter();\r\n @Output() clickableDataClicked = new EventEmitter();\r\n @Output() totalRowIconClicked = new EventEmitter();\r\n @Output() notificationIconHover = new EventEmitter();\r\n @Output() notificationIconHoverLeave = new EventEmitter();\r\n @Output() editableInputEdited = new EventEmitter();\r\n @Output() radioButtonMessageIconClicked = new EventEmitter();\r\n\r\n numberOfSkeletonRows: number[][] = Array(20).fill(0);\r\n tableDataWrapper: any[];\r\n rowChecked: boolean;\r\n isAllRowsChecked: boolean;\r\n noDataWidth: string = '50%';\r\n markedForCreditStatus: string;\r\n markedForMGStatus: string;\r\n filterAlignment: string = 'bottom auto';\r\n\r\n //Sort and Filter\r\n tooltipRadioTextMap: Map<any, any>;\r\n filterTabObjects: any[];\r\n tooltip: any;\r\n disableColumnClearAllBtn: boolean = true;\r\n margin = 5;\r\n\r\n //Week Filter\r\n multiWeekPickerConfig: IWeekCalendar;\r\n\r\n tableColumns: string[] = [];\r\n totalRowColumns: string[] = null;\r\n bindValueFuncCalled: boolean;\r\n\r\n hierarchyTooltip: { open: () => void; close: () => void };\r\n sellerGroupHierarchy: RatingSellerGroupHierarchy[];\r\n showFilterTooltipTabs: boolean; //Change the Name\r\n\r\n isScrolledLeft: boolean = false;\r\n rowBorderWidth: number = 2;\r\n\r\n sameTooltipClicked: boolean;\r\n isScrollEnded: boolean = true;\r\n marginTop: string = '';\r\n @ViewChildren('tableHeader') viewChildTableHeaders: QueryList<ElementRef>;\r\n\r\n isDifferenceLessThan25Percent: boolean;\r\n start: number = 0;\r\n end: number = this.limit + this.start;\r\n renderedData: any[];\r\n selectedInventoryIdForDownload: number;\r\n selectedDemographicForDownload: any;\r\n selectedRowTypeForDownload: string;\r\n heightOfCheckboxTooltipFilter: number;\r\n isNoDataToDisplaySubject$ = new BehaviorSubject<boolean>(false);\r\n selectedStarredOrderId: string;\r\n\r\n textActionTooltip: keyValueTooltipType[] = [];\r\n tooltipContainingTable: tableTooltipType = null;\r\n tableBottomBorderClass: string = null;\r\n showCheckboxesForTimeFilter: boolean = false;\r\n\r\n constructor(\r\n private cdRef: ChangeDetectorRef,\r\n private annaSortService: AnnaSortService,\r\n public annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n public annaFilterService: AnnaFilterService,\r\n ) {\r\n this.setTooltipRadioNames();\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this.setMarginLeftForFilterIcon();\r\n }\r\n\r\n ngOnInit() {\r\n this.setFilterAlignmentBasedOnScreenResolution();\r\n }\r\n\r\n detectChanges() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (\r\n changes &&\r\n changes['gtDimension'] &&\r\n changes['gtDimension'].currentValue &&\r\n this.setTableHeightWhenRowSizeIsFixed\r\n ) {\r\n this.setTableHeight();\r\n this.setTableBottomBorder();\r\n }\r\n if (this.showSkeletonLoading) {\r\n this.tableData = this.numberOfSkeletonRows;\r\n this.renderedData = this.numberOfSkeletonRows;\r\n this.isNoDataToDisplaySubject$.next(false);\r\n this.setTableBottomBorder();\r\n } else if (\r\n changes['percentDone'] ||\r\n changes['downloadInProgress'] ||\r\n (changes['starredInProgress'] && changes['starredInProgress'].currentValue != undefined)\r\n ) {\r\n //no task will be performed\r\n } else {\r\n this.setInitialRowsForTable();\r\n this.disableEnableEachColumnTooltipIcon();\r\n this.tableColumns = this.tableHeaders.filter((x) => x.visible).map((x) => x.headerInfo[0].objectKey);\r\n if (\r\n (this.tableData && this.tableData.length == 0) ||\r\n (this.tableData.length == 2 && this.checkIfAllTheElementsAreZero())\r\n ) {\r\n this.tableData = Array(2).fill(0);\r\n this.renderedData = cloneDeep(this.tableData);\r\n this.marginTop = -this.gtDimension.rowHeight - this.gtDimension.rowHeight / 2 + 'px';\r\n this.isNoDataToDisplaySubject$.next(true);\r\n } else {\r\n this.isNoDataToDisplaySubject$.next(false);\r\n }\r\n\r\n this.showSkeletonLoading = false;\r\n this.setTableBottomBorder();\r\n }\r\n\r\n //setting table column here as well because while showing skeleton loader, we should show table headers.\r\n if (\r\n changes['tableHeaders'] &&\r\n !isEqual(changes['tableHeaders'].currentValue, changes['tableHeaders'].previousValue)\r\n ) {\r\n this.tableColumns = this.tableHeaders.filter((x) => x.visible).map((x) => x.headerInfo[0].objectKey);\r\n this.annaSortService.columnSortState = new Map();\r\n this.annaFilterService.initialValueMap = new Map();\r\n // this.setColumnSortStateMap();\r\n this.setActiveStateObject();\r\n }\r\n\r\n if (changes['totalRowInfo'] && changes['totalRowInfo'].currentValue) {\r\n this.totalRowColumns = this.totalRowInfo.map((x) => x.colName);\r\n }\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n setFilterAlignmentBasedOnScreenResolution() {\r\n let viewportHeight = window.innerHeight;\r\n if (viewportHeight < 740) {\r\n this.filterAlignment = 'left right';\r\n } else {\r\n this.filterAlignment = 'bottom left right';\r\n }\r\n }\r\n\r\n setTableBottomBorder() {\r\n if (\r\n this.tableBorderBottomClassRequired &&\r\n this.tableData &&\r\n this.tableData.length &&\r\n this.maximumRowsWhichCanBeRenderedWithoutScroll < this.tableData.length\r\n ) {\r\n this.tableBottomBorderClass = 'bottom-border';\r\n } else {\r\n this.tableBottomBorderClass = null;\r\n }\r\n }\r\n\r\n checkIfAllTheElementsAreZero() {\r\n return !this.tableData.some((item) => item != 0);\r\n }\r\n\r\n setTableHeight() {\r\n let viewportHeight = window.innerHeight;\r\n let rowHeight = this.gtDimension.rowHeight;\r\n let headerHeight = this.gtDimension.headerHeight;\r\n let dataOnTopHeight = this.gtDimension.dataOnTopHeight;\r\n let marginFromBottom = this.gtDimension.marginFromBottom;\r\n let actualTableHeight;\r\n\r\n if (this.fixNumberOfRowsForPopup) {\r\n let maxNoOfRowsToDisplay = viewportHeight < 740 ? 5 : 10;\r\n this.maximumRowsWhichCanBeRenderedWithoutScroll = maxNoOfRowsToDisplay;\r\n actualTableHeight = this.maximumRowsWhichCanBeRenderedWithoutScroll * rowHeight + headerHeight;\r\n } else {\r\n let minHeightForTable = headerHeight + 3 * rowHeight;\r\n viewportHeight = viewportHeight <= dataOnTopHeight ? dataOnTopHeight + minHeightForTable : viewportHeight;\r\n let heightLeftForTable = viewportHeight - dataOnTopHeight - marginFromBottom;\r\n this.maximumRowsWhichCanBeRenderedWithoutScroll =\r\n Math.ceil((heightLeftForTable - headerHeight - rowHeight) / rowHeight) + 1;\r\n actualTableHeight = viewportHeight - dataOnTopHeight - marginFromBottom;\r\n }\r\n\r\n // let actualTableHeight = heightLeftForTable - ((heightLeftForTable - headerHeight - rowHeight) % rowHeight);\r\n\r\n this.gtDimension.tableHeight = `${actualTableHeight}px`;\r\n\r\n this.numberOfSkeletonRows = this.maximumRowsWhichCanBeRenderedWithoutScroll\r\n ? Array(this.maximumRowsWhichCanBeRenderedWithoutScroll).fill(0)\r\n : Array(5).fill(0);\r\n }\r\n\r\n trackByFn(index: number) {\r\n return index;\r\n }\r\n\r\n setTooltipRadioNames() {\r\n this.tooltipRadioTextMap = new Map();\r\n this.tooltipRadioTextMap.set('StartTimeForFilter', 'Start Time');\r\n this.tooltipRadioTextMap.set('EndTimeForFilter', 'End Time');\r\n this.tooltipRadioTextMap.set('startTimeForFilter', 'Start Time');\r\n this.tooltipRadioTextMap.set('endTimeForFilter', 'End Time');\r\n this.tooltipRadioTextMap.set('start_time_for_filter', 'Start Time');\r\n this.tooltipRadioTextMap.set('end_time_for_filter', 'End Time');\r\n this.tooltipRadioTextMap.set('primaryAEName', 'Primary AE');\r\n this.tooltipRadioTextMap.set('region', 'Region');\r\n this.tooltipRadioTextMap.set('agencyName', 'Agency');\r\n this.tooltipRadioTextMap.set('location', 'Location');\r\n this.tooltipRadioTextMap.set('advertiserName', 'Advertiser');\r\n this.tooltipRadioTextMap.set('productCode', 'Product Code');\r\n this.tooltipRadioTextMap.set('flightStartDate', 'Start Date');\r\n this.tooltipRadioTextMap.set('flightEndDate', 'End Date');\r\n this.tooltipRadioTextMap.set('orderIdAndRevNumber', 'STN Order#-Rev#');\r\n this.tooltipRadioTextMap.set('alternateOrderId', 'Alt/Rep Order #');\r\n this.tooltipRadioTextMap.set('grp', 'GRP');\r\n this.tooltipRadioTextMap.set('cpp', 'CPP');\r\n this.tooltipRadioTextMap.set('imps', 'IMPS');\r\n this.tooltipRadioTextMap.set('cpm', 'CPM');\r\n this.tooltipRadioTextMap.set('offeredMGs', 'Offered MG');\r\n this.tooltipRadioTextMap.set('outstandingPE', 'O/S PE');\r\n this.tooltipRadioTextMap.set('offeredADUs', 'Offered ADUs');\r\n this.tooltipRadioTextMap.set('udDeficitValue', 'O/S Aud Delta');\r\n this.tooltipRadioTextMap.set('startEndTimeMulti', 'Time');\r\n this.tooltipRadioTextMap.set('bookedValue', 'Booked');\r\n this.tooltipRadioTextMap.set('bookedSpots', 'Spots');\r\n this.tooltipRadioTextMap.set('UserCreditedValue', 'User Credited');\r\n this.tooltipRadioTextMap.set('UserUnresolvedValue', 'User Unresolved');\r\n this.tooltipRadioTextMap.set('BuyerAddedValue', 'Buyer Added');\r\n this.tooltipRadioTextMap.set('BuyerDeletedValue', 'Buyer Deleted');\r\n this.tooltipRadioTextMap.set('userChanges', 'User Changes');\r\n this.tooltipRadioTextMap.set('buyerChanges', 'Buyer Changes');\r\n this.tooltipRadioTextMap.set('userMG', 'User MG');\r\n this.tooltipRadioTextMap.set('userADUs', 'User ADUs');\r\n this.tooltipRadioTextMap.set('inventoryCode', 'Inventory Code');\r\n this.tooltipRadioTextMap.set('program', 'Program');\r\n this.tooltipRadioTextMap.set('agency', 'Agency');\r\n this.tooltipRadioTextMap.set('advertiser', 'Advertiser');\r\n this.tooltipRadioTextMap.set('startDate', 'Start Date');\r\n this.tooltipRadioTextMap.set('endDate', 'End Date');\r\n this.tooltipRadioTextMap.set('date', 'Date');\r\n this.tooltipRadioTextMap.set('rcvPreempt', '$ Madegood PEs');\r\n this.tooltipRadioTextMap.set('osPreempt', '$ O/S PEs');\r\n this.tooltipRadioTextMap.set('rcvUnderDly', 'Recovered UD');\r\n this.tooltipRadioTextMap.set('osUnderDly', 'O/s Under Dly');\r\n this.tooltipRadioTextMap.set('primaryAe', 'Primary AE');\r\n this.tooltipRadioTextMap.set('region', 'Region');\r\n this.tooltipRadioTextMap.set('revCode1', 'Rev code 1');\r\n this.tooltipRadioTextMap.set('orderNoRevNo', 'STN Order#-Rev#');\r\n this.tooltipRadioTextMap.set('revCode2', 'Rev code 2');\r\n this.tooltipRadioTextMap.set('revCode3', 'Rev code 3');\r\n this.tooltipRadioTextMap.set('booked', '$ Booked');\r\n this.tooltipRadioTextMap.set('spots', 'Spots');\r\n this.tooltipRadioTextMap.set('postedAudPercent', 'Posted %');\r\n this.tooltipRadioTextMap.set('revision', 'Revision');\r\n this.tooltipRadioTextMap.set('buyerOrderId', 'ALT/REP Order#');\r\n this.tooltipRadioTextMap.set('demo', 'Demo');\r\n this.tooltipRadioTextMap.set('postedAdu', '$ Posted ADUs');\r\n this.tooltipRadioTextMap.set('scheduledAdu', '$ Scheduled ADUs');\r\n this.tooltipRadioTextMap.set('audienceDeficit', '$ O/S Audience');\r\n this.tooltipRadioTextMap.set('postedAudPercent', 'Posted Audience %');\r\n this.tooltipRadioTextMap.set('potentialUnitsValue', 'POT Units');\r\n this.tooltipRadioTextMap.set('bookedUnitsValue', 'Booked Eq Units');\r\n this.tooltipRadioTextMap.set('bookedAmountWithZeroRatingValue', 'Total $ Booked');\r\n this.tooltipRadioTextMap.set('bookedAmountPercentageWithZeroRatingValue', '% Against All Demos');\r\n this.tooltipRadioTextMap.set('bookedAmountWithoutZeroRatingValue', '$Booked With Imps(’000)');\r\n this.tooltipRadioTextMap.set('bookedAmountPercentageWithoutZeroRatingValue', '% Against All Demos');\r\n\r\n this.tooltipRadioTextMap.set('totalBookedAmountValue', 'Total $Booked');\r\n this.tooltipRadioTextMap.set('averageUnitRateValue', ' AUR');\r\n this.tooltipRadioTextMap.set('totalBookedAmountWithRatingValue', '$Booked With Rating');\r\n this.tooltipRadioTextMap.set('averageUnitRateWithRatingValue', 'AUR With Rating');\r\n\r\n this.tooltipRadioTextMap.set('totalBookedAmountWithImpressionValue', '$Booked With IMPS');\r\n this.tooltipRadioTextMap.set('averageUnitRateWithImpressionValue', 'AUR With IMPS');\r\n\r\n this.tooltipRadioTextMap.set('bookedUnitsWithRatingValue', 'Booked Units With Rating');\r\n this.tooltipRadioTextMap.set('postedUnitsWithRatingValue', 'Posted Units With Rating');\r\n\r\n this.tooltipRadioTextMap.set('bookedUnitsWithImpressionValue', 'Booked Units With IMPS');\r\n this.tooltipRadioTextMap.set('postedUnitsWithImpressionValue', 'Posted Units With IMPS');\r\n\r\n this.tooltipRadioTextMap.set('bookedRatings', 'Booked Rating');\r\n this.tooltipRadioTextMap.set('postedRatings', 'POSTED Rating');\r\n this.tooltipRadioTextMap.set('PostedRating', 'Posted RTG');\r\n\r\n this.tooltipRadioTextMap.set('bookedImpressions', \"Booked IMP('000)\");\r\n this.tooltipRadioTextMap.set('postedImpressions', \"Posted IMP('000)\");\r\n this.tooltipRadioTextMap.set('PostedImpressions', \"Posted IMP('000)\");\r\n\r\n this.tooltipRadioTextMap.set('bookedAverageRating', 'Booked AU Rating');\r\n this.tooltipRadioTextMap.set('postedAverageRating', 'Posted AU Rating');\r\n\r\n this.tooltipRadioTextMap.set('bookedAverageImpression', 'Booked AU IMPS');\r\n this.tooltipRadioTextMap.set('postedAverageImpression', 'Posted AU IMPS');\r\n\r\n this.tooltipRadioTextMap.set('bookedCppValue', 'Booked CPP');\r\n this.tooltipRadioTextMap.set('bookedEffectiveCppValue', 'Effective CPP');\r\n\r\n this.tooltipRadioTextMap.set('bookedCpmValue', 'Booked CPM');\r\n this.tooltipRadioTextMap.set('bookedEffectiveCpmValue', 'Effective CPM');\r\n\r\n this.tooltipRadioTextMap.set('orderSource', 'Order Route');\r\n this.tooltipRadioTextMap.set('orderCategory', 'Rev Category');\r\n this.tooltipRadioTextMap.set('cashOrTrade', 'C/T');\r\n this.tooltipRadioTextMap.set('revisionStartDate', 'Revision Start Date');\r\n this.tooltipRadioTextMap.set('name', 'name');\r\n this.tooltipRadioTextMap.set('role', 'role');\r\n this.tooltipRadioTextMap.set('stationCount', 'stationCount');\r\n this.tooltipRadioTextMap.set('stationList', 'stationList');\r\n this.tooltipRadioTextMap.set('approvedOn', 'Approved On');\r\n this.tooltipRadioTextMap.set('approvedBy', 'Approved By');\r\n this.tooltipRadioTextMap.set('ODImps', 'Proj. OD IMPS');\r\n this.tooltipRadioTextMap.set('UDImps', 'Proj. UD IMPS');\r\n this.tooltipRadioTextMap.set('ODGrp', 'Proj. OD GRP');\r\n this.tooltipRadioTextMap.set('UDGrp', 'Proj. UD GRP');\r\n this.tooltipRadioTextMap.set('udImpsPercent', 'Proj. UD %');\r\n this.tooltipRadioTextMap.set('udGrpPercent', 'Proj. UD GRP %');\r\n this.tooltipRadioTextMap.set('odImpsPercent', 'Proj. OD %');\r\n this.tooltipRadioTextMap.set('odGrpPercent', 'Proj. OD GRP %');\r\n\r\n this.tooltipRadioTextMap.set('RevisionNumber', 'Revision #');\r\n this.tooltipRadioTextMap.set('RevisionType', 'Revision Type');\r\n this.tooltipRadioTextMap.set('GeneratedOn', 'Generated On');\r\n this.tooltipRadioTextMap.set('BookedValueForDisplay', '$ BOOKED');\r\n this.tooltipRadioTextMap.set('BookedValue', '$ Booked');\r\n this.tooltipRadioTextMap.set('BookedSpots', 'Spots');\r\n this.tooltipRadioTextMap.set('BookedGRP', 'GRP');\r\n this.tooltipRadioTextMap.set('BookedIMPSRevTab', \"IMPS'(000)\");\r\n this.tooltipRadioTextMap.set('BookedCPP', 'CPP');\r\n this.tooltipRadioTextMap.set('BookedCPM', 'CPM');\r\n this.tooltipRadioTextMap.set('MGsValueForDisplay', '$ MGS');\r\n this.tooltipRadioTextMap.set('MGsValue', '$ MGS');\r\n this.tooltipRadioTextMap.set('ADUsValueForDisplay', '$ ADUS');\r\n this.tooltipRadioTextMap.set('ADUsValue', '$ ADUS');\r\n this.tooltipRadioTextMap.set('BuyerChangesValueForDisplay', '$ Buyer Change');\r\n this.tooltipRadioTextMap.set('BuyerChangesValue', '$ Buyer Change');\r\n this.tooltipRadioTextMap.set('UserChangesValueForDisplay', '$ Seller User Change');\r\n this.tooltipRadioTextMap.set('UserChangesValue', '$ Seller User Change');\r\n this.tooltipRadioTextMap.set('SellerLine', 'Seller Line #');\r\n this.tooltipRadioTextMap.set('BuyerLine', 'Buy Line #');\r\n this.tooltipRadioTextMap.set('SpotStatus', 'Spot Status');\r\n this.tooltipRadioTextMap.set('InventoryCode', 'Inventory Code');\r\n this.tooltipRadioTextMap.set('BuyerProgramName', 'Buyer Program Name');\r\n this.tooltipRadioTextMap.set('RevenueClass', 'Revenue Class');\r\n this.tooltipRadioTextMap.set('WeeklyAUR', 'Booked Avg. Rate');\r\n this.tooltipRadioTextMap.set('BookedRate', 'Booked Rate');\r\n this.tooltipRadioTextMap.set('averageRate', 'Average Rate');\r\n\r\n this.tooltipRadioTextMap.set('dollarIMPSImpact', '$ IMPS IMPACT');\r\n this.tooltipRadioTextMap.set('dollarRTGImpact', '$ RTG IMPACT');\r\n this.tooltipRadioTextMap.set('IMPSImpact', 'IMPS IMPACT');\r\n this.tooltipRadioTextMap.set('RTGImpact', 'RTG Impact');\r\n\r\n this.tooltipRadioTextMap.set('inventoryFillPercentageSameWeek', 'Inv Fill Same Week');\r\n this.tooltipRadioTextMap.set('inventoryFillPercentageFinal', 'Inv Fill Final');\r\n\r\n this.tooltipRadioTextMap.set('projectedRTG', 'Projected RTG');\r\n this.tooltipRadioTextMap.set('projectedIMPS', \"Projected IMP('000\");\r\n this.tooltipRadioTextMap.set('desiredCPM', 'Desired CPM');\r\n this.tooltipRadioTextMap.set('desiredCPP', 'Desired CPP');\r\n this.tooltipRadioTextMap.set('origin', 'Origin');\r\n\r\n this.tooltipRadioTextMap.set('BookedRTG', 'Booked RTG');\r\n this.tooltipRadioTextMap.set('BookedIMPS', \"Booked IMP('000)\");\r\n this.tooltipRadioTextMap.set('IMPS', \"IMP('000)\");\r\n this.tooltipRadioTextMap.set('AURTG', 'Avg RTG');\r\n this.tooltipRadioTextMap.set('AUIMPS', \"Avg IMP('000)\");\r\n this.tooltipRadioTextMap.set('PostedRatingsOrImpressions', 'Posted RTG');\r\n this.tooltipRadioTextMap.set('ScheduleFlightWeek', 'Schedule Week');\r\n this.tooltipRadioTextMap.set('ScheduledDay', 'Scheduled Day');\r\n this.tooltipRadioTextMap.set('AirStatus', 'Air Status');\r\n this.tooltipRadioTextMap.set('AirDateAndTime', 'Air Date & Time');\r\n this.tooltipRadioTextMap.set('AirDate', 'Air Date');\r\n this.tooltipRadioTextMap.set('NormalizedOrderedRating', 'Normalized Booked RTG');\r\n this.tooltipRadioTextMap.set('NormalizedOrderedImpressions', \"Normalized Booked IMP('000)\");\r\n this.tooltipRadioTextMap.set('NormalizedPostedRating', 'Normalized Posted RTG');\r\n this.tooltipRadioTextMap.set('NormalizedPostedImpressions', \"Normalized Posted IMP('000)\");\r\n this.tooltipRadioTextMap.set('AdId', 'Ad-Id');\r\n\r\n this.tooltipRadioTextMap.set('displayimps', 'IMPS');\r\n this.tooltipRadioTextMap.set('displayGrp', 'GRP');\r\n this.tooltipRadioTextMap.set('bookedSpotsForDisplay', 'Spots');\r\n this.tooltipRadioTextMap.set('displaySpots', 'Spots');\r\n\r\n this.tooltipRadioTextMap.set('estimateNo', 'Estimate#');\r\n this.tooltipRadioTextMap.set('primaryBuyer', 'Primary Buyer');\r\n this.tooltipRadioTextMap.set('primaryBuyerName', 'Primary Buyer');\r\n this.tooltipRadioTextMap.set('secondaryBuyerName', 'Secondary Buyer');\r\n this.tooltipRadioTextMap.set('secondaryBuyer', 'Secondary Buyer');\r\n this.tooltipRadioTextMap.set('timeoutDate', 'Timeout Date');\r\n this.tooltipRadioTextMap.set('DisplaytSpotStatusBI', 'Spot Status');\r\n this.tooltipRadioTextMap.set('LineSpot', 'Line.Spot');\r\n this.tooltipRadioTextMap.set('LurWindowName', 'Political Window');\r\n\r\n this.tooltipRadioTextMap.set('length', 'Length');\r\n this.tooltipRadioTextMap.set('revClass', 'Rev Class');\r\n\r\n // this.tooltipRadioTextMap.set(\"udValue\", \"$ UD\");\r\n // this.tooltipRadioTextMap.set(\"odValue\", \"$ OD\");\r\n this.tooltipRadioTextMap.set('udValue', 'Proj. $ UD');\r\n this.tooltipRadioTextMap.set('odValue', 'Proj. $ OD');\r\n\r\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableInventoryCode', 'Inventory Code');\r\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableBuyerProgramName', 'Buyer Program Name');\r\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableStartTime', 'Start Time');\r\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableEndTime', 'End Time');\r\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableWeeklyAUR', 'Booked Avg. Rate');\r\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableDisplayRevenueClass', 'Rev Class');\r\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableActualWeekStartDate', 'Week');\r\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableWeekDay', 'Day');\r\n this.tooltipRadioTextMap.set('OtherAvailableSpotsTableDisplayLength', 'Length');\r\n\r\n this.tooltipRadioTextMap.set('ProjectedImpressions', \"Projected IMP('000)\");\r\n this.tooltipRadioTextMap.set('ProjectedRtg', 'Projected RTG');\r\n }\r\n\r\n selectOrUnselectCheckbox(rowData: any, columnKeys: any, isCheckboxSelected: any) {\r\n rowData[columnKeys] = !rowData[columnKeys];\r\n this.toggleCheckbox.emit({ rowData, columnKeys, isCheckboxSelected });\r\n }\r\n\r\n selectOrUnselectRadiobox(rowData: any, columnKeys: any, isCheckboxSelected: boolean) {\r\n if (rowData[columnKeys] == isCheckboxSelected) return;\r\n rowData[columnKeys] = isCheckboxSelected;\r\n this.toggleCheckbox.emit({ rowData, columnKeys, isCheckboxSelected });\r\n }\r\n\r\n selectUnselectAllRows() {\r\n this.toggleHeaderCheckbox.emit();\r\n }\r\n\r\n selectUnselectRow(rowData: any) {\r\n this.toggleRowCheckbox.emit(rowData);\r\n }\r\n\r\n undoCreditedSpot(data: any) {\r\n this.undoIconClicked.emit({ data, mgOrCredit: 'Credit' });\r\n }\r\n\r\n undoMgSpot(data: any) {\r\n this.undoIconClicked.emit({ data, mgOrCredit: 'MakeGood' });\r\n }\r\n\r\n //Sort and Filter Logic begins!\r\n closeTooltip() {\r\n if (this.tooltip && this.tooltip.isOpen()) {\r\n this.tooltip.close();\r\n }\r\n this.tooltip = null;\r\n if (!this.bindValueFuncCalled) {\r\n this.columnFilterClosed.emit();\r\n }\r\n }\r\n\r\n isTooltipActive(header: any[]) {\r\n return this.annaFilterService.isTooltipActive(header, this.annaSortService.columnSortState);\r\n }\r\n\r\n bindTheValueToToolTip(tooltip: any, header: IHeaderInfo) {\r\n this.bindValueFuncCalled = true;\r\n // if same tooltip opened close it\r\n if (tooltip == this.tooltip) {\r\n this.bindValueFuncCalled = false;\r\n this.closeTooltip();\r\n } else {\r\n let enabledHeaders: any[] = [];\r\n this.checkIfUniqueValuePresentForTheHeader(header, enabledHeaders);\r\n this.openTooltip(tooltip, enabledHeaders, header);\r\n\r\n if (\r\n window.innerWidth < 1500 &&\r\n window.innerHeight < 768 &&\r\n !this.annaFilterService.sliderSet.has(header.filterSortObjectKeys[0])\r\n ) {\r\n this.columnFilterOpened.emit();\r\n }\r\n\r\n this.showCheckboxesForTimeFilter =\r\n this.gtGeneralConfig.component == 'SPOTDETAILS' ||\r\n this.gtGeneralConfig.component == 'EXCLUDEINVENTORYPOPUP' ||\r\n this.gtGeneralConfig.component == 'RATING';\r\n this.showFilterTooltipTabs = header.filterSortObjectKeys.length > 1;\r\n this.bindValueFuncCalled = false;\r\n }\r\n }\r\n\r\n checkIfUniqueValuePresentForTheHeader(header: IHeaderInfo, enabledHeaders: any[]) {\r\n header.filterSortObjectKeys.forEach((item: string) => {\r\n let dataToCheck = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData, item);\r\n if (item == 'period') {\r\n let uniqStartDate = uniq(dataToCheck.map((u: { [x: string]: any }) => u['startDate']));\r\n let uniqEndDate = uniq(dataToCheck.map((u: { [x: string]: any }) => u['endDate']));\r\n if (uniqStartDate.length > 1 || uniqEndDate.length > 1 || this.isTooltipActive([item])) {\r\n enabledHeaders.push(item);\r\n }\r\n } else {\r\n let values = dataToCheck.map((u: { [x: string]: any }) => u[item]);\r\n // if last applied filter is this header, push it alos as enabledHeader\r\n let activeAndLastlyAppliedHeader = false;\r\n if (\r\n this.annaFilterService.appliedFiltersArray.length > 0 &&\r\n this.annaFilterService.appliedFiltersArray[this.annaFilterService.appliedFiltersArray.length - 1] ==\r\n item\r\n ) {\r\n activeAndLastlyAppliedHeader = true;\r\n }\r\n if (\r\n header.filter == 'CHECKBOX' &&\r\n (uniq(values).filter((n) => n != null).length > 1 || activeAndLastlyAppliedHeader)\r\n ) {\r\n enabledHeaders.push(item);\r\n } else if (\r\n header.filter != 'CHECKBOX' &&\r\n (uniq(values).filter((n) => n != null && n != '-').length > 1 || activeAndLastlyAppliedHeader)\r\n ) {\r\n enabledHeaders.push(item);\r\n }\r\n }\r\n });\r\n }\r\n\r\n openTooltip(tooltip: any, header: any, columnHeader: IHeaderInfo) {\r\n this.closeTooltip();\r\n this.tooltip = tooltip;\r\n this.tooltip.open();\r\n //convert key into the header\r\n this.filterTabObjects = header.map((key: string, index: number) => {\r\n let value = this.tooltipRadioTextMap.has(key) ? this.tooltipRadioTextMap.get(key) : key; //change to display name\r\n return new radioButtonModel(\r\n key,\r\n value,\r\n columnHeader.isSortRequired[index],\r\n columnHeader.isFilterRequired[index],\r\n );\r\n });\r\n }\r\n\r\n disableEnableEachColumnTooltipIcon() {\r\n this.tableHeaders.forEach((header) => {\r\n header.headerInfo.forEach((item) => {\r\n if (item.showTooltipIcon) {\r\n let values = [];\r\n item.disableTooltipIcon = true;\r\n\r\n item.filterSortObjectKeys.forEach((key) => {\r\n let latestFilters = this.annaFilterService.appliedFiltersArray;\r\n\r\n if (\r\n latestFilters.length > 0 &&\r\n item.disableTooltipIcon &&\r\n latestFilters[latestFilters.length - 1] == key\r\n ) {\r\n item.disableTooltipIcon = false;\r\n }\r\n\r\n if (item.disableTooltipIcon) {\r\n if (key == 'period') {\r\n let uniqStartDate = uniq(\r\n this.tableData.map((u: { [x: string]: any }) => u['startDate']),\r\n );\r\n let uniqEndDate = uniq(this.tableData.map((u: { [x: string]: any }) => u['endDate']));\r\n\r\n item.disableTooltipIcon =\r\n uniqStartDate.length > 1 || uniqEndDate.length > 1 ? false : true;\r\n } else {\r\n values = this.tableData.map((u: { [x: string]: any }) => u[key]);\r\n if (\r\n (item.filter == 'CHECKBOX' && uniq(values).filter((n) => n != null).length > 1) ||\r\n (item.filter != 'CHECKBOX' &&\r\n uniq(values).filter((n) => n != null && n != '-').length > 1)\r\n ) {\r\n item.disableTooltipIcon = false;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n setMarginLeftForFilterIcon() {\r\n let elementArr = this.viewChildTableHeaders.toArray();\r\n elementArr.forEach((item) => {\r\n let childDivElements = item.nativeElement.children;\r\n\r\n if (childDivElements.length == 2) {\r\n let firstParagraphOffsetWidth: number = childDivElements[0]?.children[0]?.offsetWidth\r\n ? childDivElements[0]?.children[0]?.offsetWidth\r\n : 0;\r\n let secondParagraphOffsetWidth: number = childDivElements[1].children[0]?.offsetWidth\r\n ? childDivElements[1].children[0]?.offsetWidth\r\n : 0;\r\n\r\n if (firstParagraphOffsetWidth > secondParagraphOffsetWidth) {\r\n let diff = firstParagraphOffsetWidth - secondParagraphOffsetWidth;\r\n if (childDivElements[0].children.length == 2) {\r\n childDivElements[0].children[1].style.marginLeft = 4 + 'px';\r\n }\r\n\r\n if (childDivElements[1].children.length == 2) {\r\n childDivElements[1].children[1].style.marginLeft = diff + 4 + 'px';\r\n }\r\n } else {\r\n let diff = secondParagraphOffsetWidth - firstParagraphOffsetWidth;\r\n if (childDivElements[0].children.length == 2) {\r\n childDivElements[0].children[1].style.marginLeft = diff + 4 + 'px';\r\n }\r\n\r\n if (childDivElements[1].children.length == 2) {\r\n childDivElements[1].children[1].style.marginLeft = 4 + 'px';\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n dataRowClicked(rowData: any) {\r\n this.rowClicked.emit(rowData);\r\n }\r\n\r\n radioButtonClicked(data: any, action: string, isDisabled: boolean) {\r\n if (!isDisabled) {\r\n this.radioButtonSelected.emit({ data, action });\r\n }\r\n }\r\n\r\n bindTheValueToSellerGroupTooltip(sellerGroupHierarchy: RatingSellerGroupHierarchy[], tooltip: any): void {\r\n if (this.hierarchyTooltip && this.hierarchyTooltip.open) {\r\n this.hierarchyTooltip.close();\r\n }\r\n this.sellerGroupHierarchy = sellerGroupHierarchy;\r\n this.hierarchyTooltip = tooltip;\r\n this.hierarchyTooltip.open();\r\n }\r\n\r\n iconClicked(rowData: any, iconClass: string) {\r\n if ('orderId' in rowData && iconClass.includes('mdi-star')) {\r\n this.selectedStarredOrderId = rowData.orderId;\r\n }\r\n\r\n this.gtIconClicked.emit({ data: rowData, iconClass: iconClass });\r\n }\r\n\r\n svgIconClicked(data: GtColumnIconEmittedData) {\r\n this.gtSVGIconClicked.emit(data);\r\n }\r\n\r\n textActionClicked(rowData: any, id: any, columnHeader: IHeaderInfo) {\r\n this.gtTextActionClicked.emit({ data: rowData, id: id, columnHeader: columnHeader, isIconClicked: false });\r\n }\r\n\r\n iconClickedOnStringIconActionType(rowData: any, id: any, columnHeader: IHeaderInfo) {\r\n this.gtTextActionClicked.emit({ data: rowData, id: id, columnHeader: columnHeader, isIconClicked: true });\r\n }\r\n\r\n innerHTMLCellClicked(event: any, rowData: any) {\r\n this.gtInnerHTMLClicked.emit({ event, rowData });\r\n }\r\n\r\n viewDetailsClicked(rowData: any) {\r\n this.gtViewDetailClicked.emit({ data: rowData });\r\n }\r\n\r\n setActiveStateObject() {\r\n this.annaFilterService.isFilterSortActive =\r\n !this.annaFilterService.resetFilterSortActiveStatus || this.multipleTablesPresent\r\n ? this.annaFilterService.isFilterSortActive\r\n : {};\r\n this.tableHeaders.forEach((item) => {\r\n item.headerInfo.forEach((header) => {\r\n if (header.showTooltipIcon) {\r\n let key = header.filterSortObjectKeys.join(',');\r\n header.joinedFilterSortObjectKeys = key;\r\n // ANNA-4113 fix\r\n if (this.annaFilterService.resetFilterSortActiveStatus) {\r\n this.annaFilterService.isFilterSortActive[key] = false;\r\n }\r\n }\r\n });\r\n });\r\n this.annaFilterService.resetFilterSortActiveStatus = true;\r\n }\r\n\r\n setIsDifference(value: boolean) {\r\n this.isDifferenceLessThan25Percent = value;\r\n }\r\n\r\n resetIndex() {\r\n this.start = 0;\r\n this.end = this.limit + this.start;\r\n }\r\n\r\n onTableContainerScroll(e: any) {\r\n const tableViewHeight = e.target.offsetHeight; // viewport\r\n const tableScrollHeight = e.target.scrollHeight; // length of all table\r\n const scrollLocation = e.target.scrollTop; // how far user scrolled\r\n\r\n this.removeTooltipOnScroll();\r\n\r\n // If the user has scrolled within 150px of the bottom, add more data\r\n const buffer = 150;\r\n const limit = tableScrollHeight - tableViewHeight - buffer;\r\n if (scrollLocation > limit) {\r\n let data = this.getTableData(this.start, this.end);\r\n this.renderedData = this.renderedData.concat(data);\r\n this.updateIndex();\r\n }\r\n this.tableContainerScrolled(e);\r\n }\r\n\r\n getTableData(start: number, end: number) {\r\n return this.tableData.filter((value, index) => index >= start && index < end);\r\n }\r\n\r\n updateIndex() {\r\n this.start = this.end;\r\n this.end = this.limit + this.start;\r\n }\r\n\r\n setInitialRowsForTable() {\r\n this.resetIndex();\r\n this.renderedData = this.getTableData(this.start, this.end);\r\n this.updateIndex();\r\n }\r\n\r\n spotDetailsDownloadClicked(parentChildOrTotalRow: 'DATAROW' | 'TOTALROW', rowdata?: any) {\r\n if (rowdata) {\r\n this.selectedInventoryIdForDownload = rowdata.inventoryCodeId;\r\n this.selectedDemographicForDownload = rowdata.demographic;\r\n } else {\r\n this.selectedInventoryIdForDownload = null;\r\n this.selectedDemographicForDownload = null;\r\n }\r\n this.selectedRowTypeForDownload = parentChildOrTotalRow;\r\n this.downloadSpotDetails.emit({\r\n parentChildOrTotalRow: parentChildOrTotalRow,\r\n inventoryCodeId: this.selectedInventoryIdForDownload,\r\n demographic: this.selectedDemographicForDownload,\r\n });\r\n }\r\n\r\n tableContainerScrolled(event: any) {\r\n this.isScrolledLeft = event.target.scrollLeft > 0;\r\n this.isScrollEnded = Math.round(event.target.scrollLeft) == event.target.scrollWidth - event.target.clientWidth;\r\n this.removeTooltipOnScroll();\r\n }\r\n\r\n mouseEnterOnStringTextActionType(rowData: any, tooltipKey: string) {\r\n this.textActionTooltip = rowData[tooltipKey];\r\n this.notificationIconHover.emit({ rowData: rowData, type: 'on-enter' });\r\n }\r\n\r\n mouseEnterOnStringTextActionTypeContainingTable(rowData: any, tooltipKey: string) {\r\n this.tooltipContainingTable = rowData[tooltipKey];\r\n }\r\n\r\n mouseLeaveTextActionType(rowData: any) {\r\n this.notificationIconHoverLeave.emit({ rowData: rowData, type: 'on-leave' });\r\n }\r\n\r\n mouseEnterOnTextActionType(rowData: any, tooltipKey: string) {\r\n this.textActionTooltip = rowData[tooltipKey];\r\n }\r\n\r\n onClickableDataClicked(Rowdata: any, id: number) {\r\n this.clickableDataClicked.emit({ data: Rowdata, id: id });\r\n }\r\n\r\n removeTooltipOnScroll() {\r\n const elements = document.getElementsByClassName('remarks-info-tooltip');\r\n // const tooltipElements = document.getElementsByClassName(\"tooltip\");\r\n const gtTooltip = document.getElementsByClassName('remove-on-scroll-class');\r\n const tooltipElements = document.getElementsByClassName('tooltip');\r\n\r\n while (elements && elements.length > 0) {\r\n elements[0].remove();\r\n }\r\n while (tooltipElements && tooltipElements.length > 0) {\r\n tooltipElements[0].remove();\r\n this.tooltip = null;\r\n }\r\n while (gtTooltip && gtTooltip.length > 0) {\r\n gtTooltip[0].remove();\r\n }\r\n }\r\n\r\n iconClickedInTotalRow(colName: string) {\r\n this.totalRowIconClicked.emit(colName);\r\n }\r\n\r\n changesMadeInEditableInputBox(event: any, editedObject: any, pasteEvent: boolean) {\r\n let enteredValue = pasteEvent ? event.clipboardData.getData('text') : event.key;\r\n let dotIndex = editedObject.value.indexOf('.');\r\n\r\n if (\r\n event.keyCode != 8 &&\r\n event.keyCode != 46 &&\r\n !(event.keyCode >= 37 && event.keyCode <= 40) &&\r\n ((!editedObject?.allowSpecialCharacters && !/[`0-9.]/.test(enteredValue)) ||\r\n (editedObject.isDecimalPointCheckRequired &&\r\n dotIndex >= 0 &&\r\n event?.target?.selectionStart > dotIndex &&\r\n editedObject.value.length - (dotIndex + 1) >= editedObject.maxDecimalPointsAllowed))\r\n ) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n editableInputValueChanged(value: any, row: any, keyEdited: string) {\r\n this.editableInputEdited.emit({ row: row, value: value, keyEdited: keyEdited });\r\n }\r\n\r\n radioButtonIconClicked(data: any) {\r\n this.radioButtonMessageIconClicked.emit(data);\r\n }\r\n\r\n filterApplied(tableData: any[]) {\r\n this.tableData = tableData;\r\n this.setInitialRowsForTable();\r\n this.disableEnableEachColumnTooltipIcon();\r\n this.filterAppliedToTable.emit(tableData);\r\n this.closeTooltip();\r\n }\r\n\r\n sortingApplied(tableData: any[]) {\r\n this.tableData = tableData;\r\n this.setInitialRowsForTable();\r\n this.disableEnableEachColumnTooltipIcon();\r\n this.sortingAppliedToTable.emit(tableData);\r\n this.closeTooltip();\r\n }\r\n}\r\n","<div\r\n id=\"generic-table-conatiner\"\r\n class=\"table-container {{ gtGeneralConfig?.tableOuterContainerName }} {{ tableBottomBorderClass }}\"\r\n [ngClass]=\"{\r\n 'scroll-left-shadow-effect': isScrolledLeft,\r\n 'scroll-right-shadow-effect': !isScrollEnded,\r\n 'clickable-row': clickableRow,\r\n 'no-data-table': (isNoDataToDisplaySubject$ | async)\r\n }\"\r\n (scroll)=\"onTableContainerScroll($event)\"\r\n>\r\n <div\r\n [class]=\"gtGeneralConfig.tableContainerName\"\r\n class=\"horizontal-scroll-for-table-container\"\r\n [ngStyle]=\"{\r\n height:\r\n tableData.length < maximumRowsWhichCanBeRenderedWithoutScroll\r\n ? 'calc(' +\r\n (gtDimension.rowHeight * tableData.length +\r\n (!tableData.length || !gtGeneralConfig.totalRow\r\n ? gtDimension.headerHeight\r\n : gtDimension.headerHeight + gtDimension.rowHeight)) +\r\n 'px)'\r\n : gtDimension.tableHeight\r\n }\"\r\n >\r\n <table\r\n class=\"gt\"\r\n [ngClass]=\"tableClass\"\r\n mat-table\r\n [dataSource]=\"renderedData\"\r\n >\r\n <tr\r\n class=\"header-row\"\r\n mat-header-row\r\n *matHeaderRowDef=\"tableColumns; sticky: true\"\r\n [style.height.px]=\"gtDimension.headerHeight\"\r\n ></tr>\r\n <tr\r\n class=\"total-row\"\r\n mat-header-row\r\n [style.height.px]=\"gtDimension.rowHeight\"\r\n *matHeaderRowDef=\"totalRowColumns; sticky: true\"\r\n [class.hidden]=\"\r\n showSkeletonLoading ||\r\n (!showSkeletonLoading && !tableData.length) ||\r\n (isNoDataToDisplaySubject$ | async) ||\r\n (!showSkeletonLoading && !gtGeneralConfig.totalRow)\r\n \"\r\n ></tr>\r\n <tr\r\n [class]=\"rowData.gtClass\"\r\n [ngClass]=\"{ 'no-border-tr': (isNoDataToDisplaySubject$ | async) }\"\r\n mat-row\r\n *matRowDef=\"let rowData; columns: tableColumns\"\r\n [style.height.px]=\"gtDimension.rowHeight\"\r\n (click)=\"dataRowClicked(rowData)\"\r\n ></tr>\r\n\r\n <!-- TOTAL ROW -->\r\n <ng-container\r\n [matColumnDef]=\"column.colName\"\r\n *ngFor=\"let column of totalRowInfo; trackBy: trackByFn\"\r\n >\r\n <td\r\n mat-header-cell\r\n *matHeaderCellDef\r\n [attr.colspan]=\"column.colspan\"\r\n class=\"{{ column.class }}\"\r\n >\r\n <ng-container *ngIf=\"column['isActionColumn']\">\r\n <a\r\n *ngFor=\"let data of column.actionData\"\r\n [class]=\"data.class\"\r\n (click)=\"onClickableDataClicked({}, data.id)\"\r\n >\r\n {{ data.name }}\r\n </a>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"column['isIconColumn']\">\r\n <i\r\n class=\"{{ column?.iconData?.class }}\"\r\n (click)=\"iconClickedInTotalRow(column?.colName)\"\r\n >\r\n </i>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!column['isActionColumn']\">\r\n <strong class=\"upper-label\">{{ column.data }}</strong>\r\n <ng-container *ngIf=\"column.lowerData\">\r\n <br />\r\n <span\r\n *ngIf=\"\r\n column.colName == 'total-potential-booked-unit' &&\r\n gtGeneralConfig.component == 'RATING';\r\n else columnLowerData\r\n \"\r\n class=\"clickable-data\"\r\n (click)=\"spotDetailsDownloadClicked('TOTALROW')\"\r\n [ngClass]=\"{ 'disabled-clickable-data': downloadInProgress }\"\r\n >{{ column.lowerData }}\r\n <span class=\"material-icons spot-details-download-icons\">get_app</span>\r\n <ng-container *ngIf=\"downloadInProgress && selectedRowTypeForDownload == 'TOTALROW'\">\r\n <ng-container [ngTemplateOutlet]=\"circularProgressBar\"></ng-container>\r\n </ng-container>\r\n </span>\r\n <ng-template #columnLowerData>\r\n <span class=\"lower-label\">{{ column.lowerData }}</span>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngIf=\"column.tooltipMessage && gtGeneralConfig.component != 'LUR_VIOLATIONS'\">\r\n <i\r\n class=\"{{ column.tooltipIconClass }}\"\r\n container=\"body\"\r\n [ngbTooltip]=\"column.tooltipMessage\"\r\n tooltipClass=\"gt-total-row-tooltip\"\r\n placement=\"bottom\"\r\n ></i>\r\n </ng-container>\r\n <ng-container *ngIf=\"gtGeneralConfig.component == 'LUR_VIOLATIONS' && column.tooltipMessage\">\r\n <i\r\n class=\"mi mdi-info-outline info-label\"\r\n container=\"body\"\r\n [ngbTooltip]=\"lurViolationTotalRowToolTip\"\r\n tooltipClass=\"gt-total-row-tooltip\"\r\n placement=\"bottom\"\r\n ></i>\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- MAIN ROW -->\r\n <ng-container\r\n [matColumnDef]=\"columnDef.headerInfo[0].objectKey\"\r\n *ngFor=\"let columnDef of tableHeaders; trackBy: trackByFn\"\r\n >\r\n <th\r\n #tableHeader\r\n nowrap\r\n mat-header-cell\r\n *matHeaderCellDef\r\n [style.width]=\"columnDef.width\"\r\n >\r\n <div\r\n class=\"row mx-0\"\r\n *ngFor=\"let header of columnDef.headerInfo; let j = index\"\r\n >\r\n <p\r\n *ngIf=\"header.typeOfHeaderData === 'STRING'\"\r\n [ngClass]=\"{ 'upper-label': j === 0, 'lower-label': j === 1 }\"\r\n >\r\n <ngx-skeleton-loader\r\n *ngIf=\"header.name == null\"\r\n count=\"1\"\r\n [theme]=\"{\r\n height: '10px',\r\n display: 'block',\r\n width: columnDef.width,\r\n 'max-width': 'calc(100% - 20px)'\r\n }\"\r\n >\r\n </ngx-skeleton-loader>\r\n <ng-container *ngIf=\"header.name\">\r\n {{ header.name }}\r\n </ng-container>\r\n <ng-container *ngIf=\"header.tooltip && header.tooltip.tooltipMessage\">\r\n <i\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"header.tooltip.tooltipMessage\"\r\n container=\"body\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n </ng-container>\r\n <i\r\n *ngIf=\"header.tooltip && header.tooltip.name == 'impsInfoTooltip'\"\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"impsInfoTooltip\"\r\n container=\"body\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n <i\r\n *ngIf=\"\r\n header.tooltip && header.tooltip.name == 'spotsColumnEquivalizationMessageTooltip'\r\n \"\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n container=\"body\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"spotsColumnEquivalizationMessageTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n <i\r\n *ngIf=\"header.tooltip && header.tooltip.name == 'underDeliveryTooltip'\"\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n container=\"body\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"underDeliveryTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n <i\r\n *ngIf=\"header.tooltip && header.tooltip.name == 'overDeliveryTooltip'\"\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n container=\"body\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"overDeliveryTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n <i\r\n *ngIf=\"header.tooltip && header.tooltip.name == 'ratingInfoTooltip'\"\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"ratingInfoTooltip\"\r\n container=\"body\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n <i\r\n *ngIf=\"header.tooltip && header.tooltip.name == 'rateInfoTooltip'\"\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"rateInfoTooltip\"\r\n container=\"body\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n <i\r\n *ngIf=\"header.tooltip && header.tooltip.name == 'ongoingRevBookedColumnTooltip'\"\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"ongoingRevBookedColumnTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n <i\r\n *ngIf=\"header.tooltip && header.tooltip.name == 'completedRevBookedColumnTooltip'\"\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"completedRevBookedColumnTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n <i\r\n *ngIf=\"header.tooltip && header.tooltip.name == 'avgBookedRate'\"\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"avgBookedRate\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n <i\r\n *ngIf=\"header.tooltip && header.tooltip.name == 'avgBookedRtg'\"\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"avgBookedRtg\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n <i\r\n *ngIf=\"header.tooltip && header.tooltip.name == 'avgBookedImps'\"\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"avgBookedImps\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n\r\n <i\r\n *ngIf=\"header.tooltip && header.tooltip.name == 'automationTooltip'\"\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"automationTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n\r\n <i\r\n *ngIf=\"header.tooltip && header.tooltip.name == 'rebateImpact'\"\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"rebateImpact\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n\r\n <i\r\n *ngIf=\"header.tooltip && header.tooltip.name == 'projectedImpsRtg'\"\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"projectedImpsRtg\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n </p>\r\n\r\n <ng-container *ngIf=\"header.typeOfHeaderData === 'CHECKBOX'\">\r\n <span\r\n *ngIf=\"gtGeneralConfig.isHeaderChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectUnselectAllRows()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!gtGeneralConfig.isHeaderChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n [ngClass]=\"{ 'disable-checkbox': gtGeneralConfig.disableHeaderCheckbox }\"\r\n (click)=\"selectUnselectAllRows()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n </ng-container>\r\n\r\n <div\r\n *ngIf=\"gtGeneralConfig.showAllColumnFilter\"\r\n class=\"sort-filter-container\"\r\n >\r\n <ng-container *ngIf=\"header.showTooltipIcon\">\r\n <!-- Active tooltip Functionality -->\r\n <ng-container *ngIf=\"header.filter === 'CHECKBOX'\">\r\n <span\r\n class=\"mdi mdi-filter-variant\"\r\n [ngClass]=\"{\r\n active:\r\n annaFilterService.isFilterSortActive &&\r\n annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\r\n disabled: header.disableTooltipIcon || showSkeletonLoading\r\n }\"\r\n [ngbTooltip]=\"filterTooltip\"\r\n placement=\"{{ filterAlignment }}\"\r\n container=\"body\"\r\n tooltipClass=\"non-edit-checkbox-tooltip\"\r\n [autoClose]=\"'outside'\"\r\n triggers=\"manual\"\r\n #t=\"ngbTooltip\"\r\n (click)=\"bindTheValueToToolTip(t, header)\"\r\n (hidden)=\"closeTooltip()\"\r\n >\r\n </span\r\n ><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'SLIDER'\">\r\n <span\r\n class=\"mdi mdi-filter-variant\"\r\n [ngClass]=\"{\r\n active:\r\n annaFilterService.isFilterSortActive &&\r\n annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\r\n disabled: header.disableTooltipIcon || showSkeletonLoading\r\n }\"\r\n [ngbTooltip]=\"sliderToolTip\"\r\n placement=\"bottom left-top\"\r\n container=\"body\"\r\n tooltipClass=\"non-edit-slider-tooltip\"\r\n [autoClose]=\"'outside'\"\r\n triggers=\"manual\"\r\n #t1=\"ngbTooltip\"\r\n (click)=\"bindTheValueToToolTip(t1, header)\"\r\n (hidden)=\"closeTooltip()\"\r\n >\r\n </span\r\n ><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'DATE'\">\r\n <span\r\n class=\"mdi mdi-filter-variant\"\r\n [ngClass]=\"{\r\n active:\r\n annaFilterService.isFilterSortActive &&\r\n annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\r\n disabled: header.disableTooltipIcon || showSkeletonLoading\r\n }\"\r\n [ngbTooltip]=\"datePickerTooltip\"\r\n placement=\"bottom auto\"\r\n container=\"body\"\r\n tooltipClass=\"non-edit-datepicker-tooltip\"\r\n [autoClose]=\"'outside'\"\r\n triggers=\"manual\"\r\n #t2=\"ngbTooltip\"\r\n (click)=\"bindTheValueToToolTip(t2, header)\"\r\n (hidden)=\"closeTooltip()\"\r\n >\r\n </span\r\n ><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'WEEK'\">\r\n <span\r\n class=\"mdi mdi-filter-variant\"\r\n [ngClass]=\"{\r\n active:\r\n annaFilterService.isFilterSortActive &&\r\n annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\r\n disabled: header.disableTooltipIcon || showSkeletonLoading\r\n }\"\r\n [ngbTooltip]=\"weekPickerToolTip\"\r\n placement=\"bottom left-top\"\r\n container=\"body\"\r\n [autoClose]=\"'outside'\"\r\n triggers=\"manual\"\r\n #t3=\"ngbTooltip\"\r\n (click)=\"bindTheValueToToolTip(t3, header)\"\r\n (hidden)=\"closeTooltip()\"\r\n >\r\n </span\r\n ><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'TIME'\">\r\n <span\r\n class=\"mdi mdi-filter-variant\"\r\n [ngClass]=\"{\r\n active:\r\n annaFilterService.isFilterSortActive &&\r\n annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\r\n disabled: header.disableTooltipIcon || showSkeletonLoading\r\n }\"\r\n [ngbTooltip]=\"timeFilterToolTip\"\r\n placement=\"bottom left-top auto\"\r\n container=\"body\"\r\n tooltipClass=\"non-edit-time-tooltip\"\r\n [autoClose]=\"'outside'\"\r\n triggers=\"manual\"\r\n #t4=\"ngbTooltip\"\r\n (click)=\"bindTheValueToToolTip(t4, header)\"\r\n (hidden)=\"closeTooltip()\"\r\n >\r\n </span\r\n ><br />\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!header.showTooltipIcon\">\r\n <span id=\"no-filter-space\"></span><br />\r\n </ng-container>\r\n <i\r\n *ngIf=\"header.tooltip && header.tooltip.name == 'lurViolationInfoTooltip'\"\r\n class=\"{{ header['tooltip'].iconClass }}\"\r\n [ngStyle]=\"{ float: header['tooltip'].iconPosition }\"\r\n #t=\"ngbTooltip\"\r\n container=\"body\"\r\n [ngbTooltip]=\"lurViolationInfoTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n </div>\r\n </div>\r\n </th>\r\n\r\n <ng-container *matCellDef=\"let ROW_DATA\">\r\n <td\r\n mat-cell\r\n [style.background]=\"ROW_DATA.backgroundColor\"\r\n [style.border]=\"ROW_DATA.border\"\r\n class=\"{{ ROW_DATA.rowClass }}\"\r\n [ngClass]=\"ROW_DATA[columnDef.headerInfo[0].objectKey + 'TdClass']\"\r\n [attr.rowspan]=\"ROW_DATA[columnDef.headerInfo[0].objectKey + 'Rowspan']\"\r\n *ngIf=\"\r\n !hideSomeTds ||\r\n (hideSomeTds && !ROW_DATA['hide' + columnDef.headerInfo[0].objectKey + 'Td'])\r\n \"\r\n >\r\n <ngx-skeleton-loader\r\n *ngIf=\"showSkeletonLoading\"\r\n count=\"1\"\r\n [theme]=\"{ height: '10px', display: 'block' }\"\r\n >\r\n </ngx-skeleton-loader>\r\n\r\n <ng-container *ngIf=\"!showSkeletonLoading\">\r\n <ng-container *ngIf=\"tableData.length > 0 && !(isNoDataToDisplaySubject$ | async)\">\r\n <ng-container\r\n *ngFor=\"\r\n let subline of columnDef.headerInfo;\r\n let subLineIndex = index;\r\n trackBy: trackByFn\r\n \"\r\n >\r\n <div showEllipsisTextOnHover>\r\n <ng-container [ngSwitch]=\"columnDef.headerInfo[subLineIndex].typeOfBodyData\">\r\n <ng-container *ngSwitchCase=\"'ICON'\">\r\n <i\r\n *ngIf=\"\r\n !(\r\n starredInProgress &&\r\n ROW_DATA.orderId == selectedStarredOrderId\r\n )\r\n \"\r\n [class]=\"ROW_DATA.iconClass\"\r\n (click)=\"iconClicked(ROW_DATA, ROW_DATA.iconClass)\"\r\n ngbTooltip=\"{{ ROW_DATA.iconTitleText }}\"\r\n placement=\"bottom\"\r\n container=\"body\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\r\n ></i>\r\n <ng-container\r\n *ngIf=\"\r\n starredInProgress && ROW_DATA.orderId == selectedStarredOrderId\r\n \"\r\n >\r\n <div class=\"spinner-for-button-directive\"></div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'ICON_CELL'\">\r\n <ng-container\r\n *ngFor=\"\r\n let action of ROW_DATA[\r\n columnDef.headerInfo[subLineIndex].actionKey\r\n ]\r\n \"\r\n >\r\n <ng-container *ngIf=\"action.showObjectKey\">\r\n {{ ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey] }}\r\n </ng-container>\r\n\r\n <i\r\n *ngIf=\"action.showIcon\"\r\n [class]=\"action.iconClass\"\r\n (mouseenter)=\"\r\n mouseEnterOnStringTextActionType(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].tooltipKey\r\n )\r\n \"\r\n placement=\"bottom auto\"\r\n container=\"body\"\r\n [autoClose]=\"true\"\r\n tooltipClass=\"team-user-tooltip remove-on-scroll-class\"\r\n [ngbTooltip]=\"action.showTooltip ? action.tooltipData : null\"\r\n (click)=\"\r\n textActionClicked(\r\n ROW_DATA,\r\n action.id,\r\n columnDef.headerInfo[subLineIndex]\r\n )\r\n \"\r\n [disableTooltip]=\"!action.showTooltip\"\r\n >\r\n </i>\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'HTML_STRING'\">\r\n <p\r\n [innerHTML]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n (click)=\"innerHTMLCellClicked($event, ROW_DATA)\"\r\n ></p>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'SVG_ICON'\">\r\n <anna-core-anna-icon-column\r\n [componentName]=\"gtGeneralConfig.component\"\r\n [dataObject]=\"ROW_DATA\"\r\n [iconToShow]=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n \"\r\n (onColumnIconClicked)=\"svgIconClicked($event)\"\r\n ></anna-core-anna-icon-column>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'TEXT_ACTIONS'\">\r\n <ng-container\r\n *ngFor=\"\r\n let text of ROW_DATA[\r\n columnDef.headerInfo[subLineIndex].actionKey\r\n ]\r\n \"\r\n >\r\n <button\r\n *ngIf=\"text.showTooltip\"\r\n (click)=\"\r\n textActionClicked(\r\n ROW_DATA,\r\n text.id,\r\n columnDef.headerInfo[subLineIndex]\r\n )\r\n \"\r\n [disabled]=\"text.isDisabled\"\r\n class=\"{{ text.class }}\"\r\n (mouseenter)=\"\r\n mouseEnterOnTextActionType(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].tooltipKey\r\n )\r\n \"\r\n [ngbTooltip]=\"textActionTooltipTemplate\"\r\n placement=\"auto\"\r\n container=\"body\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\r\n >\r\n {{ text.name }}\r\n </button>\r\n\r\n <button\r\n *ngIf=\"!text.showTooltip\"\r\n (click)=\"\r\n textActionClicked(\r\n ROW_DATA,\r\n text.id,\r\n columnDef.headerInfo[subLineIndex]\r\n )\r\n \"\r\n [disabled]=\"text.isDisabled\"\r\n class=\"{{ text.class }}\"\r\n >\r\n {{ text.name }}\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'CHECKBOX'\">\r\n <span\r\n *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n [ngClass]=\"{\r\n 'disable-checkbox':\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\r\n }\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"\r\n selectOrUnselectCheckbox(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].objectKey,\r\n false\r\n )\r\n \"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n [ngClass]=\"{\r\n 'disable-checkbox':\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\r\n }\"\r\n (click)=\"\r\n selectOrUnselectCheckbox(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].objectKey,\r\n true\r\n )\r\n \"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n\r\n <ng-container\r\n *ngFor=\"\r\n let action of ROW_DATA[\r\n columnDef.headerInfo[subLineIndex].actionKey\r\n ]\r\n \"\r\n >\r\n <i\r\n *ngIf=\"action.showIcon\"\r\n [class]=\"action.iconClass\"\r\n [ngClass]=\"{ disabled: action.disabledIcon }\"\r\n (mouseenter)=\"\r\n mouseEnterOnStringTextActionTypeContainingTable(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].tooltipKey\r\n )\r\n \"\r\n placement=\"bottom auto\"\r\n container=\"body\"\r\n [autoClose]=\"true\"\r\n tooltipClass=\"tooltip-containing-table remove-on-scroll-class\"\r\n [ngbTooltip]=\"tooltipContainingTableTemplate\"\r\n >\r\n </i>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'CLICKABLE_DATA'\">\r\n <a\r\n *ngFor=\"\r\n let text of ROW_DATA[\r\n columnDef.headerInfo[subLineIndex].actionKey\r\n ]\r\n \"\r\n [class]=\"text.class\"\r\n (click)=\"onClickableDataClicked(ROW_DATA, text.id)\"\r\n >\r\n {{ text.name }}\r\n </a>\r\n <span\r\n *ngIf=\"\r\n subline.objectKey == 'displayBookedUnits' &&\r\n gtGeneralConfig.component == 'RATING'\r\n \"\r\n class=\"clickable-data\"\r\n (click)=\"spotDetailsDownloadClicked('DATAROW', ROW_DATA)\"\r\n [ngClass]=\"{ 'disabled-clickable-data': downloadInProgress }\"\r\n >{{ ROW_DATA.displayBookedUnits }}\r\n <span class=\"material-icons spot-details-download-icons\"\r\n >get_app</span\r\n >\r\n <ng-container\r\n *ngIf=\"\r\n downloadInProgress &&\r\n ROW_DATA.inventoryCodeId ==\r\n selectedInventoryIdForDownload &&\r\n ROW_DATA.demographic == selectedDemographicForDownload\r\n \"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"circularProgressBar\"\r\n ></ng-container>\r\n </ng-container>\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'STRING___ICON_OR_TEXT_ACTION'\">\r\n <ng-container\r\n *ngFor=\"\r\n let action of ROW_DATA[\r\n columnDef.headerInfo[subLineIndex].actionKey\r\n ]\r\n \"\r\n >\r\n <span\r\n [class]=\"action.additionalTextBeforeLinkClass\"\r\n [innerHtml]=\"action.additionalTextBeforeLink\"\r\n ngbTooltip=\"{{ action.additionalTextBeforeLink }}\"\r\n placement=\"bottom\"\r\n container=\"body\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\r\n [disableTooltip]=\"!action.enableTooltipForAdditionalText\"\r\n ></span>\r\n\r\n <ng-container *ngIf=\"action && action.typeOfData == 'STRING'\">\r\n {{ action.data }}\r\n </ng-container>\r\n\r\n <a\r\n [id]=\"action.id\"\r\n *ngIf=\"action.showLink\"\r\n (click)=\"\r\n textActionClicked(\r\n ROW_DATA,\r\n action.id,\r\n columnDef.headerInfo[subLineIndex]\r\n )\r\n \"\r\n [class]=\"action.linkClass\"\r\n [ngClass]=\"{ disabled: action.disabledLink }\"\r\n >{{ action.data }}</a\r\n >\r\n <span\r\n ngbTooltip=\"{{ action.additionalTextAfterLink }}\"\r\n placement=\"bottom\"\r\n container=\"body\"\r\n [class]=\"action.additionalTextAfterLinkClass\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\r\n [disableTooltip]=\"!action.enableTooltipForAdditionalAfterText\"\r\n >\r\n {{ action.additionalTextAfterLink }}\r\n </span>\r\n\r\n <ng-container *ngIf=\"action.showTooltip\">\r\n <ng-container *ngIf=\"action.tooltipData.innerHtml\">\r\n <i\r\n *ngIf=\"action.showIcon\"\r\n [class]=\"action.iconClass\"\r\n [ngClass]=\"{ disabled: action.disabledIcon }\"\r\n (mouseenter)=\"\r\n mouseEnterOnStringTextActionTypeContainingTable(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].tooltipKey\r\n )\r\n \"\r\n placement=\"bottom auto\"\r\n container=\"body\"\r\n [autoClose]=\"true\"\r\n tooltipClass=\"tooltip-containing-table remove-on-scroll-class\"\r\n [ngbTooltip]=\"tooltipContainingTableTemplate\"\r\n >\r\n </i>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!action.tooltipData.tooltipTableBody\">\r\n <i\r\n *ngIf=\"action.showIcon\"\r\n [class]=\"action.iconClass\"\r\n [ngClass]=\"{ disabled: action.disabledIcon }\"\r\n (click)=\"\r\n iconClickedOnStringIconActionType(\r\n ROW_DATA,\r\n action.id,\r\n columnDef.headerInfo[subLineIndex]\r\n )\r\n \"\r\n (mouseleave)=\"mouseLeaveTextActionType(ROW_DATA)\"\r\n (mouseenter)=\"\r\n mouseEnterOnStringTextActionType(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].tooltipKey\r\n )\r\n \"\r\n [placement]=\"\r\n action.tooltipPlacement\r\n ? action.tooltipPlacement\r\n : 'bottom auto'\r\n \"\r\n container=\"body\"\r\n [autoClose]=\"true\"\r\n tooltipClass=\"team-user-tooltip remove-on-scroll-class {{\r\n action.tooltipClass\r\n }}\"\r\n [ngbTooltip]=\"userLoggedInDetails\"\r\n >\r\n </i>\r\n <ng-container *ngIf=\"action['showSvgIcon']\">\r\n <anna-core-anna-est-icon-template\r\n class=\"float-right\"\r\n *ngIf=\"action['svgIconName'] == 'anna-icon'\"\r\n (mouseleave)=\"mouseLeaveTextActionType(ROW_DATA)\"\r\n (mouseenter)=\"\r\n mouseEnterOnStringTextActionType(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex]\r\n .tooltipKey\r\n )\r\n \"\r\n [placement]=\"\r\n action.tooltipPlacement\r\n ? action.tooltipPlacement\r\n : 'bottom auto'\r\n \"\r\n tooltipClass=\"team-user-tooltip remove-on-scroll-class {{\r\n action['tooltipClass']\r\n }}\"\r\n [ngbTooltip]=\"userLoggedInDetails\"\r\n container=\"body\"\r\n [autoClose]=\"true\"\r\n >\r\n </anna-core-anna-est-icon-template>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!action.showTooltip\">\r\n <i\r\n *ngIf=\"action.showIcon\"\r\n [class]=\"action.iconClass\"\r\n [ngClass]=\"{ disabled: action.disabledIcon }\"\r\n (click)=\"\r\n iconClickedOnStringIconActionType(\r\n ROW_DATA,\r\n action.id,\r\n columnDef.headerInfo[subLineIndex]\r\n )\r\n \"\r\n >\r\n </i>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'STRING_OR_INPUT'\">\r\n <ng-container\r\n *ngIf=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]?.type ==\r\n 'STRING';\r\n else inputBox\r\n \"\r\n >\r\n <span\r\n [innerHtml]=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n ?.value\r\n \"\r\n ></span>\r\n </ng-container>\r\n <ng-template #inputBox>\r\n <input\r\n placeholder=\"{{\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n ?.placeholder\r\n }}\"\r\n showEllipsisTextOnHover\r\n class=\"{{\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n .className\r\n }}\"\r\n (keydown)=\"\r\n changesMadeInEditableInputBox(\r\n $event,\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey],\r\n false\r\n )\r\n \"\r\n (paste)=\"\r\n changesMadeInEditableInputBox(\r\n $event,\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey],\r\n true\r\n )\r\n \"\r\n (ngModelChange)=\"\r\n editableInputValueChanged(\r\n $event,\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].objectKey\r\n )\r\n \"\r\n [ngModel]=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].value\r\n \"\r\n [disabled]=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n .disabled\r\n \"\r\n [ngClass]=\"{\r\n 'red-border':\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n .hasError\r\n }\"\r\n />\r\n\r\n <i\r\n *ngIf=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n .showIcon\r\n \"\r\n container=\"body\"\r\n [ngbTooltip]=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n .iconTooltip\r\n \"\r\n tooltipClass=\"gt-total-row-tooltip\"\r\n placement=\"bottom\"\r\n class=\"{{\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n .iconClass\r\n }}\"\r\n >\r\n </i>\r\n <ng-container\r\n *ngIf=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey][\r\n 'showSvgIcon'\r\n ]\r\n \"\r\n >\r\n <anna-core-anna-est-icon-template\r\n class=\"float-right\"\r\n *ngIf=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey][\r\n 'svgIconName'\r\n ] == 'anna-icon'\r\n \"\r\n [placement]=\"'bottom auto'\"\r\n tooltipClass=\"gt-total-row-tooltip\"\r\n [ngbTooltip]=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n .iconTooltip\r\n \"\r\n container=\"body\"\r\n >\r\n </anna-core-anna-est-icon-template>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'HTML'\">\r\n <span\r\n [innerHtml]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n ></span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'SINGLE_RADIO'\">\r\n <span\r\n *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n [ngClass]=\"{\r\n 'disable-checkbox':\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\r\n }\"\r\n class=\"mdi mdi-radiobox-marked\"\r\n (click)=\"(null)\"\r\n >\r\n </span>\r\n <span\r\n *ngIf=\"!ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n class=\"mdi mdi-radiobox-blank\"\r\n [ngClass]=\"{\r\n 'disable-checkbox':\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\r\n }\"\r\n (click)=\"\r\n selectOrUnselectCheckbox(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].objectKey,\r\n true\r\n )\r\n \"\r\n >\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'RADIO'\">\r\n <mat-radio-group\r\n *ngIf=\"ROW_DATA['RadioButtonConfig']\"\r\n [ngModel]=\"ROW_DATA[subline.objectKey]\"\r\n [disabled]=\"ROW_DATA['RadioButtonConfig'][0].isDisabled\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let radioButton of ROW_DATA['RadioButtonConfig'];\r\n let last = last\r\n \"\r\n >\r\n <mat-radio-button\r\n value=\"{{ radioButton.value }}\"\r\n class=\"{{ radioButton.class }}\"\r\n (click)=\"\r\n radioButtonClicked(\r\n ROW_DATA,\r\n radioButton.value,\r\n ROW_DATA['RadioButtonConfig'][0].isDisabled\r\n )\r\n \"\r\n >{{ radioButton.label }}\r\n </mat-radio-button>\r\n <i\r\n class=\" {{ radioButton.iconClass }}\"\r\n (click)=\"radioButtonIconClicked(ROW_DATA)\"\r\n ></i>\r\n <br *ngIf=\"!last\" />\r\n </ng-container>\r\n </mat-radio-group>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'STRING_WITH_TOOLTIP'\">\r\n <ng-container\r\n *ngFor=\"\r\n let action of ROW_DATA[\r\n columnDef.headerInfo[subLineIndex].actionKey\r\n ]\r\n \"\r\n >\r\n <span> {{ action?.dataToDisplay }}</span>\r\n <span\r\n *ngIf=\"action?.showTooltip\"\r\n [ngbTooltip]=\"textActionTooltipTemplate\"\r\n (mouseenter)=\"\r\n mouseEnterOnStringTextActionType(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].tooltipKey\r\n )\r\n \"\r\n [placement]=\"action?.tooltipPosition\"\r\n container=\"body\"\r\n [class]=\"action?.tooltipIconClass\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\r\n [disableTooltip]=\"action?.disableTooltip\"\r\n >\r\n </span>\r\n <span> {{ action?.dataToDisplayAfterTooltip }}</span>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"subline.objectKey != 'description'\">\r\n <span>{{\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n }}</span>\r\n <i\r\n *ngIf=\"\r\n subline.objectKey == 'inventoryCode' &&\r\n ROW_DATA['isSellerGroup'] &&\r\n gtGeneralConfig.component == 'RATING'\r\n \"\r\n class=\"mi mdi-info-outline seller-tooltip\"\r\n [ngbTooltip]=\"sellerHierarchyTooltip\"\r\n placement=\"bottom auto\"\r\n container=\"body\"\r\n [autoClose]=\"true\"\r\n triggers=\"manual\"\r\n (hidden)=\"closeTooltip()\"\r\n #info=\"ngbTooltip\"\r\n tooltipClass=\"hierarchy-tooltip remove-on-scroll-class\"\r\n (mouseenter)=\"\r\n bindTheValueToSellerGroupTooltip(\r\n ROW_DATA.sellerGroupHierarchy,\r\n info\r\n )\r\n \"\r\n >\r\n </i>\r\n\r\n <i\r\n *ngIf=\"\r\n subline.objectKey == 'displayBookedAverageRating' &&\r\n gtGeneralConfig.component == 'RATING' &&\r\n ROW_DATA['showRatingAverageIcon']\r\n \"\r\n class=\"mi mdi-info-outline seller-tooltip\"\r\n placement=\"bottom auto\"\r\n container=\"body\"\r\n [autoClose]=\"true\"\r\n (mouseenter)=\"\r\n setIsDifference(ROW_DATA.isDifferenceLessThan25Percent)\r\n \"\r\n tooltipClass=\"posted-avg-tooltip remove-on-scroll-class\"\r\n [ngbTooltip]=\"postedRatingDifference\"\r\n >\r\n </i>\r\n\r\n <i\r\n *ngIf=\"\r\n subline.objectKey == 'displayBookedAverageImpression' &&\r\n gtGeneralConfig.component == 'RATING' &&\r\n ROW_DATA['showImpressionAverageIcon']\r\n \"\r\n class=\"mi mdi-info-outline seller-tooltip\"\r\n placement=\"bottom auto\"\r\n container=\"body\"\r\n [autoClose]=\"true\"\r\n (mouseenter)=\"\r\n setIsDifference(ROW_DATA.isDifferenceLessThan25Percent)\r\n \"\r\n tooltipClass=\"posted-avg-tooltip remove-on-scroll-class\"\r\n [ngbTooltip]=\"postedImpDifference\"\r\n >\r\n </i>\r\n </ng-container>\r\n <ng-container *ngIf=\"subline.objectKey == 'description'\">\r\n <p\r\n *ngIf=\"\r\n ROW_DATA.descriptionMessage ||\r\n ROW_DATA.descriptionEmailReferenceNum\r\n \"\r\n >\r\n <ng-container *ngIf=\"ROW_DATA.descriptionMessage\">\r\n {{ ROW_DATA.descriptionMessage }}\r\n <br />\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"\r\n ROW_DATA.descriptionEmailReferenceNum != '-' &&\r\n ROW_DATA.descriptionEmailReferenceNum != ''\r\n \"\r\n >\r\n Email Ref: {{ ROW_DATA.descriptionEmailReferenceNum }}\r\n <br />\r\n </ng-container>\r\n </p>\r\n <a\r\n href=\"{{ ROW_DATA.descriptionDetailsUrl }}\"\r\n target=\"_blank\"\r\n *ngIf=\"\r\n ROW_DATA.descriptionDetailsUrlType === 'PDF' ||\r\n ROW_DATA.descriptionDetailsUrlType === 'EXCEL'\r\n \"\r\n >\r\n <button class=\"btn viewDetailsAndEmailBtn\">Download</button>\r\n </a>\r\n <ng-container\r\n *ngIf=\"ROW_DATA.activityname.toLowerCase() == 'order onboarded'\"\r\n >\r\n <a\r\n *ngIf=\"ROW_DATA.descriptionDetailsUrlType === 'LINK'\"\r\n (click)=\"viewDetailsClicked(ROW_DATA)\"\r\n >\r\n <button class=\"btn viewDetailsAndEmailBtn order-onboarded\">\r\n View details\r\n </button>\r\n </a>\r\n </ng-container>\r\n\r\n <a\r\n href=\"{{ ROW_DATA.descriptionEmailUrl }}\"\r\n target=\"_blank\"\r\n *ngIf=\"\r\n ROW_DATA.descriptionEmailUrl != '-' &&\r\n ROW_DATA.descriptionEmailUrl != ''\r\n \"\r\n >\r\n <button class=\"btn viewDetailsAndEmailBtn\">View email</button>\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"isNoDataToDisplaySubject$ | async\">\r\n <div>\r\n {{ null }}\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n </table>\r\n </div>\r\n <anna-core-no-data-lib\r\n [width]=\"noDataWidth\"\r\n [marginTop]=\"marginTop\"\r\n *ngIf=\"isNoDataToDisplaySubject$ | async\"\r\n >\r\n </anna-core-no-data-lib>\r\n</div>\r\n\r\n<!-- Checkbox template -->\r\n<ng-template #filterTooltip>\r\n <anna-core-anna-column-checkbox-filter\r\n [tableData]=\"tableData\"\r\n [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\r\n [isLurAndCsrComponent]=\"false\"\r\n [clonedTableData]=\"clonedTableData\"\r\n [filterTabObjects]=\"filterTabObjects\"\r\n (filterAppliedToTable)=\"filterApplied($event)\"\r\n (sortingAppliedToTable)=\"sortingApplied($event)\"\r\n (closeTooltip)=\"closeTooltip()\"\r\n >\r\n </anna-core-anna-column-checkbox-filter>\r\n</ng-template>\r\n\r\n<!-- Slider template -->\r\n<ng-template #sliderToolTip>\r\n <anna-core-anna-column-slider-filter\r\n [tableData]=\"tableData\"\r\n [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\r\n [isLurAndCsrComponent]=\"false\"\r\n [clonedTableData]=\"clonedTableData\"\r\n [filterTabObjects]=\"filterTabObjects\"\r\n (filterAppliedToTable)=\"filterApplied($event)\"\r\n (sortingAppliedToTable)=\"sortingApplied($event)\"\r\n (closeTooltip)=\"closeTooltip()\"\r\n >\r\n </anna-core-anna-column-slider-filter>\r\n</ng-template>\r\n\r\n<!-- Date Picker Template -->\r\n<ng-template #datePickerTooltip>\r\n <anna-core-anna-column-date-range-filter\r\n [tableData]=\"tableData\"\r\n [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\r\n [isLurAndCsrComponent]=\"false\"\r\n [clonedTableData]=\"clonedTableData\"\r\n [filterTabObjects]=\"filterTabObjects\"\r\n (filterAppliedToTable)=\"filterApplied($event)\"\r\n (sortingAppliedToTable)=\"sortingApplied($event)\"\r\n (closeTooltip)=\"closeTooltip()\"\r\n >\r\n </anna-core-anna-column-date-range-filter>\r\n</ng-template>\r\n\r\n<!-- Week Picker Template -->\r\n<ng-template #weekPickerToolTip>\r\n <!-- <div class=\"weekpicker-container\">\r\n <anna-core-week-calendar-filter-lib\r\n [week-calendar-config]=\"gtGeneralConfig.multiWeekPickerConfig\"\r\n (apply)=\"applyWeekFilter($event)\"\r\n [from-date]=\"calendarMinEnabledDate\"\r\n [to-date]=\"calendarMaxEnabledDate\"\r\n >\r\n </anna-core-week-calendar-filter-lib>\r\n </div> -->\r\n</ng-template>\r\n\r\n<!-- Time Filter Template -->\r\n<ng-template #timeFilterToolTip>\r\n <anna-core-anna-column-time-filter\r\n [tableData]=\"tableData\"\r\n [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\r\n [isLurAndCsrComponent]=\"false\"\r\n [showAllTimeRangeCheckboxes]=\"showCheckboxesForTimeFilter\"\r\n [clonedTableData]=\"clonedTableData\"\r\n [filterTabObjects]=\"filterTabObjects\"\r\n (filterAppliedToTable)=\"filterApplied($event)\"\r\n (sortingAppliedToTable)=\"sortingApplied($event)\"\r\n (closeTooltip)=\"closeTooltip()\"\r\n >\r\n </anna-core-anna-column-time-filter>\r\n</ng-template>\r\n\r\n<ng-template #columnInfoTooltip>\r\n <p style=\"color: black; white-space: nowrap\">This preemption is rejected and not marked for credit.</p>\r\n</ng-template>\r\n\r\n<ng-template #ratingInfoTooltip>\r\n <p class=\"first-row\">Shows 'Booked Rating' for Preemptions & MakeGood Offered spot(s).</p>\r\n <p class=\"second-row\">Shows 'Projected Rating' for ADU Offered spot(s).</p>\r\n</ng-template>\r\n\r\n<ng-template #impsInfoTooltip>\r\n <p class=\"first-row\">Shows 'Booked IMPS' for Preemptions & MakeGood Offered spot(s).</p>\r\n <p class=\"second-row\">Shows 'Projected IMPS' for ADU Offered spot(s).</p>\r\n</ng-template>\r\n\r\n<ng-template #spotsColumnEquivalizationMessageTooltip>\r\n <p class=\"spot-column-tooltip-message\">\r\n This consists of equivalized spots and un-equivalized Paid Programs & un-equivalized Non-spots.\r\n </p>\r\n</ng-template>\r\n\r\n<ng-template #underDeliveryTooltip>\r\n <p class=\"spot-column-tooltip-message\">\r\n Indicates the Under-delivery percentage based on booked and posted RTG/IMPS.\r\n </p>\r\n</ng-template>\r\n\r\n<ng-template #overDeliveryTooltip>\r\n <p class=\"spot-column-tooltip-message\">\r\n Indicates the Over-delivery percentage based on booked and posted RTG/IMPS.\r\n </p>\r\n</ng-template>\r\n\r\n<ng-template #rateInfoTooltip>\r\n <p class=\"first-row\">Shows 'Booked Rate' for Preemptions & MakeGood Offered spot(s).</p>\r\n <p class=\"second-row\">Shows 'Projected $ Value' for ADU Offered spot(s).</p>\r\n</ng-template>\r\n\r\n<ng-template #sellerHierarchyTooltip>\r\n <ng-container *ngIf=\"sellerGroupHierarchy.length > 0\">\r\n <section class=\"hierarchy-table-container\">\r\n <table class=\"seller-hierarchy-table\">\r\n <thead>\r\n <tr>\r\n <th>#</th>\r\n <th>Inventory Codes</th>\r\n <th>Program/Description</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of sellerGroupHierarchy; let tooltipIndex = index\">\r\n <td>{{ tooltipIndex + 1 }}</td>\r\n <td>\r\n <span showEllipsisTextOnHover>{{ data.InventoryCode }}</span>\r\n </td>\r\n <td>\r\n <span showEllipsisTextOnHover>{{ data.Program }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </section>\r\n </ng-container>\r\n <ng-container *ngIf=\"sellerGroupHierarchy.length == 0\">\r\n <span style=\"color: #000\">Seller group not available for this inventory code</span>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #lurViolationInfoTooltip>\r\n <p class=\"first-row\">The values are for the entire week.</p>\r\n</ng-template>\r\n\r\n<ng-template #postedRatingDifference>\r\n <p class=\"difference-text\">\r\n The difference between posted and booked average rating is\r\n {{ isDifferenceLessThan25Percent ? \"less\" : \"more\" }} than 25%.\r\n </p>\r\n</ng-template>\r\n\r\n<ng-template #postedImpDifference>\r\n <p class=\"difference-text\">\r\n The difference between posted and booked average impression is\r\n {{ isDifferenceLessThan25Percent ? \"less\" : \"more\" }} than 25%.\r\n </p>\r\n</ng-template>\r\n\r\n<ng-template #ongoingRevBookedColumnTooltip>\r\n <p>The Booked $ value, Spots, GRP, CPP, IMPS, CPM corresponds on the last permanent revision generated</p>\r\n</ng-template>\r\n\r\n<ng-template #completedRevBookedColumnTooltip>\r\n <p>The Booked $ value corresponds on the last permanent revision generated</p>\r\n</ng-template>\r\n\r\n<ng-template #avgBookedRate>\r\n <p>This is the booked average Rate</p>\r\n</ng-template>\r\n\r\n<ng-template #avgBookedRtg>\r\n <p>This is the booked average RTG</p>\r\n</ng-template>\r\n\r\n<ng-template #avgBookedImps>\r\n <p>This is the booked average IMP(’000)</p>\r\n</ng-template>\r\n\r\n<ng-template #projectedImpsRtg>\r\n <p>\r\n All projections are derived from the sum of actual posted information until the last posted date and estimates\r\n for the remaining selected period.\r\n </p>\r\n</ng-template>\r\n\r\n<ng-template #automationTooltip>\r\n <p>\r\n Please get the order business rules approved to activate the order for automation. Only for the\r\n automation-activated orders, any approved MGs, ADUs, or credited spots on ANNA will be fed into the traffic\r\n system i.e. ANNA revisions.\r\n <!-- removed below line as part of enhancmennt in 14.0 releas -->\r\n <!-- Additionally, ANNA will only enter buyer revisions into traffic for the selected\r\n Medialine/WOC orders. -->\r\n </p>\r\n</ng-template>\r\n\r\n<ng-template #rebateImpact>\r\n <p>Rebate impact value is for the originally ordered spot length and is not equivalized.</p>\r\n</ng-template>\r\n\r\n<ng-template #lurViolationTotalRowToolTip>\r\n <ul>\r\n <li>\r\n <strong>POLITICAL RATE VIOLATIONS:</strong>\r\n Violations flagged when non-political spots are booked at a rate lower than the minimum booked rate for\r\n political candidates for the same week, Inventory Code and Revenue Class.\r\n </li>\r\n <li>\r\n <strong>CANDIDATE TO CANDIDATE VIOLATION:</strong>\r\n Violations flagged when political spots are booked at different rates to other political spots for the same\r\n week, Inventory Code and Revenue Class.\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<ng-template #circularProgressBar>\r\n <circle-progress\r\n [percent]=\"percentDone\"\r\n [radius]=\"5\"\r\n [showTitle]=\"false\"\r\n [showUnits]=\"false\"\r\n [showSubtitle]=\"false\"\r\n [outerStrokeWidth]=\"3\"\r\n [innerStrokeWidth]=\"3\"\r\n [space]=\"-3\"\r\n [outerStrokeColor]=\"'#268bff'\"\r\n [innerStrokeColor]=\"'#d5d5d5'\"\r\n [animationDuration]=\"10\"\r\n ></circle-progress>\r\n</ng-template>\r\n\r\n<ng-template #userLoggedInDetails>\r\n <div class=\"tooltip-div-container\">\r\n <ng-container *ngFor=\"let data of textActionTooltip\">\r\n <span *ngIf=\"data.key != 'read'\">\r\n {{ data.key }} <b> {{ data.value }}</b>\r\n </span>\r\n <span *ngIf=\"data.key == 'read'\">\r\n {{ data.value }}\r\n </span>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #markAsReadTip>\r\n <div class=\"notification-tooltip-div-container\">\r\n <ng-container *ngFor=\"let data of textActionTooltip\">\r\n {{ data.value }}\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #textActionTooltipTemplate>\r\n <ng-container *ngFor=\"let data of textActionTooltip\">\r\n {{ data.key }} <b> {{ data.value }}</b>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #tooltipContainingTableTemplate>\r\n <div\r\n *ngIf=\"tooltipContainingTable\"\r\n [innerHTML]=\"tooltipContainingTable.innerHtml\"\r\n class=\"notification-tooltip-div-container\"\r\n >\r\n <!-- <ul>\r\n <li *ngFor=\"let headerMsg of tooltipContainingTable.tableHeaderMsg\">\r\n <b> {{headerMsg}} </b>\r\n </li>\r\n </ul>\r\n\r\n <table class=\"tooltip-table\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let header of tooltipContainingTable.tooltipTableHeader\">\r\n {{ header}}\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let rows of tooltipContainingTable.tooltipTableBody\">\r\n <td *ngFor=\"let data of rows\">\r\n {{ data }}\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ul>\r\n <li style=\"margin-top:10px; padding:0\" *ngFor=\"let footerMsg of tooltipContainingTable.tableFooterMsg\">\r\n {{ footerMsg }} \r\n </li>\r\n </ul> -->\r\n </div>\r\n</ng-template>\r\n<!-- <ng-template #textActionTooltipTemplate>\r\n <ng-container *ngFor=\"let data of textActionTooltip\">\r\n {{ data.key }} <b> {{data.value}}</b>\r\n </ng-container>\r\n</ng-template> -->\r\n","// Angular import statements\r\nimport { Injectable } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n// Third party import statements\r\nimport { Subject } from 'rxjs';\r\nimport { cloneDeep } from 'lodash-es';\r\n\r\n//sub-entries of anna lib import statement\r\nimport { AnnaFilterService } from './anna-filter.service';\r\nimport { AnnaSortService } from './anna-sort.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AnnaGtHelperService {\r\n virtualScrollSubject = new Subject();\r\n constructor(\r\n private annaFilterService: AnnaFilterService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private annaSortService: AnnaSortService,\r\n ) {}\r\n\r\n calculateNumberOfSkeletonColumnsForTable(tableHeaders: any[]): number[][] {\r\n let numberOfSkeletonColumns: any[][] = [];\r\n var headersInEachColumn = 0;\r\n tableHeaders.forEach((column) => {\r\n if (column.visible) {\r\n headersInEachColumn = 0;\r\n column.headerInfo.forEach(() => {\r\n headersInEachColumn++;\r\n });\r\n numberOfSkeletonColumns.push(Array(headersInEachColumn).fill(0));\r\n }\r\n });\r\n return numberOfSkeletonColumns;\r\n }\r\n\r\n initColumnFilterAndSorting() {\r\n this.annaFilterService.tooltipSelectedMap = new Map();\r\n this.annaFilterService.selectedRadio = null;\r\n this.annaFilterService.appliedFiltersArray = [];\r\n this.annaFilterService.initialValueMap = new Map();\r\n this.annaSortService.columnSortState = new Map();\r\n this.annaSortService.noSortingAppliedData = [];\r\n }\r\n\r\n enableOrDisableClearAllBtn(): boolean {\r\n let isFilterApplied = this.annaFilterService.appliedFiltersArray.length > 0;\r\n let isSortApplied = this.isSortingAppliedToTable();\r\n\r\n return isFilterApplied || isSortApplied ? false : true;\r\n }\r\n\r\n updateFiltersInURL() {\r\n let latestQueryParams = this.prepareQueryParamsOnFilter();\r\n\r\n if (Object.keys(latestQueryParams).length > 0) {\r\n this.router.navigate([], {\r\n queryParams: { filters: JSON.stringify(latestQueryParams) },\r\n relativeTo: this.route.parent,\r\n queryParamsHandling: 'merge',\r\n });\r\n } else {\r\n this.router.navigate([], {\r\n relativeTo: this.route.parent,\r\n });\r\n }\r\n }\r\n\r\n prepareQueryParamsOnFilter() {\r\n let query: any = {};\r\n\r\n if (this.annaFilterService.appliedFiltersArray.length > 0) {\r\n query['appliedFilters'] = this.annaFilterService.appliedFiltersArray;\r\n query['selectedFilterData'] = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\r\n }\r\n\r\n if (this.checkIfSortingIsApplied()) {\r\n query['sortState'] = JSON.stringify(Array.from(this.annaSortService.columnSortState));\r\n }\r\n\r\n return query;\r\n }\r\n\r\n checkIfSortingIsApplied() {\r\n let isSortingApplied = false;\r\n for (let val of this.annaSortService.columnSortState.values()) {\r\n if (val == 'ASC' || val == 'DESC') {\r\n isSortingApplied = true;\r\n }\r\n }\r\n\r\n return isSortingApplied;\r\n }\r\n\r\n initTableFilters(clonedTableData: any) {\r\n this.annaFilterService.tooltipSelectedMap = new Map();\r\n this.annaFilterService.selectedRadio = null;\r\n this.annaFilterService.appliedFiltersArray = [];\r\n\r\n this.annaSortService.columnSortState = new Map();\r\n\r\n this.annaSortService.noSortingAppliedData = cloneDeep(clonedTableData);\r\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n }\r\n\r\n initFilters() {\r\n this.annaFilterService.tooltipSelectedMap = new Map();\r\n this.annaFilterService.appliedFiltersArray = [];\r\n }\r\n\r\n setDataAsPerPersistingFilter(isPersistingFilter: boolean, clonedTable: any, filters: any): any {\r\n let usersTable;\r\n if (isPersistingFilter) {\r\n usersTable = this.annaFilterService.filterData(clonedTable, '');\r\n this.annaSortService.noSortingAppliedData = cloneDeep(usersTable);\r\n } else {\r\n usersTable = clonedTable;\r\n this.annaSortService.noSortingAppliedData = cloneDeep(usersTable);\r\n }\r\n\r\n if (filters?.sortState) {\r\n this.annaSortService.columnSortState = new Map(JSON.parse(filters.sortState));\r\n usersTable = this.callSort(usersTable);\r\n }\r\n\r\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n\r\n return usersTable;\r\n }\r\n\r\n callSort(usersTable: any): any {\r\n for (let [key, value] of this.annaSortService.columnSortState) {\r\n if (value == 'ASC') {\r\n usersTable = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(true, usersTable, key);\r\n } else if (value == 'DESC') {\r\n usersTable = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(false, usersTable, key);\r\n }\r\n }\r\n return usersTable;\r\n }\r\n\r\n isSortingAppliedToTable() {\r\n let isSortingApplied = false;\r\n for (let val of this.annaSortService.columnSortState?.values()) {\r\n if (val == 'ASC' || val == 'DESC') {\r\n isSortingApplied = true;\r\n }\r\n }\r\n\r\n return isSortingApplied;\r\n }\r\n\r\n updateQueryParamsFilter(key: string, value: any, operation: 'ADD' | 'DELETE', queryParamObj: any) {\r\n if (operation == 'ADD') {\r\n queryParamObj[key] = value;\r\n } else if (operation == 'DELETE') {\r\n delete queryParamObj[key];\r\n }\r\n return queryParamObj;\r\n }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { ListRange } from '@angular/cdk/collections';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Inject,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { animationFrameScheduler, asapScheduler, Observable, Subject, Observer, Subscription } from 'rxjs';\r\nimport { auditTime, startWith, takeUntil } from 'rxjs/operators';\r\nimport {\r\n CdkVirtualScrollViewport,\r\n CdkScrollable,\r\n CdkVirtualScrollRepeater,\r\n VIRTUAL_SCROLL_STRATEGY,\r\n VirtualScrollStrategy,\r\n ScrollDispatcher,\r\n ViewportRuler,\r\n ExtendedScrollToOptions,\r\n} from '@angular/cdk/scrolling';\r\nimport { AnnaGtHelperService } from '../../../anna-core-shared-lib/services/anna-generic-table.service';\r\n\r\n/** Checks if the given ranges are equal. */\r\nfunction rangesEqual(r1: ListRange, r2: ListRange): boolean {\r\n return r1.start == r2.start && r1.end == r2.end;\r\n}\r\n\r\n/**\r\n * Scheduler to be used for scroll events. Needs to fall back to\r\n * something that doesn't rely on requestAnimationFrame on environments\r\n * that don't support it (e.g. server-side rendering).\r\n */\r\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\r\n\r\n/**\r\n * A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`.\r\n * Uses `top: #px` instead of `transform: translateY(#px)` like the cdk virtual scroll viewport does\r\n * which avoids flickering of elements in the transformed container with `position: sticky`.\r\n */\r\n@Component({\r\n selector: 'anna-table-virtual-scroll-viewport',\r\n templateUrl: 'anna-table-virtual-scroll-viewport.component.html',\r\n styleUrls: ['anna-table-virtual-scroll-viewport.component.scss'],\r\n host: {\r\n class: 'anna-table-virtual-scroll-viewport',\r\n '[class.anna-table-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\r\n '[class.anna-table-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"',\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: CdkScrollable,\r\n useExisting: AnnaTableVirtualScrollViewportComponent,\r\n },\r\n {\r\n provide: CdkVirtualScrollViewport,\r\n useExisting: AnnaTableVirtualScrollViewportComponent,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class AnnaTableVirtualScrollViewportComponent extends CdkScrollable implements OnInit, OnDestroy {\r\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\r\n private _detachedSubject = new Subject<void>();\r\n\r\n /** Emits when the rendered range changes. */\r\n private _renderedRangeSubject = new Subject<ListRange>();\r\n\r\n /** The direction the viewport scrolls. */\r\n @Input()\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n set orientation(orientation: 'horizontal' | 'vertical') {\r\n if (this._orientation !== orientation) {\r\n this._orientation = orientation;\r\n this._calculateSpacerSize();\r\n }\r\n }\r\n private _orientation: 'horizontal' | 'vertical' = 'vertical';\r\n\r\n // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\r\n // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\r\n // depending on how the strategy calculates the scrolled index, it may come at a cost to\r\n // performance.\r\n /** Emits when the index of the first element visible in the viewport changes. */\r\n @Output() scrolledIndexChange: Observable<number> = new Observable((observer: Observer<number>) =>\r\n this._scrollStrategy.scrolledIndexChange.subscribe((index) =>\r\n Promise.resolve().then(() => this.ngZone.run(() => observer.next(index))),\r\n ),\r\n );\r\n\r\n /** The element that wraps the rendered content. */\r\n @ViewChild('contentWrapper', { static: true }) _contentWrapper: ElementRef<HTMLElement>;\r\n\r\n /** A stream that emits whenever the rendered range changes. */\r\n renderedRangeStream: Observable<ListRange> = this._renderedRangeSubject;\r\n\r\n /**\r\n * The total size of all content (in pixels), including content that is not currently rendered.\r\n */\r\n private _totalContentSize = 0;\r\n\r\n /** A string representing the `style.width` property value to be used for the spacer element. */\r\n _totalContentWidth = '';\r\n\r\n /** A string representing the `style.height` property value to be used for the spacer element. */\r\n _totalContentHeight = '';\r\n\r\n /**\r\n * The CSS transform applied to the rendered subset of items so that they appear within the bounds\r\n * of the visible viewport.\r\n */\r\n private _renderedContentTransform: string;\r\n\r\n /** The currently rendered range of indices. */\r\n private _renderedRange: ListRange = { start: 0, end: 0 };\r\n\r\n /** The length of the data bound to this viewport (in number of items). */\r\n private _dataLength = 0;\r\n\r\n /** The size of the viewport (in pixels). */\r\n private _viewportSize = 0;\r\n\r\n /** the currently attached CdkVirtualScrollRepeater. */\r\n private _forOf: CdkVirtualScrollRepeater<any> | null;\r\n\r\n /** The last rendered content offset that was set. */\r\n private _renderedContentOffset = 0;\r\n\r\n /**\r\n * Whether the last rendered content offset was to the end of the content (and therefore needs to\r\n * be rewritten as an offset to the start of the content).\r\n */\r\n private _renderedContentOffsetNeedsRewrite = false;\r\n\r\n /** Whether there is a pending change detection cycle. */\r\n private _isChangeDetectionPending = false;\r\n\r\n /** A list of functions to run after the next change detection cycle. */\r\n private _runAfterChangeDetection: Function[] = [];\r\n\r\n /** Subscription to changes in the viewport size. */\r\n private _viewportChanges = Subscription.EMPTY;\r\n\r\n constructor(\r\n public override elementRef: ElementRef<HTMLElement>,\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n ngZone: NgZone,\r\n @Optional()\r\n @Inject(VIRTUAL_SCROLL_STRATEGY)\r\n private _scrollStrategy: VirtualScrollStrategy,\r\n @Optional() dir: Directionality,\r\n scrollDispatcher: ScrollDispatcher,\r\n viewportRuler: ViewportRuler,\r\n private annaGtService: AnnaGtHelperService,\r\n ) {\r\n super(elementRef, scrollDispatcher, ngZone, dir);\r\n\r\n if (!_scrollStrategy) {\r\n throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\r\n }\r\n\r\n this._viewportChanges = viewportRuler.change().subscribe(() => {\r\n this.checkViewportSize();\r\n });\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n // It's still too early to measure the viewport at this point. Deferring with a promise allows\r\n // the Viewport to be rendered with the correct size before we measure. We run this outside the\r\n // zone to avoid causing more change detection cycles. We handle the change detection loop\r\n // ourselves instead.\r\n this.ngZone.runOutsideAngular(() =>\r\n Promise.resolve().then(() => {\r\n this._measureViewportSize();\r\n this._scrollStrategy.attach(this as any);\r\n\r\n this.elementScrolled()\r\n .pipe(\r\n // Start off with a fake scroll event so we properly detect our initial position.\r\n startWith(null),\r\n // Collect multiple events into one until the next animation frame. This way if\r\n // there are multiple scroll events in the same frame we only need to recheck\r\n // our layout once.\r\n auditTime(0, SCROLL_SCHEDULER),\r\n )\r\n .subscribe(() => {\r\n this._scrollStrategy.onContentScrolled();\r\n this.annaGtService.virtualScrollSubject.next(true);\r\n });\r\n\r\n this._markChangeDetectionNeeded();\r\n }),\r\n );\r\n }\r\n\r\n override ngOnDestroy() {\r\n this.detach();\r\n this._scrollStrategy.detach();\r\n\r\n // Complete all subjects\r\n this._renderedRangeSubject.complete();\r\n this._detachedSubject.complete();\r\n this._viewportChanges.unsubscribe();\r\n\r\n super.ngOnDestroy();\r\n }\r\n\r\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\r\n attach(forOf: CdkVirtualScrollRepeater<any>) {\r\n if (this._forOf) {\r\n throw Error('CdkVirtualScrollViewport is already attached.');\r\n }\r\n\r\n // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\r\n // changes. Run outside the zone to avoid triggering change detection, since we're managing the\r\n // change detection loop ourselves.\r\n this.ngZone.runOutsideAngular(() => {\r\n this._forOf = forOf;\r\n this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe((data) => {\r\n const newLength = data.length;\r\n if (newLength !== this._dataLength) {\r\n this._dataLength = newLength;\r\n this._scrollStrategy.onDataLengthChanged();\r\n }\r\n this._doChangeDetection();\r\n });\r\n });\r\n }\r\n\r\n /** Detaches the current `CdkVirtualForOf`. */\r\n detach() {\r\n this._forOf = null;\r\n this._detachedSubject.next();\r\n }\r\n\r\n /** Gets the length of the data bound to this viewport (in number of items). */\r\n getDataLength(): number {\r\n return this._dataLength;\r\n }\r\n\r\n /** Gets the size of the viewport (in pixels). */\r\n getViewportSize(): number {\r\n return this._viewportSize;\r\n }\r\n\r\n // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\r\n // cycle happens. I'm being careful to only call it after the render cycle is complete and before\r\n // setting it to something else, but its error prone and should probably be split into\r\n // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\r\n\r\n /** Get the current rendered range of items. */\r\n getRenderedRange(): ListRange {\r\n return this._renderedRange;\r\n }\r\n\r\n /**\r\n * Sets the total size of all content (in pixels), including content that is not currently\r\n * rendered.\r\n */\r\n setTotalContentSize(size: number) {\r\n if (this._totalContentSize !== size) {\r\n this._totalContentSize = size;\r\n this._calculateSpacerSize();\r\n this._markChangeDetectionNeeded();\r\n }\r\n }\r\n\r\n /** Sets the currently rendered range of indices. */\r\n setRenderedRange(range: ListRange) {\r\n if (!rangesEqual(this._renderedRange, range)) {\r\n this._renderedRangeSubject.next((this._renderedRange = range));\r\n this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\r\n }\r\n }\r\n\r\n /**\r\n * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\r\n */\r\n getOffsetToRenderedContentStart(): number | null {\r\n return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\r\n }\r\n\r\n /**\r\n * Sets the offset from the start of the viewport to either the start or end of the rendered data\r\n * (in pixels).\r\n */\r\n setRenderedContentOffset(offset: number) {\r\n let top = `${Number(offset)}px`;\r\n this._renderedContentOffset = offset;\r\n if (this._renderedContentTransform != top) {\r\n // We know this value is safe because we parse `offset` with `Number()` before passing it\r\n // into the string.\r\n this._renderedContentTransform = top;\r\n this._markChangeDetectionNeeded(() => {\r\n if (this._renderedContentOffsetNeedsRewrite) {\r\n this._renderedContentOffset -= this.measureRenderedContentSize();\r\n this._renderedContentOffsetNeedsRewrite = false;\r\n this.setRenderedContentOffset(this._renderedContentOffset);\r\n } else {\r\n this._scrollStrategy.onRenderedOffsetChanged();\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Scrolls to the given offset from the start of the viewport. Please note that this is not always\r\n * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\r\n * direction, this would be the equivalent of setting a fictional `scrollRight` property.\r\n * @param offset The offset to scroll to.\r\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\r\n */\r\n scrollToOffset(offset: number, behavior: ScrollBehavior = 'auto') {\r\n const options: ExtendedScrollToOptions = { behavior, top: offset };\r\n this.scrollTo(options);\r\n }\r\n\r\n /**\r\n * Scrolls to the offset for the given index.\r\n * @param index The index of the element to scroll to.\r\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\r\n */\r\n scrollToIndex(index: number, behavior: ScrollBehavior = 'auto') {\r\n this._scrollStrategy.scrollToIndex(index, behavior);\r\n }\r\n\r\n /**\r\n * Gets the current scroll offset from the start of the viewport (in pixels).\r\n * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\r\n * in horizontal mode.\r\n */\r\n // CHANGES@ANNALIB added override to functions\r\n override measureScrollOffset(from?: 'top' | 'left' | 'right' | 'bottom' | 'start' | 'end'): number {\r\n return from ? super.measureScrollOffset(from) : super.measureScrollOffset('top');\r\n }\r\n\r\n /** Measure the combined size of all of the rendered items. */\r\n measureRenderedContentSize(): number {\r\n const contentEl = this._contentWrapper.nativeElement;\r\n return contentEl.offsetHeight;\r\n }\r\n\r\n /**\r\n * Measure the total combined size of the given range. Throws if the range includes items that are\r\n * not rendered.\r\n */\r\n measureRangeSize(range: ListRange): number {\r\n if (!this._forOf) {\r\n return 0;\r\n }\r\n return this._forOf.measureRangeSize(range, this.orientation);\r\n }\r\n\r\n /** Update the viewport dimensions and re-render. */\r\n checkViewportSize() {\r\n // TODO: Cleanup later when add logic for handling content resize\r\n this._measureViewportSize();\r\n this._scrollStrategy.onDataLengthChanged();\r\n }\r\n\r\n /** Measure the viewport size. */\r\n private _measureViewportSize() {\r\n const viewportEl = this.elementRef.nativeElement;\r\n this._viewportSize = viewportEl.clientHeight;\r\n }\r\n\r\n /** Queue up change detection to run. */\r\n private _markChangeDetectionNeeded(runAfter?: Function) {\r\n if (runAfter) {\r\n this._runAfterChangeDetection.push(runAfter);\r\n }\r\n\r\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\r\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\r\n if (!this._isChangeDetectionPending) {\r\n this._isChangeDetectionPending = true;\r\n this.ngZone.runOutsideAngular(() =>\r\n Promise.resolve().then(() => {\r\n this._doChangeDetection();\r\n }),\r\n );\r\n }\r\n }\r\n\r\n /** Run change detection. */\r\n private _doChangeDetection() {\r\n this._isChangeDetectionPending = false;\r\n\r\n // Apply the content transform. The transform can't be set via an Angular binding because\r\n // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\r\n // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\r\n // the `Number` function first to coerce it to a numeric value.\r\n this._contentWrapper.nativeElement.style.top = this._renderedContentTransform;\r\n // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\r\n // from the root, since the repeated items are content projected in. Calling `detectChanges`\r\n // instead does not properly check the projected content.\r\n this.ngZone.run(() => this._changeDetectorRef.markForCheck());\r\n\r\n const runAfterChangeDetection = this._runAfterChangeDetection;\r\n this._runAfterChangeDetection = [];\r\n for (const fn of runAfterChangeDetection) {\r\n fn();\r\n }\r\n }\r\n\r\n /** Calculates the `style.width` and `style.height` for the spacer element. */\r\n private _calculateSpacerSize() {\r\n this._totalContentHeight = `${this._totalContentSize}px`;\r\n this._totalContentWidth = '';\r\n }\r\n}\r\n","<!--\r\n Wrap the rendered content in an element that will be used to offset it based on the scroll\r\n position.\r\n-->\r\n<div\r\n #contentWrapper\r\n class=\"anna-table-virtual-scroll-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n<!--\r\n Spacer used to force the scrolling container to the correct size for the *total* number of items\r\n so that the scrollbar captures the size of the entire data set.\r\n-->\r\n<div\r\n class=\"app-table-virtual-scroll-spacer\"\r\n [style.width]=\"_totalContentWidth\"\r\n [style.height]=\"_totalContentHeight\"\r\n></div>\r\n","import { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\r\nimport { CdkVirtualScrollViewport, VirtualScrollStrategy, VIRTUAL_SCROLL_STRATEGY } from '@angular/cdk/scrolling';\r\nimport {\r\n AfterContentInit,\r\n ContentChildren,\r\n Directive,\r\n forwardRef,\r\n Input,\r\n QueryList,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { MatHeaderRowDef } from '@angular/material/table';\r\nimport { Subject } from 'rxjs';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\nimport { AnnaFilterService } from '../../../anna-core-shared-lib/services/anna-filter.service';\r\n\r\n/**\r\n * A custom scroll strategy that accepts a static row height, static header height,\r\n * and a buffer size. The strategy\r\n */\r\nexport class AnnaFixedRowSizeTableVirtualScrollStrategy implements VirtualScrollStrategy {\r\n viewport: CdkVirtualScrollViewport | null;\r\n\r\n private buffer: number;\r\n\r\n private headerHeight: number;\r\n\r\n private rowHeight: number;\r\n\r\n constructor(rowHeight: number, buffer: number, headerHeight: number) {\r\n this.updateRowHeightAndBuffer(rowHeight, buffer, headerHeight);\r\n }\r\n\r\n private _scrolledIndexChange = new Subject<number>();\r\n\r\n scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\r\n\r\n /**\r\n * Attaches this scroll strategy to a viewport.\r\n * @param viewport The viewport to attach this strategy to.\r\n */\r\n attach(viewport: CdkVirtualScrollViewport): void {\r\n this.viewport = viewport;\r\n this.updateTotalContentSize();\r\n this.updateRenderedRange();\r\n }\r\n\r\n /**\r\n * Detaches this scroll strategy from the currently attached viewport.\r\n */\r\n detach(): void {\r\n this._scrolledIndexChange.complete();\r\n this.viewport = null;\r\n }\r\n\r\n onContentScrolled(): void {\r\n this.updateRenderedRange();\r\n }\r\n\r\n onDataLengthChanged(): void {\r\n this.updateTotalContentSize();\r\n this.updateRenderedRange();\r\n }\r\n\r\n onContentRendered(): void {\r\n // This method is useful for virtual scroll strategies that measure the rendered\r\n // content to determine its height. This scroll strategy assumes that rows have\r\n // a static height, so there's no need to implement this method.\r\n }\r\n\r\n onRenderedOffsetChanged(): void {\r\n // Similar to onContentRendered, this method is useful for virtual scroll strategies\r\n // that need to track the offset as it changes. This scroll strategy is always able\r\n // to calculate the correct offset from other values, so there's no need to implement\r\n // this method.\r\n }\r\n\r\n scrollToIndex(index: number, behavior: ScrollBehavior): void {\r\n this.viewport?.scrollToOffset(index * this.rowHeight, behavior);\r\n }\r\n\r\n /**\r\n * Update the item size and buffer size.\r\n * @param rowHeight The height of a row in the virtually scrolling table.\r\n * @param buffer The number of rows to buffer outside the viewport.\r\n * @param headerHeight The total height of the table header, including all header rows.\r\n */\r\n updateRowHeightAndBuffer(rowHeight: number, buffer: number, headerHeight: number) {\r\n this.rowHeight = rowHeight;\r\n this.buffer = buffer;\r\n this.headerHeight = headerHeight;\r\n this.updateTotalContentSize();\r\n this.updateRenderedRange();\r\n }\r\n\r\n protected updateRenderedRange() {\r\n if (!this.viewport) {\r\n return;\r\n }\r\n\r\n const viewportSize = this.viewport.getViewportSize();\r\n const dataLength = this.viewport.getDataLength();\r\n const scrollOffset = this.viewport.measureScrollOffset();\r\n\r\n // the index of the first item that would be at least partially visible in the viewport\r\n let firstVisibleIndex = Math.floor((scrollOffset + this.headerHeight) / this.rowHeight);\r\n\r\n // if the buffer size is 10 but the first visible item is at, say, index 7\r\n // then the buffered items must be 7, because we don't have 10 items available to buffer.\r\n const bufferedItems = Math.min(AnnaFilterService.bufferSize, firstVisibleIndex);\r\n\r\n const itemsInViewport = Math.ceil(viewportSize / this.rowHeight);\r\n const itemsToRender = itemsInViewport + this.buffer;\r\n\r\n // Clamp the new range between 0 and dataLength\r\n const newStart = Math.max(0, firstVisibleIndex - bufferedItems);\r\n const newEnd = Math.min(dataLength, firstVisibleIndex + itemsToRender);\r\n\r\n const newRange = {\r\n start: newStart,\r\n end: newEnd,\r\n };\r\n\r\n const newOffset = this.rowHeight * (firstVisibleIndex - bufferedItems);\r\n this.viewport.setRenderedContentOffset(newOffset);\r\n this.viewport.setRenderedRange(newRange);\r\n this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\r\n }\r\n\r\n protected updateTotalContentSize() {\r\n this.viewport?.setTotalContentSize(this.viewport.getDataLength() * this.rowHeight);\r\n }\r\n}\r\n\r\n/**\r\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\r\n * `FixedSizeVirtualScrollStrategy` from the given directive.\r\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\r\n * `FixedSizeVirtualScrollStrategy` from.\r\n */\r\nexport function fixedSizeVirtualScrollStrategyFactory(\r\n fixedSizeDir: AnnaFixedRowSizeTableVirtualScrollStrategyDirective,\r\n) {\r\n return fixedSizeDir.scrollStrategy;\r\n}\r\n\r\n@Directive({\r\n selector: 'cdk-virtual-scroll-viewport[rowHeight], anna-table-virtual-scroll-viewport[rowHeight]',\r\n providers: [\r\n {\r\n provide: VIRTUAL_SCROLL_STRATEGY,\r\n useFactory: fixedSizeVirtualScrollStrategyFactory,\r\n deps: [forwardRef(() => AnnaFixedRowSizeTableVirtualScrollStrategyDirective)],\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class AnnaFixedRowSizeTableVirtualScrollStrategyDirective implements AfterContentInit {\r\n /** The height of rows in the table (in pixels). Defaults to 30. */\r\n @Input()\r\n set rowHeight(value: number) {\r\n this._rowHeight = coerceNumberProperty(value);\r\n }\r\n get rowHeight(): number {\r\n return this._rowHeight;\r\n }\r\n private _rowHeight = 30;\r\n\r\n /**\r\n * The height of header rows in the table (in pixels). Defaults to 30.\r\n */\r\n @Input()\r\n set headerRowHeight(value: number) {\r\n this._headerRowHeight = coerceNumberProperty(value);\r\n }\r\n get headerRowHeight(): number {\r\n return this._headerRowHeight;\r\n }\r\n private _headerRowHeight: number = 30;\r\n\r\n /**\r\n * The number of buffered rows rendered beyond the viewport.\r\n * If the number of buffered rows dips below this number, more rows will be rendered. Defaults to 20.\r\n */\r\n @Input()\r\n set buffer(value: number) {\r\n this._buffer = coerceNumberProperty(value);\r\n }\r\n get buffer(): number {\r\n return this._buffer;\r\n }\r\n private _buffer = 20;\r\n\r\n @Input()\r\n set headerRows(value: number | null | undefined) {\r\n this._headerRows = coerceNumberProperty(value, undefined);\r\n }\r\n get headerRows(): number | null | undefined {\r\n return this._headerRows;\r\n }\r\n private _headerRows: number | null | undefined = null;\r\n\r\n /**\r\n * Using ContentChildren here fails to pick up row defs that are added programmatically,\r\n * but we don't really have a way of handling that without accessing private methods of\r\n * the CdkTable. Adding header row defs programmatically is uncommon, so ContentChildren\r\n * is usually sufficient. The explicit `headerRows` input above allows the number of rows\r\n * to be set by the developer to override the QueryList-driven behavior.\r\n */\r\n @ContentChildren(MatHeaderRowDef) headerRowsQuery: QueryList<MatHeaderRowDef>;\r\n\r\n private headerRowCount: number = 1;\r\n\r\n /** The scroll strategy used by this directive. */\r\n scrollStrategy = new AnnaFixedRowSizeTableVirtualScrollStrategy(\r\n this.rowHeight,\r\n this.buffer,\r\n this.headerRowHeight * this.headerRowCount,\r\n );\r\n\r\n ngOnChanges(change: SimpleChanges) {\r\n if (this.headerRows != undefined || this.headerRowsQuery) {\r\n this.handleChange();\r\n }\r\n if (change['buffer']?.previousValue != change['buffer']?.currentValue) {\r\n AnnaFilterService.bufferSize = this.buffer;\r\n this.scrollStrategy = new AnnaFixedRowSizeTableVirtualScrollStrategy(\r\n this.rowHeight,\r\n this.buffer,\r\n this.headerRowHeight * this.headerRowCount,\r\n );\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.headerRowsQuery.changes.subscribe(() => {\r\n this.handleChange();\r\n });\r\n }\r\n\r\n private handleChange(): void {\r\n this.scrollStrategy.updateRowHeightAndBuffer(\r\n this.rowHeight,\r\n this.buffer,\r\n // Use the explicit headerRows input value if set.\r\n // Otherwise, fall back to the QueryList length.\r\n this.headerRowHeight * (this._headerRows ?? this.headerRowsQuery.length),\r\n );\r\n }\r\n\r\n static ngAcceptInputType_rowHeight: NumberInput;\r\n static ngAcceptInputType_buffer: NumberInput;\r\n static ngAcceptInputType_headerRowHeight: NumberInput;\r\n}\r\n","import { ArrayDataSource, CollectionViewer, isDataSource, ListRange } from '@angular/cdk/collections';\r\nimport { CdkVirtualScrollRepeater, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\r\nimport {\r\n CdkHeaderRowDef,\r\n CdkTable,\r\n DataSource,\r\n STICKY_POSITIONING_LISTENER,\r\n _CoalescedStyleScheduler,\r\n _COALESCED_STYLE_SCHEDULER,\r\n} from '@angular/cdk/table';\r\nimport { ContentChildren, Directive, ElementRef, Inject, Input, NgIterable, NgZone, QueryList } from '@angular/core';\r\nimport { isObservable, Observable, of, Subject } from 'rxjs';\r\nimport { map, pairwise, shareReplay, startWith, switchMap, takeUntil } from 'rxjs/operators';\r\nimport { AnnaTableVirtualScrollViewportComponent } from '../../components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component';\r\n\r\n/**\r\n * Directive that wraps a given data source in a \"virtual\" data source that emits\r\n * the slice of the original data source that matches the range that should be rendered\r\n * in the containing virtual scroll viewport.\r\n */\r\n@Directive({\r\n selector: '[mat-table][appVirtualDataSource], mat-table[appVirtualDataSource]',\r\n providers: [{ provide: STICKY_POSITIONING_LISTENER, useExisting: AnnaVirtualTableDirective }],\r\n standalone: true,\r\n})\r\nexport class AnnaVirtualTableDirective<T> implements CdkVirtualScrollRepeater<T>, CollectionViewer {\r\n @Input('appVirtualDataSource')\r\n set dataSource(value: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined) {\r\n this._dataSource = value;\r\n if (isDataSource(value)) {\r\n this.dataSourceChanges.next(value);\r\n } else {\r\n this.dataSourceChanges.next(new ArrayDataSource<T>(isObservable(value) ? value : Array.from(value || [])));\r\n }\r\n }\r\n get dataSource(): DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined {\r\n return this._dataSource;\r\n }\r\n private _dataSource: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined;\r\n\r\n @ContentChildren(CdkHeaderRowDef) headerRowDefs: QueryList<CdkHeaderRowDef>;\r\n\r\n private virtualizedDataStream = new Subject<T[] | ReadonlyArray<T>>();\r\n\r\n private dataSourceChanges = new Subject<DataSource<T>>();\r\n\r\n /** The raw, unvirtualized data stream. Emits whenever the data in the current DataSource changes. */\r\n dataStream: Observable<T[] | ReadonlyArray<T>> = this.dataSourceChanges.pipe(\r\n // Start off with null data source.\r\n startWith(null),\r\n // Bundle up the previous and current data sources so we can work with both.\r\n pairwise(),\r\n // Use `changeDataSource` to disconnect from the previous data source and connect to the\r\n // new one, passing back a stream of data changes which we run through `switchMap` to give\r\n // us a data stream that emits the latest data from whatever the current data source is.\r\n switchMap(([prev, cur]) => this.changeDataSource(prev, cur)),\r\n // Replay the last emitted data when someone subscribes.\r\n shareReplay(1),\r\n );\r\n\r\n viewChange = new Subject<ListRange>();\r\n\r\n private data: T[] | readonly T[];\r\n\r\n private destroyed$ = new Subject<void>();\r\n\r\n private renderedItems: T[] | ReadonlyArray<T>;\r\n\r\n private renderedRange: ListRange = { start: 0, end: 0 };\r\n\r\n private isNativeHtmlTable: boolean = false;\r\n\r\n constructor(\r\n elementRef: ElementRef<HTMLElement>,\r\n private viewport: CdkVirtualScrollViewport,\r\n private table: CdkTable<T>,\r\n ngZone: NgZone,\r\n @Inject(_COALESCED_STYLE_SCHEDULER) private _coalescedStyleScheduler: _CoalescedStyleScheduler,\r\n ) {\r\n table.dataSource = this.virtualizedDataStream;\r\n this.isNativeHtmlTable = elementRef.nativeElement.tagName === 'TABLE';\r\n this.dataStream.subscribe((data) => {\r\n this.data = data;\r\n this.onRenderedDataChange();\r\n });\r\n viewport.renderedRangeStream.pipe(takeUntil(this.destroyed$)).subscribe((range: ListRange) => {\r\n this.renderedRange = range;\r\n ngZone.run(() => this.viewChange.next(range));\r\n this.onRenderedDataChange();\r\n });\r\n viewport.attach(this);\r\n }\r\n\r\n ngOnInit(): void {\r\n // This is just a proof of concept, but the AnnaTableVirtualScrollViewportComponent uses `position: absolute` and `top: #px` instead of `transform: translateY(#px)` to position the viewport.\r\n // This removes the need to account for the translation in the `top` of the sticky header rows.\r\n if (this.viewport instanceof AnnaTableVirtualScrollViewportComponent) {\r\n return;\r\n }\r\n\r\n this.viewport.scrolledIndexChange\r\n .pipe(\r\n map(() => this.viewport.getOffsetToRenderedContentStart()),\r\n takeUntil(this.destroyed$),\r\n )\r\n .subscribe((offset) => {\r\n // We need to set the `style.top` property of the sticky header rows\r\n // to the negative value of the virtual scroll viewport's offset, so\r\n // make the offset negative.\r\n offset = -offset;\r\n\r\n const stickyStates: boolean[] = this.headerRowDefs.map((rowDef) => rowDef.sticky);\r\n\r\n // This logic is exactly the same as what's in the StickyStyler (literally copy + paste).\r\n // The only difference is that the `stickyOffset` variable starts at the virtual scroll\r\n // viewport container's offset instead of starting at zero.\r\n const rows = this.table._getRenderedRows(this.table._headerRowOutlet);\r\n const stickyOffsets: number[] = [];\r\n const stickyCellHeights: (number | undefined)[] = [];\r\n const elementsToStick: HTMLElement[][] = [];\r\n for (let rowIndex = 0, stickyOffset = offset; rowIndex < rows.length; rowIndex++) {\r\n stickyOffsets[rowIndex] = stickyOffset;\r\n\r\n if (!stickyStates[rowIndex]) {\r\n continue;\r\n }\r\n\r\n const row = rows[rowIndex];\r\n elementsToStick[rowIndex] = this.isNativeHtmlTable\r\n ? (Array.from(row.children) as HTMLElement[])\r\n : [row];\r\n\r\n const height = row.getBoundingClientRect().height;\r\n stickyOffset += height;\r\n stickyCellHeights[rowIndex] = height;\r\n }\r\n\r\n // Using the CoalescedStyleScheduler here is optional. It'll work without it,\r\n // and CoalescedStyleScheduler is not public (yet?), so feel free to remove it.\r\n this._coalescedStyleScheduler.schedule(() => {\r\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\r\n if (!stickyStates[rowIndex]) {\r\n continue;\r\n }\r\n\r\n for (const element of elementsToStick[rowIndex]) {\r\n element.style.top = `${stickyOffsets[rowIndex]}px`;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyed$.next();\r\n this.dataSourceChanges.complete();\r\n this.virtualizedDataStream.complete();\r\n }\r\n\r\n /** React to scroll state changes in the viewport. */\r\n private onRenderedDataChange() {\r\n if (!this.renderedRange) {\r\n return;\r\n }\r\n this.renderedItems = this.data.slice(this.renderedRange.start, this.renderedRange.end + 1);\r\n // delegate rendering to the table by emitting from the virtualizedDataStream\r\n this.virtualizedDataStream.next(this.renderedItems);\r\n }\r\n\r\n /** Swap out one data source for another. */\r\n private changeDataSource(\r\n oldDataSource: DataSource<T> | null,\r\n newDs: DataSource<T> | null,\r\n ): Observable<T[] | ReadonlyArray<T>> {\r\n oldDataSource?.disconnect(this);\r\n return newDs ? newDs.connect(this) : of();\r\n }\r\n\r\n /**\r\n * This method is only used by the experimental AutoSizeVirtualScrollStrategy.\r\n * We're not using that strategy, but I've implemented it just to show how it oculd be done.\r\n * I'm not actually sure if this works.\r\n */\r\n measureRangeSize(range: ListRange, orientation: 'horizontal' | 'vertical'): number {\r\n if (orientation === 'horizontal' || range.end < range.start) {\r\n // virtual scrolling columns are not supported by this directive\r\n return 0;\r\n }\r\n\r\n const renderedBodyRows = this.table._getRenderedRows(this.table._rowOutlet);\r\n\r\n const firstRow: HTMLElement | undefined = renderedBodyRows[range.start];\r\n const lastRow: HTMLElement | undefined = renderedBodyRows[range.end];\r\n\r\n if (!firstRow || !lastRow) {\r\n return 0;\r\n }\r\n\r\n // We need to include all header and footer rows in the sum, since they're always rendered\r\n const renderedHeaderRows = this.table._getRenderedRows(this.table._headerRowOutlet);\r\n const renderedFooterRows = this.table._getRenderedRows(this.table._footerRowOutlet);\r\n\r\n // TODO (performance): Can we just measure the offset of the first and last items and do some math to avoid having to measure each row individually?\r\n const headerHeight = renderedHeaderRows.reduce((sum: number, row: HTMLElement) => {\r\n return (sum += row.getBoundingClientRect().height);\r\n }, 0);\r\n const footerHeight = renderedFooterRows.reduce((sum: number, row: HTMLElement) => {\r\n return (sum += row.getBoundingClientRect().height);\r\n }, 0);\r\n\r\n const bodyHeight = lastRow.getBoundingClientRect().bottom - firstRow.getBoundingClientRect().top;\r\n\r\n return headerHeight + footerHeight + bodyHeight;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'AnnatypeofData',\r\n standalone: true,\r\n})\r\nexport class AnnaTypeofDataPipe implements PipeTransform {\r\n transform(value: any): any {\r\n return typeof value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { memoize } from 'lodash-es';\r\n\r\n@Pipe({\r\n name: 'annaReplaceChar',\r\n standalone: true,\r\n})\r\nexport class AnnaReplaceCharPipe implements PipeTransform {\r\n converter = memoize(this.replace, (...args) => this.replace(args[0], args[1], args[2]));\r\n\r\n transform(value: string, charToBeReplaced: string, replaceBy: string): string {\r\n if (value !== undefined || value != null) {\r\n return this.converter(value, charToBeReplaced, replaceBy);\r\n }\r\n }\r\n\r\n replace(value: string, from: string, to: string): string {\r\n return value.replace(new RegExp(from, 'g'), to);\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[digitOnly]',\r\n standalone: true,\r\n})\r\nexport class DigitOnlyDirective implements OnChanges {\r\n private hasDecimalPoint = false;\r\n private hasNegativeSign = false;\r\n private navigationKeys = [\r\n 'Backspace',\r\n 'Delete',\r\n 'Tab',\r\n 'Escape',\r\n 'Enter',\r\n 'Home',\r\n 'End',\r\n 'ArrowLeft',\r\n 'ArrowRight',\r\n 'Clear',\r\n 'Copy',\r\n 'Paste',\r\n ];\r\n\r\n @Input() decimal = false;\r\n @Input() decimalSeparator = '.';\r\n @Input() allowNegatives = false;\r\n @Input() allowPaste = true;\r\n @Input() negativeSign = '-';\r\n @Input() min = -Infinity;\r\n @Input() max = Infinity;\r\n @Input() pattern?: string | RegExp;\r\n private regex: RegExp | null = null;\r\n inputElement: HTMLInputElement;\r\n\r\n constructor(public el: ElementRef) {\r\n this.inputElement = el.nativeElement;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['pattern']) {\r\n this.regex = this.pattern ? RegExp(this.pattern) : null;\r\n }\r\n\r\n if (changes['min']) {\r\n const maybeMin = Number(this.min);\r\n this.min = isNaN(maybeMin) ? -Infinity : maybeMin;\r\n }\r\n\r\n if (changes['max']) {\r\n const maybeMax = Number(this.max);\r\n this.max = isNaN(maybeMax) ? Infinity : maybeMax;\r\n }\r\n }\r\n\r\n @HostListener('beforeinput', ['$event'])\r\n onBeforeInput(e: InputEvent): any {\r\n if (isNaN(Number(e.data))) {\r\n if (e.data === this.decimalSeparator || (e.data === this.negativeSign && this.allowNegatives)) {\r\n return; // go on\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(e: KeyboardEvent): any {\r\n if (\r\n this.navigationKeys.indexOf(e.key) > -1 || // Allow: navigation keys: backspace, delete, arrows etc.\r\n ((e.key === 'a' || e.code === 'KeyA') && e.ctrlKey === true) || // Allow: Ctrl+A\r\n ((e.key === 'c' || e.code === 'KeyC') && e.ctrlKey === true) || // Allow: Ctrl+C\r\n ((e.key === 'v' || e.code === 'KeyV') && e.ctrlKey === true) || // Allow: Ctrl+V\r\n ((e.key === 'x' || e.code === 'KeyX') && e.ctrlKey === true) || // Allow: Ctrl+X\r\n ((e.key === 'a' || e.code === 'KeyA') && e.metaKey === true) || // Allow: Cmd+A (Mac)\r\n ((e.key === 'c' || e.code === 'KeyC') && e.metaKey === true) || // Allow: Cmd+C (Mac)\r\n ((e.key === 'v' || e.code === 'KeyV') && e.metaKey === true) || // Allow: Cmd+V (Mac)\r\n ((e.key === 'x' || e.code === 'KeyX') && e.metaKey === true) // Allow: Cmd+X (Mac)\r\n ) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n\r\n let newValue = '';\r\n\r\n if (this.decimal && e.key === this.decimalSeparator) {\r\n newValue = this.forecastValue(e.key);\r\n if (newValue.split(this.decimalSeparator).length > 2) {\r\n // has two or more decimal points\r\n e.preventDefault();\r\n return;\r\n } else {\r\n this.hasDecimalPoint = newValue.indexOf(this.decimalSeparator) > -1;\r\n return; // Allow: only one decimal point\r\n }\r\n }\r\n\r\n if (e.key === this.negativeSign && this.allowNegatives) {\r\n newValue = this.forecastValue(e.key);\r\n if (newValue.charAt(0) !== this.negativeSign || newValue.split(this.negativeSign).length > 2) {\r\n e.preventDefault();\r\n return;\r\n } else {\r\n this.hasNegativeSign = newValue.split(this.negativeSign).length > -1;\r\n return;\r\n }\r\n }\r\n\r\n // Ensure that it is a number and stop the keypress\r\n if (e.key === ' ' || isNaN(Number(e.key))) {\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n newValue = newValue || this.forecastValue(e.key);\r\n // check the input pattern RegExp\r\n if (this.regex) {\r\n if (!this.regex.test(newValue)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n const newNumber = Number(newValue);\r\n if (newNumber > this.max || newNumber < this.min) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n onPaste(event: any): void {\r\n if (this.allowPaste === true) {\r\n let pastedInput: string = '';\r\n if ((window as { [key: string]: any })['clipboardData']) {\r\n // Browser is IE\r\n pastedInput = (window as { [key: string]: any })['clipboardData'].getData('text');\r\n } else if (event.clipboardData && event.clipboardData.getData) {\r\n // Other browsers\r\n pastedInput = event.clipboardData.getData('text/plain');\r\n }\r\n\r\n this.pasteData(pastedInput);\r\n event.preventDefault();\r\n } else {\r\n // this prevents the paste\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n @HostListener('drop', ['$event'])\r\n onDrop(event: DragEvent): void {\r\n const textData = event.dataTransfer?.getData('text') ?? '';\r\n this.inputElement.focus();\r\n this.pasteData(textData);\r\n event.preventDefault();\r\n }\r\n\r\n private pasteData(pastedContent: string): void {\r\n const sanitizedContent = this.sanitizeInput(pastedContent);\r\n if (\r\n sanitizedContent.includes(this.negativeSign) &&\r\n this.hasNegativeSign &&\r\n !this.getSelection().includes(this.negativeSign)\r\n ) {\r\n return;\r\n }\r\n const pasted = document.execCommand('insertText', false, sanitizedContent);\r\n if (!pasted) {\r\n if (this.inputElement.setRangeText) {\r\n const { selectionStart: start, selectionEnd: end } = this.inputElement;\r\n this.inputElement.setRangeText(sanitizedContent, start ?? 0, end ?? 0, 'end');\r\n // Angular's Reactive Form relies on \"input\" event, but on Firefox, the setRangeText method doesn't trigger it\r\n // so we have to trigger it ourself.\r\n if (typeof (window as { [key: string]: any })['InstallTrigger'] !== 'undefined') {\r\n this.inputElement.dispatchEvent(new Event('input', { cancelable: true }));\r\n }\r\n } else {\r\n // Browser does not support setRangeText, e.g. IE\r\n this.insertAtCursor(this.inputElement, sanitizedContent);\r\n }\r\n }\r\n if (this.decimal) {\r\n this.hasDecimalPoint = this.inputElement.value.indexOf(this.decimalSeparator) > -1;\r\n }\r\n this.hasNegativeSign = this.inputElement.value.indexOf(this.negativeSign) > -1;\r\n }\r\n\r\n // The following 2 methods were added from the below article for browsers that do not support setRangeText\r\n // https://stackoverflow.com/questions/11076975/how-to-insert-text-into-the-textarea-at-the-current-cursor-position\r\n private insertAtCursor(myField: HTMLInputElement, myValue: string): void {\r\n const startPos = myField.selectionStart ?? 0;\r\n const endPos = myField.selectionEnd ?? 0;\r\n\r\n myField.value =\r\n myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);\r\n\r\n const pos = startPos + myValue.length;\r\n myField.focus();\r\n myField.setSelectionRange(pos, pos);\r\n\r\n this.triggerEvent(myField, 'input');\r\n }\r\n\r\n private triggerEvent(el: HTMLInputElement, type: string): void {\r\n if ('createEvent' in document) {\r\n // modern browsers, IE9+\r\n const e = document.createEvent('HTMLEvents');\r\n e.initEvent(type, false, true);\r\n el.dispatchEvent(e);\r\n }\r\n }\r\n // end stack overflow code\r\n\r\n private sanitizeInput(input: string): string {\r\n let result = '';\r\n let regex;\r\n if (this.decimal && this.isValidDecimal(input)) {\r\n regex = new RegExp(`${this.getNegativeSignRegExp()}[^0-9${this.decimalSeparator}]`, 'g');\r\n } else {\r\n regex = new RegExp(`${this.getNegativeSignRegExp()}[^0-9]`, 'g');\r\n }\r\n result = input.replace(regex, '');\r\n\r\n const maxLength = this.inputElement.maxLength;\r\n if (maxLength > 0) {\r\n // the input element has maxLength limit\r\n const allowedLength =\r\n maxLength - this.inputElement.value.length + (result.includes(`${this.negativeSign}`) ? 1 : 0);\r\n result = allowedLength > 0 ? result.substring(0, allowedLength) : '';\r\n }\r\n return result;\r\n }\r\n\r\n private getNegativeSignRegExp(): string {\r\n return this.allowNegatives && (!this.hasNegativeSign || this.getSelection().includes(this.negativeSign))\r\n ? `(?!^${this.negativeSign})`\r\n : '';\r\n }\r\n\r\n private isValidDecimal(string: string): boolean {\r\n if (!this.hasDecimalPoint) {\r\n return string.split(this.decimalSeparator).length <= 2;\r\n } else {\r\n // the input element already has a decimal separator\r\n const selectedText = this.getSelection();\r\n if (selectedText && selectedText.indexOf(this.decimalSeparator) > -1) {\r\n return string.split(this.decimalSeparator).length <= 2;\r\n } else {\r\n return string.indexOf(this.decimalSeparator) < 0;\r\n }\r\n }\r\n }\r\n\r\n private getSelection(): string {\r\n return this.inputElement.value.substring(\r\n this.inputElement.selectionStart ?? 0,\r\n this.inputElement.selectionEnd ?? 0,\r\n );\r\n }\r\n\r\n private forecastValue(key: string): string {\r\n const selectionStart = this.inputElement.selectionStart;\r\n const selectionEnd = this.inputElement.selectionEnd;\r\n const oldValue = this.inputElement.value;\r\n\r\n if (selectionStart == null && selectionEnd == null) {\r\n return oldValue + key;\r\n }\r\n\r\n return oldValue.substring(0, selectionStart) + key + oldValue.substring(selectionEnd);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport dayjs from 'dayjs';\r\nimport customParseFormat from 'dayjs/plugin/isSameOrAfter';\r\n\r\n@Pipe({\r\n name: 'AnnaDateFormatter',\r\n standalone: true,\r\n})\r\nexport class AnnaDateFormatterPipe implements PipeTransform {\r\n constructor() {}\r\n\r\n transform(value: any, format: string): any {\r\n dayjs.extend(customParseFormat);\r\n let formattedTime = dayjs(value).format(format);\r\n return formattedTime;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { memoize } from 'lodash-es';\r\n\r\n@Pipe({\r\n name: 'annaConvertArrayToCSV',\r\n standalone: true,\r\n})\r\nexport class AnnaConvertArrayToCommaSeperatedValue implements PipeTransform {\r\n converter = memoize(this.replace, (...args) => this.replace(args[0], args[1], args[2]));\r\n\r\n transform(value: any[], textKeyName?: any, selectedKeyName?: any): string {\r\n if (value == undefined || value == null) {\r\n return '-';\r\n }\r\n return this.converter(value, textKeyName, selectedKeyName);\r\n }\r\n\r\n replace(value: any[], textKeyName?: any, selectedKeyName?: any): string {\r\n let stringToDisplay: string = '';\r\n let anyValueSelected: boolean = false;\r\n value.forEach((val: any) => {\r\n if (selectedKeyName && val[selectedKeyName]) {\r\n stringToDisplay = stringToDisplay + val[textKeyName] + ', ';\r\n anyValueSelected = true;\r\n }\r\n });\r\n\r\n if (!anyValueSelected) return '-';\r\n\r\n // remove last 2 characters i.e. comma\r\n stringToDisplay = stringToDisplay.slice(0, -2);\r\n return stringToDisplay;\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[fixedRowsInPopupTable]',\r\n standalone: true,\r\n})\r\nexport class FixedRowsPopupTableDirective {\r\n @Input() popupRowHeight: number = 37.5;\r\n @Input() popupHeaderHeight: number = 38;\r\n @Input() tableDataLength: number;\r\n maxRowsRenderedWithoutScrollForPopup: number = 10;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n ) {}\r\n\r\n @HostListener('window:resize')\r\n onWindowResize() {\r\n this.setPopUpTableHeight();\r\n }\r\n\r\n ngOnInit() {\r\n this.setPopUpTableHeight();\r\n }\r\n\r\n setPopUpTableHeight() {\r\n const viewportHeight = window.innerHeight;\r\n const maxNoOfRowsToDisplay = viewportHeight < 740 ? 5 : 10;\r\n this.maxRowsRenderedWithoutScrollForPopup = maxNoOfRowsToDisplay;\r\n let totalPopupTableHeight =\r\n this.maxRowsRenderedWithoutScrollForPopup * this.popupRowHeight + this.popupHeaderHeight;\r\n\r\n let tableHeightForPopup =\r\n this.tableDataLength < this.maxRowsRenderedWithoutScrollForPopup\r\n ? this.popupRowHeight * (this.tableDataLength ? this.tableDataLength : 1) + this.popupHeaderHeight\r\n : totalPopupTableHeight;\r\n\r\n this.renderer.setStyle(this.el.nativeElement, 'height', `calc(${tableHeightForPopup}px)`);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-est-icon-template',\r\n templateUrl: './anna-est-icon-template.component.html',\r\n styleUrls: ['./anna-est-icon-template.component.scss'],\r\n standalone: true,\r\n imports: [],\r\n})\r\nexport class AnnaEstIconTemplateComponent {}\r\n","<svg\r\n width=\"12\"\r\n height=\"12\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n>\r\n <path\r\n d=\"M0 0H14V14H0V0Z\"\r\n fill=\"url(#pattern0)\"\r\n />\r\n <defs>\r\n <pattern\r\n id=\"pattern0\"\r\n patternContentUnits=\"objectBoundingBox\"\r\n width=\"1\"\r\n height=\"1\"\r\n >\r\n <use\r\n xlink:href=\"#image0_866_172\"\r\n transform=\"scale(0.0430107 0.0434783)\"\r\n />\r\n </pattern>\r\n <image\r\n id=\"image0_866_172\"\r\n width=\"93\"\r\n height=\"23\"\r\n xlink:href=\"data:image/png;base64,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\"\r\n />\r\n </defs>\r\n</svg>\r\n","// Angular import statements\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\n\r\n// Third party import statements\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxSliderModule } from '@angular-slider/ngx-slider';\r\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\r\nimport { NgCircleProgressModule } from 'ng-circle-progress';\r\n\r\n//Anna-core User defined import statements\r\nimport { AnnaFilterSearchedTextPipe } from './anna-core-shared-lib/pipes/annaFilterSearchedText.pipe';\r\nimport { AnnaNoDataComponent } from './anna-core-shared-lib/components/anna-no-data/anna-no-data.component';\r\nimport { AnnaIconColumnComponent } from './anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component';\r\nimport { AnnaBuyerApprovalIconTemplateComponent } from './anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component';\r\nimport { AnnaLiveIconTemplateComponent } from './anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component';\r\nimport { AnnaNotifyIconTemplateComponent } from './anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component';\r\nimport { AnnaPayForPerformanceIconTemplateComponent } from './anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component';\r\nimport { AnnaRejectedIconTemplateComponent } from './anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component';\r\nimport { showEllipsisTextOnHoverDirective } from './anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive';\r\nimport { AnnaConvertZeroOrNullOrUndefinedPipe } from './anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe';\r\n\r\n//Anna-dropdown-lib User defined import statements\r\nimport { AnnaWeekCalendarComponent } from './anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component';\r\nimport { AnnaCalendarFilterComponent } from './anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component';\r\n\r\n//Anna-generic-table User defined import statements\r\nimport { AnnaNonEditableGenericTableComponent } from './anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component';\r\nimport { AnnaSortComponent } from './anna-generic-table-lib/components/anna-sort/anna-sort.component';\r\nimport { AnnaTableVirtualScrollViewportComponent } from './anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component';\r\nimport { AnnaFixedRowSizeTableVirtualScrollStrategyDirective } from './anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy';\r\nimport { AnnaVirtualTableDirective } from './anna-generic-table-lib/directives/anna-virtual-table';\r\nimport { AnnaTypeofDataPipe } from './anna-core-shared-lib/pipes/annaTypeOfData.pipe';\r\nimport { AnnaReplaceCharPipe } from './anna-core-shared-lib/pipes/annaReplaceChar.pipe';\r\nimport { DigitOnlyDirective } from './anna-core-shared-lib/directives/digits-only/digits-only.directive';\r\nimport { AnnaColumnDateRangeFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component';\r\nimport { AnnaColumnCheckboxFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component';\r\nimport { AnnaColumnTimeFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component';\r\nimport { AnnaDeletedOrderIconTemplateComponent } from './anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component';\r\nimport { AnnaColumnSliderFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component';\r\nimport { AnnaDateFormatterPipe } from './anna-core-shared-lib/pipes/annaDateFormatter.pipe';\r\nimport { AnnaConvertArrayToCommaSeperatedValue } from './anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe';\r\nimport { FixedRowsPopupTableDirective } from './anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive';\r\nimport { AnnaEstIconTemplateComponent } from './anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n NgbModule,\r\n FormsModule,\r\n MatRadioModule,\r\n MatButtonToggleModule,\r\n MatTableModule,\r\n NgxSliderModule,\r\n NgxSkeletonLoaderModule,\r\n ScrollingModule,\r\n NgCircleProgressModule.forRoot({\r\n radius: 100,\r\n outerStrokeWidth: 16,\r\n innerStrokeWidth: 8,\r\n outerStrokeColor: '#78C000',\r\n innerStrokeColor: '#C7E596',\r\n animationDuration: 300,\r\n }),\r\n AnnaNoDataComponent,\r\n AnnaFilterSearchedTextPipe,\r\n AnnaConvertZeroOrNullOrUndefinedPipe,\r\n AnnaTypeofDataPipe,\r\n AnnaFilterSearchedTextPipe,\r\n AnnaReplaceCharPipe,\r\n AnnaBuyerApprovalIconTemplateComponent,\r\n AnnaLiveIconTemplateComponent,\r\n AnnaNotifyIconTemplateComponent,\r\n AnnaPayForPerformanceIconTemplateComponent,\r\n AnnaRejectedIconTemplateComponent,\r\n showEllipsisTextOnHoverDirective,\r\n AnnaIconColumnComponent,\r\n AnnaWeekCalendarComponent,\r\n AnnaCalendarFilterComponent,\r\n AnnaSortComponent,\r\n AnnaVirtualTableDirective,\r\n AnnaNonEditableGenericTableComponent,\r\n AnnaTableVirtualScrollViewportComponent,\r\n AnnaFixedRowSizeTableVirtualScrollStrategyDirective,\r\n DigitOnlyDirective,\r\n AnnaColumnDateRangeFilterComponent,\r\n AnnaColumnTimeFilterComponent,\r\n AnnaColumnCheckboxFilterComponent,\r\n AnnaDeletedOrderIconTemplateComponent,\r\n AnnaColumnSliderFilterComponent,\r\n AnnaDateFormatterPipe,\r\n AnnaConvertArrayToCommaSeperatedValue,\r\n FixedRowsPopupTableDirective,\r\n AnnaEstIconTemplateComponent,\r\n ],\r\n exports: [\r\n AnnaNoDataComponent,\r\n AnnaFilterSearchedTextPipe,\r\n AnnaConvertZeroOrNullOrUndefinedPipe,\r\n AnnaTypeofDataPipe,\r\n AnnaReplaceCharPipe,\r\n AnnaFilterSearchedTextPipe,\r\n AnnaBuyerApprovalIconTemplateComponent,\r\n AnnaLiveIconTemplateComponent,\r\n AnnaNotifyIconTemplateComponent,\r\n AnnaPayForPerformanceIconTemplateComponent,\r\n AnnaRejectedIconTemplateComponent,\r\n showEllipsisTextOnHoverDirective,\r\n AnnaIconColumnComponent,\r\n AnnaWeekCalendarComponent,\r\n AnnaCalendarFilterComponent,\r\n AnnaSortComponent,\r\n AnnaVirtualTableDirective,\r\n AnnaNonEditableGenericTableComponent,\r\n AnnaTableVirtualScrollViewportComponent,\r\n AnnaColumnDateRangeFilterComponent,\r\n AnnaColumnTimeFilterComponent,\r\n AnnaColumnCheckboxFilterComponent,\r\n AnnaFixedRowSizeTableVirtualScrollStrategyDirective,\r\n DigitOnlyDirective,\r\n AnnaDeletedOrderIconTemplateComponent,\r\n AnnaColumnSliderFilterComponent,\r\n AnnaDateFormatterPipe,\r\n AnnaConvertArrayToCommaSeperatedValue,\r\n FixedRowsPopupTableDirective,\r\n ],\r\n})\r\nexport class AnnaCoreModule {}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AnnaNumberFormatService {\r\n public static GetRoundedValueWithUnits(inputValue: number, digitsToRoundDecimalPoint = 2) {\r\n let [value, unit] = AnnaNumberFormatService.GetValueInUnits(Math.abs(inputValue));\r\n value = +(+value).toFixed(digitsToRoundDecimalPoint);\r\n if (inputValue < 0) {\r\n value = value * -1;\r\n }\r\n return value.toString() + unit;\r\n // return (Math.Round(value, digitsToRoundDecimalPoint, MidpointRounding.AwayFromZero) + unit);\r\n }\r\n\r\n public static GetRoundedImpressionsWithUnits(inputValue: number, digitsToRoundDecimalPoint: number = 0) {\r\n let [value, unit] = this.GetValueInUnits(Math.abs(inputValue));\r\n value = +value;\r\n if (inputValue < 0) {\r\n value = value * -1;\r\n }\r\n if (digitsToRoundDecimalPoint == 0 && (unit == 'M' || unit == 'B' || unit == 'K')) {\r\n digitsToRoundDecimalPoint = 2;\r\n }\r\n return Number.isInteger(value) ? value.toString() + unit : value.toFixed(digitsToRoundDecimalPoint) + unit;\r\n // return (Math.round(value, digitsToRoundDecimalPoint, MidpointRounding.AwayFromZero) + unit);\r\n }\r\n\r\n public static GetValueInUnits(inputValue: number) {\r\n let unit = '';\r\n let thousand = 1000;\r\n let million = 1000000;\r\n let billion = 1000000000;\r\n\r\n if (inputValue >= thousand && inputValue < million) {\r\n inputValue = inputValue / thousand;\r\n unit = 'K';\r\n } else if (inputValue >= million && inputValue < billion) {\r\n inputValue = inputValue / million;\r\n unit = 'M';\r\n } else if (inputValue >= billion) {\r\n inputValue = inputValue / billion;\r\n unit = 'B';\r\n }\r\n\r\n return [inputValue, unit];\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AnnaPersistingFilterService {\r\n constructor() {}\r\n\r\n storeKeyValueInLocalStorage(val: any, isFilterKey = true) {\r\n let filterOrdering: any[];\r\n\r\n if (!localStorage.getItem('filterOrdering')) {\r\n filterOrdering = [];\r\n } else {\r\n filterOrdering = JSON.parse(localStorage.getItem('filterOrdering'));\r\n }\r\n\r\n let filterOrderingSet = new Set(filterOrdering);\r\n let hashCode = null;\r\n let key = null;\r\n\r\n try {\r\n hashCode = hash(val);\r\n key = isFilterKey ? 'filter_' + hashCode : hashCode;\r\n localStorage.setItem(key, JSON.stringify(val));\r\n\r\n if (isFilterKey) {\r\n if (filterOrderingSet.has(key)) {\r\n filterOrderingSet.delete(key);\r\n }\r\n filterOrderingSet.add(key);\r\n localStorage.setItem('filterOrdering', JSON.stringify(Array.from(filterOrderingSet)));\r\n }\r\n } catch (e) {\r\n let halfArrayLength = filterOrdering.length / 2;\r\n\r\n for (let i = 0; i < halfArrayLength; i++) {\r\n localStorage.removeItem(filterOrdering[i]);\r\n }\r\n\r\n filterOrdering.splice(0, filterOrdering.length / 2);\r\n\r\n hashCode = hash(val);\r\n let key = isFilterKey ? 'filter_' + hashCode : hashCode;\r\n localStorage.setItem(key, JSON.stringify(val));\r\n\r\n if (isFilterKey) {\r\n if (filterOrderingSet.has(key)) {\r\n filterOrderingSet.delete(key);\r\n }\r\n filterOrderingSet.add(key);\r\n localStorage.setItem('filterOrdering', JSON.stringify(Array.from(filterOrderingSet)));\r\n }\r\n }\r\n\r\n return key;\r\n }\r\n\r\n getActualQueryParams(key: string) {\r\n return localStorage.getItem(key);\r\n }\r\n\r\n convertObjToQueryString(paramsObject: any) {\r\n return Object.keys(paramsObject)\r\n .map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(paramsObject[key])}`)\r\n .join('&');\r\n }\r\n}\r\n","import { IWeekCalendar } from './anna-global-dropdown-config.model';\r\n\r\nexport interface IGtTableHeader {\r\n headerInfo: IHeaderInfo[];\r\n visible: boolean;\r\n width: string;\r\n}\r\n\r\nexport interface IHeaderInfo {\r\n name: string;\r\n objectKey: string;\r\n actionKey?: string;\r\n tooltipKey?: string;\r\n isDisabledKey?: string;\r\n typeOfHeaderData: DATATYPE;\r\n typeOfBodyData: DATATYPE;\r\n filter?: FILTERTYPE;\r\n filterSortObjectKeys?: string[];\r\n isSortRequired?: boolean[];\r\n isFilterRequired?: boolean[];\r\n showTooltipIcon: boolean;\r\n disableTooltipIcon?: boolean;\r\n tooltip?: ITooltip;\r\n joinedFilterSortObjectKeys?: string;\r\n}\r\n\r\ntype DATATYPE =\r\n | 'CHECKBOX'\r\n | 'ICON'\r\n | 'STRING'\r\n | 'RADIO'\r\n | ''\r\n | 'SVG_ICON'\r\n | 'TEXT_ACTIONS'\r\n | 'CLICKABLE_DATA'\r\n | 'STRING__TEXT_ACTION'\r\n | 'STRING__ICON_ACTION'\r\n | 'STRING___ICON_OR_TEXT_ACTION'\r\n | 'HTML'\r\n | 'HTML_STRING'\r\n | 'ICON_CELL'\r\n | 'STRING_OR_INPUT'\r\n | 'SINGLE_RADIO'\r\n | 'STRING_WITH_TOOLTIP';\r\ntype FILTERTYPE = 'CHECKBOX' | 'SLIDER' | 'DATE' | 'TIME' | 'WEEK';\r\ntype TOOLTIPOSITION = 'left' | 'right';\r\n\r\nexport interface ITotalRowInfo {\r\n colspan: number;\r\n data: string;\r\n lowerData?: string;\r\n colName: string;\r\n class?: string;\r\n tooltipMessage?: string;\r\n isActionColumn?: boolean;\r\n actionData?: ClickableItem[];\r\n isIconColumn?: boolean;\r\n iconData?: { class: string; disabled?: boolean };\r\n tooltipIconClass?: string;\r\n}\r\n\r\nexport interface IGtHeaderConfig {\r\n iconColumn: boolean;\r\n checkboxColumn: boolean;\r\n lastColumnKeys: string[];\r\n}\r\n\r\nexport interface IGtGeneralConfig extends ISpotTableConfig {\r\n component: COMPONENTNAME;\r\n totalRow: boolean;\r\n isHeaderChecked?: boolean;\r\n disableHeaderCheckbox?: boolean;\r\n multiWeekPickerConfig?: IWeekCalendar;\r\n verticalScrollOffsetForFilterTooltip?: number;\r\n tableContainerName?: string;\r\n tableOuterContainerName?: string;\r\n showAllColumnFilter: boolean;\r\n bufferSize: number;\r\n page: string;\r\n}\r\n\r\ntype COMPONENTNAME =\r\n | 'SPOTDETAILS'\r\n | 'EXCLUDEINVENTORYPOPUP'\r\n | 'EXCLUDEINVENTORY'\r\n | 'DRRLISTING'\r\n | 'DRR'\r\n | ''\r\n | 'RATING'\r\n | 'ORDER_LISTING_INFLIGHT'\r\n | 'ORDER_LISTING_COMPLETED'\r\n | 'ORDER_LISTING_BLANK'\r\n | 'LUR_VIOLATIONS'\r\n | 'ACTIVITYLOG'\r\n | 'NOTIFICATIONS'\r\n | 'DP_RESTRICTIONS';\r\ninterface ISpotTableConfig {\r\n isGrouped: boolean;\r\n}\r\n\r\nexport interface ITooltip {\r\n iconPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after';\r\n name: string;\r\n tooltipPosition: string;\r\n iconClass: string;\r\n tooltipClass: string;\r\n tooltipMessage?: string;\r\n}\r\n\r\nexport interface IconData {\r\n data: any;\r\n iconClass: string;\r\n}\r\nexport interface TextAction {\r\n id: number;\r\n name: string;\r\n class: string;\r\n isDisabled: boolean;\r\n}\r\n\r\nexport class ClickableItem {\r\n id: any;\r\n name: string;\r\n isDisabled: boolean;\r\n class: string;\r\n showTooltip: boolean;\r\n tooltipData: { key: string; value: string };\r\n enableTooltipForAdditionalText: boolean;\r\n\r\n constructor(\r\n typeOfActionLinkForGt: any,\r\n name: string,\r\n className: string,\r\n showTooltip: boolean,\r\n tooltipData: { key: string; value: string },\r\n ) {\r\n this.id = typeOfActionLinkForGt;\r\n this.name = name;\r\n this.class = className;\r\n this.showTooltip = showTooltip;\r\n this.tooltipData = tooltipData;\r\n this.enableTooltipForAdditionalText = false;\r\n }\r\n}\r\n\r\nexport class IconCellActionKey {\r\n id: number | string;\r\n showIcon: boolean = true;\r\n iconClass: string;\r\n showObjectKey: boolean;\r\n showTooltip: boolean;\r\n tooltipData?: string;\r\n\r\n constructor(\r\n id: any,\r\n showIcon: boolean,\r\n iconClass: string,\r\n showObjectKey: boolean,\r\n showTooltip: boolean,\r\n tooltipData?: string,\r\n ) {\r\n this.id = id;\r\n this.showIcon = showIcon;\r\n this.iconClass = iconClass;\r\n this.showObjectKey = showObjectKey;\r\n this.showTooltip = showTooltip;\r\n this.tooltipData = tooltipData;\r\n }\r\n}\r\n\r\nexport interface IActionItemTypeSTRING__ICON_OR_TEXT_ACTION {\r\n id: any;\r\n data: string;\r\n\r\n typeOfData: 'STRING' | 'ICON_TEXT_ACTION';\r\n additionalTextBeforeLink: string;\r\n\r\n iconClass?: string;\r\n showIcon: boolean;\r\n disabledIcon?: boolean;\r\n\r\n linkClass?: string;\r\n showLink?: boolean;\r\n disabledLink?: boolean;\r\n\r\n showTooltip: boolean;\r\n\r\n tooltipData?: { key: string; value: string }[];\r\n tooltipClass?: string;\r\n tooltipPlacement?: string;\r\n\r\n enableTooltipForAdditionalText?: boolean;\r\n}\r\n\r\nexport type IconToShow =\r\n | 'LIVE'\r\n | 'PAY_FOR_PERFORMANCE_ACTIVE'\r\n | 'PAY_FOR_PERFORMANCE'\r\n | 'REJECTED'\r\n | 'NOTIFY'\r\n | 'AWAITING_APPROVAL'\r\n | 'DELETED_ORDER'\r\n | 'NEED_SELLER_CONFIRMATION'\r\n | 'NEED_BUYER_CONFIRMATION';\r\n","export class Constants {\r\n static readonly SUCCESS_STRING = 'success';\r\n static readonly BACKEND_SERVER_URL = '/server/public/index.php/api';\r\n static readonly ERROR_MSG = 'Error occurred please try again.';\r\n static readonly NO_DATA_MSG = 'No Data to display';\r\n static readonly SERVER_ERROR = 'Server error. Please try Again';\r\n static readonly USER_ORIGIN = 'ANNA';\r\n static readonly ACTIVE_USER_STATUS = 'active';\r\n static readonly DELETED_USER_STATUS = 'deleted';\r\n static readonly INACTIVE_USER_STATUS = 'inactive';\r\n static readonly OGAdminRole = 'Ownership Group Admin';\r\n static readonly ASARole = 'Anna Station Admin';\r\n static readonly dollars = '$';\r\n}\r\n\r\nexport class ErrorCodes {\r\n static readonly BAD_REQUEST = 400;\r\n static readonly SERVER_ERROR = 500;\r\n static readonly SUCCESS_CODE = 200;\r\n static readonly SUCCESS_CODE_GET = 200;\r\n static readonly SUCCESS_CODE_POST = 201;\r\n static readonly SUCCESS_CODE_PATCH = 204;\r\n static readonly NO_CONTENT = 204;\r\n static readonly under_review = 409;\r\n}\r\n\r\nexport enum Days {\r\n M = 1,\r\n Tu = 2,\r\n We = 3,\r\n Th = 4,\r\n F = 5,\r\n Sa = 6,\r\n Su = 7,\r\n}\r\n\r\nexport class OrderSources {\r\n static readonly Medialine = 'Medialine';\r\n static readonly Non_electronic = 'Non electronic';\r\n static readonly Others = 'Others';\r\n static readonly WOC_unlinked = 'WOC Unlinked';\r\n static readonly WOC_linked = 'WOC Linked';\r\n static readonly WOZ = 'WOZ';\r\n static readonly Darwin = 'Darwin';\r\n}\r\n\r\nexport class ANNAIconNames {\r\n static readonly AutomationActivatedIconName = 'anna-automation-activated-icon mdi mdi-cog-refresh';\r\n}\r\n","/*\r\n * Public API Surface of anna-core\r\n */\r\n\r\nexport * from './lib/anna-core.module';\r\n\r\n//ANNA-CORE\r\n//components\r\nexport * from './lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component';\r\nexport * from './lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component';\r\nexport * from './lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component';\r\nexport * from './lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component';\r\nexport * from './lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component';\r\nexport * from './lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component';\r\nexport * from './lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component';\r\nexport * from './lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component';\r\n\r\n//services\r\nexport * from './lib/anna-core-shared-lib/services/anna-date-time-format.service';\r\nexport * from './lib/anna-core-shared-lib/services/anna-global-config.service';\r\nexport * from './lib/anna-core-shared-lib/services/anna-filter.service';\r\nexport * from './lib/anna-core-shared-lib/services/anna-sort.service';\r\nexport * from './lib/anna-core-shared-lib/services/anna-generic-table.service';\r\nexport * from './lib/anna-core-shared-lib/services/anna-number-format.service';\r\nexport * from './lib/anna-core-shared-lib/services/anna-persisting-filter.service';\r\n\r\n//models\r\nexport * from './lib/anna-core-shared-lib/models/anna-generic-data-type.model';\r\nexport * from './lib/anna-core-shared-lib/models/anna-global-dropdown-config.model';\r\nexport * from './lib/anna-core-shared-lib/models/anna-non-editable-gt-models';\r\nexport * from './lib/anna-core-shared-lib/models/anna-tooltip.model';\r\nexport * from './lib/anna-core-shared-lib/models/anna-sort.model';\r\n\r\n//constants\r\nexport * from './lib/anna-core-shared-lib/constants/shared.constant';\r\n\r\n//pipes\r\nexport * from './lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe';\r\nexport * from './lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe';\r\nexport * from './lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe';\r\nexport * from './lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe';\r\nexport * from './lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe';\r\nexport * from './lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe';\r\n\r\n//directives\r\nexport * from './lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive';\r\nexport * from './lib/anna-core-shared-lib/directives/digits-only/digits-only.directive';\r\nexport * from './lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive';\r\n\r\n//ANNA-DROPDOWN LIB\r\nexport * from './lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component';\r\nexport * from './lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component';\r\n\r\n//ANNA-GENERIC-TABLE-LIB\r\n//Modules\r\n\r\n//Components\r\nexport * from './lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component';\r\nexport * from './lib/anna-generic-table-lib/components/anna-sort/anna-sort.component';\r\nexport * from './lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component';\r\nexport * from './lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component';\r\nexport * from './lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component';\r\nexport * from './lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component';\r\nexport * from './lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component';\r\n\r\n//Directives\r\nexport * from './lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy';\r\nexport * from './lib/anna-generic-table-lib/directives/anna-virtual-table';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.AnnaDateTimeFormatService","i3.AnnaGlobalConfigService","i1.AnnaDateTimeFormatService","i2","CustomParseFormat","i2.AnnaSortService","i1.AnnaSortService","i3.AnnaFilterService","i1.AnnaFilterService","i4","i2.AnnaFilterService","i3","i5","i3.AnnaSortService","i1","i3.AnnaGtHelperService","map","customParseFormat"],"mappings":"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"}
|