@annalib/anna-core 30.0.21 → 30.0.22
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annalib-anna-core.mjs","sources":["../../../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-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-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-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-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-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-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-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/components/anna-licensing-table/anna-licensing-table.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-licensing-table/anna-licensing-table.component.html","../../../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/services/anna-spinner-loader.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-spinner-loader/anna-spinner-loader.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-spinner-loader/anna-spinner-loader.component.html","../../../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/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.ts","../../../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/annaConvertArrayToCommaSeperatedValue.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.ts","../../../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/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-core-shared-lib/models/anna-sort.model.ts","../../../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/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-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-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-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-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.module.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-circular-progress/anna-circular-progress.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-circular-progress/anna-circular-progress.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-generic-table.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-generic-tooltip-html.services.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/services/anna-regex-patterns.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-licensing-table.model.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/lib/anna-core-shared-lib/constants/anna-application.constants.ts","../../../projects/anna-core/src/public-api.ts","../../../projects/anna-core/src/annalib-anna-core.ts"],"sourcesContent":["import { NgTemplateOutlet } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"anna-core-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 {}\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 } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"anna-core-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 {}\r\n","<i class=\"mdi mdi-file-remove-outline\"></i>\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","import { NgTemplateOutlet } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"anna-core-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 {}\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 } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"anna-core-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 {}\r\n","<i class=\"mdi mdi-bell\"></i>\r\n","import { NgTemplateOutlet } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"anna-core-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 {\r\n @Input() isTitle: boolean;\r\n @Input() color: string;\r\n @Input() width: string;\r\n @Input() height: string;\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 { NgTemplateOutlet } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"anna-core-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 {}\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 { NgIf } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \"@angular/core\";\r\n\r\nimport { GtColumnIconEmittedData } from \"../../models/anna-generic-data-type.model\";\r\nimport { IconToShow } from \"../../models/anna-non-editable-gt-models\";\r\n// eslint-disable-next-line max-len\r\nimport { AnnaBuyerApprovalIconTemplateComponent } from \"../anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component\";\r\n// eslint-disable-next-line max-len\r\nimport { AnnaDeletedOrderIconTemplateComponent } from \"../anna-deleted-order-icon-template/anna-deleted-order-icon-template.component\";\r\nimport { AnnaEstIconTemplateComponent } from \"../anna-est-icon-template/anna-est-icon-template.component\";\r\nimport { AnnaLiveIconTemplateComponent } from \"../anna-live-icon-template/anna-live-icon-template.component\";\r\nimport { AnnaNotifyIconTemplateComponent } from \"../anna-notify-icon-template/anna-notify-icon-template.component\";\r\n// eslint-disable-next-line max-len\r\nimport { AnnaPayForPerformanceIconTemplateComponent } from \"../anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component\";\r\n// eslint-disable-next-line max-len\r\nimport { AnnaRejectedIconTemplateComponent } from \"../anna-rejected-icon-template/anna-rejected-icon-template.component\";\r\n\r\n@Component({\r\n selector: \"anna-core-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 AnnaEstIconTemplateComponent,\r\n ],\r\n})\r\nexport class AnnaIconColumnComponent {\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() columnIconClicked = new EventEmitter<GtColumnIconEmittedData>();\r\n\r\n svgIconClicked(rowData: any, key: string) {\r\n this.columnIconClicked.emit({ data: rowData, key });\r\n }\r\n}\r\n","<span *ngIf=\"iconToShow === 'PAY_FOR_PERFORMANCE_ACTIVE'\">\r\n <anna-core-pay-for-performance-icon-template\r\n [color]=\"PfpIconActiveColor\"\r\n [width]=\"'12px'\"\r\n [height]=\"'12px'\"\r\n >\r\n </anna-core-pay-for-performance-icon-template>\r\n</span>\r\n\r\n<anna-core-deleted-order-icon-template *ngIf=\"iconToShow === 'DELETED_ORDER'\"> </anna-core-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\r\n<i\r\n *ngIf=\"iconToShow === 'AUTOMATED'\"\r\n class=\"anna-automation-activated-icon mdi mdi-cog-refresh\"\r\n></i>\r\n\r\n<i\r\n *ngIf=\"iconToShow === 'WARNING_ICON'\"\r\n class=\"mdi mdi-alert\"\r\n></i>\r\n\r\n<i\r\n *ngIf=\"iconToShow === 'INFORMATION_OUTLINE_ICON'\"\r\n class=\"mdi mdi-information-outline\"\r\n></i>\r\n\r\n<i\r\n *ngIf=\"iconToShow === 'CANCEL_ICON'\"\r\n class=\"mdi mdi-cancel\"\r\n></i>\r\n\r\n<i\r\n *ngIf=\"iconToShow === 'ALPHA_B_CIRCLE'\"\r\n class=\"mdi mdi-alpha-b-circle-outline\"\r\n></i>\r\n<i\r\n *ngIf=\"iconToShow === 'ALPHA_E_CIRCLE'\"\r\n class=\"mdi mdi-alpha-r-circle-outline\"\r\n></i>\r\n<i\r\n *ngIf=\"iconToShow === 'ALPHA_A_CIRCLE'\"\r\n class=\"mdi mdi-alpha-a-circle\"\r\n></i>\r\n<!-- <i\r\n *ngIf=\"iconToShow === 'ALPHA_R_CIRCLE'\"\r\n class=\"mdi mdi-alpha-r-circle-outline\"\r\n></i> -->\r\n\r\n<anna-core-anna-est-icon-template *ngIf=\"iconToShow === 'ALPHA_R_CIRCLE'\"></anna-core-anna-est-icon-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { FeatureDetails, LicensingPlan } from '../../models/anna-licensing-table.model';\r\n\r\n@Component({\r\n selector: 'anna-core-licensing-table',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './anna-licensing-table.component.html',\r\n styleUrls: ['./anna-licensing-table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaLicensingTableComponent {\r\n @Input() plans: LicensingPlan[];\r\n @Input() isEditMode: boolean = false;\r\n @Output() specificationChanged = new EventEmitter<any>();\r\n\r\n onValueChange(updatedValue: any, featureDetails: FeatureDetails) {\r\n this.specificationChanged.emit({updatedValue, featureDetails});\r\n }\r\n}\r\n","<table class=\"header-section\">\r\n <thead>\r\n <tr>\r\n <th>FEATURE</th>\r\n <th *ngFor=\"let plan of plans\">\r\n {{ plan?.PlanName }}\r\n <p *ngIf=\"plans.length === 1 && !isEditMode\">Current plan</p>\r\n </th>\r\n </tr>\r\n </thead>\r\n</table>\r\n<div class=\"scrollable-tbody\">\r\n <table>\r\n <tbody>\r\n <tr *ngFor=\"let feature of plans[0]?.FeatureDetails; let featureIndex = index\">\r\n <td>\r\n <strong>{{ feature.FeatureName }}</strong> {{ feature.FeatureDescription }}\r\n </td>\r\n <td *ngFor=\"let plan of plans; let planIndex = index\">\r\n <ng-container *ngIf=\"plan.FeatureDetails[featureIndex] as featureDetails\">\r\n <i\r\n *ngIf=\"featureDetails.IsEnabled && !featureDetails.Specification.length\"\r\n class=\"mdi mdi-checkbox-marked-circle\"\r\n ></i>\r\n <i\r\n *ngIf=\"!featureDetails.IsEnabled\"\r\n class=\"mdi mdi-close\"\r\n ></i>\r\n <ng-container *ngIf=\"featureDetails.Specification.length > 0\">\r\n <ng-container *ngIf=\"featureDetails.Specification[0].JsonType === 'OrderCount'\">\r\n <div *ngIf=\"isEditMode\">\r\n <input\r\n type=\"number\"\r\n [ngModel]=\"featureDetails.Specification[0].Json.TotalOrders\"\r\n (ngModelChange)=\"\r\n onValueChange($event, featureDetails)\r\n \"\r\n min=\"featureDetails.Specification[0].Json.TotalOrders\"\r\n />\r\n Orders\r\n </div>\r\n <div *ngIf=\"!isEditMode\">\r\n <p>\r\n {{ featureDetails.Specification[0].Json.TotalOrders }} Orders\r\n <span *ngIf=\"featureDetails.Specification[0].Json.RemainingOrders\"\r\n >|\r\n {{ featureDetails.Specification[0].Json.RemainingOrders }} Remaining</span\r\n >\r\n </p>\r\n <span *ngIf=\"featureDetails.Specification[0].Json.IsCustomized\">(Customized)</span>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from \"@angular/core\";\r\n\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 { Injectable } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaSpinnerLoaderService {\r\n private loaderSubject = new Subject<boolean>();\r\n loaderState = this.loaderSubject.asObservable();\r\n\r\n start() {\r\n this.loaderSubject.next(true);\r\n }\r\n \r\n stop() {\r\n this.loaderSubject.next(false);\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from \"@angular/core\";\r\n\r\nimport { AnnaSpinnerLoaderService } from \"../../services/anna-spinner-loader.service\";\r\n\r\n@Component({\r\n selector: \"anna-core-spinner-loader\",\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: \"./anna-spinner-loader.component.html\",\r\n styleUrls: [\"./anna-spinner-loader.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AnnaSpinnerLoaderComponent implements OnInit {\r\n loading = false;\r\n\r\n constructor(\r\n private loaderService: AnnaSpinnerLoaderService,\r\n private cdref: ChangeDetectorRef,\r\n ) {}\r\n \r\n ngOnInit() {\r\n this.loaderService.loaderState.subscribe((state) => {\r\n this.loading = state;\r\n this.cdref.markForCheck();\r\n });\r\n }\r\n}\r\n","<div\r\n *ngIf=\"loading\"\r\n class=\"loading\"\r\n>\r\n <div class=\"app-spinner-container\">\r\n <div class=\"ngx-foreground-spinner\">\r\n <div class=\"sk-three-strings\">\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Directive, ElementRef, HostListener, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[annaCoreDigitOnly]\",\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 = Number.isNaN(maybeMin) ? -Infinity : maybeMin;\r\n }\r\n\r\n if (changes.max) {\r\n const maybeMax = Number(this.max);\r\n this.max = Number.isNaN(maybeMax) ? Infinity : maybeMax;\r\n }\r\n }\r\n\r\n @HostListener(\"beforeinput\", [\"$event\"])\r\n onBeforeInput(e: InputEvent): any {\r\n if (Number.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 }\r\n this.hasDecimalPoint = newValue.indexOf(this.decimalSeparator) > -1;\r\n return; // Allow: only one decimal point\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 }\r\n this.hasNegativeSign = newValue.split(this.negativeSign).length > -1;\r\n return;\r\n }\r\n\r\n // Ensure that it is a number and stop the keypress\r\n if (e.key === \" \" || Number.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,\r\n // 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;\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 }\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 }\r\n return string.indexOf(this.decimalSeparator) < 0;\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;\r\n const { selectionEnd } = this.inputElement;\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 { Directive, ElementRef, HostListener, Input, OnInit, Renderer2 } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[annaCoreFixedRowsInPopupTable]\",\r\n standalone: true,\r\n})\r\nexport class FixedRowsPopupTableDirective implements OnInit {\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 const totalPopupTableHeight =\r\n this.maxRowsRenderedWithoutScrollForPopup * this.popupRowHeight + this.popupHeaderHeight;\r\n\r\n const 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, \"max-height\", `calc(${tableHeightForPopup}px)`);\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[annaCoreShowEllipsisTextOnHover]\",\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 const 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\r\n // 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 const elementRect = domElement.getBoundingClientRect();\r\n const childRect = domElement.children[0].getBoundingClientRect();\r\n\r\n const paddingOnRight = window.getComputedStyle(domElement).paddingRight;\r\n const padding = +(paddingOnRight.endsWith(\"px\") ? paddingOnRight.slice(0, -2) : paddingOnRight);\r\n\r\n // If overflow happens then Child element's right side position\r\n // 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: \"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 { 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","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 transform(value: any, format: string): any {\r\n dayjs.extend(customParseFormat);\r\n const 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: \"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 const lowercaseSearchText = 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 keyName.some((key: any) => {\r\n isFound = items.filter((item) => item[key].toString().toLowerCase().includes(lowercaseSearchText));\r\n if (isFound?.length) {\r\n isFoundAtleastOnce = true;\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n return isFoundAtleastOnce ? isFound : [];\r\n }\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) =>\r\n n ? n.toString().toLowerCase().includes(lowercaseSearchText) : false,\r\n ).length > 0,\r\n );\r\n else if (keyName === \"NoKey\") {\r\n searchResult = items.filter((item) => item.toString().toLowerCase().includes(lowercaseSearchText));\r\n } else {\r\n searchResult = items.filter((item) =>\r\n item[keyName] ? item[keyName].toString().toLowerCase().includes(lowercaseSearchText) : false,\r\n );\r\n }\r\n return searchResult;\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 return value;\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 { 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","// Angular import statements\r\nimport { Injectable } from \"@angular/core\";\r\nimport { NgbDate } from \"@ng-bootstrap/ng-bootstrap\";\r\n// Third party import statements\r\nimport dayjs, { UnitType } 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\"), 10),\r\n month: parseInt(dayjs(date, \"MM/DD/YYYY\").format(\"M\"), 10),\r\n day: parseInt(dayjs(date, \"MM/DD/YYYY\").format(\"D\"), 10),\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\"), 10),\r\n month: parseInt(dayjs(date, parseFormat).format(\"M\"), 10),\r\n day: parseInt(dayjs(date, parseFormat).format(\"D\"), 10),\r\n };\r\n }\r\n\r\n public static formatToTwelveHrs(time: any, callRemoveZero: boolean) {\r\n let timeToBeFormatted = time;\r\n if (timeToBeFormatted.endsWith(\"A\") || timeToBeFormatted.endsWith(\"P\")) {\r\n timeToBeFormatted = timeToBeFormatted.substring(0, timeToBeFormatted.length - 1);\r\n }\r\n\r\n const tmp = timeToBeFormatted.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 const 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 const 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 const 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 const format = \"MM/DD/YYYY HH:mm:ss\";\r\n const dayjsDateForA = dayjs(`01/01/2001 ${a}`, format);\r\n const dayjsDateForB = dayjs(`01/01/2001 ${b}`, format);\r\n\r\n let results = this.compareTime(dayjsDateForA, dayjsDateForB, \"hour\", true);\r\n\r\n if (results === 0) {\r\n results = this.compareTime(dayjsDateForA, dayjsDateForB, \"minute\", true);\r\n }\r\n\r\n if (results === 0) {\r\n results = this.compareTime(dayjsDateForA, dayjsDateForB, \"second\", true);\r\n }\r\n\r\n return results;\r\n }\r\n\r\n sortByTimeDescending(a: any, b: any) {\r\n const format = \"MM/DD/YYYY HH:mm:ss\";\r\n const dayjsDateForA = dayjs(`01/01/2001 ${a}`, format);\r\n const dayjsDateForB = dayjs(`01/01/2001 ${b}`, format);\r\n\r\n let results = this.compareTime(dayjsDateForA, dayjsDateForB, \"hour\", false);\r\n\r\n if (results === 0) {\r\n results = this.compareTime(dayjsDateForA, dayjsDateForB, \"minute\", false);\r\n }\r\n\r\n if (results === 0) {\r\n results = this.compareTime(dayjsDateForA, dayjsDateForB, \"second\", false);\r\n }\r\n\r\n return results;\r\n }\r\n\r\n compareTime(a: dayjs.Dayjs, b: dayjs.Dayjs, unit: UnitType, isAsc: boolean) {\r\n if (a.get(unit) < b.get(unit)) {\r\n return isAsc ? -1 : 1;\r\n } else if (a.get(unit) > b.get(unit)) {\r\n return isAsc ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n\r\n convertNgbDateToMoment(ngbDate: NgbDate | NgbDateType): string {\r\n const 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 const time = dayjs(date || `01/01/2000 ${value}`).format(\"MM/DD/YYYY HH:mm:ss\");\r\n return time[14] === \"0\" && time[15] === \"0\"\r\n ? dayjs(time, [\"MM/DD/YYYY HH:mm:ss\"]).format(\"hA\").slice(0, -1)\r\n : dayjs(time, [\"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 const time = dayjs(date || `01/01/2000 ${timeValue}`).format(\"MM/DD/YYYY HH:mm:ss\");\r\n // check if min==00\r\n return time[14] === \"0\" && time[15] === \"0\"\r\n ? dayjs(time, [\"MM/DD/YYYY HH:mm:ss\"]).format(\"hA\").slice(0, -1)\r\n : dayjs(time, [\"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;\r\n let date;\r\n let time;\r\n\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 += \"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 let updatedA = a;\r\n let updatedB = b;\r\n if (typeof a === \"string\" && typeof b === \"string\") {\r\n updatedA = a === \"-\" ? \"0\" : a.toLowerCase();\r\n updatedB = b === \"-\" ? \"0\" : b.toLowerCase();\r\n }\r\n return (updatedA < updatedB ? -1 : 1) * (isAsc ? 1 : -1);\r\n }\r\n\r\n sortDataByBroadcastTimeAsc(firstParamTime: string, secondParamTime: string, broadcastTime: string) {\r\n const format = \"HH:mm:ss\";\r\n\r\n let a = dayjs(firstParamTime, format);\r\n let b = dayjs(secondParamTime, format);\r\n\r\n const 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 if (a.isBefore(b)) {\r\n return -1;\r\n } else if (a.isAfter(b)) {\r\n return 1;\r\n }\r\n\r\n return 0;\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 getBroadcastWeek(startDate: any, format: string = \"MM/DD/YYYY\") {\r\n const dayjsDate = dayjs(startDate, format);\r\n const date = dayjsDate.clone();\r\n const day = date.day();\r\n\r\n // Find the closest Monday <= the date\r\n const start = dayjs(date).subtract((day + 6) % 7, \"day\");\r\n\r\n // Find the closest Sunday >= the date\r\n const end = dayjs(date).add((7 - day) % 7, \"day\");\r\n\r\n // console.log({weekStart: start , weekEnd: end})\r\n return { start, end };\r\n }\r\n}\r\n","// Angular import statements\r\nimport { NgClass, NgIf, TitleCasePipe } from \"@angular/common\";\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\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NgbDate, NgbDateStruct, NgbInputDatepicker } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { Placement } from \"@ng-bootstrap/ng-bootstrap/util/positioning\";\r\nimport dayjs from \"dayjs\";\r\n\r\nimport { AnnaDateTimeFormatService } from \"../../../anna-core-shared-lib/services/anna-date-time-format.service\";\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\", \"bottom-start\", \"left\", \"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) => false;\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 const 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 const 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 }\r\n dayJsStartDate = dayJsStartDate.add(1, \"day\");\r\n }\r\n\r\n return false;\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 const 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 // eslint-disable-next-line max-len\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 // eslint-disable-next-line max-len\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 = null;\r\n this.fromDate = null;\r\n this.selectedToDate = null;\r\n 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 class=\"padding-class\">\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","import { Injectable } from \"@angular/core\";\r\n\r\nimport {\r\n IAngular2MultiSelectSettings,\r\n IConfirmationPopupConfig,\r\n ICustomMultiSelect,\r\n ICustomSingleSelect,\r\n INgbDatePickerSettings,\r\n INgSelectSettings,\r\n INgxAsideSettings,\r\n INgxInfiniteScrollSettings,\r\n INgxSkeletonLoaderSettings,\r\n IRadioButtonComponentConfig,\r\n IWeekCalendar,\r\n} from \"../models/anna-global-dropdown-config.model\";\r\nimport { IGtGeneralConfig, IGtHeaderConfig } 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, NgClass, NgIf } from \"@angular/common\";\r\nimport { AfterViewInit, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n// Third party import statements\r\nimport {\r\n NgbCalendar,\r\n NgbDate,\r\n NgbDatepicker,\r\n NgbDatepickerConfig,\r\n NgbDateStruct,\r\n NgbInputDatepicker,\r\n} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\n\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\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() selectedFromDate: NgbDateStruct;\r\n @Input() selectedEndDate: NgbDateStruct;\r\n @Input() 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() config: IWeekCalendar;\r\n @Output() applyWeekCalendarChanges = new EventEmitter();\r\n @Output() 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 if (this.fromDate) {\r\n this.selectWeek(this.fromDate);\r\n }\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 }) => this.checkIfDateIsDisabled(date);\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 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(\"MM/DD/YYYY\");\r\n }\r\n return converted;\r\n }\r\n\r\n function checkIfYearIsBroadcastLeapYear() {\r\n const 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 const broadcastNumberOfDays = weekDay + noOfDays;\r\n const 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 const backDatedPeriod = JSON.parse(localStorage.getItem(\"userDetails\") || \"{}\").locking_period_days;\r\n if (backDatedPeriod < 0) {\r\n const 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 const previousMonth = this.calendar.getPrev(this.today, \"m\", this.config.numberOfMonthsToEnableInPast);\r\n const 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 const dayjsStartDate = dayjs(\r\n this.annaDateTimeFormatService.convertNgbDateToMoment(this.fromDate),\r\n \"MM/DD/YYYY\",\r\n );\r\n const 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 const newDateObject = new Date(ngbDate.year, ngbDate.month - 1, ngbDate.day - 1);\r\n 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 const dates = [];\r\n let week = [];\r\n\r\n let startDate = NgbDate.from(this.fromDate);\r\n const endDate = NgbDate.from(this.toDate);\r\n\r\n week.push(startDate);\r\n while (endDate != null && !startDate.equals(endDate)) {\r\n const 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\r\n dates.forEach((date) => {\r\n this.weekNumbers.push(` Week ${this.calendar.getWeekNumber(date, this.config.firstDayOfWeek)}`);\r\n const formattedDates = this.formatter(date[0], date[6]);\r\n const dateObjects = {\r\n startDate: formattedDates.formattedStartDate,\r\n endDate: formattedDates.formattedEndDate,\r\n };\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 const pipe = new DatePipe(\"en-US\");\r\n return (fromDate: NgbDate, toDate: NgbDate) => {\r\n const fromDateObject = new Date(fromDate.year, fromDate.month - 1, fromDate.day);\r\n const toDateObject = new Date(toDate.year, toDate.month - 1, toDate.day);\r\n this.formattedStartDate = pipe.transform(fromDateObject, this.config.dateFormatForRequest);\r\n this.formattedEndDate = pipe.transform(toDateObject, this.config.dateFormatForRequest);\r\n\r\n this.dateToDisplay = `${pipe.transform(\r\n fromDateObject,\r\n this.config.dateFormatToDisplay,\r\n )} to ${pipe.transform(toDateObject, this.config.dateFormatToDisplay)}`;\r\n return this;\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 if (this.weekNumbers.length > (this.config.maxWeeksToShowWithRemainingCount ?? 0)) {\r\n // Display for Multiple Weeks\r\n const weekDisplay = [];\r\n for (let i = 0; i < (this.config.maxWeeksToShowWithRemainingCount ?? 0); i++) {\r\n weekDisplay.push(this.weekNumbers.shift());\r\n }\r\n const remainingWeeks = this.weekNumbers.length;\r\n this.weekNumbers = [];\r\n this.weekNumbers.push(`${weekDisplay} +${remainingWeeks}`);\r\n }\r\n }\r\n\r\n constructStartDate(date: Date) {\r\n const { firstDayOfWeek } = this.config;\r\n return (constructDate: any) => {\r\n const 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 const { firstDayOfWeek } = this.config;\r\n return (constructDate: any) => {\r\n const 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 (number: number): NgbDate | null => {\r\n const day = date.getDate() + number;\r\n const dateObject = new Date(date.getFullYear(), date.getMonth(), day);\r\n\r\n const 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 const 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 const dates = {} as WeekObject;\r\n const 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 const 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 d-none\"\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 [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 class=\"weeknumbers-label\"> {{ 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 apply-btn\"\r\n (click)=\"applyChanges(); closeDatepicker(datepicker)\"\r\n >\r\n Apply\r\n </button>\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right cancel-btn\"\r\n (click)=\"revertDates(); closeDatepicker(datepicker)\"\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","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","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 showSplitedOptions?: boolean;\r\n splitDelimiter?: string;\r\n\r\n constructor(key: string, value: string, sort: boolean, filter: boolean, showSplitedOptions: boolean = false, splitDelimiter: string = \", \") {\r\n this.key = key;\r\n this.label = value;\r\n this.isSortRequired = sort;\r\n this.isFilterRequired = filter;\r\n this.showSplitedOptions = showSplitedOptions;\r\n this.splitDelimiter = splitDelimiter;\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 { cloneDeep } from \"lodash-es\";\r\nimport { Subject } from \"rxjs\";\r\n\r\nimport { SortType } from \"../models/anna-sort.model\";\r\nimport { AnnaDateTimeFormatService } from \"./anna-date-time-format.service\";\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 let dataToBeSorted = data;\r\n if (this.dateSet.has(key)) {\r\n dataToBeSorted.sort((a, b) => this.annaDateTimeFormatService.compareDate(a[key], b[key], isAsc));\r\n } else if (key === \"AirDateAndTime\" || key === \"Date\") {\r\n dataToBeSorted.sort((a, b) => {\r\n if (a[key] === \"-\") {\r\n return 1;\r\n }\r\n\r\n if (b[key] === \"-\") {\r\n return -1;\r\n }\r\n const first = this.annaDateTimeFormatService.formatDateAndHHMMATimeToStandardFormat(a[key]);\r\n const second = this.annaDateTimeFormatService.formatDateAndHHMMATimeToStandardFormat(b[key]);\r\n const compareDate = this.annaDateTimeFormatService.compareDate(first, second, isAsc);\r\n return compareDate;\r\n });\r\n } else if (key === \"startEndTime\" || key === \"TimeBand\") {\r\n dataToBeSorted.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 const 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 const dataWithoutEmptyOrHyphenValues = dataToBeSorted.filter((n) => n[key] !== \"-\");\r\n const rowsWithHyphenOrZeroValues = dataToBeSorted.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 dataToBeSorted = isAsc\r\n ? [...rowsWithHyphenOrZeroValues, ...dataWithoutEmptyOrHyphenValues]\r\n : [...dataWithoutEmptyOrHyphenValues, ...rowsWithHyphenOrZeroValues];\r\n }\r\n\r\n return dataToBeSorted;\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 const keys = key.split(\"_\");\r\n const 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 const aInventoryCodeWeekWiseKey = Object.keys(a.WeekWiseInventoryCodeData).filter(\r\n (invKey) => invKey.split(\"_\")[1] === weekNumber,\r\n );\r\n const bInventoryCodeWeekWiseKey = Object.keys(b.WeekWiseInventoryCodeData).filter(\r\n (invKey) => invKey.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 const 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 let sortedTableData = tableData;\r\n this.columnSortState.forEach((value, key) => {\r\n if (value === \"ASC\") {\r\n sortedTableData = 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 sortedTableData = 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 sortedTableData;\r\n }\r\n\r\n applySorting(key: string, tempSortOrder: SortType, tableData: any[], isLurAndCsrComponent: boolean) {\r\n let sortedTableData = tableData;\r\n if (tempSortOrder === \"ASC\") {\r\n sortedTableData = 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 sortedTableData = 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 sortedTableData = cloneDeep(this.noSortingAppliedData);\r\n }\r\n\r\n return sortedTableData;\r\n }\r\n}\r\n","// Angular import statements\r\nimport { ElementRef, Injectable, QueryList } from \"@angular/core\";\r\nimport { Options } from \"@angular-slider/ngx-slider\";\r\nimport dayjs, { Dayjs } from \"dayjs\";\r\nimport CustomParseFormat from \"dayjs/plugin/customParseFormat\";\r\nimport isBetween from \"dayjs/plugin/isBetween\";\r\nimport minMax from \"dayjs/plugin/minMax\";\r\n// Third party import statements\r\nimport { cloneDeep, isEqual, map, max, min, sortBy, uniq } from \"lodash-es\";\r\n\r\nimport { IGtTableHeader, IHeaderInfo } from \"../models/anna-non-editable-gt-models\";\r\nimport { SortType, SortTypeEnum } from \"../models/anna-sort.model\";\r\nimport { TooltipModel } from \"../models/anna-tooltip.model\";\r\n// User defined import statements\r\nimport { AnnaDateTimeFormatService, NgbDateType } from \"./anna-date-time-format.service\";\r\nimport { AnnaSortService } from \"./anna-sort.service\";\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\r\n SPLITED_CHECKBOX_FILTER_KEY = \"_SplitedCheckBoxOptions\";\r\n DEFAULT_SPLIT_SEPARATOR = \", \";\r\n\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 nullToBeFormatedIntoString = \"-\";\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 \"averageRateThisYear\",\r\n \"averageRateLastYear\",\r\n \"averageCPP\",\r\n \"averageCPM\",\r\n \"IMPSDiff\",\r\n \"RTGDiff\",\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 \"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 \"audienceDeficitValue\",\r\n \"userADUValue\",\r\n \"userChangesValue\",\r\n \"buyerChangesValue\",\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 \"WeeklyAUR\",\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 \"projectedCPM\",\r\n \"projectedCPP\",\r\n \"bookedEqCpmValue\",\r\n \"bookedEqCppValue\",\r\n \"Rating\",\r\n \"ActualRate\",\r\n \"Impressions\",\r\n \"AURKeyLY\",\r\n \"SellOutPercentLY\",\r\n \"AURKeyTY\",\r\n \"SellOutPercentTY\",\r\n \"offerCount\",\r\n \"offeredMGsValue\",\r\n \"outstandingSpotsValue\",\r\n \"offeredADUsValue\",\r\n \"uDProjectionValue\",\r\n \"totalBookedGrp\",\r\n \"totalBookedImps\",\r\n \"bookedGrpToDate\",\r\n \"bookedImpsToDate\",\r\n \"deliveryThresholdPercentage\",\r\n \"goalGrpToDate\",\r\n \"goalImpsToDate\",\r\n \"postedGrpToDate\",\r\n \"postedImpsToDate\",\r\n \"deliveredPercentage\",\r\n \"udGrpToDate\",\r\n \"udImpsToDate\",\r\n \"odGrpToDate\",\r\n \"odImpsToDate\",\r\n \"scheduledADUs\",\r\n \"postedADUs\",\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 \"scheduledDate\",\r\n \"timeoutDate\",\r\n \"ViolatingSpotDate\",\r\n \"ViolatedSpotDate\",\r\n \"ActualWeekStartDate\",\r\n \"LastFetchedDate\",\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 \"StartTime\",\r\n \"EndTime\",\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 const filteredData = data.filter((obj) => ![\"\", \"-\", null].includes(obj[key]));\r\n const values = filteredData.map((x) => x[key]);\r\n const valueToReturn = isMin ? min(values) : max(values);\r\n return valueToReturn;\r\n }\r\n\r\n returnMinAndMaxDate(data: any[], key: string) {\r\n const filteredData = data.filter((obj) => ![\"\", \"-\", null].includes(obj[key]));\r\n const DateArr = filteredData.map((obj) => dayjs(obj[key]));\r\n const minDate = dayjs.min(DateArr);\r\n const 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 const set: Set<string> = new Set(this.appliedFiltersArray);\r\n const isSortMapForHeader0Active = sortMap.has(header[0]) && sortMap.get(header[0]) !== SortTypeEnum.DEFAULT;\r\n const 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 const 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 const isNegVal = data < 0;\r\n const val = `${(Math.abs(data) / 1000).toFixed(1)}k%`;\r\n return isNegVal ? `-${val}` : val;\r\n }\r\n const isNegVal = data < 0;\r\n const isWholeNum = parseInt(data.toString(), 10) === data;\r\n const val = isWholeNum ? Math.abs(data).toString() : Math.abs(data).toFixed(1);\r\n return isNegVal ? `-${val}%` : `${val}%`;\r\n };\r\n\r\n currencyTranslateFunction = (data: number): string => {\r\n if (Math.abs(data) >= 1000) {\r\n const isNegVal = data < 0;\r\n const val = `$${(Math.abs(data) / 1000).toFixed(1)}k`;\r\n return isNegVal ? `-${val}` : val;\r\n }\r\n const isNegVal = data < 0;\r\n const isWholeNum = parseInt(data.toString(), 10) === data;\r\n const val = isWholeNum ? Math.abs(data).toString() : Math.abs(data).toFixed(1);\r\n return isNegVal ? `-$${val}` : `$${val}`;\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 const uniqueDates = uniq(data.map((u) => u.date));\r\n const 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 let isDataFiltered = isFiltered;\r\n if (this.selectedRadio === \"user\" && !this.tooltipMap.has(\"user\")) {\r\n isDataFiltered = 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 isDataFiltered =\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 isDataFiltered =\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 isDataFiltered =\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 isDataFiltered = true;\r\n }\r\n if (!isDataFiltered && 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 this.selectedRadio === \"ActualWeekStartDate\" ||\r\n this.selectedRadio === \"scheduledDate\" ||\r\n this.selectedRadio === \"LastFetchedDate\"\r\n ) {\r\n isDataFiltered =\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 (!isDataFiltered && this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n this.tooltipSelectedMap.delete(this.selectedRadio);\r\n }\r\n } else {\r\n const totalOptionsCount = this.tooltipMap.get(this.selectedRadio).filter((x: any) => !x.isHidden).length;\r\n const selectedOptionsCount = this.tooltipMap\r\n .get(this.selectedRadio)\r\n .filter((x: any) => !x.isHidden && x.isSelected).length;\r\n isDataFiltered = selectedOptionsCount > 0 && selectedOptionsCount !== totalOptionsCount;\r\n }\r\n return isDataFiltered;\r\n }\r\n\r\n removeOrChangeLatestFilterIndex(isFiltered: boolean) {\r\n const 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 let sortedData = originalData;\r\n if (!this.annaSortService?.columnSortState) return sortedData;\r\n this.annaSortService.columnSortState.forEach((value, key) => {\r\n if (value === \"ASC\") {\r\n sortedData = cloneDeep(\r\n this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(true, originalData, key),\r\n );\r\n } else if (value === \"DESC\") {\r\n sortedData = cloneDeep(\r\n this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(false, originalData, key),\r\n );\r\n }\r\n });\r\n\r\n return sortedData;\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: string) => {\r\n const filterSplitedValues: boolean = key.includes(this.SPLITED_CHECKBOX_FILTER_KEY);\r\n if (filterSplitedValues) {\r\n // eslint-disable-next-line no-param-reassign\r\n key = key.split(this.SPLITED_CHECKBOX_FILTER_KEY)[0];\r\n }\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 === \"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 === \"ActualWeekStartDate\" ||\r\n key === \"ViolatedSpotDate\" ||\r\n key === \"ViolatingSpotDate\" ||\r\n key === \"scheduledDate\" ||\r\n key === \"LastFetchedDate\"\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 === \"StartTime\" ||\r\n key === \"EndTime\" ||\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) =>\r\n filterSplitedValues ? value.find((val: any) => u[key].includes(val)) : value.includes(u[key]),\r\n );\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 const isDateBetweenTheSelectedRange = dayjs(order[key]).isBetween(range.minSelectedDate, range.maxSelectedDate);\r\n const isDateSameAsTheMinSelectedDate = dayjs(order[key]).isSame(range.minSelectedDate);\r\n const 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 const format = \"HH:mm:ss\";\r\n const selectedStartDate = dayjs(selectedData.startTime, format);\r\n const selectedEndDate = dayjs(selectedData.endTime, format);\r\n const startTime = dayjs(obj.startTime, format);\r\n const endTime = dayjs(obj.endTime, format);\r\n\r\n const isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedStartDate);\r\n const isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedStartDate, selectedEndDate);\r\n const isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedEndDate);\r\n const 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 const format = \"MM/DD/YYYY HH:mm:ss\";\r\n const selectedFromTime = dayjs(`01/01/2001 ${selectedData.fromTime}`, format);\r\n const selectedToTime = dayjs(`01/01/2001 ${selectedData.toTime}`, format);\r\n const 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 const dayjsTime = dayjs(`01/01/2001 ${objTime}`, format);\r\n\r\n const isObjTimeSameAsSelectedFromTime = dayjsTime.isSame(selectedFromTime);\r\n const isObjTimeSameAsSelectedToTime = dayjsTime.isSame(selectedToTime);\r\n const 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 const format = \"MM/DD/YYYY HH:mm:ss\";\r\n const selectedFromTime = dayjs(`01/01/2001 ${selectedData.fromTime}`, format);\r\n const 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 const startTime = dayjs(`01/01/2001 ${obj[key][1]}`, format);\r\n const endTime = dayjs(`01/01/2001 ${obj[key][2]}`, format);\r\n\r\n const isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedFromTime);\r\n const isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedFromTime, selectedToTime);\r\n const isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedToTime);\r\n const isEndTimeBetweenSelectedStartAndEndTime = endTime.isBetween(selectedFromTime, selectedToTime);\r\n\r\n // previous condition to apply timband filtter\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 return (\r\n isStartTimeSameAsSelectedStartTime ||\r\n isStartTimeBetweenSelectedStartAndEndTime ||\r\n isEndTimeSameAsSelectedEndTime ||\r\n isEndTimeBetweenSelectedStartAndEndTime\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 const dayjsStartDate = dayjs(obj.startDate);\r\n const dayjsEndDate = dayjs(obj.endDate);\r\n\r\n const startDateIsBetweenSelDate = dayjsStartDate.isBetween(value.fromDate, value.toDate);\r\n const endDateIsBetweenSelDate = dayjsEndDate.isBetween(value.fromDate, value.toDate);\r\n\r\n const startDateIsSameAsSelStartDate = value.fromDate.isSame(dayjsStartDate);\r\n const 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 === \"ActualWeekStartDate\" ||\r\n key === \"timeoutDate\" ||\r\n key === \"scheduledDate\"\r\n ) {\r\n parsingFormat = \"MM/DD/YYYY\";\r\n const dateIsBetweenSelDate = dayjs(obj[key], parsingFormat).isBetween(\r\n value.minSelectedDate,\r\n value.maxSelectedDate,\r\n );\r\n\r\n const dateIsSameAsSelStartDate = dayjs(obj[key], parsingFormat).isSame(value.minSelectedDate);\r\n const dateIsSameAsSelEndDate = dayjs(obj[key], parsingFormat).isSame(value.maxSelectedDate);\r\n\r\n return dateIsBetweenSelDate || dateIsSameAsSelStartDate || dateIsSameAsSelEndDate;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public initializeTimeFilterData(clonedData: any[], key = \"startEndTime\") {\r\n const startTimeArr = map(clonedData, \"startTime\");\r\n const endTimeArr = map(clonedData, \"endTime\");\r\n\r\n startTimeArr.sort((a: any, b: any) => this.dateTimeFormatService.sortByTimeAscending(a, b));\r\n\r\n endTimeArr.sort((a: any, b: any) => this.dateTimeFormatService.sortByTimeDescending(a, b));\r\n\r\n const 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 const time = data.map((u) => u[headerName][0]);\r\n const uniqTime = uniq(time);\r\n return uniqTime.length === 0;\r\n }\r\n\r\n return !(uniq(data.map((u) => u[headerName])).length > 1);\r\n }\r\n\r\n getFilterOptionsData(data: any[], clonedData: any[], key?: string) {\r\n const appliedFilterSet = new Set(this.appliedFiltersArray);\r\n const keyToCheck = key || this.selectedRadio;\r\n if (appliedFilterSet.has(keyToCheck)) {\r\n return this.filterData(clonedData, keyToCheck);\r\n }\r\n return data;\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 const initialValueOfColumn = sortBy(clonedData.map((item) => item[this.selectedRadio]));\r\n const currentValueOfColumn = sortBy(\r\n this.applyFilter(clonedData, value).map((item) => item[this.selectedRadio]),\r\n );\r\n return !isEqual(initialValueOfColumn, currentValueOfColumn);\r\n }\r\n\r\n applyFilter(data: any[], value: any) {\r\n let filteredData = data;\r\n const 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 === \"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 === \"ActualWeekStartDate\" ||\r\n key === \"ViolatedSpotDate\" ||\r\n key === \"ViolatingSpotDate\" ||\r\n key === \"scheduledDate\" ||\r\n key === \"LastFetchedDate\"\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 === \"StartTime\" ||\r\n key === \"EndTime\" ||\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 const objVal = obj[key];\r\n const 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 const isDateSameAsStartOfTheRange = value.fromDate.isSame(objVal);\r\n const isDateSameAsEndOfTheRange = value.toDate.isSame(objVal);\r\n const 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 const 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 const 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 return 1;\r\n } else if (parseInt(value, 10) < 12) {\r\n return parseInt(value, 10) + 1;\r\n }\r\n\r\n return 1;\r\n }\r\n\r\n decrementHour(value: any) {\r\n if (value === \"\") {\r\n return 12;\r\n } else if (parseInt(value, 10) > 1) {\r\n return parseInt(value, 10) - 1;\r\n }\r\n return 12;\r\n }\r\n\r\n incrementMinute(value: any) {\r\n // increment to nearest proper interval(15,30,45)\r\n const minute = parseInt(value, 10);\r\n if (minute <= 14) {\r\n return \"15\";\r\n } else if (minute >= 15 && minute <= 29) {\r\n return \"30\";\r\n } else if (minute >= 30 && minute <= 44) {\r\n return \"45\";\r\n } else if (minute >= 45) {\r\n return \"00\";\r\n }\r\n return value;\r\n }\r\n\r\n decrementMinute(value: any) {\r\n const minute = parseInt(value, 10);\r\n if (minute > 0 && minute <= 15) {\r\n return \"00\";\r\n } else if (minute >= 16 && minute <= 30) {\r\n return \"15\";\r\n } else if (minute >= 31 && minute <= 45) {\r\n return \"30\";\r\n } else if (minute > 45 || minute === 0) {\r\n return \"45\";\r\n }\r\n return value;\r\n }\r\n\r\n // ========================================Checkbox method====================================================//\r\n\r\n disableActiveFilterClearButton() {\r\n const selectedFilterSet = new Set(this.appliedFiltersArray);\r\n\r\n const currentColumnSortFilter = this.getColumnSortStateForSelectedRadio();\r\n const 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 || SortTypeEnum.DEFAULT;\r\n return currentColumnSortFilter;\r\n }\r\n\r\n createListForCheckboxFilter(\r\n header: string,\r\n optionData: any[],\r\n showSplitedOptions: boolean = false,\r\n splitDelimiter: string = this.DEFAULT_SPLIT_SEPARATOR,\r\n ) {\r\n const tooltipOptions = this.getTooltipModelFromOptionData(optionData, header, showSplitedOptions, splitDelimiter);\r\n\r\n this.selectUnselectListCheckbox(tooltipOptions, header);\r\n this.formatNullOptionToSpecifiedString(tooltipOptions, this.nullToBeFormatedIntoString);\r\n\r\n return tooltipOptions;\r\n }\r\n\r\n getTooltipModelFromOptionData(\r\n optionData: any[],\r\n header: string,\r\n showSplitedOptions: boolean = false,\r\n splitDelimiter: string = this.DEFAULT_SPLIT_SEPARATOR,\r\n ) {\r\n let uniqOptionData = [];\r\n if (showSplitedOptions) {\r\n let splittedOptions: string[] = [];\r\n optionData.forEach((option) => {\r\n splittedOptions = [...splittedOptions, ...option[header].split(splitDelimiter)];\r\n });\r\n uniqOptionData = uniq(splittedOptions);\r\n } else {\r\n uniqOptionData = uniq(optionData.map((item) => item[header]));\r\n }\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 const tooltipSelectedMapWithOriginalKeys = new Map();\r\n this.tooltipSelectedMap.forEach((value, key) => {\r\n tooltipSelectedMapWithOriginalKeys.set(key.split(this.SPLITED_CHECKBOX_FILTER_KEY)[0], value);\r\n })\r\n\r\n if (tooltipSelectedMapWithOriginalKeys.has(header)) {\r\n const selectedValueSet = new Set(tooltipSelectedMapWithOriginalKeys.get(header));\r\n tooltipOptions.forEach((item) => {\r\n item.isSelected = selectedValueSet.has(item.value);\r\n });\r\n } else {\r\n tooltipOptions.forEach((item) => {\r\n item.isSelected = true;\r\n });\r\n }\r\n }\r\n\r\n formatNullOptionToSpecifiedString(tooltipOptions: TooltipModel[], formattedString: string) {\r\n const 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 const [selectedItems, unselectedItems] = this.getSelectedAndUnselectedItems(tooltipOptions);\r\n const sortedSelectedItems = sortBy(selectedItems, sortByString);\r\n const sortedUnselectedItems = sortBy(unselectedItems, sortByString);\r\n\r\n const clonedTooltipOptions = [...sortedSelectedItems, ...sortedUnselectedItems];\r\n const 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 ? 180 : 22.31 * 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 const 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 const 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 const 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 const selectedItems = tooltipOptions.filter((item) => item.isSelected);\r\n const 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 const 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 const 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 const currentColumnSortFilter = this.getColumnSortStateForSelectedRadio();\r\n\r\n const isSortChanged = tempSortOrder != null && tempSortOrder !== currentColumnSortFilter;\r\n return isSortChanged;\r\n }\r\n\r\n getFilteredOptionAsBoldString(str: string, clonedTooltipOptions: TooltipModel[]) {\r\n const 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 updatedString = str;\r\n const indexes = this.getIndicesOf(find, updatedString, false);\r\n\r\n indexes.forEach((item, index) => {\r\n const startIndex = item + index * 7; // Multiplying by 7 as there are 7char: <b></b>\r\n const endIndex = startIndex + find.length;\r\n const strToBeReplaced = updatedString.substring(startIndex, endIndex);\r\n updatedString = updatedString.replace(strToBeReplaced, `<b>${strToBeReplaced}</b>`);\r\n });\r\n return updatedString;\r\n }\r\n\r\n getIndicesOf(searchStr: string, str: string, caseSensitive: boolean) {\r\n const searchStrLen = searchStr.length;\r\n if (searchStrLen === 0) {\r\n return [];\r\n }\r\n let startIndex = 0;\r\n let index;\r\n const indices = [];\r\n let updatedStr = str;\r\n let updatedSearchStr = searchStr;\r\n if (!caseSensitive) {\r\n updatedStr = str.toLowerCase();\r\n updatedSearchStr = searchStr.toLowerCase();\r\n }\r\n\r\n index = updatedStr.indexOf(updatedSearchStr, startIndex);\r\n while (index > -1) {\r\n indices.push(index);\r\n startIndex = index + searchStrLen;\r\n index = updatedStr.indexOf(updatedSearchStr, startIndex);\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 const minStartDate = this.returnMinAndMaxDate(optionData, \"startDate\");\r\n const 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 const calendarMinEnabledDate = this.dateTimeFormatService.convertToNgbDate(minMaxDate[0], parsingFormat);\r\n const 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 const 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 const minMaxDate = this.createRangeForTheDateFilter(optionData);\r\n\r\n const 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 currentSelectedDateToBeUpdated = currentSelectedDate;\r\n const fromDate = {\r\n year: currentSelectedDateToBeUpdated.fromDate.year,\r\n month: currentSelectedDateToBeUpdated.fromDate.month,\r\n day: currentSelectedDateToBeUpdated.fromDate.day,\r\n };\r\n const toDate = {\r\n year: currentSelectedDateToBeUpdated.toDate.year,\r\n month: currentSelectedDateToBeUpdated.toDate.month,\r\n day: currentSelectedDateToBeUpdated.toDate.day,\r\n };\r\n\r\n if (isEqual(minDate, fromDate) && isEqual(maxDate, toDate) && this.initialValueMap.has(this.selectedRadio)) {\r\n currentSelectedDateToBeUpdated = this.initialValueMap.get(this.selectedRadio);\r\n } else {\r\n currentSelectedDateToBeUpdated.fromDate = dayjs(\r\n this.dateTimeFormatService.convertNgbDateToMoment(currentSelectedDateToBeUpdated.fromDate),\r\n );\r\n currentSelectedDateToBeUpdated.toDate = dayjs(\r\n this.dateTimeFormatService.convertNgbDateToMoment(currentSelectedDateToBeUpdated.toDate),\r\n );\r\n }\r\n\r\n return currentSelectedDateToBeUpdated;\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 const minValue = this.returnMaxAndMinValue(optionsData, header, true);\r\n const maxValue = this.returnMaxAndMinValue(optionsData, header, false);\r\n\r\n const 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 const 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 const minValue = this.returnMaxAndMinValue(clonedData, this.selectedRadio, true);\r\n const maxValue = this.returnMaxAndMinValue(clonedData, this.selectedRadio, false);\r\n const 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 if (maxEnteredVal || maxEnteredVal === 0) {\r\n currentSliderData.max = maxEnteredVal;\r\n } else {\r\n currentSliderData.max = options.ceil;\r\n }\r\n\r\n if (minEnteredVal || minEnteredVal === 0) {\r\n currentSliderData.min = minEnteredVal;\r\n } else {\r\n currentSliderData.min = options.floor;\r\n }\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 const includeMulti = clonedData.findIndex((obj) => obj[key][0] === \"<multi>\") !== -1;\r\n const includeZero = clonedData.findIndex((obj) => obj[key][0] === \"0\") !== -1;\r\n const includeTimeRange = clonedData.findIndex((obj) => obj[key][0] !== \"0\" && obj[key][0] !== \"<multi>\") !== -1;\r\n\r\n const filteredStartTime = clonedData.filter((obj) => ![\"\", \"-\", null, \"0\", \"<multi>\"].includes(obj.startTime));\r\n const filteredEndTime = clonedData.filter((obj) => ![\"\", \"-\", null, \"0\", \"<multi>\"].includes(obj.endTime));\r\n\r\n const startTimeArr = map(filteredStartTime, \"startTime\");\r\n const endTimeArr = map(filteredEndTime, \"endTime\");\r\n\r\n startTimeArr.sort((a, b) => this.dateTimeFormatService.sortByTimeAscending(a, b));\r\n\r\n endTimeArr.sort((a, b) => this.dateTimeFormatService.sortByTimeDescending(a, b));\r\n\r\n const obj = {\r\n fromTime: startTimeArr[0],\r\n toTime: endTimeArr[0],\r\n includeMulti,\r\n includeZero,\r\n 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 const includeMulti = clonedData.findIndex((obj) => obj[key] === \"<multi>\") !== -1;\r\n const includeZero = clonedData.findIndex((obj) => obj[key] === \"0\") !== -1;\r\n const includeTimeRange = clonedData.findIndex((obj) => obj[key] !== \"0\" && obj[key] !== \"<multi>\") !== -1;\r\n\r\n const data = clonedData.filter((obj) => ![\"\", \"-\", null, \"0\", \"<multi>\"].includes(obj[key]));\r\n\r\n const timeArr = map(data, key);\r\n timeArr.sort((a, b) => this.dateTimeFormatService.sortByTimeAscending(a, b));\r\n\r\n const obj = {\r\n fromTime: timeArr[0],\r\n toTime: timeArr[timeArr.length - 1],\r\n includeMulti,\r\n includeZero,\r\n 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,\r\n showZeroTimeCheckbox,\r\n showEnterTimeCheckbox,\r\n multiTimeCheckboxChecked,\r\n zeroTimeCheckboxChecked,\r\n enterTimeCheckboxChecked,\r\n };\r\n }\r\n\r\n checkIfStartTimeIsAfterEndTime(startTime: string[], endTime: string[]) {\r\n const timeFormat = \"HH:mm:ss\";\r\n\r\n const startTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n `${startTime[0]}:${startTime[1]} ${startTime[2]}`,\r\n true,\r\n );\r\n const startTime24HrFormat = `${startTime24HrFormatArr[0]}:${startTime24HrFormatArr[1]}:00`;\r\n const endTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n `${endTime[0]}:${endTime[1]} ${endTime[2]}`,\r\n true,\r\n );\r\n const 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 const fromTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n `${startTime[0]}:${startTime[1]} ${startTime[2]}`,\r\n true,\r\n );\r\n const fromTime24HrFormat = `${fromTime24HrFormatArr[0]}:${fromTime24HrFormatArr[1]}:00`;\r\n\r\n const toTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n `${endTime[0]}:${endTime[1]} ${endTime[2]}`,\r\n true,\r\n );\r\n const toTime24HrFormat = `${toTime24HrFormatArr[0]}:${toTime24HrFormatArr[1]}:00`;\r\n\r\n const currentSelectedTimeFilter = {\r\n fromTime: fromTime24HrFormat,\r\n toTime: toTime24HrFormat,\r\n includeMulti,\r\n includeZero,\r\n 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], 10) < 12) {\r\n arr[0] = parseInt(arr[0], 10) + 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], 10) > 1) {\r\n arr[0] = parseInt(arr[0], 10) - 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 const minute = parseInt(arr[1], 10);\r\n if (minute <= 14) {\r\n arr[1] = \"15\";\r\n } else if (minute >= 15 && minute <= 29) {\r\n arr[1] = \"30\";\r\n } else if (minute >= 30 && minute <= 44) {\r\n arr[1] = \"45\";\r\n } else if (minute >= 45) {\r\n arr[1] = \"00\";\r\n }\r\n }\r\n\r\n decrementMinuteInput(arr: any) {\r\n const minute = parseInt(arr[1], 10);\r\n if (minute > 0 && minute <= 15) {\r\n arr[1] = \"00\";\r\n } else if (minute >= 16 && minute <= 30) {\r\n arr[1] = \"15\";\r\n } else if (minute >= 31 && minute <= 45) {\r\n arr[1] = \"30\";\r\n } else if (minute > 45 || minute === 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 || parseInt(hr, 10) < 1 || parseInt(hr, 10) > 12 || hr.includes(\".\");\r\n }\r\n\r\n isMinuteValueInvalid(minute: string) {\r\n return (\r\n minute.length !== 2 ||\r\n (!+minute && minute !== \"00\") ||\r\n parseInt(minute, 10) < 0 ||\r\n parseInt(minute, 10) > 59 ||\r\n minute.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 const 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 // Filter icon alignment to bigger element in uppar and lower header\r\n setMarginLeftForFilterIcon(thElements: QueryList<ElementRef>) {\r\n const elementArr = thElements.toArray();\r\n elementArr.forEach((item) => {\r\n const childDivElements = item.nativeElement.children;\r\n\r\n if (childDivElements.length === 2) {\r\n const firstParagraphOffsetWidth: number = childDivElements[0]?.children[0]?.offsetWidth\r\n ? childDivElements[0]?.children[0]?.offsetWidth\r\n : 0;\r\n const 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 const 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 const 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 checkIfUniqueValuePresentForTheHeader(\r\n header: IHeaderInfo,\r\n enabledHeaders: any[],\r\n tableData: any[],\r\n clonedTableData: any[],\r\n ) {\r\n header.filterSortObjectKeys.forEach((item: string) => {\r\n const dataToCheck = this.getFilterOptionsData(tableData, clonedTableData, item);\r\n if (item === \"period\") {\r\n const uniqStartDate = uniq(dataToCheck.map((u: { [x: string]: any }) => u.startDate));\r\n const uniqEndDate = uniq(dataToCheck.map((u: { [x: string]: any }) => u.endDate));\r\n if (\r\n uniqStartDate.length > 1 ||\r\n uniqEndDate.length > 1 ||\r\n this.isTooltipActive([item], this.annaSortService.columnSortState)\r\n ) {\r\n enabledHeaders.push(item);\r\n }\r\n } else {\r\n const 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\r\n if (\r\n this.appliedFiltersArray.length > 0 &&\r\n this.appliedFiltersArray[this.appliedFiltersArray.length - 1] === item\r\n ) {\r\n activeAndLastlyAppliedHeader = true;\r\n }\r\n if (header.filter === \"CHECKBOX\" && (uniq(values).length > 1 || activeAndLastlyAppliedHeader)) {\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 disableEnableEachColumnTooltipIcon(tableHeaders: IGtTableHeader[], tableData: any[], clonedTableData: any[]) {\r\n 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 const latestFilters = this.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 const uniqStartDate = uniq(tableData.map((u: { [x: string]: any }) => u.startDate));\r\n const uniqEndDate = uniq(tableData.map((u: { [x: string]: any }) => u.endDate));\r\n\r\n item.disableTooltipIcon = !(uniqStartDate.length > 1 || uniqEndDate.length > 1);\r\n } else {\r\n values = tableData.map((u: { [x: string]: any }) => u[key]);\r\n if (\r\n (item.filter === \"CHECKBOX\" && uniq(values).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 // for date type of filters we need to update tooltip selected map start and end date values to dayjs object.\r\n updateDateFilterTooltipSelectedMap(keys: string[]) {\r\n keys.forEach((key) => {\r\n if (this.tooltipSelectedMap?.has(key)) {\r\n const dateRange = this.tooltipSelectedMap.get(key);\r\n\r\n if (dateRange?.fromDate && dateRange?.toDate) {\r\n const selectedDateObj: { fromDate: Dayjs; toDate: Dayjs } = {\r\n fromDate: dayjs(dateRange.fromDate),\r\n toDate: dayjs(dateRange.toDate),\r\n };\r\n\r\n this.tooltipSelectedMap.set(key, selectedDateObj);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","// Angular import statements\r\nimport { NgClass, NgFor } from \"@angular/common\";\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\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\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, OnInit {\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 const 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) => {\r\n item.isOptionActive = false;\r\n });\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 const updatedOption = option || SortTypeEnum.DEFAULT;\r\n this.sortOptions.forEach((item) => {\r\n item.isOptionActive = false;\r\n });\r\n const index = this.sortOptions.findIndex((item) => item.sortType === updatedOption);\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 { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from \"@angular/cdk/scrolling\";\r\nimport { NgClass, NgFor, NgIf } from \"@angular/common\";\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\nimport { SortType } from \"../../../../anna-core-shared-lib/models/anna-sort.model\";\r\nimport { RadioButtonModel, TooltipModel } from \"../../../../anna-core-shared-lib/models/anna-tooltip.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 { AnnaSortComponent } from \"../../anna-sort/anna-sort.component\";\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 implements OnInit {\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 selectedRadioKey: string;\r\n showSplitedOptions: boolean;\r\n splitDelimiter: string;\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 const 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.showSplitedOptions = activeTab.showSplitedOptions;\r\n this.splitDelimiter = this.showSplitedOptions ? (activeTab.splitDelimiter ?? this.annaFilterService.DEFAULT_SPLIT_SEPARATOR) : \"\";\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.selectedRadioKey = `${header }${(this.showSplitedOptions)? (this.annaFilterService.SPLITED_CHECKBOX_FILTER_KEY) : \"\"}`;\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.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 const tooltipOptions = this.createListForCheckboxFilter(header);\r\n\r\n const [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 const optionData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n const tooltipOptions = this.annaFilterService.createListForCheckboxFilter(header, optionData, this.showSplitedOptions, this.splitDelimiter);\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 const selectedValueSet = new Set(this.annaFilterService.tooltipSelectedMap.get(header));\r\n tooltipOptions.forEach((item) => {\r\n item.isSelected = selectedValueSet.has(item.value);\r\n });\r\n } else {\r\n tooltipOptions.forEach((item) => {\r\n item.isSelected = true;\r\n });\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 const [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 const [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 const 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 const selectedItems = this.showFilterComponent ? this.tooltipOptions.filter((item) => item.isSelected) : [];\r\n\r\n if (this.showFilterComponent && this.showSortComponent) {\r\n const isFilterChanged = this.checkIfCheckboxTooltipIsFiltered();\r\n const 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 const previousSelectedValue = this.annaFilterService.getCheckboxPreviousSelectedValue(this.clonedTableData);\r\n const 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 const 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.selectedRadioKey, 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 const [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 [(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 class=\"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 >\r\n No data found\r\n </p>\r\n </cdk-virtual-scroll-viewport>\r\n <div class=\"virtual-scroll-div\"></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","import { NgClass, NgFor, NgIf } from \"@angular/common\";\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\nimport { SortType } from \"../../../../anna-core-shared-lib/models/anna-sort.model\";\r\nimport { RadioButtonModel } from \"../../../../anna-core-shared-lib/models/anna-tooltip.model\";\r\nimport {\r\n AnnaDateTimeFormatService,\r\n NgbDateType,\r\n} from \"../../../../anna-core-shared-lib/services/anna-date-time-format.service\";\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\n// eslint-disable-next-line max-len\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\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 const 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 const optionData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n const 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 const isFilterChanged = this.checkIfDateTooltipIsFiltered();\r\n const 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 const 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 const 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 { NgClass, NgFor, NgIf } from \"@angular/common\";\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NgxSliderModule, Options } from \"@angular-slider/ngx-slider\";\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\nimport { SortType } from \"../../../../anna-core-shared-lib/models/anna-sort.model\";\r\nimport { RadioButtonModel } from \"../../../../anna-core-shared-lib/models/anna-tooltip.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 { AnnaSortComponent } from \"../../anna-sort/anna-sort.component\";\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 implements OnInit {\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 const 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 const translateFunc = this.annaFilterService.getSliderTranslateFuncVal(\r\n key,\r\n this.annaFilterService.sliderCurrencySet,\r\n );\r\n this.incorrectSliderInput = false;\r\n this.sliderEnteredMaxValue = null;\r\n this.sliderEnteredMinValue = null;\r\n this.showSliderMinValueError = false;\r\n this.showSliderMaxValueError = false;\r\n this.isMinTextBoxEmpty = false;\r\n this.isMaxTextBoxEmpty = false;\r\n\r\n const 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: number) {\r\n if (val || val === 0) {\r\n this.sliderEnteredMinValue = +val;\r\n this.sliderEnteredMaxValue = this.sliderMaxValue;\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\r\n this.showErrorForMinAndMaxValue();\r\n this.sliderEnteredMaxValue = this.sliderMaxValue;\r\n }\r\n\r\n maxValueChanged(val: number) {\r\n if (val || val === 0) {\r\n this.sliderEnteredMaxValue = +val;\r\n this.sliderEnteredMinValue = this.sliderMinValue;\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 this.sliderEnteredMinValue = this.sliderMinValue;\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 const isFilterChanged = this.checkIfSliderTooltipIsFiltered();\r\n const 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 const previousSelectedValue = this.annaFilterService.getPreviousSelectedValueForSlider(this.clonedTableData);\r\n const 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 const 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 && options\"\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 { NgClass, NgFor, NgIf } from \"@angular/common\";\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonToggleModule } from \"@angular/material/button-toggle\";\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\nimport { IGtGeneralConfig } from \"../../../../anna-core-shared-lib/models/anna-non-editable-gt-models\";\r\nimport { SortType } from \"../../../../anna-core-shared-lib/models/anna-sort.model\";\r\nimport { RadioButtonModel } from \"../../../../anna-core-shared-lib/models/anna-tooltip.model\";\r\nimport { AnnaDateTimeFormatService } from \"../../../../anna-core-shared-lib/services/anna-date-time-format.service\";\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 { AnnaSortComponent } from \"../../anna-sort/anna-sort.component\";\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() timeChangedEmitter = new EventEmitter(); // event emitter for any change in time field even without clicking on save -- needed for biz rules\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 const 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 = false;\r\n this.startTimeMinErr = false;\r\n this.endTimeHourErr = false;\r\n 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 const optionsData = this.annaFilterService?.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n\r\n const 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 const previousSelectedTimeFilter = this.annaFilterService.getPreviousSelectedTimeFilter();\r\n const 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 }\r\n return false;\r\n }\r\n disableTimeFilterApplyButton() {\r\n this.timeChangedEmitter.emit(true);\r\n if (this.isSortAndFilterAbsent) {\r\n this.disableTimeFilterApplyBtn = this.checkIfInvalidTimeIsEntered() || !this.checkIfTimeTooltipIsFiltered();\r\n } else if (this.showFilterComponent && this.showSortComponent) {\r\n const isFilterChanged = this.checkIfTimeTooltipIsFiltered();\r\n const isSortChanged = this.checkIfSortingChanged();\r\n this.disableTimeFilterApplyBtn = !this.validateTimeFilterInput() || (!isSortChanged && !isFilterChanged);\r\n } else if (this.showFilterComponent) {\r\n this.disableTimeFilterApplyBtn = !this.validateTimeFilterInput() || !this.checkIfTimeTooltipIsFiltered();\r\n } else if (this.showSortComponent) {\r\n this.disableTimeFilterApplyBtn = !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 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 const 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 const 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 const 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 checkbox-container-padding\"\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 class=\"label\">Include Multi</p>\r\n </div>\r\n <!-- Zero time option checkbox -->\r\n <div\r\n class=\"d-flex align-items-center checkbox-container-padding\"\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 class=\"label\">Include Zero</p>\r\n </div>\r\n <!-- Enter time range option checkbox -->\r\n <div\r\n class=\"d-flex align-items-center checkbox-container-padding\"\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 class=\"label\">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 (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 (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","// Angular import statements\r\nimport {\r\n AsyncPipe,\r\n NgClass,\r\n NgFor,\r\n NgIf,\r\n NgStyle,\r\n NgSwitch,\r\n NgSwitchCase,\r\n NgSwitchDefault,\r\n NgTemplateOutlet,\r\n} from \"@angular/common\";\r\nimport {\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewChildren,\r\n} from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatRadioModule } from \"@angular/material/radio\";\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\n// Third party import statements\r\nimport { cloneDeep, isEqual, uniq } from \"lodash-es\";\r\nimport { NgCircleProgressModule } from \"ng-circle-progress\";\r\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\n\r\nimport { AnnaEstIconTemplateComponent } from \"../../../anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component\";\r\n// eslint-disable-next-line max-len\r\nimport { AnnaIconColumnComponent } from \"../../../anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component\";\r\nimport { AnnaNoDataComponent } from \"../../../anna-core-shared-lib/components/anna-no-data/anna-no-data.component\";\r\n// eslint-disable-next-line max-len\r\nimport { ShowEllipsisTextOnHoverDirective } from \"../../../anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive\";\r\nimport {\r\n GtColumnIconEmittedData,\r\n RatingSellerGroupHierarchy,\r\n} 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 {\r\n EllipsisWithTableTooltip,\r\n IGtGeneralConfig,\r\n IGtTableHeader,\r\n IHeaderInfo,\r\n InnerHTMLTooltipAction,\r\n ITotalRowInfo,\r\n} from \"../../../anna-core-shared-lib/models/anna-non-editable-gt-models\";\r\nimport { RadioButtonModel } from \"../../../anna-core-shared-lib/models/anna-tooltip.model\";\r\nimport { AnnaDateTimeFormatService } from \"../../../anna-core-shared-lib/services/anna-date-time-format.service\";\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\n// eslint-disable-next-line max-len\r\nimport { AnnaColumnCheckboxFilterComponent } from \"../anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component\";\r\n// eslint-disable-next-line max-len\r\nimport { AnnaColumnDateRangeFilterComponent } from \"../anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component\";\r\n// eslint-disable-next-line max-len\r\nimport { AnnaColumnSliderFilterComponent } from \"../anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component\";\r\nimport { AnnaColumnTimeFilterComponent } from \"../anna-column-filters/anna-column-time-filter/anna-column-time-filter.component\";\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 AnnaEstIconTemplateComponent,\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 @Input() showOrHideToggleForTotalRow: 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 @Output() statusNotePopupOpened = new EventEmitter<string>();\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 ellispsisWithTableTooltip: { open: () => void; close: () => void };\r\n ellipsisWithTooltipHeading: string;\r\n ellipsisWithTooltipTableHeaders: any[];\r\n ellipsisWithTooltipTableData: any[];\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 @ViewChild(\"tableElementRef\", { static: true }) tableElementRef: 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: any = [];\r\n tooltipContainingTable: TableTooltipType = null;\r\n tableBottomBorderClass: string = null;\r\n showCheckboxesForTimeFilter: boolean = false;\r\n\r\n stringWithTooltipTemplate: TemplateRef<any> = null;\r\n @ViewChild(\"textActionTooltipTemplate\") public textActionTooltipTemplateRef: TemplateRef<any>;\r\n @ViewChild(\"programChangeTooltipTemplate\") public programChangeTooltipTemplateRef: TemplateRef<any>;\r\n stringWithTooltipNgbTooltipRef: { open: () => void; close: () => void };\r\n\r\n statusNoteTooltip: any;\r\n statusNoteForTooltip: string = \"\";\r\n statusNoteForPopup: string = \"\";\r\n noOfRowsToCheck: number;\r\n toolTipInnerHtmlData: string;\r\n innerHtmlTooltip: any;\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.annaFilterService.setMarginLeftForFilterIcon(this.viewChildTableHeaders);\r\n }\r\n\r\n ngOnInit() {\r\n document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"0px\");\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.setScrollToInitialPosition();\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.annaFilterService.disableEnableEachColumnTooltipIcon(\r\n this.tableHeaders,\r\n this.tableData,\r\n this.clonedTableData,\r\n );\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 (changes.tableHeaders && !isEqual(changes.tableHeaders.currentValue, changes.tableHeaders.previousValue)) {\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 const viewportHeight = window.innerHeight;\r\n if (viewportHeight < 740) {\r\n this.filterAlignment = \"left right top bottom\";\r\n } else {\r\n this.filterAlignment = \"bottom left right top\";\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 showHideTotalRow() {\r\n this.gtGeneralConfig.totalRow = !this.gtGeneralConfig.totalRow;\r\n if (!this.gtGeneralConfig.totalRow) {\r\n document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"40px\");\r\n } else {\r\n document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"0px\");\r\n }\r\n }\r\n\r\n setTableHeight() {\r\n let viewportHeight = window.innerHeight;\r\n const { rowHeight } = this.gtDimension;\r\n const { headerHeight } = this.gtDimension;\r\n const { dataOnTopHeight } = this.gtDimension;\r\n const { marginFromBottom } = this.gtDimension;\r\n let actualTableHeight;\r\n\r\n if (this.fixNumberOfRowsForPopup) {\r\n const maxNoOfRowsToDisplay = viewportHeight < 740 ? 5 : 10;\r\n this.maximumRowsWhichCanBeRenderedWithoutScroll = maxNoOfRowsToDisplay;\r\n actualTableHeight = this.maximumRowsWhichCanBeRenderedWithoutScroll * rowHeight + headerHeight;\r\n } else {\r\n const minHeightForTable = headerHeight + 3 * rowHeight;\r\n viewportHeight = viewportHeight <= dataOnTopHeight ? dataOnTopHeight + minHeightForTable : viewportHeight;\r\n const heightLeftForTable = viewportHeight - dataOnTopHeight - marginFromBottom;\r\n this.maximumRowsWhichCanBeRenderedWithoutScroll = Math.ceil(\r\n (heightLeftForTable - headerHeight) / rowHeight,\r\n );\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 if (this.maximumRowsWhichCanBeRenderedWithoutScroll) {\r\n this.noOfRowsToCheck = this.maximumRowsWhichCanBeRenderedWithoutScroll;\r\n if (this.gtGeneralConfig.totalRow) {\r\n this.noOfRowsToCheck = this.maximumRowsWhichCanBeRenderedWithoutScroll - 1;\r\n }\r\n } else {\r\n this.noOfRowsToCheck = 5;\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(\"stationOrderNumber\", \"STN Order#\");\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(\"sellerProgram\", \"Seller 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(\"altOrderWithRevNum\", \"Alt Order# - Mod#\");\r\n this.tooltipRadioTextMap.set(\"trafficOrderNum\", \"Traffic Order#\");\r\n this.tooltipRadioTextMap.set(\"startDate\", \"Start Date\");\r\n this.tooltipRadioTextMap.set(\"endDate\", \"End Date\");\r\n this.tooltipRadioTextMap.set(\"spots\", \"Spots\");\r\n\r\n this.tooltipRadioTextMap.set(\"averageRateThisYear\", \"Avg. Rate (TY)\");\r\n this.tooltipRadioTextMap.set(\"averageRateLastYear\", \"Avg. Rat (LY)\");\r\n this.tooltipRadioTextMap.set(\"averageCPP\", \"Avg. CPP\");\r\n this.tooltipRadioTextMap.set(\"projectedCPP\", \"Proj. CPP (30s)\");\r\n this.tooltipRadioTextMap.set(\"projectedCPM\", \"Proj. CPM (30s)\");\r\n this.tooltipRadioTextMap.set(\"averageCPM\", \"Avg. CPM\");\r\n this.tooltipRadioTextMap.set(\"IMPSDiff\", \"IMP ('000) Diff.\");\r\n this.tooltipRadioTextMap.set(\"RTGDiff\", \"RTG Diff.\");\r\n this.tooltipRadioTextMap.set(\"bookedEqCpmValue\", \"Booked CPM (30s)\");\r\n this.tooltipRadioTextMap.set(\"bookedEqCppValue\", \"Booked CPP (30s)\");\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 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 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 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 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 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 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 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 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 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 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 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 this.tooltipRadioTextMap.set(\"bookedAverageRate\", \"Booked AVG. Rate\");\r\n this.tooltipRadioTextMap.set(\"dollarIMPSImpact\", \"$ IMP Impact\");\r\n this.tooltipRadioTextMap.set(\"dollarRTGImpact\", \"$ RTG IMPACT\");\r\n this.tooltipRadioTextMap.set(\"IMPSImpact\", \"IMP ('000) IMPACT\");\r\n this.tooltipRadioTextMap.set(\"RTGImpact\", \"RTG Impact\");\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 this.tooltipRadioTextMap.set(\"bookedAverageRate\", \"Booked AVG. Rate\");\r\n this.tooltipRadioTextMap.set(\"dollarIMPSImpact\", \"$ IMP Impact\");\r\n this.tooltipRadioTextMap.set(\"dollarRTGImpact\", \"$ RTG IMPACT\");\r\n this.tooltipRadioTextMap.set(\"IMPSImpact\", \"IMP ('000) IMPACT\");\r\n this.tooltipRadioTextMap.set(\"RTGImpact\", \"RTG Impact\");\r\n\r\n this.tooltipRadioTextMap.set(\"sellOutPercentageSameWeek\", \"SELL OUT % SAME WEEK (LY)\");\r\n this.tooltipRadioTextMap.set(\"sellOutPercentageFinal\", \"FINAL SELL OUT % (LY)\");\r\n this.tooltipRadioTextMap.set(\"scheduledDate\", \"Sch. Date\");\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 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(\"BuyerLineNumber\", \"Buy Line #\");\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 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 this.tooltipRadioTextMap.set(\"lineAndSpotNumber\", \"Line.Spot#\");\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 this.tooltipRadioTextMap.set(\"buyerNames\", \"Buyers\");\r\n this.tooltipRadioTextMap.set(\"repUserNames\", \"Reps\");\r\n this.tooltipRadioTextMap.set(\"InventoryCode\", \"Inventory Code\");\r\n this.tooltipRadioTextMap.set(\"BuyerProgramName\", \"Buyer Program Name\");\r\n this.tooltipRadioTextMap.set(\"StartTime\", \"Start Time\");\r\n this.tooltipRadioTextMap.set(\"EndTime\", \"End Time\");\r\n this.tooltipRadioTextMap.set(\"WeeklyAUR\", \"Booked Avg. Rate\");\r\n this.tooltipRadioTextMap.set(\"DisplayRevenueClass\", \"Rev Class\");\r\n this.tooltipRadioTextMap.set(\"ActualWeekStartDate\", \"Week\");\r\n this.tooltipRadioTextMap.set(\"WeekDay\", \"Day\");\r\n this.tooltipRadioTextMap.set(\"DisplayLength\", \"Length\");\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 this.tooltipRadioTextMap.set(\"ProjectedImpressions\", \"Projected IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"ProjectedRtg\", \"Projected RTG\");\r\n\r\n this.tooltipRadioTextMap.set(\"buyerLine\", \"Buy Line\");\r\n this.tooltipRadioTextMap.set(\"sellerLine\", \"Sell Line\");\r\n this.tooltipRadioTextMap.set(\"programName\", \"Program Name\");\r\n this.tooltipRadioTextMap.set(\"InvFillTY\", \"Inventory Fill This Year\");\r\n this.tooltipRadioTextMap.set(\"InvFillLY\", \"Inventory Fill Last Year\");\r\n\r\n this.tooltipRadioTextMap.set(\"outstandingSpotsValue\", \"O/S Spots\");\r\n this.tooltipRadioTextMap.set(\"offeredMGsValue\", \"Offered MG\");\r\n this.tooltipRadioTextMap.set(\"offerCount\", \"Offer Count\");\r\n this.tooltipRadioTextMap.set(\"orderRevisionStatus\", \"Status\");\r\n this.tooltipRadioTextMap.set(\"offeredADUsValue\", \"Offered ADUs\");\r\n this.tooltipRadioTextMap.set(\"uDProjectionValue\", \"O/S UD Proj.\");\r\n this.tooltipRadioTextMap.set(\"userMGValue\", \"User MG\");\r\n this.tooltipRadioTextMap.set(\"userADUValue\", \"User ADUs\");\r\n this.tooltipRadioTextMap.set(\"outstandingPreemptionsValue\", \"O/S PE\");\r\n this.tooltipRadioTextMap.set(\"audienceDeficitValue\", \"O/S UD Proj.\");\r\n this.tooltipRadioTextMap.set(\"buyerChangesValue\", \"Buyer Changes\");\r\n this.tooltipRadioTextMap.set(\"userChangesValue\", \"User Changes\");\r\n\r\n this.tooltipRadioTextMap.set(\"SellerProgInvCode\", \"Seller Pgm (Inv Code)\");\r\n this.tooltipRadioTextMap.set(\"SellerProgramName\", \"Seller Program\");\r\n this.tooltipRadioTextMap.set(\"buyerProgramName\", \"Buyer Program\");\r\n this.tooltipRadioTextMap.set(\"LastFetchedDate\", \"Last Fetched\");\r\n \r\n this.tooltipRadioTextMap.set(\"bookedDps\", \"Booked DPs\");\r\n this.tooltipRadioTextMap.set(\"totalBookedGrp\", \"Total Booked GRP\");\r\n this.tooltipRadioTextMap.set(\"totalBookedImps\", \"Total Booked IMPS\");\r\n this.tooltipRadioTextMap.set(\"bookedGrpToDate\", \"Booked GRP To-date\");\r\n this.tooltipRadioTextMap.set(\"bookedImpsToDate\", \"Booked IMPS To-date\");\r\n this.tooltipRadioTextMap.set(\"goalGrpToDate\", \"Goal GRP To-date\");\r\n this.tooltipRadioTextMap.set(\"goalImpsToDate\", \"Goal IMPS To-date\");\r\n this.tooltipRadioTextMap.set(\"postedGrpToDate\", \"Posted GRP To-date\");\r\n this.tooltipRadioTextMap.set(\"postedImpsToDate\", \"Posted IMPS To-date\");\r\n this.tooltipRadioTextMap.set(\"udGrpToDate\", \"UD GRP To-date\");\r\n this.tooltipRadioTextMap.set(\"udImpsToDate\", \"UD IMPS To-date\");\r\n this.tooltipRadioTextMap.set(\"odGrpToDate\", \"OD GRP To-date\");\r\n this.tooltipRadioTextMap.set(\"odImpsToDate\", \"OD IMPS To-date\");\r\n this.tooltipRadioTextMap.set(\"scheduledADUs\", \"$ Scheduled ADUs\");\r\n this.tooltipRadioTextMap.set(\"postedADUs\", \"$ Posted ADUs\");\r\n this.tooltipRadioTextMap.set(\"bookedVal\", \"$ Booked\");\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 const enabledHeaders: any[] = [];\r\n this.annaFilterService.checkIfUniqueValuePresentForTheHeader(\r\n header,\r\n enabledHeaders,\r\n this.tableData,\r\n this.clonedTableData,\r\n );\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 const dataToCheck = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData, item);\r\n if (item === \"period\") {\r\n const uniqStartDate = uniq(dataToCheck.map((u: { [x: string]: any }) => u.startDate));\r\n const 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 const 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[\r\n this.annaFilterService.appliedFiltersArray.length - 1\r\n ] === item\r\n ) {\r\n activeAndLastlyAppliedHeader = true;\r\n }\r\n if (header.filter === \"CHECKBOX\" && (uniq(values).length > 1 || activeAndLastlyAppliedHeader)) {\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 // change to display name\r\n const value = this.tooltipRadioTextMap.has(key) ? this.tooltipRadioTextMap.get(key) : key;\r\n return new RadioButtonModel(\r\n key,\r\n value,\r\n columnHeader.isSortRequired[index],\r\n columnHeader.isFilterRequired[index],\r\n columnHeader?.showSplitedOptionsInFilter?.[index] ?? false,\r\n columnHeader?.splitDelimiter?.[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 const 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 const uniqStartDate = uniq(\r\n this.tableData.map((u: { [x: string]: any }) => u.startDate),\r\n );\r\n const uniqEndDate = uniq(this.tableData.map((u: { [x: string]: any }) => u.endDate));\r\n\r\n item.disableTooltipIcon = !(uniqStartDate.length > 1 || uniqEndDate.length > 1);\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).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 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 });\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, columnHeader, isIconClicked: false });\r\n }\r\n\r\n iconClickedOnStringIconActionType(rowData: any, id: any, columnHeader: IHeaderInfo) {\r\n this.gtTextActionClicked.emit({ data: rowData, id, 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 const 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; // height of loaded content, if table ht is 100px but total content is 300px it will return 300px\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 = this.gtGeneralConfig.bufferSize ? this.gtGeneralConfig.bufferSize : 150;\r\n const limit = tableScrollHeight - tableViewHeight - buffer;\r\n if (scrollLocation > limit) {\r\n const 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,\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 =\r\n 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, type: \"on-enter\" });\r\n }\r\n\r\n mouseEnterOnStringWithTooltipTextActionType(rowData: any, tooltipKey: string, tooltip: any) {\r\n if (this.stringWithTooltipNgbTooltipRef && this.stringWithTooltipNgbTooltipRef.open) {\r\n this.stringWithTooltipNgbTooltipRef.close();\r\n }\r\n\r\n this.stringWithTooltipTemplate = tooltipKey.includes(\"Pg_Sch_Week\")\r\n ? this.programChangeTooltipTemplateRef\r\n : this.textActionTooltipTemplateRef;\r\n this.textActionTooltip = rowData[tooltipKey];\r\n\r\n setTimeout(() => {\r\n this.stringWithTooltipNgbTooltipRef = tooltip;\r\n this.stringWithTooltipNgbTooltipRef.open();\r\n }, 0);\r\n\r\n this.notificationIconHover.emit({ rowData, type: \"on-enter\" });\r\n }\r\n\r\n mouseEnterOnStringWithInnerHtmlTooltipTextActionType(\r\n ROW_DATA: any,\r\n action: InnerHTMLTooltipAction,\r\n tooltipWithInnerHtmlRef: any,\r\n closeOnScroll: boolean,\r\n ) {\r\n this.toolTipInnerHtmlData = action.tooltipInnerHtmlTemplate;\r\n if (!closeOnScroll) {\r\n if (this.innerHtmlTooltip && this.innerHtmlTooltip.open) {\r\n this.innerHtmlTooltip.close();\r\n }\r\n this.innerHtmlTooltip = tooltipWithInnerHtmlRef;\r\n this.innerHtmlTooltip.open();\r\n } else {\r\n this.innerHtmlTooltip?.close();\r\n }\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, 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 });\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 statusNoteTooltip = document.getElementsByClassName(\"status-note-tooltip\");\r\n document.querySelectorAll(\".tooltip:not(.keep-on-scroll-tooltip)\").forEach((e) => {\r\n e.remove();\r\n this.tooltip = null;\r\n });\r\n\r\n while (elements && elements.length > 0) {\r\n elements[0].remove();\r\n }\r\n while (gtTooltip && gtTooltip.length > 0) {\r\n gtTooltip[0].remove();\r\n }\r\n while (statusNoteTooltip && statusNoteTooltip.length > 0) {\r\n statusNoteTooltip[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 const enteredValue = pasteEvent ? event.clipboardData.getData(\"text\") : event.key;\r\n const 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?.charactersToRestrict && editedObject?.charactersToRestrict.includes(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, value, keyEdited });\r\n }\r\n\r\n radioButtonIconClicked(data: any) {\r\n this.radioButtonMessageIconClicked.emit(data);\r\n }\r\n\r\n setScrollToInitialPosition() {\r\n this.tableElementRef.nativeElement.scrollTop = 0;\r\n this.tableElementRef.nativeElement.scrollLeft = 0;\r\n }\r\n\r\n filterApplied(tableData: any[]) {\r\n this.tableData = tableData;\r\n this.setScrollToInitialPosition();\r\n this.setInitialRowsForTable();\r\n this.annaFilterService.disableEnableEachColumnTooltipIcon(\r\n this.tableHeaders,\r\n this.tableData,\r\n this.clonedTableData,\r\n );\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.annaFilterService.disableEnableEachColumnTooltipIcon(\r\n this.tableHeaders,\r\n this.tableData,\r\n this.clonedTableData,\r\n );\r\n this.sortingAppliedToTable.emit(tableData);\r\n this.closeTooltip();\r\n }\r\n\r\n bindTheValueToTableTooltip(obj: EllipsisWithTableTooltip, tooltip: any) {\r\n if (this.ellispsisWithTableTooltip && this.ellispsisWithTableTooltip.open) {\r\n this.ellispsisWithTableTooltip.close();\r\n }\r\n this.ellipsisWithTooltipHeading = obj.tooltipHeader;\r\n this.ellipsisWithTooltipTableData = obj.tableData;\r\n this.ellipsisWithTooltipTableHeaders = obj.tableHeaders;\r\n this.ellispsisWithTableTooltip = tooltip;\r\n this.ellispsisWithTableTooltip.open();\r\n }\r\n\r\n bindTheValueToStatusNote(note: string, tooltip: any) {\r\n if (this.statusNoteTooltip && this.statusNoteTooltip.isOpen()) {\r\n this.statusNoteTooltip.close();\r\n }\r\n const lastIndex = note.length < 100 ? note.length : 100;\r\n this.statusNoteForTooltip = \"\";\r\n\r\n this.statusNoteForTooltip = note.substring(0, lastIndex);\r\n\r\n this.statusNoteForPopup = note;\r\n this.statusNoteTooltip = tooltip;\r\n this.statusNoteTooltip.open();\r\n }\r\n\r\n showEntireStatusNote() {\r\n this.closeStatusNoteTooltip();\r\n this.statusNotePopupOpened.emit(this.statusNoteForPopup);\r\n }\r\n\r\n closeStatusNoteTooltip() {\r\n if (this.statusNoteTooltip && this.statusNoteTooltip.isOpen()) {\r\n this.statusNoteTooltip.close();\r\n }\r\n this.statusNoteTooltip = null;\r\n }\r\n}\r\n","<div\r\n id=\"generic-table-conatiner\"\r\n #tableElementRef\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 'table-with-show-hide-total-row-toggle': showOrHideToggleForTotalRow\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 < noOfRowsToCheck\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 <button\r\n *ngIf=\"showOrHideToggleForTotalRow && !showSkeletonLoading && (isNoDataToDisplaySubject$ | async) === false\"\r\n [ngClass]=\"{\r\n 'shift-toggle-top-on-total-row-click': !gtGeneralConfig.totalRow\r\n }\"\r\n class=\"show-or-hide-toggle-btn\"\r\n (click)=\"showHideTotalRow()\"\r\n >\r\n <i\r\n class=\"mdi mdi-menu-swap\"\r\n tooltipClass=\"show-or-hide-toggle-tooltip\"\r\n placement=\"auto\"\r\n container=\"body\"\r\n [ngbTooltip]=\"showOrHideToggleForTotalRowTooltip\"\r\n ></i>\r\n </button>\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\"\r\n >{{ column.data }}\r\n <span\r\n class=\"red-text-totol-row\"\r\n *ngIf=\"column.additionalRedTextAfterData\"\r\n >{{ column.additionalRedTextAfterData }}</span\r\n ></strong\r\n >\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=\"top 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]=\"tdsHaveRowSpan ? ROW_DATA[columnDef.headerInfo[0].objectKey + 'Rowspan'] : 1\"\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) === false\">\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 annaCoreShowEllipsisTextOnHover>\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 [ngClass]=\"{ 'disabled-starring': starredInProgress }\"\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\r\n class=\"spinner-for-button-directive\"\r\n [ngClass]=\"{ 'disabled-starring': starredInProgress }\"\r\n ></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]=\"\r\n action.showTooltip && action?.tooltipData\r\n ? action.tooltipData\r\n : null\r\n \"\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 </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 <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=\"pr-4\"\r\n *ngIf=\"action?.showObjectKey\"\r\n >\r\n {{ ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey] }}\r\n </span>\r\n\r\n <span\r\n class=\"pr-4 {{ action?.additionalTextClass }}\"\r\n *ngIf=\"action?.additionalText\"\r\n >\r\n {{ action?.additionalText }}\r\n </span>\r\n\r\n <anna-core-icon-column\r\n class=\"pr-4\"\r\n *ngIf=\"action?.svgOrIconName\"\r\n [componentName]=\"gtGeneralConfig.component\"\r\n [dataObject]=\"ROW_DATA\"\r\n [iconToShow]=\"action.svgOrIconName\"\r\n data-html=\"true\"\r\n [ngbTooltip]=\"tipContent\"\r\n [disableTooltip]=\"!action?.svgOrIconTooltipMsg\"\r\n placement=\"auto\"\r\n container=\"body\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\r\n (columnIconClicked)=\"svgIconClicked($event)\"\r\n >\r\n <ng-template #tipContent>\r\n <div [innerHTML]=\"action?.svgOrIconTooltipMsg\"></div\r\n ></ng-template>\r\n </anna-core-icon-column>\r\n </ng-container>\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 >{{ text.name }}</a\r\n >\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 <span\r\n class=\"text-with-icon-and-text\"\r\n [ngClass]=\"{ 'reduced-width': action.showIcon }\"\r\n annaCoreShowEllipsisTextOnHover\r\n >{{ action.data }}</span\r\n >\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 <span\r\n *ngIf=\"action.showIcon\"\r\n [ngClass]=\"{ disabled: action.disabledIcon }\"\r\n class=\"icon-tooltip-text\"\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 [class]=\"action.iconClass\"> </i>\r\n {{ action.additionalTextAfterIcon ?? \"\" }}\r\n </span>\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 annaCoreShowEllipsisTextOnHover\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 <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 container=\"body\"\r\n [ngbTooltip]=\"tipContent\"\r\n tooltipClass=\"gt-total-row-tooltip\"\r\n placement=\"bottom\"\r\n class=\"{{ action.iconClass }}\"\r\n >\r\n <ng-template #tipContent>\r\n <div [innerHTML]=\"action?.iconTooltip\"></div\r\n ></ng-template>\r\n </i>\r\n <ng-container *ngIf=\"action.showSvgIcon\">\r\n <anna-core-icon-column\r\n class=\"pr-4\"\r\n *ngIf=\"action?.svgOrIconName\"\r\n [componentName]=\"gtGeneralConfig.component\"\r\n [dataObject]=\"ROW_DATA\"\r\n [iconToShow]=\"action.svgOrIconName\"\r\n data-html=\"true\"\r\n [ngbTooltip]=\"tipContent\"\r\n placement=\"auto\"\r\n container=\"body\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\r\n >\r\n <ng-template #tipContent>\r\n <div\r\n [innerHTML]=\"action?.svgOrIconTooltipMsg\"\r\n ></div></ng-template\r\n ></anna-core-icon-column>\r\n </ng-container>\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']; else showHyphen\"\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 <i\r\n *ngIf=\"radioButton.tooltipMessage\"\r\n class=\"mi mdi-info-outline\"\r\n [ngbTooltip]=\"radioButton.tooltipMessage\"\r\n placement=\"bottom auto\"\r\n container=\"body\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\r\n ></i>\r\n <br *ngIf=\"!last\" />\r\n </ng-container>\r\n </mat-radio-group>\r\n <ng-template #showHyphen> - </ng-template>\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 class=\"action-data\"> {{ action?.dataToDisplay }}</span>\r\n <ng-container *ngIf=\"action?.additionalTextWoTooltip\">\r\n <span\r\n class=\"additional-text-wo-tooltip\"\r\n [innerHtml]=\"action.additionalTextWoTooltip\"\r\n >\r\n </span>\r\n </ng-container>\r\n <span\r\n *ngIf=\"action?.showTooltip\"\r\n [ngbTooltip]=\"stringWithTooltipTemplate\"\r\n (mouseenter)=\"\r\n mouseEnterOnStringWithTooltipTextActionType(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].tooltipKey,\r\n tooltipWithStringRef\r\n )\r\n \"\r\n [placement]=\"action?.tooltipPosition\"\r\n container=\"body\"\r\n [class]=\"action?.tooltipIconClass\"\r\n [autoClose]=\"'outside'\"\r\n [triggers]=\"action.isManualTrigger ? 'manual' : 'hover focus'\"\r\n #tooltipWithStringRef=\"ngbTooltip\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class {{\r\n action?.tooltipInnerClass\r\n }}\"\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 *ngSwitchCase=\"'STRING_ELLIPSIS_WITH_TABLE_TOOLTIP'\">\r\n <div class=\"new-ellipsis-container\">\r\n <span\r\n annaCoreShowEllipsisTextOnHover\r\n class=\"cell-value\"\r\n >\r\n {{\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n .cellValue\r\n }}\r\n </span>\r\n <span\r\n *ngIf=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n ?.showTooltip\r\n \"\r\n class=\"tooltip-text\"\r\n [ngbTooltip]=\"tableInsideTooltip\"\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=\"table-inside-tooltip remove-on-scroll-class {{\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n ?.tooltipClass\r\n }}\"\r\n (mouseenter)=\"\r\n bindTheValueToTableTooltip(\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey],\r\n info\r\n )\r\n \"\r\n >\r\n {{\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n ?.tooltipHoverText\r\n }}\r\n </span>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'STRING_WITH_ELLIPSIS_AND_READ_MORE_TOOLTIP'\">\r\n <span\r\n title=\"\"\r\n *ngIf=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].length <\r\n 25\r\n \"\r\n >\r\n {{ ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey] }}\r\n </span>\r\n\r\n <span\r\n title=\"\"\r\n [ngbTooltip]=\"statusNoteTooltip\"\r\n placement=\"bottom auto\"\r\n container=\"body\"\r\n [autoClose]=\"true\"\r\n [triggers]=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].length >\r\n 100\r\n ? 'manual'\r\n : 'hover focus'\r\n \"\r\n (hidden)=\"closeTooltip()\"\r\n #info=\"ngbTooltip\"\r\n tooltipClass=\"status-note-tooltip\"\r\n (mouseenter)=\"\r\n bindTheValueToStatusNote(\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey],\r\n info\r\n )\r\n \"\r\n *ngIf=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].length >\r\n 25\r\n \"\r\n >\r\n {{ ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey] }}\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'STRING_WITH_TOOLTIP_INNER_HTML'\">\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 annaCoreShowEllipsisTextOnHover\r\n class=\"action-data\"\r\n [ngClass]=\"action?.showTooltip ? 'reduced-width-text' : ''\"\r\n >\r\n {{ action?.dataToDisplay }}</span\r\n >\r\n <span\r\n *ngIf=\"action?.showTooltip\"\r\n [ngbTooltip]=\"innerHtmlToolTipTemplate\"\r\n (mouseenter)=\"\r\n mouseEnterOnStringWithInnerHtmlTooltipTextActionType(\r\n ROW_DATA,\r\n action,\r\n tooltipWithInnerHtmlRef,\r\n !action.isManualTrigger\r\n )\r\n \"\r\n [placement]=\"action?.tooltipPosition\"\r\n container=\"body\"\r\n [class]=\"\r\n 'innrHtml-tooltip-icon-marker ' + action?.tooltipIconClass\r\n \"\r\n [autoClose]=\"'outside'\"\r\n [triggers]=\"action.isManualTrigger ? 'manual' : 'hover focus'\"\r\n #tooltipWithInnerHtmlRef=\"ngbTooltip\"\r\n tooltipClass=\"gt-icon-innerHtml-tooltip remove-on-scroll-class {{\r\n action?.tooltipInnerClass\r\n }}\"\r\n [disableTooltip]=\"action?.disableTooltip\"\r\n >\r\n {{ action.tooltipMarkerText }}\r\n </span>\r\n <span *ngIf=\"action?.dataToDisplayAfterTooltip\">\r\n {{ action?.dataToDisplayAfterTooltip }}\r\n </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 annaCoreShowEllipsisTextOnHover>{{\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=\"\r\n ROW_DATA.activityname.toLowerCase() === 'order onboarded'\r\n \"\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 class=\"black-color-text 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 annaCoreShowEllipsisTextOnHover>{{ data.InventoryCode }}</span>\r\n </td>\r\n <td>\r\n <span annaCoreShowEllipsisTextOnHover>{{ 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 class=\"black-color-text\">Seller group not available for this inventory code</span>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #tableInsideTooltip>\r\n <label class=\"ellipsis-tooltip-heading\">{{ ellipsisWithTooltipHeading }}</label>\r\n <section class=\"table-inside-tooltip-container\">\r\n <table class=\"ellipsis-tooltip-table\">\r\n <thead>\r\n <tr>\r\n <th\r\n [style.width]=\"header.width\"\r\n *ngFor=\"let header of ellipsisWithTooltipTableHeaders\"\r\n >\r\n <div>\r\n <span\r\n annaCoreShowEllipsisTextOnHover\r\n class=\"upper-label\"\r\n >{{ header.headerName }}</span\r\n >\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of ellipsisWithTooltipTableData\">\r\n <td *ngFor=\"let header of ellipsisWithTooltipTableHeaders\">\r\n <div>\r\n <span\r\n annaCoreShowEllipsisTextOnHover\r\n class=\"upper-label\"\r\n >{{ data[header.objectKey] }}</span\r\n >\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </section>\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 ANNA calculates projected RTG/IMPS values using either the computed estimates or the actual posted data,\r\n depending on what is available. If posted data has not yet been received, ANNA will use the computed estimates\r\n as the projected value. Once the actual posted data is received, the projection will automatically update to\r\n reflect the real, posted values. This ensures that projected data is always based on the most accurate and\r\n up-to-date information.\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 automate the orders. Only for the automated orders, any approved\r\n MGs, ADUs, or credited spots on ANNA will be fed into the traffic 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 #programChangeTooltipTemplate>\r\n <div class=\"program-schedule-tooltip\">\r\n <h2>Program Change</h2>\r\n <p class=\"previous\">Previous:</p>\r\n <b annaCoreShowEllipsisTextOnHover>{{ textActionTooltip.OldProgramName }}</b>\r\n\r\n <p class=\"updated\">Updated:</p>\r\n <b\r\n *ngIf=\"textActionTooltip.NewProgramNames.length === 1\"\r\n annaCoreShowEllipsisTextOnHover\r\n >{{ textActionTooltip.NewProgramNames[0] }}</b\r\n >\r\n <ul *ngIf=\"textActionTooltip.NewProgramNames.length > 1\">\r\n <li *ngFor=\"let item of textActionTooltip.NewProgramNames\">\r\n <label class=\"dot\"></label>\r\n <span annaCoreShowEllipsisTextOnHover>{{ item }}</span>\r\n </li>\r\n </ul>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #showOrHideToggleForTotalRowTooltip>\r\n <div>\r\n {{ showOrHideToggleForTotalRow && !gtGeneralConfig.totalRow ? \"Show Total Row\" : \"Hide Total Row\" }}\r\n </div>\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\r\n<ng-template #statusNoteTooltip>\r\n <div>\r\n <span class=\"status-note-tooltip\">{{ statusNoteForTooltip }}</span>\r\n <span *ngIf=\"statusNoteForPopup.length > 100\"\r\n >...<a\r\n class=\"view-more-comments\"\r\n (click)=\"showEntireStatusNote()\"\r\n >View more</a\r\n ></span\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #innerHtmlToolTipTemplate>\r\n <div [innerHtml]=\"toolTipInnerHtmlData\"></div>\r\n</ng-template>\r\n","/* eslint-disable max-len */\r\nimport { ScrollingModule } from \"@angular/cdk/scrolling\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonToggleModule } from \"@angular/material/button-toggle\";\r\nimport { MatRadioModule } from \"@angular/material/radio\";\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { NgxSliderModule } from \"@angular-slider/ngx-slider\";\r\nimport { NgbModule } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { NgCircleProgressModule } from \"ng-circle-progress\";\r\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\r\n\r\nimport { AnnaBuyerApprovalIconTemplateComponent } from \"./anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component\";\r\nimport { AnnaDeletedOrderIconTemplateComponent } from \"./anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component\";\r\nimport { AnnaEstIconTemplateComponent } from \"./anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component\";\r\nimport { AnnaIconColumnComponent } from \"./anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component\";\r\nimport { AnnaLicensingTableComponent } from \"./anna-core-shared-lib/components/anna-licensing-table/anna-licensing-table.component\";\r\nimport { AnnaLiveIconTemplateComponent } from \"./anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component\";\r\nimport { AnnaNoDataComponent } from \"./anna-core-shared-lib/components/anna-no-data/anna-no-data.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 { AnnaSpinnerLoaderComponent } from \"./anna-core-shared-lib/components/anna-spinner-loader/anna-spinner-loader.component\";\r\nimport { DigitOnlyDirective } from \"./anna-core-shared-lib/directives/digits-only/digits-only.directive\";\r\nimport { FixedRowsPopupTableDirective } from \"./anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive\";\r\nimport { ShowEllipsisTextOnHoverDirective } from \"./anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive\";\r\nimport { AnnaConvertArrayToCommaSeperatedValue } from \"./anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe\";\r\nimport { AnnaConvertZeroOrNullOrUndefinedPipe } from \"./anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe\";\r\nimport { AnnaDateFormatterPipe } from \"./anna-core-shared-lib/pipes/annaDateFormatter.pipe\";\r\nimport { AnnaFilterSearchedTextPipe } from \"./anna-core-shared-lib/pipes/annaFilterSearchedText.pipe\";\r\nimport { AnnaReplaceCharPipe } from \"./anna-core-shared-lib/pipes/annaReplaceChar.pipe\";\r\nimport { AnnaTypeofDataPipe } from \"./anna-core-shared-lib/pipes/annaTypeOfData.pipe\";\r\nimport { AnnaCalendarFilterComponent } from \"./anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component\";\r\nimport { AnnaWeekCalendarComponent } from \"./anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-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 { AnnaColumnDateRangeFilterComponent } from \"./anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component\";\r\nimport { AnnaColumnSliderFilterComponent } from \"./anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-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 { 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\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 AnnaNonEditableGenericTableComponent,\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 AnnaSpinnerLoaderComponent,\r\n AnnaLicensingTableComponent,\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 AnnaPayForPerformanceIconTemplateComponent,\r\n AnnaRejectedIconTemplateComponent,\r\n ShowEllipsisTextOnHoverDirective,\r\n AnnaIconColumnComponent,\r\n AnnaWeekCalendarComponent,\r\n AnnaCalendarFilterComponent,\r\n AnnaSortComponent,\r\n AnnaNonEditableGenericTableComponent,\r\n AnnaColumnDateRangeFilterComponent,\r\n AnnaColumnTimeFilterComponent,\r\n AnnaColumnCheckboxFilterComponent,\r\n DigitOnlyDirective,\r\n AnnaDeletedOrderIconTemplateComponent,\r\n AnnaColumnSliderFilterComponent,\r\n AnnaDateFormatterPipe,\r\n AnnaConvertArrayToCommaSeperatedValue,\r\n FixedRowsPopupTableDirective,\r\n AnnaSpinnerLoaderComponent,\r\n AnnaLicensingTableComponent\r\n ],\r\n})\r\nexport class AnnaCoreModule {}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, ElementRef, Input, OnChanges, Renderer2 } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"anna-core-circular-progress\",\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: \"./anna-circular-progress.component.html\",\r\n styleUrls: [\"./anna-circular-progress.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AnnaCircularProgressComponent implements OnChanges {\r\n @Input() percent: number = 0;\r\n @Input() radius: number = 22;\r\n @Input() outerStrokeWidth: number = 5;\r\n @Input() innerStrokeWidth: number = 5;\r\n @Input() outerStrokeColor: string = \"#268bff\";\r\n @Input() innerStrokeColor: string = \"#d5d5d5\";\r\n @Input() animationDuration: number = 0;\r\n\r\n circumference: number = 0;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n ) {}\r\n\r\n ngOnChanges(): void {\r\n this.updateCircumference();\r\n this.applyAnimationDuration();\r\n }\r\n\r\n updateCircumference(): void {\r\n this.circumference = 2 * Math.PI * (this.radius - this.outerStrokeWidth / 2);\r\n }\r\n\r\n applyAnimationDuration(): void {\r\n const progressBar = this.el.nativeElement.querySelector(\".custom-progress-bar\");\r\n if (progressBar) {\r\n this.renderer.setStyle(progressBar, \"transition\", `stroke-dashoffset ${this.animationDuration}ms ease`);\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"custom-progress-wrapper\"\r\n [ngStyle]=\"{ width: radius * 2 + 1 + 'px', height: radius * 2 + 1 + 'px' }\"\r\n>\r\n <svg\r\n class=\"custom-progress-circle\"\r\n [attr.viewBox]=\"'0 0 ' + radius * 2 + ' ' + radius * 2\"\r\n >\r\n <!-- Background circle -->\r\n <circle\r\n class=\"custom-progress-bg\"\r\n [attr.cx]=\"radius\"\r\n [attr.cy]=\"radius\"\r\n [attr.r]=\"radius - outerStrokeWidth / 2\"\r\n [attr.stroke-width]=\"outerStrokeWidth\"\r\n [attr.stroke]=\"innerStrokeColor\"\r\n [attr.fill]=\"'none'\"\r\n ></circle>\r\n\r\n <!-- Progress circle -->\r\n <circle\r\n class=\"custom-progress-bar\"\r\n [attr.cx]=\"radius\"\r\n [attr.cy]=\"radius\"\r\n [attr.r]=\"radius - outerStrokeWidth / 2\"\r\n [attr.stroke-width]=\"outerStrokeWidth\"\r\n [attr.stroke]=\"outerStrokeColor\"\r\n [attr.fill]=\"'none'\"\r\n [attr.stroke-dasharray]=\"circumference\"\r\n [attr.stroke-dashoffset]=\"circumference - (percent / 100) * circumference\"\r\n [attr.transform]=\"'rotate(' + radius + ' ' + radius + ')'\"\r\n ></circle>\r\n </svg>\r\n</div>\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { cloneDeep } from \"lodash-es\";\r\nimport { Subject } from \"rxjs\";\r\n\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 const numberOfSkeletonColumns: any[][] = [];\r\n let headersInEachColumn = 0;\r\n tableHeaders.forEach((column) => {\r\n if (column.visible) {\r\n headersInEachColumn = 0;\r\n column.headerInfo.forEach(() => {\r\n headersInEachColumn += 1;\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 const isFilterApplied = this.annaFilterService.appliedFiltersArray.length > 0;\r\n const isSortApplied = this.isSortingAppliedToTable();\r\n\r\n return !(isFilterApplied || isSortApplied);\r\n }\r\n\r\n updateFiltersInURL() {\r\n const 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 const 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 this.annaSortService.columnSortState.forEach((value, key) => {\r\n if (value === \"ASC\" || value === \"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 let sortedUsersTableData = usersTable;\r\n this.annaSortService.columnSortState.forEach((value, key) => {\r\n if (value === \"ASC\") {\r\n sortedUsersTableData = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(\r\n true,\r\n usersTable,\r\n key,\r\n );\r\n } else if (value === \"DESC\") {\r\n sortedUsersTableData = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(\r\n false,\r\n usersTable,\r\n key,\r\n );\r\n }\r\n });\r\n\r\n return sortedUsersTableData;\r\n }\r\n\r\n isSortingAppliedToTable() {\r\n let isSortingApplied = false;\r\n\r\n this.annaSortService.columnSortState.forEach((value, key) => {\r\n if (value === \"ASC\" || value === \"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","import { Injectable } from \"@angular/core\";\r\n\r\nimport { ITooltipTableHeader, ITooltipTableRowData } from \"../models/anna-non-editable-gt-models\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class GenericTooltipHtmlService {\r\n \r\n static generateTableHTML(\r\n headers: ITooltipTableHeader[],\r\n rowData: ITooltipTableRowData[],\r\n tableHeading: string = \"\",\r\n ): string {\r\n const rowsToSkip: { [key: number]: number[] } = {}; // Track rows to skip by index for rowspan\r\n\r\n // Start table HTML\r\n let tableHTML = \"\";\r\n\r\n tableHTML =\r\n tableHeading === \"\" ? tableHTML : `<label class=\"generic-innerHtml-table-heading\">${tableHeading}</label>`;\r\n\r\n tableHTML += '<section class=\"generic-innerHtml-table-container\"><table class=\"tooltip-table\">';\r\n\r\n // Generate header row\r\n tableHTML += \"<thead><tr>\";\r\n headers.forEach((header) => {\r\n const colspan = header.colspan ? ` colspan=\"${header.colspan}\"` : \"\";\r\n const rowspan = header.rowspan ? ` rowspan=\"${header.rowspan}\"` : \"\";\r\n const width = header.width ? ` width=\"${header.width}\"` : \"\";\r\n tableHTML += `<th${colspan}${rowspan}${width}>${header.name}</th>`;\r\n });\r\n tableHTML += \"</tr></thead>\";\r\n\r\n // Generate rows\r\n tableHTML += \"<tbody>\";\r\n rowData.forEach((row, rowIndex) => {\r\n tableHTML += \"<tr>\";\r\n\r\n headers.forEach((header, headerIndex) => {\r\n // Check if the current column is part of a rowspan from previous row\r\n if (rowsToSkip[rowIndex] && rowsToSkip[rowIndex].includes(headerIndex)) {\r\n // colIndex++;\r\n return; // Skip this column due to rowspan from a previous row\r\n }\r\n\r\n const cellData = row[header.key] || \"\";\r\n const colspan = row[`${header.key}_colspan`] ? ` colspan=\"${row[`${header.key}_colspan`]}\"` : \"\";\r\n const rowspan = row[`${header.key}_rowspan`] ? ` rowspan=\"${row[`${header.key}_rowspan`]}\"` : \"\";\r\n\r\n // If rowspan is defined, mark future rows to skip this cell\r\n if (row[`${header.key}_rowspan`]) {\r\n const rowsToSpan = row[`${header.key}_rowspan`] as number;\r\n for (let i = 1; i < rowsToSpan; i++) {\r\n if (!rowsToSkip[rowIndex + i]) rowsToSkip[rowIndex + i] = [];\r\n rowsToSkip[rowIndex + i].push(headerIndex); // Mark column to be skipped\r\n }\r\n }\r\n\r\n tableHTML += `<td${colspan}${rowspan}>${cellData}</td>`;\r\n });\r\n\r\n tableHTML += \"</tr>\";\r\n });\r\n tableHTML += \"</tbody>\";\r\n\r\n // Close table\r\n tableHTML += \"</table></section>\";\r\n\r\n return tableHTML;\r\n }\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 const result = AnnaNumberFormatService.GetValueInUnits(Math.abs(inputValue));\r\n let value = result[0];\r\n const unit = result[1];\r\n\r\n value = +(+value).toFixed(digitsToRoundDecimalPoint);\r\n if (inputValue < 0) {\r\n 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 const result = this.GetValueInUnits(Math.abs(inputValue));\r\n let value = result[0];\r\n const unit = result[1];\r\n\r\n value = +value;\r\n if (inputValue < 0) {\r\n value *= -1;\r\n }\r\n\r\n let digitToRoundOff = digitsToRoundDecimalPoint;\r\n if (digitsToRoundDecimalPoint === 0 && (unit === \"M\" || unit === \"B\" || unit === \"K\")) {\r\n digitToRoundOff = 2;\r\n }\r\n return Number.isInteger(value) ? value.toString() + unit : value.toFixed(digitToRoundOff) + 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 updatedInputValue = inputValue;\r\n const thousand = 1000;\r\n const million = 1000000;\r\n const billion = 1000000000;\r\n\r\n if (inputValue >= thousand && inputValue < million) {\r\n updatedInputValue = inputValue / thousand;\r\n unit = \"K\";\r\n } else if (inputValue >= million && inputValue < billion) {\r\n updatedInputValue = inputValue / million;\r\n unit = \"M\";\r\n } else if (inputValue >= billion) {\r\n updatedInputValue = inputValue / billion;\r\n unit = \"B\";\r\n }\r\n\r\n return [updatedInputValue, 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 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 const 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 // if (hashCode === \"d909d7a911336eb2b8732b67d22cfb32c9603a7e\") {\r\n // return;\r\n // // Added by Manisha, stationId with null was getting added\r\n // }\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 const 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 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 { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class RegexPatternsService {\r\n public readonly emailPattern: RegExp = /\\S+@\\S+\\.\\S+/;\r\n public readonly phonePattern: RegExp = /^[(][0-9]{3}[)][0-9]{3}[-][0-9]{4}$/;\r\n public readonly buyerNamePattern: RegExp = /^[A-Za-z]+([ '-][A-Za-z]+)*$/;\r\n public readonly usernamePattern: RegExp = /^\\\\S*$/;\r\n}\r\n","export class LicensingPlan {\r\n Id: number;\r\n PlanId: number;\r\n PlanName: string;\r\n PlanStartDate?: string;\r\n PlanEndDate?: string;\r\n PlanExpiryDays?: number;\r\n FeatureDetails: FeatureDetails[];\r\n constructor(data: any) {\r\n this.Id = data.Id;\r\n this.PlanId = data.PlanId;\r\n this.PlanName = data.PlanName;\r\n this.PlanStartDate = data.PlanStartDate;\r\n this.PlanEndDate = data.PlanEndDate;\r\n this.PlanExpiryDays = data.PlanExpiryDays;\r\n this.FeatureDetails = data.FeatureDetails.map((feature: any) => new FeatureDetails(feature));\r\n }\r\n}\r\n\r\nexport class FeatureDetails {\r\n FeatureId: number;\r\n FeatureName: string;\r\n FeatureDescription: string;\r\n IsEnabled: boolean;\r\n Specification: any[];\r\n constructor(data: any) {\r\n this.FeatureId = data.FeatureId;\r\n this.FeatureName = data.FeatureName;\r\n this.FeatureDescription = data.FeatureDescription;\r\n this.IsEnabled = data.IsEnabled;\r\n this.Specification = data.Specification.map((spec: any) => ({\r\n Json: JSON.parse(spec.Json),\r\n JsonType: spec.JsonType\r\n }));\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 showSplitedOptionsInFilter?: boolean[]; \r\n // Indicates whether to display split options in a checkbox filter. \r\n // When set to true, the values in the filter will be split into individual options. \r\n // For example, if the filter has values like \"A18+, A35+\", it will split them into two separate options (\"A18+\" and \"A35+\") in the checkbox filter.\r\n\r\n splitDelimiter?: string[]; \r\n // Defines the key or logic used to split the values in the checkbox filter when `showSplitedOptionsInFilter` is true.\r\n // This key determines how the values are split. For example, if the filter contains \"A18+, A35+\" and `splitDelimiter` is set to a comma or plus sign ('+'), \r\n // the filter will generate separate options for \"A18+\" and \"A35+\" based on the split delimiter.\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\n | \"STRING_WITH_ELLIPSIS_AND_READ_MORE_TOOLTIP\"\r\n | \"STRING_ELLIPSIS_WITH_TABLE_TOOLTIP\"\r\n | \"STRING_WITH_TOOLTIP_INNER_HTML\"\r\n\r\ntype FILTERTYPE = \"CHECKBOX\" | \"SLIDER\" | \"DATE\" | \"TIME\" | \"WEEK\";\r\n\r\nexport interface ISvgOrIconTypeInGTTable {\r\n showObjectKey: boolean;\r\n svgOrIconName?: string;\r\n svgOrIconTooltipMsg?: string;\r\n additionalText?: string;\r\n additionalTextClass?: string;\r\n}\r\n\r\nexport class SvgOrIconTypeInGTTable {\r\n showObjectKey: boolean;\r\n svgOrIconName?: string;\r\n constructor(data: { showObjectKey: boolean; svgOrIconName: string }) {\r\n this.showObjectKey = data.showObjectKey;\r\n this.svgOrIconName = data.svgOrIconName;\r\n }\r\n}\r\n\r\nexport enum SvgOrIconNames {\r\n PAY_FOR_PERFORMANCE_ACTIVE = \"PAY_FOR_PERFORMANCE_ACTIVE\",\r\n AUTOMATED = \"AUTOMATED\",\r\n DELETED_ORDER = \"DELETED_ORDER\",\r\n WARNING_ICON = \"WARNING_ICON\",\r\n INFORMATION_OUTLINE_ICON = \"INFORMATION_OUTLINE_ICON\",\r\n CANCEL_ICON = \"CANCEL_ICON\",\r\n ALPHA_B_CIRCLE = \"ALPHA_B_CIRCLE\",\r\n ALPHA_R_CIRCLE = \"ALPHA_R_CIRCLE\",\r\n ALPHA_E_CIRCLE = \"ALPHA_E_CIRCLE\",\r\n ALPHA_A_CIRCLE = \"ALPHA_A_CIRCLE\",\r\n}\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 additionalRedTextAfterData?: 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 IActionItemTypeWithStringIconOrTextAction {\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 | \"AUTOMATED\"\r\n | \"WARNING_ICON\"\r\n | \"INFORMATION_OUTLINE_ICON\"\r\n | \"CANCEL_ICON\"\r\n | \"ALPHA_B_CIRCLE\"\r\n | \"ALPHA_R_CIRCLE\"\r\n | \"ALPHA_E_CIRCLE\"\r\n | \"ALPHA_A_CIRCLE\";\r\n\r\nexport class TableClassNameConstant {\r\n static readonly defaultClass = \"table-body-row \";\r\n static readonly selectedRow = \"selected-row \";\r\n static readonly selectableRow = \"selectable-row \";\r\n static readonly lastRowOfGroup = \"last-row-of-group \";\r\n static readonly mgRow = \"mg-row \";\r\n static readonly redColorCellBorder = \"redcolor-cell-border \";\r\n static readonly redColorCellBorderForBookedRtgImpsCol = \" redcolor-cell-border-rtg-imps-col\";\r\n static readonly greenColorCellBorder = \"greencolor-cell-border \";\r\n static readonly yellowColorCellBorder = \"yellowcolor-cell-border\";\r\n static readonly orangeColorCellBorder = \"orangecolor-cell-border \";\r\n static readonly redColorStatus = \"redcolor-status \";\r\n\r\n static readonly groupedTableClass = \"grouped-table-container \";\r\n}\r\n\r\nexport class EllipsisWithTableTooltip {\r\n tooltipHeader: string;\r\n tableHeaders: HeaderWithObjectKey[];\r\n tableData: any[];\r\n cellValue: string;\r\n tooltipHoverText: string;\r\n showTooltip: boolean;\r\n tooltipClass: string;\r\n\r\n constructor(\r\n heading: string,\r\n tableHeaders: HeaderWithObjectKey[],\r\n tableData: any[],\r\n cellValue: string,\r\n tooltipText: string,\r\n showTooltip: boolean,\r\n tooltipClass: string,\r\n ) {\r\n this.tooltipHeader = heading;\r\n this.tableHeaders = tableHeaders;\r\n this.tableData = tableData;\r\n this.cellValue = cellValue;\r\n this.tooltipHoverText = tooltipText;\r\n this.showTooltip = showTooltip;\r\n this.tooltipClass = tooltipClass;\r\n }\r\n}\r\n\r\nexport interface HeaderWithObjectKey {\r\n headerName: string;\r\n objectKey: string;\r\n width: string;\r\n}\r\n\r\nexport interface InnerHTMLTooltipAction {\r\n dataToDisplay?: string; // Text or data to display before the tooltip\r\n showTooltip?: boolean; // Whether to show the tooltip\r\n tooltipInnerHtmlTemplate?: string; // Template or content for the tooltip\r\n tooltipPosition?: string; // Tooltip position (e.g., 'top', 'bottom')\r\n tooltipIconClass?: string; // CSS class for the tooltip icon\r\n tooltipInnerClass?: string; // CSS class for customizing tooltip's inner content\r\n disableTooltip?: boolean; // Whether to disable the tooltip\r\n tooltipMarkerText?: string; // Text for the tooltip icon or indicator\r\n dataToDisplayAfterTooltip?: string; // Data to display after the tooltip\r\n isManualTrigger?: boolean; // Whether the tooltip trigger is manual or automatic\r\n}\r\n\r\nexport interface ITooltipTableHeader {\r\n name: string;\r\n key: string;\r\n width: string;\r\n colspan?: number;\r\n rowspan?: number;\r\n}\r\n\r\nexport interface ITooltipTableRowData {\r\n [key: string]: any; // Allow dynamic keys for row data\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 static readonly SERVER_ERROR_MSG = \"Something went wrong! Please try again\";\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","export class AnnaApplicationConstants {\r\n static readonly PayForPerformanceEasyFilter = \"PoD\";\r\n static readonly AnnaOrderEntryEasyFilter = \"ANNA ORDER ENTRY\";\r\n}\r\n","/* eslint-disable max-len */\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-buyer-approval-icon-template/anna-buyer-approval-icon-template.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-circular-progress/anna-circular-progress.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-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-licensing-table/anna-licensing-table.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-no-data/anna-no-data.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-spinner-loader/anna-spinner-loader.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-filter.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-generic-table.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-generic-tooltip-html.services\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-global-config.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\nexport * from \"./lib/anna-core-shared-lib/services/anna-regex-patterns.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-sort.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-spinner-loader.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-licensing-table.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-sort.model\";\r\nexport * from \"./lib/anna-core-shared-lib/models/anna-tooltip.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/annaConvertArrayToCommaSeperatedValue.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe\";\r\n\r\n// directives\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\nexport * from \"./lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.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-core-shared-lib/constants/anna-application.constants\";\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-slider-filter/anna-column-slider-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-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\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AnnaSpinnerLoaderService","i2","customParseFormat","i1.AnnaDateTimeFormatService","i1","i2.AnnaDateTimeFormatService","i3.AnnaGlobalConfigService","i4","CustomParseFormat","i2.AnnaSortService","i1.AnnaSortService","i2.AnnaFilterService","i3","i3.AnnaFilterService","i1.AnnaFilterService","i5","i6","i3.AnnaSortService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"annalib-anna-core.mjs","sources":["../../../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-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-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-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-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-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-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-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/components/anna-licensing-table/anna-licensing-table.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-licensing-table/anna-licensing-table.component.html","../../../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/services/anna-spinner-loader.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-spinner-loader/anna-spinner-loader.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-spinner-loader/anna-spinner-loader.component.html","../../../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/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.ts","../../../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/annaConvertArrayToCommaSeperatedValue.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.ts","../../../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/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-core-shared-lib/models/anna-sort.model.ts","../../../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/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-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-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-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-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.module.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-circular-progress/anna-circular-progress.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-circular-progress/anna-circular-progress.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-generic-table.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-generic-tooltip-html.services.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/services/anna-regex-patterns.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-licensing-table.model.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/lib/anna-core-shared-lib/constants/anna-application.constants.ts","../../../projects/anna-core/src/public-api.ts","../../../projects/anna-core/src/annalib-anna-core.ts"],"sourcesContent":["import { NgTemplateOutlet } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"anna-core-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 {}\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 } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"anna-core-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 {}\r\n","<i class=\"mdi mdi-file-remove-outline\"></i>\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","import { NgTemplateOutlet } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"anna-core-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 {}\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 } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"anna-core-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 {}\r\n","<i class=\"mdi mdi-bell\"></i>\r\n","import { NgTemplateOutlet } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"anna-core-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 {\r\n @Input() isTitle: boolean;\r\n @Input() color: string;\r\n @Input() width: string;\r\n @Input() height: string;\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 { NgTemplateOutlet } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"anna-core-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 {}\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 { NgIf } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \"@angular/core\";\r\n\r\nimport { GtColumnIconEmittedData } from \"../../models/anna-generic-data-type.model\";\r\nimport { IconToShow } from \"../../models/anna-non-editable-gt-models\";\r\n// eslint-disable-next-line max-len\r\nimport { AnnaBuyerApprovalIconTemplateComponent } from \"../anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component\";\r\n// eslint-disable-next-line max-len\r\nimport { AnnaDeletedOrderIconTemplateComponent } from \"../anna-deleted-order-icon-template/anna-deleted-order-icon-template.component\";\r\nimport { AnnaEstIconTemplateComponent } from \"../anna-est-icon-template/anna-est-icon-template.component\";\r\nimport { AnnaLiveIconTemplateComponent } from \"../anna-live-icon-template/anna-live-icon-template.component\";\r\nimport { AnnaNotifyIconTemplateComponent } from \"../anna-notify-icon-template/anna-notify-icon-template.component\";\r\n// eslint-disable-next-line max-len\r\nimport { AnnaPayForPerformanceIconTemplateComponent } from \"../anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component\";\r\n// eslint-disable-next-line max-len\r\nimport { AnnaRejectedIconTemplateComponent } from \"../anna-rejected-icon-template/anna-rejected-icon-template.component\";\r\n\r\n@Component({\r\n selector: \"anna-core-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 AnnaEstIconTemplateComponent,\r\n ],\r\n})\r\nexport class AnnaIconColumnComponent {\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() columnIconClicked = new EventEmitter<GtColumnIconEmittedData>();\r\n\r\n svgIconClicked(rowData: any, key: string) {\r\n this.columnIconClicked.emit({ data: rowData, key });\r\n }\r\n}\r\n","<span *ngIf=\"iconToShow === 'PAY_FOR_PERFORMANCE_ACTIVE'\">\r\n <anna-core-pay-for-performance-icon-template\r\n [color]=\"PfpIconActiveColor\"\r\n [width]=\"'12px'\"\r\n [height]=\"'12px'\"\r\n >\r\n </anna-core-pay-for-performance-icon-template>\r\n</span>\r\n\r\n<anna-core-deleted-order-icon-template *ngIf=\"iconToShow === 'DELETED_ORDER'\"> </anna-core-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\r\n<i\r\n *ngIf=\"iconToShow === 'AUTOMATED'\"\r\n class=\"anna-automation-activated-icon mdi mdi-cog-refresh\"\r\n></i>\r\n\r\n<i\r\n *ngIf=\"iconToShow === 'WARNING_ICON'\"\r\n class=\"mdi mdi-alert\"\r\n></i>\r\n\r\n<i\r\n *ngIf=\"iconToShow === 'INFORMATION_OUTLINE_ICON'\"\r\n class=\"mdi mdi-information-outline\"\r\n></i>\r\n\r\n<i\r\n *ngIf=\"iconToShow === 'CANCEL_ICON'\"\r\n class=\"mdi mdi-cancel\"\r\n></i>\r\n\r\n<i\r\n *ngIf=\"iconToShow === 'ALPHA_B_CIRCLE'\"\r\n class=\"mdi mdi-alpha-b-circle-outline\"\r\n></i>\r\n<i\r\n *ngIf=\"iconToShow === 'ALPHA_E_CIRCLE'\"\r\n class=\"mdi mdi-alpha-r-circle-outline\"\r\n></i>\r\n<i\r\n *ngIf=\"iconToShow === 'ALPHA_A_CIRCLE'\"\r\n class=\"mdi mdi-alpha-a-circle\"\r\n></i>\r\n<!-- <i\r\n *ngIf=\"iconToShow === 'ALPHA_R_CIRCLE'\"\r\n class=\"mdi mdi-alpha-r-circle-outline\"\r\n></i> -->\r\n\r\n<anna-core-anna-est-icon-template *ngIf=\"iconToShow === 'ALPHA_R_CIRCLE'\"></anna-core-anna-est-icon-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { FeatureDetails, LicensingPlan } from '../../models/anna-licensing-table.model';\r\n\r\n@Component({\r\n selector: 'anna-core-licensing-table',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './anna-licensing-table.component.html',\r\n styleUrls: ['./anna-licensing-table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaLicensingTableComponent {\r\n @Input() plans: LicensingPlan[];\r\n @Input() isEditMode: boolean = false;\r\n @Output() specificationChanged = new EventEmitter<any>();\r\n\r\n onValueChange(updatedValue: any, featureDetails: FeatureDetails) {\r\n this.specificationChanged.emit({updatedValue, featureDetails});\r\n }\r\n}\r\n","<table class=\"header-section\">\r\n <thead>\r\n <tr>\r\n <th>FEATURE</th>\r\n <th *ngFor=\"let plan of plans\">\r\n {{ plan?.PlanName }}\r\n <p *ngIf=\"plans.length === 1 && !isEditMode\">Current plan</p>\r\n </th>\r\n </tr>\r\n </thead>\r\n</table>\r\n<div class=\"scrollable-tbody\">\r\n <table>\r\n <tbody>\r\n <tr *ngFor=\"let feature of plans[0]?.FeatureDetails; let featureIndex = index\">\r\n <td>\r\n <strong>{{ feature.FeatureName }}</strong> {{ feature.FeatureDescription }}\r\n </td>\r\n <td *ngFor=\"let plan of plans; let planIndex = index\">\r\n <ng-container *ngIf=\"plan.FeatureDetails[featureIndex] as featureDetails\">\r\n <i\r\n *ngIf=\"featureDetails.IsEnabled && !featureDetails.Specification.length\"\r\n class=\"mdi mdi-checkbox-marked-circle\"\r\n ></i>\r\n <i\r\n *ngIf=\"!featureDetails.IsEnabled\"\r\n class=\"mdi mdi-close\"\r\n ></i>\r\n <ng-container *ngIf=\"featureDetails.Specification.length > 0\">\r\n <ng-container *ngIf=\"featureDetails.Specification[0].JsonType === 'OrderCount'\">\r\n <div *ngIf=\"isEditMode\">\r\n <input\r\n type=\"number\"\r\n [ngModel]=\"featureDetails.Specification[0].Json.TotalOrders\"\r\n (ngModelChange)=\"\r\n onValueChange($event, featureDetails)\r\n \"\r\n min=\"featureDetails.Specification[0].Json.TotalOrders\"\r\n />\r\n Orders\r\n </div>\r\n <div *ngIf=\"!isEditMode\">\r\n <p>\r\n {{ featureDetails.Specification[0].Json.TotalOrders }} Orders\r\n <span *ngIf=\"featureDetails.Specification[0].Json.RemainingOrders\"\r\n >|\r\n {{ featureDetails.Specification[0].Json.RemainingOrders }} Remaining</span\r\n >\r\n </p>\r\n <span *ngIf=\"featureDetails.Specification[0].IsCustomized\">(Customized)</span>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from \"@angular/core\";\r\n\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 { Injectable } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaSpinnerLoaderService {\r\n private loaderSubject = new Subject<boolean>();\r\n loaderState = this.loaderSubject.asObservable();\r\n\r\n start() {\r\n this.loaderSubject.next(true);\r\n }\r\n \r\n stop() {\r\n this.loaderSubject.next(false);\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from \"@angular/core\";\r\n\r\nimport { AnnaSpinnerLoaderService } from \"../../services/anna-spinner-loader.service\";\r\n\r\n@Component({\r\n selector: \"anna-core-spinner-loader\",\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: \"./anna-spinner-loader.component.html\",\r\n styleUrls: [\"./anna-spinner-loader.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AnnaSpinnerLoaderComponent implements OnInit {\r\n loading = false;\r\n\r\n constructor(\r\n private loaderService: AnnaSpinnerLoaderService,\r\n private cdref: ChangeDetectorRef,\r\n ) {}\r\n \r\n ngOnInit() {\r\n this.loaderService.loaderState.subscribe((state) => {\r\n this.loading = state;\r\n this.cdref.markForCheck();\r\n });\r\n }\r\n}\r\n","<div\r\n *ngIf=\"loading\"\r\n class=\"loading\"\r\n>\r\n <div class=\"app-spinner-container\">\r\n <div class=\"ngx-foreground-spinner\">\r\n <div class=\"sk-three-strings\">\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Directive, ElementRef, HostListener, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[annaCoreDigitOnly]\",\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 = Number.isNaN(maybeMin) ? -Infinity : maybeMin;\r\n }\r\n\r\n if (changes.max) {\r\n const maybeMax = Number(this.max);\r\n this.max = Number.isNaN(maybeMax) ? Infinity : maybeMax;\r\n }\r\n }\r\n\r\n @HostListener(\"beforeinput\", [\"$event\"])\r\n onBeforeInput(e: InputEvent): any {\r\n if (Number.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 }\r\n this.hasDecimalPoint = newValue.indexOf(this.decimalSeparator) > -1;\r\n return; // Allow: only one decimal point\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 }\r\n this.hasNegativeSign = newValue.split(this.negativeSign).length > -1;\r\n return;\r\n }\r\n\r\n // Ensure that it is a number and stop the keypress\r\n if (e.key === \" \" || Number.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,\r\n // 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;\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 }\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 }\r\n return string.indexOf(this.decimalSeparator) < 0;\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;\r\n const { selectionEnd } = this.inputElement;\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 { Directive, ElementRef, HostListener, Input, OnInit, Renderer2 } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[annaCoreFixedRowsInPopupTable]\",\r\n standalone: true,\r\n})\r\nexport class FixedRowsPopupTableDirective implements OnInit {\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 const totalPopupTableHeight =\r\n this.maxRowsRenderedWithoutScrollForPopup * this.popupRowHeight + this.popupHeaderHeight;\r\n\r\n const 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, \"max-height\", `calc(${tableHeightForPopup}px)`);\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[annaCoreShowEllipsisTextOnHover]\",\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 const 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\r\n // 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 const elementRect = domElement.getBoundingClientRect();\r\n const childRect = domElement.children[0].getBoundingClientRect();\r\n\r\n const paddingOnRight = window.getComputedStyle(domElement).paddingRight;\r\n const padding = +(paddingOnRight.endsWith(\"px\") ? paddingOnRight.slice(0, -2) : paddingOnRight);\r\n\r\n // If overflow happens then Child element's right side position\r\n // 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: \"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 { 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","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 transform(value: any, format: string): any {\r\n dayjs.extend(customParseFormat);\r\n const 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: \"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 const lowercaseSearchText = 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 keyName.some((key: any) => {\r\n isFound = items.filter((item) => item[key].toString().toLowerCase().includes(lowercaseSearchText));\r\n if (isFound?.length) {\r\n isFoundAtleastOnce = true;\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n return isFoundAtleastOnce ? isFound : [];\r\n }\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) =>\r\n n ? n.toString().toLowerCase().includes(lowercaseSearchText) : false,\r\n ).length > 0,\r\n );\r\n else if (keyName === \"NoKey\") {\r\n searchResult = items.filter((item) => item.toString().toLowerCase().includes(lowercaseSearchText));\r\n } else {\r\n searchResult = items.filter((item) =>\r\n item[keyName] ? item[keyName].toString().toLowerCase().includes(lowercaseSearchText) : false,\r\n );\r\n }\r\n return searchResult;\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 return value;\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 { 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","// Angular import statements\r\nimport { Injectable } from \"@angular/core\";\r\nimport { NgbDate } from \"@ng-bootstrap/ng-bootstrap\";\r\n// Third party import statements\r\nimport dayjs, { UnitType } 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\"), 10),\r\n month: parseInt(dayjs(date, \"MM/DD/YYYY\").format(\"M\"), 10),\r\n day: parseInt(dayjs(date, \"MM/DD/YYYY\").format(\"D\"), 10),\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\"), 10),\r\n month: parseInt(dayjs(date, parseFormat).format(\"M\"), 10),\r\n day: parseInt(dayjs(date, parseFormat).format(\"D\"), 10),\r\n };\r\n }\r\n\r\n public static formatToTwelveHrs(time: any, callRemoveZero: boolean) {\r\n let timeToBeFormatted = time;\r\n if (timeToBeFormatted.endsWith(\"A\") || timeToBeFormatted.endsWith(\"P\")) {\r\n timeToBeFormatted = timeToBeFormatted.substring(0, timeToBeFormatted.length - 1);\r\n }\r\n\r\n const tmp = timeToBeFormatted.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 const 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 const 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 const 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 const format = \"MM/DD/YYYY HH:mm:ss\";\r\n const dayjsDateForA = dayjs(`01/01/2001 ${a}`, format);\r\n const dayjsDateForB = dayjs(`01/01/2001 ${b}`, format);\r\n\r\n let results = this.compareTime(dayjsDateForA, dayjsDateForB, \"hour\", true);\r\n\r\n if (results === 0) {\r\n results = this.compareTime(dayjsDateForA, dayjsDateForB, \"minute\", true);\r\n }\r\n\r\n if (results === 0) {\r\n results = this.compareTime(dayjsDateForA, dayjsDateForB, \"second\", true);\r\n }\r\n\r\n return results;\r\n }\r\n\r\n sortByTimeDescending(a: any, b: any) {\r\n const format = \"MM/DD/YYYY HH:mm:ss\";\r\n const dayjsDateForA = dayjs(`01/01/2001 ${a}`, format);\r\n const dayjsDateForB = dayjs(`01/01/2001 ${b}`, format);\r\n\r\n let results = this.compareTime(dayjsDateForA, dayjsDateForB, \"hour\", false);\r\n\r\n if (results === 0) {\r\n results = this.compareTime(dayjsDateForA, dayjsDateForB, \"minute\", false);\r\n }\r\n\r\n if (results === 0) {\r\n results = this.compareTime(dayjsDateForA, dayjsDateForB, \"second\", false);\r\n }\r\n\r\n return results;\r\n }\r\n\r\n compareTime(a: dayjs.Dayjs, b: dayjs.Dayjs, unit: UnitType, isAsc: boolean) {\r\n if (a.get(unit) < b.get(unit)) {\r\n return isAsc ? -1 : 1;\r\n } else if (a.get(unit) > b.get(unit)) {\r\n return isAsc ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n\r\n convertNgbDateToMoment(ngbDate: NgbDate | NgbDateType): string {\r\n const 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 const time = dayjs(date || `01/01/2000 ${value}`).format(\"MM/DD/YYYY HH:mm:ss\");\r\n return time[14] === \"0\" && time[15] === \"0\"\r\n ? dayjs(time, [\"MM/DD/YYYY HH:mm:ss\"]).format(\"hA\").slice(0, -1)\r\n : dayjs(time, [\"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 const time = dayjs(date || `01/01/2000 ${timeValue}`).format(\"MM/DD/YYYY HH:mm:ss\");\r\n // check if min==00\r\n return time[14] === \"0\" && time[15] === \"0\"\r\n ? dayjs(time, [\"MM/DD/YYYY HH:mm:ss\"]).format(\"hA\").slice(0, -1)\r\n : dayjs(time, [\"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;\r\n let date;\r\n let time;\r\n\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 += \"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 let updatedA = a;\r\n let updatedB = b;\r\n if (typeof a === \"string\" && typeof b === \"string\") {\r\n updatedA = a === \"-\" ? \"0\" : a.toLowerCase();\r\n updatedB = b === \"-\" ? \"0\" : b.toLowerCase();\r\n }\r\n return (updatedA < updatedB ? -1 : 1) * (isAsc ? 1 : -1);\r\n }\r\n\r\n sortDataByBroadcastTimeAsc(firstParamTime: string, secondParamTime: string, broadcastTime: string) {\r\n const format = \"HH:mm:ss\";\r\n\r\n let a = dayjs(firstParamTime, format);\r\n let b = dayjs(secondParamTime, format);\r\n\r\n const 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 if (a.isBefore(b)) {\r\n return -1;\r\n } else if (a.isAfter(b)) {\r\n return 1;\r\n }\r\n\r\n return 0;\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 getBroadcastWeek(startDate: any, format: string = \"MM/DD/YYYY\") {\r\n const dayjsDate = dayjs(startDate, format);\r\n const date = dayjsDate.clone();\r\n const day = date.day();\r\n\r\n // Find the closest Monday <= the date\r\n const start = dayjs(date).subtract((day + 6) % 7, \"day\");\r\n\r\n // Find the closest Sunday >= the date\r\n const end = dayjs(date).add((7 - day) % 7, \"day\");\r\n\r\n // console.log({weekStart: start , weekEnd: end})\r\n return { start, end };\r\n }\r\n}\r\n","// Angular import statements\r\nimport { NgClass, NgIf, TitleCasePipe } from \"@angular/common\";\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\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NgbDate, NgbDateStruct, NgbInputDatepicker } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { Placement } from \"@ng-bootstrap/ng-bootstrap/util/positioning\";\r\nimport dayjs from \"dayjs\";\r\n\r\nimport { AnnaDateTimeFormatService } from \"../../../anna-core-shared-lib/services/anna-date-time-format.service\";\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\", \"bottom-start\", \"left\", \"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) => false;\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 const 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 const 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 }\r\n dayJsStartDate = dayJsStartDate.add(1, \"day\");\r\n }\r\n\r\n return false;\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 const 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 // eslint-disable-next-line max-len\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 // eslint-disable-next-line max-len\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 = null;\r\n this.fromDate = null;\r\n this.selectedToDate = null;\r\n 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 class=\"padding-class\">\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","import { Injectable } from \"@angular/core\";\r\n\r\nimport {\r\n IAngular2MultiSelectSettings,\r\n IConfirmationPopupConfig,\r\n ICustomMultiSelect,\r\n ICustomSingleSelect,\r\n INgbDatePickerSettings,\r\n INgSelectSettings,\r\n INgxAsideSettings,\r\n INgxInfiniteScrollSettings,\r\n INgxSkeletonLoaderSettings,\r\n IRadioButtonComponentConfig,\r\n IWeekCalendar,\r\n} from \"../models/anna-global-dropdown-config.model\";\r\nimport { IGtGeneralConfig, IGtHeaderConfig } 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, NgClass, NgIf } from \"@angular/common\";\r\nimport { AfterViewInit, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n// Third party import statements\r\nimport {\r\n NgbCalendar,\r\n NgbDate,\r\n NgbDatepicker,\r\n NgbDatepickerConfig,\r\n NgbDateStruct,\r\n NgbInputDatepicker,\r\n} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\n\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\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() selectedFromDate: NgbDateStruct;\r\n @Input() selectedEndDate: NgbDateStruct;\r\n @Input() 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() config: IWeekCalendar;\r\n @Output() applyWeekCalendarChanges = new EventEmitter();\r\n @Output() 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 if (this.fromDate) {\r\n this.selectWeek(this.fromDate);\r\n }\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 }) => this.checkIfDateIsDisabled(date);\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 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(\"MM/DD/YYYY\");\r\n }\r\n return converted;\r\n }\r\n\r\n function checkIfYearIsBroadcastLeapYear() {\r\n const 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 const broadcastNumberOfDays = weekDay + noOfDays;\r\n const 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 const backDatedPeriod = JSON.parse(localStorage.getItem(\"userDetails\") || \"{}\").locking_period_days;\r\n if (backDatedPeriod < 0) {\r\n const 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 const previousMonth = this.calendar.getPrev(this.today, \"m\", this.config.numberOfMonthsToEnableInPast);\r\n const 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 const dayjsStartDate = dayjs(\r\n this.annaDateTimeFormatService.convertNgbDateToMoment(this.fromDate),\r\n \"MM/DD/YYYY\",\r\n );\r\n const 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 const newDateObject = new Date(ngbDate.year, ngbDate.month - 1, ngbDate.day - 1);\r\n 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 const dates = [];\r\n let week = [];\r\n\r\n let startDate = NgbDate.from(this.fromDate);\r\n const endDate = NgbDate.from(this.toDate);\r\n\r\n week.push(startDate);\r\n while (endDate != null && !startDate.equals(endDate)) {\r\n const 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\r\n dates.forEach((date) => {\r\n this.weekNumbers.push(` Week ${this.calendar.getWeekNumber(date, this.config.firstDayOfWeek)}`);\r\n const formattedDates = this.formatter(date[0], date[6]);\r\n const dateObjects = {\r\n startDate: formattedDates.formattedStartDate,\r\n endDate: formattedDates.formattedEndDate,\r\n };\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 const pipe = new DatePipe(\"en-US\");\r\n return (fromDate: NgbDate, toDate: NgbDate) => {\r\n const fromDateObject = new Date(fromDate.year, fromDate.month - 1, fromDate.day);\r\n const toDateObject = new Date(toDate.year, toDate.month - 1, toDate.day);\r\n this.formattedStartDate = pipe.transform(fromDateObject, this.config.dateFormatForRequest);\r\n this.formattedEndDate = pipe.transform(toDateObject, this.config.dateFormatForRequest);\r\n\r\n this.dateToDisplay = `${pipe.transform(\r\n fromDateObject,\r\n this.config.dateFormatToDisplay,\r\n )} to ${pipe.transform(toDateObject, this.config.dateFormatToDisplay)}`;\r\n return this;\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 if (this.weekNumbers.length > (this.config.maxWeeksToShowWithRemainingCount ?? 0)) {\r\n // Display for Multiple Weeks\r\n const weekDisplay = [];\r\n for (let i = 0; i < (this.config.maxWeeksToShowWithRemainingCount ?? 0); i++) {\r\n weekDisplay.push(this.weekNumbers.shift());\r\n }\r\n const remainingWeeks = this.weekNumbers.length;\r\n this.weekNumbers = [];\r\n this.weekNumbers.push(`${weekDisplay} +${remainingWeeks}`);\r\n }\r\n }\r\n\r\n constructStartDate(date: Date) {\r\n const { firstDayOfWeek } = this.config;\r\n return (constructDate: any) => {\r\n const 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 const { firstDayOfWeek } = this.config;\r\n return (constructDate: any) => {\r\n const 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 (number: number): NgbDate | null => {\r\n const day = date.getDate() + number;\r\n const dateObject = new Date(date.getFullYear(), date.getMonth(), day);\r\n\r\n const 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 const 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 const dates = {} as WeekObject;\r\n const 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 const 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 d-none\"\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 [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 class=\"weeknumbers-label\"> {{ 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 apply-btn\"\r\n (click)=\"applyChanges(); closeDatepicker(datepicker)\"\r\n >\r\n Apply\r\n </button>\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right cancel-btn\"\r\n (click)=\"revertDates(); closeDatepicker(datepicker)\"\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","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","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 showSplitedOptions?: boolean;\r\n splitDelimiter?: string;\r\n\r\n constructor(key: string, value: string, sort: boolean, filter: boolean, showSplitedOptions: boolean = false, splitDelimiter: string = \", \") {\r\n this.key = key;\r\n this.label = value;\r\n this.isSortRequired = sort;\r\n this.isFilterRequired = filter;\r\n this.showSplitedOptions = showSplitedOptions;\r\n this.splitDelimiter = splitDelimiter;\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 { cloneDeep } from \"lodash-es\";\r\nimport { Subject } from \"rxjs\";\r\n\r\nimport { SortType } from \"../models/anna-sort.model\";\r\nimport { AnnaDateTimeFormatService } from \"./anna-date-time-format.service\";\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 let dataToBeSorted = data;\r\n if (this.dateSet.has(key)) {\r\n dataToBeSorted.sort((a, b) => this.annaDateTimeFormatService.compareDate(a[key], b[key], isAsc));\r\n } else if (key === \"AirDateAndTime\" || key === \"Date\") {\r\n dataToBeSorted.sort((a, b) => {\r\n if (a[key] === \"-\") {\r\n return 1;\r\n }\r\n\r\n if (b[key] === \"-\") {\r\n return -1;\r\n }\r\n const first = this.annaDateTimeFormatService.formatDateAndHHMMATimeToStandardFormat(a[key]);\r\n const second = this.annaDateTimeFormatService.formatDateAndHHMMATimeToStandardFormat(b[key]);\r\n const compareDate = this.annaDateTimeFormatService.compareDate(first, second, isAsc);\r\n return compareDate;\r\n });\r\n } else if (key === \"startEndTime\" || key === \"TimeBand\") {\r\n dataToBeSorted.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 const 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 const dataWithoutEmptyOrHyphenValues = dataToBeSorted.filter((n) => n[key] !== \"-\");\r\n const rowsWithHyphenOrZeroValues = dataToBeSorted.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 dataToBeSorted = isAsc\r\n ? [...rowsWithHyphenOrZeroValues, ...dataWithoutEmptyOrHyphenValues]\r\n : [...dataWithoutEmptyOrHyphenValues, ...rowsWithHyphenOrZeroValues];\r\n }\r\n\r\n return dataToBeSorted;\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 const keys = key.split(\"_\");\r\n const 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 const aInventoryCodeWeekWiseKey = Object.keys(a.WeekWiseInventoryCodeData).filter(\r\n (invKey) => invKey.split(\"_\")[1] === weekNumber,\r\n );\r\n const bInventoryCodeWeekWiseKey = Object.keys(b.WeekWiseInventoryCodeData).filter(\r\n (invKey) => invKey.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 const 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 let sortedTableData = tableData;\r\n this.columnSortState.forEach((value, key) => {\r\n if (value === \"ASC\") {\r\n sortedTableData = 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 sortedTableData = 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 sortedTableData;\r\n }\r\n\r\n applySorting(key: string, tempSortOrder: SortType, tableData: any[], isLurAndCsrComponent: boolean) {\r\n let sortedTableData = tableData;\r\n if (tempSortOrder === \"ASC\") {\r\n sortedTableData = 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 sortedTableData = 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 sortedTableData = cloneDeep(this.noSortingAppliedData);\r\n }\r\n\r\n return sortedTableData;\r\n }\r\n}\r\n","// Angular import statements\r\nimport { ElementRef, Injectable, QueryList } from \"@angular/core\";\r\nimport { Options } from \"@angular-slider/ngx-slider\";\r\nimport dayjs, { Dayjs } from \"dayjs\";\r\nimport CustomParseFormat from \"dayjs/plugin/customParseFormat\";\r\nimport isBetween from \"dayjs/plugin/isBetween\";\r\nimport minMax from \"dayjs/plugin/minMax\";\r\n// Third party import statements\r\nimport { cloneDeep, isEqual, map, max, min, sortBy, uniq } from \"lodash-es\";\r\n\r\nimport { IGtTableHeader, IHeaderInfo } from \"../models/anna-non-editable-gt-models\";\r\nimport { SortType, SortTypeEnum } from \"../models/anna-sort.model\";\r\nimport { TooltipModel } from \"../models/anna-tooltip.model\";\r\n// User defined import statements\r\nimport { AnnaDateTimeFormatService, NgbDateType } from \"./anna-date-time-format.service\";\r\nimport { AnnaSortService } from \"./anna-sort.service\";\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\r\n SPLITED_CHECKBOX_FILTER_KEY = \"_SplitedCheckBoxOptions\";\r\n DEFAULT_SPLIT_SEPARATOR = \", \";\r\n\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 nullToBeFormatedIntoString = \"-\";\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 \"averageRateThisYear\",\r\n \"averageRateLastYear\",\r\n \"averageCPP\",\r\n \"averageCPM\",\r\n \"IMPSDiff\",\r\n \"RTGDiff\",\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 \"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 \"audienceDeficitValue\",\r\n \"userADUValue\",\r\n \"userChangesValue\",\r\n \"buyerChangesValue\",\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 \"WeeklyAUR\",\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 \"projectedCPM\",\r\n \"projectedCPP\",\r\n \"bookedEqCpmValue\",\r\n \"bookedEqCppValue\",\r\n \"Rating\",\r\n \"ActualRate\",\r\n \"Impressions\",\r\n \"AURKeyLY\",\r\n \"SellOutPercentLY\",\r\n \"AURKeyTY\",\r\n \"SellOutPercentTY\",\r\n \"offerCount\",\r\n \"offeredMGsValue\",\r\n \"outstandingSpotsValue\",\r\n \"offeredADUsValue\",\r\n \"uDProjectionValue\",\r\n \"totalBookedGrp\",\r\n \"totalBookedImps\",\r\n \"bookedGrpToDate\",\r\n \"bookedImpsToDate\",\r\n \"deliveryThresholdPercentage\",\r\n \"goalGrpToDate\",\r\n \"goalImpsToDate\",\r\n \"postedGrpToDate\",\r\n \"postedImpsToDate\",\r\n \"deliveredPercentage\",\r\n \"udGrpToDate\",\r\n \"udImpsToDate\",\r\n \"odGrpToDate\",\r\n \"odImpsToDate\",\r\n \"scheduledADUs\",\r\n \"postedADUs\",\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 \"scheduledDate\",\r\n \"timeoutDate\",\r\n \"ViolatingSpotDate\",\r\n \"ViolatedSpotDate\",\r\n \"ActualWeekStartDate\",\r\n \"LastFetchedDate\",\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 \"StartTime\",\r\n \"EndTime\",\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 const filteredData = data.filter((obj) => ![\"\", \"-\", null].includes(obj[key]));\r\n const values = filteredData.map((x) => x[key]);\r\n const valueToReturn = isMin ? min(values) : max(values);\r\n return valueToReturn;\r\n }\r\n\r\n returnMinAndMaxDate(data: any[], key: string) {\r\n const filteredData = data.filter((obj) => ![\"\", \"-\", null].includes(obj[key]));\r\n const DateArr = filteredData.map((obj) => dayjs(obj[key]));\r\n const minDate = dayjs.min(DateArr);\r\n const 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 const set: Set<string> = new Set(this.appliedFiltersArray);\r\n const isSortMapForHeader0Active = sortMap.has(header[0]) && sortMap.get(header[0]) !== SortTypeEnum.DEFAULT;\r\n const 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 const 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 const isNegVal = data < 0;\r\n const val = `${(Math.abs(data) / 1000).toFixed(1)}k%`;\r\n return isNegVal ? `-${val}` : val;\r\n }\r\n const isNegVal = data < 0;\r\n const isWholeNum = parseInt(data.toString(), 10) === data;\r\n const val = isWholeNum ? Math.abs(data).toString() : Math.abs(data).toFixed(1);\r\n return isNegVal ? `-${val}%` : `${val}%`;\r\n };\r\n\r\n currencyTranslateFunction = (data: number): string => {\r\n if (Math.abs(data) >= 1000) {\r\n const isNegVal = data < 0;\r\n const val = `$${(Math.abs(data) / 1000).toFixed(1)}k`;\r\n return isNegVal ? `-${val}` : val;\r\n }\r\n const isNegVal = data < 0;\r\n const isWholeNum = parseInt(data.toString(), 10) === data;\r\n const val = isWholeNum ? Math.abs(data).toString() : Math.abs(data).toFixed(1);\r\n return isNegVal ? `-$${val}` : `$${val}`;\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 const uniqueDates = uniq(data.map((u) => u.date));\r\n const 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 let isDataFiltered = isFiltered;\r\n if (this.selectedRadio === \"user\" && !this.tooltipMap.has(\"user\")) {\r\n isDataFiltered = 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 isDataFiltered =\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 isDataFiltered =\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 isDataFiltered =\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 isDataFiltered = true;\r\n }\r\n if (!isDataFiltered && 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 this.selectedRadio === \"ActualWeekStartDate\" ||\r\n this.selectedRadio === \"scheduledDate\" ||\r\n this.selectedRadio === \"LastFetchedDate\"\r\n ) {\r\n isDataFiltered =\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 (!isDataFiltered && this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n this.tooltipSelectedMap.delete(this.selectedRadio);\r\n }\r\n } else {\r\n const totalOptionsCount = this.tooltipMap.get(this.selectedRadio).filter((x: any) => !x.isHidden).length;\r\n const selectedOptionsCount = this.tooltipMap\r\n .get(this.selectedRadio)\r\n .filter((x: any) => !x.isHidden && x.isSelected).length;\r\n isDataFiltered = selectedOptionsCount > 0 && selectedOptionsCount !== totalOptionsCount;\r\n }\r\n return isDataFiltered;\r\n }\r\n\r\n removeOrChangeLatestFilterIndex(isFiltered: boolean) {\r\n const 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 let sortedData = originalData;\r\n if (!this.annaSortService?.columnSortState) return sortedData;\r\n this.annaSortService.columnSortState.forEach((value, key) => {\r\n if (value === \"ASC\") {\r\n sortedData = cloneDeep(\r\n this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(true, originalData, key),\r\n );\r\n } else if (value === \"DESC\") {\r\n sortedData = cloneDeep(\r\n this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(false, originalData, key),\r\n );\r\n }\r\n });\r\n\r\n return sortedData;\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: string) => {\r\n const filterSplitedValues: boolean = key.includes(this.SPLITED_CHECKBOX_FILTER_KEY);\r\n if (filterSplitedValues) {\r\n // eslint-disable-next-line no-param-reassign\r\n key = key.split(this.SPLITED_CHECKBOX_FILTER_KEY)[0];\r\n }\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 === \"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 === \"ActualWeekStartDate\" ||\r\n key === \"ViolatedSpotDate\" ||\r\n key === \"ViolatingSpotDate\" ||\r\n key === \"scheduledDate\" ||\r\n key === \"LastFetchedDate\"\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 === \"StartTime\" ||\r\n key === \"EndTime\" ||\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) =>\r\n filterSplitedValues ? value.find((val: any) => u[key].includes(val)) : value.includes(u[key]),\r\n );\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 const isDateBetweenTheSelectedRange = dayjs(order[key]).isBetween(range.minSelectedDate, range.maxSelectedDate);\r\n const isDateSameAsTheMinSelectedDate = dayjs(order[key]).isSame(range.minSelectedDate);\r\n const 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 const format = \"HH:mm:ss\";\r\n const selectedStartDate = dayjs(selectedData.startTime, format);\r\n const selectedEndDate = dayjs(selectedData.endTime, format);\r\n const startTime = dayjs(obj.startTime, format);\r\n const endTime = dayjs(obj.endTime, format);\r\n\r\n const isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedStartDate);\r\n const isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedStartDate, selectedEndDate);\r\n const isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedEndDate);\r\n const 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 const format = \"MM/DD/YYYY HH:mm:ss\";\r\n const selectedFromTime = dayjs(`01/01/2001 ${selectedData.fromTime}`, format);\r\n const selectedToTime = dayjs(`01/01/2001 ${selectedData.toTime}`, format);\r\n const 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 const dayjsTime = dayjs(`01/01/2001 ${objTime}`, format);\r\n\r\n const isObjTimeSameAsSelectedFromTime = dayjsTime.isSame(selectedFromTime);\r\n const isObjTimeSameAsSelectedToTime = dayjsTime.isSame(selectedToTime);\r\n const 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 const format = \"MM/DD/YYYY HH:mm:ss\";\r\n const selectedFromTime = dayjs(`01/01/2001 ${selectedData.fromTime}`, format);\r\n const 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 const startTime = dayjs(`01/01/2001 ${obj[key][1]}`, format);\r\n const endTime = dayjs(`01/01/2001 ${obj[key][2]}`, format);\r\n\r\n const isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedFromTime);\r\n const isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedFromTime, selectedToTime);\r\n const isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedToTime);\r\n const isEndTimeBetweenSelectedStartAndEndTime = endTime.isBetween(selectedFromTime, selectedToTime);\r\n\r\n // previous condition to apply timband filtter\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 return (\r\n isStartTimeSameAsSelectedStartTime ||\r\n isStartTimeBetweenSelectedStartAndEndTime ||\r\n isEndTimeSameAsSelectedEndTime ||\r\n isEndTimeBetweenSelectedStartAndEndTime\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 const dayjsStartDate = dayjs(obj.startDate);\r\n const dayjsEndDate = dayjs(obj.endDate);\r\n\r\n const startDateIsBetweenSelDate = dayjsStartDate.isBetween(value.fromDate, value.toDate);\r\n const endDateIsBetweenSelDate = dayjsEndDate.isBetween(value.fromDate, value.toDate);\r\n\r\n const startDateIsSameAsSelStartDate = value.fromDate.isSame(dayjsStartDate);\r\n const 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 === \"ActualWeekStartDate\" ||\r\n key === \"timeoutDate\" ||\r\n key === \"scheduledDate\"\r\n ) {\r\n parsingFormat = \"MM/DD/YYYY\";\r\n const dateIsBetweenSelDate = dayjs(obj[key], parsingFormat).isBetween(\r\n value.minSelectedDate,\r\n value.maxSelectedDate,\r\n );\r\n\r\n const dateIsSameAsSelStartDate = dayjs(obj[key], parsingFormat).isSame(value.minSelectedDate);\r\n const dateIsSameAsSelEndDate = dayjs(obj[key], parsingFormat).isSame(value.maxSelectedDate);\r\n\r\n return dateIsBetweenSelDate || dateIsSameAsSelStartDate || dateIsSameAsSelEndDate;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public initializeTimeFilterData(clonedData: any[], key = \"startEndTime\") {\r\n const startTimeArr = map(clonedData, \"startTime\");\r\n const endTimeArr = map(clonedData, \"endTime\");\r\n\r\n startTimeArr.sort((a: any, b: any) => this.dateTimeFormatService.sortByTimeAscending(a, b));\r\n\r\n endTimeArr.sort((a: any, b: any) => this.dateTimeFormatService.sortByTimeDescending(a, b));\r\n\r\n const 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 const time = data.map((u) => u[headerName][0]);\r\n const uniqTime = uniq(time);\r\n return uniqTime.length === 0;\r\n }\r\n\r\n return !(uniq(data.map((u) => u[headerName])).length > 1);\r\n }\r\n\r\n getFilterOptionsData(data: any[], clonedData: any[], key?: string) {\r\n const appliedFilterSet = new Set(this.appliedFiltersArray);\r\n const keyToCheck = key || this.selectedRadio;\r\n if (appliedFilterSet.has(keyToCheck)) {\r\n return this.filterData(clonedData, keyToCheck);\r\n }\r\n return data;\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 const initialValueOfColumn = sortBy(clonedData.map((item) => item[this.selectedRadio]));\r\n const currentValueOfColumn = sortBy(\r\n this.applyFilter(clonedData, value).map((item) => item[this.selectedRadio]),\r\n );\r\n return !isEqual(initialValueOfColumn, currentValueOfColumn);\r\n }\r\n\r\n applyFilter(data: any[], value: any) {\r\n let filteredData = data;\r\n const 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 === \"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 === \"ActualWeekStartDate\" ||\r\n key === \"ViolatedSpotDate\" ||\r\n key === \"ViolatingSpotDate\" ||\r\n key === \"scheduledDate\" ||\r\n key === \"LastFetchedDate\"\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 === \"StartTime\" ||\r\n key === \"EndTime\" ||\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 const objVal = obj[key];\r\n const 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 const isDateSameAsStartOfTheRange = value.fromDate.isSame(objVal);\r\n const isDateSameAsEndOfTheRange = value.toDate.isSame(objVal);\r\n const 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 const 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 const 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 return 1;\r\n } else if (parseInt(value, 10) < 12) {\r\n return parseInt(value, 10) + 1;\r\n }\r\n\r\n return 1;\r\n }\r\n\r\n decrementHour(value: any) {\r\n if (value === \"\") {\r\n return 12;\r\n } else if (parseInt(value, 10) > 1) {\r\n return parseInt(value, 10) - 1;\r\n }\r\n return 12;\r\n }\r\n\r\n incrementMinute(value: any) {\r\n // increment to nearest proper interval(15,30,45)\r\n const minute = parseInt(value, 10);\r\n if (minute <= 14) {\r\n return \"15\";\r\n } else if (minute >= 15 && minute <= 29) {\r\n return \"30\";\r\n } else if (minute >= 30 && minute <= 44) {\r\n return \"45\";\r\n } else if (minute >= 45) {\r\n return \"00\";\r\n }\r\n return value;\r\n }\r\n\r\n decrementMinute(value: any) {\r\n const minute = parseInt(value, 10);\r\n if (minute > 0 && minute <= 15) {\r\n return \"00\";\r\n } else if (minute >= 16 && minute <= 30) {\r\n return \"15\";\r\n } else if (minute >= 31 && minute <= 45) {\r\n return \"30\";\r\n } else if (minute > 45 || minute === 0) {\r\n return \"45\";\r\n }\r\n return value;\r\n }\r\n\r\n // ========================================Checkbox method====================================================//\r\n\r\n disableActiveFilterClearButton() {\r\n const selectedFilterSet = new Set(this.appliedFiltersArray);\r\n\r\n const currentColumnSortFilter = this.getColumnSortStateForSelectedRadio();\r\n const 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 || SortTypeEnum.DEFAULT;\r\n return currentColumnSortFilter;\r\n }\r\n\r\n createListForCheckboxFilter(\r\n header: string,\r\n optionData: any[],\r\n showSplitedOptions: boolean = false,\r\n splitDelimiter: string = this.DEFAULT_SPLIT_SEPARATOR,\r\n ) {\r\n const tooltipOptions = this.getTooltipModelFromOptionData(optionData, header, showSplitedOptions, splitDelimiter);\r\n\r\n this.selectUnselectListCheckbox(tooltipOptions, header);\r\n this.formatNullOptionToSpecifiedString(tooltipOptions, this.nullToBeFormatedIntoString);\r\n\r\n return tooltipOptions;\r\n }\r\n\r\n getTooltipModelFromOptionData(\r\n optionData: any[],\r\n header: string,\r\n showSplitedOptions: boolean = false,\r\n splitDelimiter: string = this.DEFAULT_SPLIT_SEPARATOR,\r\n ) {\r\n let uniqOptionData = [];\r\n if (showSplitedOptions) {\r\n let splittedOptions: string[] = [];\r\n optionData.forEach((option) => {\r\n splittedOptions = [...splittedOptions, ...option[header].split(splitDelimiter)];\r\n });\r\n uniqOptionData = uniq(splittedOptions);\r\n } else {\r\n uniqOptionData = uniq(optionData.map((item) => item[header]));\r\n }\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 const tooltipSelectedMapWithOriginalKeys = new Map();\r\n this.tooltipSelectedMap.forEach((value, key) => {\r\n tooltipSelectedMapWithOriginalKeys.set(key.split(this.SPLITED_CHECKBOX_FILTER_KEY)[0], value);\r\n })\r\n\r\n if (tooltipSelectedMapWithOriginalKeys.has(header)) {\r\n const selectedValueSet = new Set(tooltipSelectedMapWithOriginalKeys.get(header));\r\n tooltipOptions.forEach((item) => {\r\n item.isSelected = selectedValueSet.has(item.value);\r\n });\r\n } else {\r\n tooltipOptions.forEach((item) => {\r\n item.isSelected = true;\r\n });\r\n }\r\n }\r\n\r\n formatNullOptionToSpecifiedString(tooltipOptions: TooltipModel[], formattedString: string) {\r\n const 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 const [selectedItems, unselectedItems] = this.getSelectedAndUnselectedItems(tooltipOptions);\r\n const sortedSelectedItems = sortBy(selectedItems, sortByString);\r\n const sortedUnselectedItems = sortBy(unselectedItems, sortByString);\r\n\r\n const clonedTooltipOptions = [...sortedSelectedItems, ...sortedUnselectedItems];\r\n const 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 ? 180 : 22.31 * 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 const 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 const 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 const 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 const selectedItems = tooltipOptions.filter((item) => item.isSelected);\r\n const 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 const 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 const 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 const currentColumnSortFilter = this.getColumnSortStateForSelectedRadio();\r\n\r\n const isSortChanged = tempSortOrder != null && tempSortOrder !== currentColumnSortFilter;\r\n return isSortChanged;\r\n }\r\n\r\n getFilteredOptionAsBoldString(str: string, clonedTooltipOptions: TooltipModel[]) {\r\n const 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 updatedString = str;\r\n const indexes = this.getIndicesOf(find, updatedString, false);\r\n\r\n indexes.forEach((item, index) => {\r\n const startIndex = item + index * 7; // Multiplying by 7 as there are 7char: <b></b>\r\n const endIndex = startIndex + find.length;\r\n const strToBeReplaced = updatedString.substring(startIndex, endIndex);\r\n updatedString = updatedString.replace(strToBeReplaced, `<b>${strToBeReplaced}</b>`);\r\n });\r\n return updatedString;\r\n }\r\n\r\n getIndicesOf(searchStr: string, str: string, caseSensitive: boolean) {\r\n const searchStrLen = searchStr.length;\r\n if (searchStrLen === 0) {\r\n return [];\r\n }\r\n let startIndex = 0;\r\n let index;\r\n const indices = [];\r\n let updatedStr = str;\r\n let updatedSearchStr = searchStr;\r\n if (!caseSensitive) {\r\n updatedStr = str.toLowerCase();\r\n updatedSearchStr = searchStr.toLowerCase();\r\n }\r\n\r\n index = updatedStr.indexOf(updatedSearchStr, startIndex);\r\n while (index > -1) {\r\n indices.push(index);\r\n startIndex = index + searchStrLen;\r\n index = updatedStr.indexOf(updatedSearchStr, startIndex);\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 const minStartDate = this.returnMinAndMaxDate(optionData, \"startDate\");\r\n const 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 const calendarMinEnabledDate = this.dateTimeFormatService.convertToNgbDate(minMaxDate[0], parsingFormat);\r\n const 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 const 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 const minMaxDate = this.createRangeForTheDateFilter(optionData);\r\n\r\n const 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 currentSelectedDateToBeUpdated = currentSelectedDate;\r\n const fromDate = {\r\n year: currentSelectedDateToBeUpdated.fromDate.year,\r\n month: currentSelectedDateToBeUpdated.fromDate.month,\r\n day: currentSelectedDateToBeUpdated.fromDate.day,\r\n };\r\n const toDate = {\r\n year: currentSelectedDateToBeUpdated.toDate.year,\r\n month: currentSelectedDateToBeUpdated.toDate.month,\r\n day: currentSelectedDateToBeUpdated.toDate.day,\r\n };\r\n\r\n if (isEqual(minDate, fromDate) && isEqual(maxDate, toDate) && this.initialValueMap.has(this.selectedRadio)) {\r\n currentSelectedDateToBeUpdated = this.initialValueMap.get(this.selectedRadio);\r\n } else {\r\n currentSelectedDateToBeUpdated.fromDate = dayjs(\r\n this.dateTimeFormatService.convertNgbDateToMoment(currentSelectedDateToBeUpdated.fromDate),\r\n );\r\n currentSelectedDateToBeUpdated.toDate = dayjs(\r\n this.dateTimeFormatService.convertNgbDateToMoment(currentSelectedDateToBeUpdated.toDate),\r\n );\r\n }\r\n\r\n return currentSelectedDateToBeUpdated;\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 const minValue = this.returnMaxAndMinValue(optionsData, header, true);\r\n const maxValue = this.returnMaxAndMinValue(optionsData, header, false);\r\n\r\n const 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 const 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 const minValue = this.returnMaxAndMinValue(clonedData, this.selectedRadio, true);\r\n const maxValue = this.returnMaxAndMinValue(clonedData, this.selectedRadio, false);\r\n const 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 if (maxEnteredVal || maxEnteredVal === 0) {\r\n currentSliderData.max = maxEnteredVal;\r\n } else {\r\n currentSliderData.max = options.ceil;\r\n }\r\n\r\n if (minEnteredVal || minEnteredVal === 0) {\r\n currentSliderData.min = minEnteredVal;\r\n } else {\r\n currentSliderData.min = options.floor;\r\n }\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 const includeMulti = clonedData.findIndex((obj) => obj[key][0] === \"<multi>\") !== -1;\r\n const includeZero = clonedData.findIndex((obj) => obj[key][0] === \"0\") !== -1;\r\n const includeTimeRange = clonedData.findIndex((obj) => obj[key][0] !== \"0\" && obj[key][0] !== \"<multi>\") !== -1;\r\n\r\n const filteredStartTime = clonedData.filter((obj) => ![\"\", \"-\", null, \"0\", \"<multi>\"].includes(obj.startTime));\r\n const filteredEndTime = clonedData.filter((obj) => ![\"\", \"-\", null, \"0\", \"<multi>\"].includes(obj.endTime));\r\n\r\n const startTimeArr = map(filteredStartTime, \"startTime\");\r\n const endTimeArr = map(filteredEndTime, \"endTime\");\r\n\r\n startTimeArr.sort((a, b) => this.dateTimeFormatService.sortByTimeAscending(a, b));\r\n\r\n endTimeArr.sort((a, b) => this.dateTimeFormatService.sortByTimeDescending(a, b));\r\n\r\n const obj = {\r\n fromTime: startTimeArr[0],\r\n toTime: endTimeArr[0],\r\n includeMulti,\r\n includeZero,\r\n 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 const includeMulti = clonedData.findIndex((obj) => obj[key] === \"<multi>\") !== -1;\r\n const includeZero = clonedData.findIndex((obj) => obj[key] === \"0\") !== -1;\r\n const includeTimeRange = clonedData.findIndex((obj) => obj[key] !== \"0\" && obj[key] !== \"<multi>\") !== -1;\r\n\r\n const data = clonedData.filter((obj) => ![\"\", \"-\", null, \"0\", \"<multi>\"].includes(obj[key]));\r\n\r\n const timeArr = map(data, key);\r\n timeArr.sort((a, b) => this.dateTimeFormatService.sortByTimeAscending(a, b));\r\n\r\n const obj = {\r\n fromTime: timeArr[0],\r\n toTime: timeArr[timeArr.length - 1],\r\n includeMulti,\r\n includeZero,\r\n 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,\r\n showZeroTimeCheckbox,\r\n showEnterTimeCheckbox,\r\n multiTimeCheckboxChecked,\r\n zeroTimeCheckboxChecked,\r\n enterTimeCheckboxChecked,\r\n };\r\n }\r\n\r\n checkIfStartTimeIsAfterEndTime(startTime: string[], endTime: string[]) {\r\n const timeFormat = \"HH:mm:ss\";\r\n\r\n const startTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n `${startTime[0]}:${startTime[1]} ${startTime[2]}`,\r\n true,\r\n );\r\n const startTime24HrFormat = `${startTime24HrFormatArr[0]}:${startTime24HrFormatArr[1]}:00`;\r\n const endTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n `${endTime[0]}:${endTime[1]} ${endTime[2]}`,\r\n true,\r\n );\r\n const 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 const fromTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n `${startTime[0]}:${startTime[1]} ${startTime[2]}`,\r\n true,\r\n );\r\n const fromTime24HrFormat = `${fromTime24HrFormatArr[0]}:${fromTime24HrFormatArr[1]}:00`;\r\n\r\n const toTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n `${endTime[0]}:${endTime[1]} ${endTime[2]}`,\r\n true,\r\n );\r\n const toTime24HrFormat = `${toTime24HrFormatArr[0]}:${toTime24HrFormatArr[1]}:00`;\r\n\r\n const currentSelectedTimeFilter = {\r\n fromTime: fromTime24HrFormat,\r\n toTime: toTime24HrFormat,\r\n includeMulti,\r\n includeZero,\r\n 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], 10) < 12) {\r\n arr[0] = parseInt(arr[0], 10) + 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], 10) > 1) {\r\n arr[0] = parseInt(arr[0], 10) - 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 const minute = parseInt(arr[1], 10);\r\n if (minute <= 14) {\r\n arr[1] = \"15\";\r\n } else if (minute >= 15 && minute <= 29) {\r\n arr[1] = \"30\";\r\n } else if (minute >= 30 && minute <= 44) {\r\n arr[1] = \"45\";\r\n } else if (minute >= 45) {\r\n arr[1] = \"00\";\r\n }\r\n }\r\n\r\n decrementMinuteInput(arr: any) {\r\n const minute = parseInt(arr[1], 10);\r\n if (minute > 0 && minute <= 15) {\r\n arr[1] = \"00\";\r\n } else if (minute >= 16 && minute <= 30) {\r\n arr[1] = \"15\";\r\n } else if (minute >= 31 && minute <= 45) {\r\n arr[1] = \"30\";\r\n } else if (minute > 45 || minute === 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 || parseInt(hr, 10) < 1 || parseInt(hr, 10) > 12 || hr.includes(\".\");\r\n }\r\n\r\n isMinuteValueInvalid(minute: string) {\r\n return (\r\n minute.length !== 2 ||\r\n (!+minute && minute !== \"00\") ||\r\n parseInt(minute, 10) < 0 ||\r\n parseInt(minute, 10) > 59 ||\r\n minute.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 const 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 // Filter icon alignment to bigger element in uppar and lower header\r\n setMarginLeftForFilterIcon(thElements: QueryList<ElementRef>) {\r\n const elementArr = thElements.toArray();\r\n elementArr.forEach((item) => {\r\n const childDivElements = item.nativeElement.children;\r\n\r\n if (childDivElements.length === 2) {\r\n const firstParagraphOffsetWidth: number = childDivElements[0]?.children[0]?.offsetWidth\r\n ? childDivElements[0]?.children[0]?.offsetWidth\r\n : 0;\r\n const 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 const 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 const 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 checkIfUniqueValuePresentForTheHeader(\r\n header: IHeaderInfo,\r\n enabledHeaders: any[],\r\n tableData: any[],\r\n clonedTableData: any[],\r\n ) {\r\n header.filterSortObjectKeys.forEach((item: string) => {\r\n const dataToCheck = this.getFilterOptionsData(tableData, clonedTableData, item);\r\n if (item === \"period\") {\r\n const uniqStartDate = uniq(dataToCheck.map((u: { [x: string]: any }) => u.startDate));\r\n const uniqEndDate = uniq(dataToCheck.map((u: { [x: string]: any }) => u.endDate));\r\n if (\r\n uniqStartDate.length > 1 ||\r\n uniqEndDate.length > 1 ||\r\n this.isTooltipActive([item], this.annaSortService.columnSortState)\r\n ) {\r\n enabledHeaders.push(item);\r\n }\r\n } else {\r\n const 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\r\n if (\r\n this.appliedFiltersArray.length > 0 &&\r\n this.appliedFiltersArray[this.appliedFiltersArray.length - 1] === item\r\n ) {\r\n activeAndLastlyAppliedHeader = true;\r\n }\r\n if (header.filter === \"CHECKBOX\" && (uniq(values).length > 1 || activeAndLastlyAppliedHeader)) {\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 disableEnableEachColumnTooltipIcon(tableHeaders: IGtTableHeader[], tableData: any[], clonedTableData: any[]) {\r\n 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 const latestFilters = this.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 const uniqStartDate = uniq(tableData.map((u: { [x: string]: any }) => u.startDate));\r\n const uniqEndDate = uniq(tableData.map((u: { [x: string]: any }) => u.endDate));\r\n\r\n item.disableTooltipIcon = !(uniqStartDate.length > 1 || uniqEndDate.length > 1);\r\n } else {\r\n values = tableData.map((u: { [x: string]: any }) => u[key]);\r\n if (\r\n (item.filter === \"CHECKBOX\" && uniq(values).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 // for date type of filters we need to update tooltip selected map start and end date values to dayjs object.\r\n updateDateFilterTooltipSelectedMap(keys: string[]) {\r\n keys.forEach((key) => {\r\n if (this.tooltipSelectedMap?.has(key)) {\r\n const dateRange = this.tooltipSelectedMap.get(key);\r\n\r\n if (dateRange?.fromDate && dateRange?.toDate) {\r\n const selectedDateObj: { fromDate: Dayjs; toDate: Dayjs } = {\r\n fromDate: dayjs(dateRange.fromDate),\r\n toDate: dayjs(dateRange.toDate),\r\n };\r\n\r\n this.tooltipSelectedMap.set(key, selectedDateObj);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","// Angular import statements\r\nimport { NgClass, NgFor } from \"@angular/common\";\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\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\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, OnInit {\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 const 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) => {\r\n item.isOptionActive = false;\r\n });\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 const updatedOption = option || SortTypeEnum.DEFAULT;\r\n this.sortOptions.forEach((item) => {\r\n item.isOptionActive = false;\r\n });\r\n const index = this.sortOptions.findIndex((item) => item.sortType === updatedOption);\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 { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from \"@angular/cdk/scrolling\";\r\nimport { NgClass, NgFor, NgIf } from \"@angular/common\";\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\nimport { SortType } from \"../../../../anna-core-shared-lib/models/anna-sort.model\";\r\nimport { RadioButtonModel, TooltipModel } from \"../../../../anna-core-shared-lib/models/anna-tooltip.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 { AnnaSortComponent } from \"../../anna-sort/anna-sort.component\";\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 implements OnInit {\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 selectedRadioKey: string;\r\n showSplitedOptions: boolean;\r\n splitDelimiter: string;\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 const 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.showSplitedOptions = activeTab.showSplitedOptions;\r\n this.splitDelimiter = this.showSplitedOptions ? (activeTab.splitDelimiter ?? this.annaFilterService.DEFAULT_SPLIT_SEPARATOR) : \"\";\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.selectedRadioKey = `${header }${(this.showSplitedOptions)? (this.annaFilterService.SPLITED_CHECKBOX_FILTER_KEY) : \"\"}`;\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.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 const tooltipOptions = this.createListForCheckboxFilter(header);\r\n\r\n const [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 const optionData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n const tooltipOptions = this.annaFilterService.createListForCheckboxFilter(header, optionData, this.showSplitedOptions, this.splitDelimiter);\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 const selectedValueSet = new Set(this.annaFilterService.tooltipSelectedMap.get(header));\r\n tooltipOptions.forEach((item) => {\r\n item.isSelected = selectedValueSet.has(item.value);\r\n });\r\n } else {\r\n tooltipOptions.forEach((item) => {\r\n item.isSelected = true;\r\n });\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 const [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 const [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 const 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 const selectedItems = this.showFilterComponent ? this.tooltipOptions.filter((item) => item.isSelected) : [];\r\n\r\n if (this.showFilterComponent && this.showSortComponent) {\r\n const isFilterChanged = this.checkIfCheckboxTooltipIsFiltered();\r\n const 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 const previousSelectedValue = this.annaFilterService.getCheckboxPreviousSelectedValue(this.clonedTableData);\r\n const 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 const 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.selectedRadioKey, 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 const [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 [(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 class=\"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 >\r\n No data found\r\n </p>\r\n </cdk-virtual-scroll-viewport>\r\n <div class=\"virtual-scroll-div\"></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","import { NgClass, NgFor, NgIf } from \"@angular/common\";\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\nimport { SortType } from \"../../../../anna-core-shared-lib/models/anna-sort.model\";\r\nimport { RadioButtonModel } from \"../../../../anna-core-shared-lib/models/anna-tooltip.model\";\r\nimport {\r\n AnnaDateTimeFormatService,\r\n NgbDateType,\r\n} from \"../../../../anna-core-shared-lib/services/anna-date-time-format.service\";\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\n// eslint-disable-next-line max-len\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\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 const 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 const optionData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n const 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 const isFilterChanged = this.checkIfDateTooltipIsFiltered();\r\n const 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 const 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 const 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 { NgClass, NgFor, NgIf } from \"@angular/common\";\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NgxSliderModule, Options } from \"@angular-slider/ngx-slider\";\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\nimport { SortType } from \"../../../../anna-core-shared-lib/models/anna-sort.model\";\r\nimport { RadioButtonModel } from \"../../../../anna-core-shared-lib/models/anna-tooltip.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 { AnnaSortComponent } from \"../../anna-sort/anna-sort.component\";\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 implements OnInit {\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 const 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 const translateFunc = this.annaFilterService.getSliderTranslateFuncVal(\r\n key,\r\n this.annaFilterService.sliderCurrencySet,\r\n );\r\n this.incorrectSliderInput = false;\r\n this.sliderEnteredMaxValue = null;\r\n this.sliderEnteredMinValue = null;\r\n this.showSliderMinValueError = false;\r\n this.showSliderMaxValueError = false;\r\n this.isMinTextBoxEmpty = false;\r\n this.isMaxTextBoxEmpty = false;\r\n\r\n const 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: number) {\r\n if (val || val === 0) {\r\n this.sliderEnteredMinValue = +val;\r\n this.sliderEnteredMaxValue = this.sliderMaxValue;\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\r\n this.showErrorForMinAndMaxValue();\r\n this.sliderEnteredMaxValue = this.sliderMaxValue;\r\n }\r\n\r\n maxValueChanged(val: number) {\r\n if (val || val === 0) {\r\n this.sliderEnteredMaxValue = +val;\r\n this.sliderEnteredMinValue = this.sliderMinValue;\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 this.sliderEnteredMinValue = this.sliderMinValue;\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 const isFilterChanged = this.checkIfSliderTooltipIsFiltered();\r\n const 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 const previousSelectedValue = this.annaFilterService.getPreviousSelectedValueForSlider(this.clonedTableData);\r\n const 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 const 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 && options\"\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 { NgClass, NgFor, NgIf } from \"@angular/common\";\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonToggleModule } from \"@angular/material/button-toggle\";\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\nimport { IGtGeneralConfig } from \"../../../../anna-core-shared-lib/models/anna-non-editable-gt-models\";\r\nimport { SortType } from \"../../../../anna-core-shared-lib/models/anna-sort.model\";\r\nimport { RadioButtonModel } from \"../../../../anna-core-shared-lib/models/anna-tooltip.model\";\r\nimport { AnnaDateTimeFormatService } from \"../../../../anna-core-shared-lib/services/anna-date-time-format.service\";\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 { AnnaSortComponent } from \"../../anna-sort/anna-sort.component\";\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() timeChangedEmitter = new EventEmitter(); // event emitter for any change in time field even without clicking on save -- needed for biz rules\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 const 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 = false;\r\n this.startTimeMinErr = false;\r\n this.endTimeHourErr = false;\r\n 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 const optionsData = this.annaFilterService?.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n\r\n const 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 const previousSelectedTimeFilter = this.annaFilterService.getPreviousSelectedTimeFilter();\r\n const 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 }\r\n return false;\r\n }\r\n disableTimeFilterApplyButton() {\r\n this.timeChangedEmitter.emit(true);\r\n if (this.isSortAndFilterAbsent) {\r\n this.disableTimeFilterApplyBtn = this.checkIfInvalidTimeIsEntered() || !this.checkIfTimeTooltipIsFiltered();\r\n } else if (this.showFilterComponent && this.showSortComponent) {\r\n const isFilterChanged = this.checkIfTimeTooltipIsFiltered();\r\n const isSortChanged = this.checkIfSortingChanged();\r\n this.disableTimeFilterApplyBtn = !this.validateTimeFilterInput() || (!isSortChanged && !isFilterChanged);\r\n } else if (this.showFilterComponent) {\r\n this.disableTimeFilterApplyBtn = !this.validateTimeFilterInput() || !this.checkIfTimeTooltipIsFiltered();\r\n } else if (this.showSortComponent) {\r\n this.disableTimeFilterApplyBtn = !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 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 const 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 const 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 const 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 checkbox-container-padding\"\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 class=\"label\">Include Multi</p>\r\n </div>\r\n <!-- Zero time option checkbox -->\r\n <div\r\n class=\"d-flex align-items-center checkbox-container-padding\"\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 class=\"label\">Include Zero</p>\r\n </div>\r\n <!-- Enter time range option checkbox -->\r\n <div\r\n class=\"d-flex align-items-center checkbox-container-padding\"\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 class=\"label\">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 (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 (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","// Angular import statements\r\nimport {\r\n AsyncPipe,\r\n NgClass,\r\n NgFor,\r\n NgIf,\r\n NgStyle,\r\n NgSwitch,\r\n NgSwitchCase,\r\n NgSwitchDefault,\r\n NgTemplateOutlet,\r\n} from \"@angular/common\";\r\nimport {\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewChildren,\r\n} from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatRadioModule } from \"@angular/material/radio\";\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\n// Third party import statements\r\nimport { cloneDeep, isEqual, uniq } from \"lodash-es\";\r\nimport { NgCircleProgressModule } from \"ng-circle-progress\";\r\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\n\r\nimport { AnnaEstIconTemplateComponent } from \"../../../anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component\";\r\n// eslint-disable-next-line max-len\r\nimport { AnnaIconColumnComponent } from \"../../../anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component\";\r\nimport { AnnaNoDataComponent } from \"../../../anna-core-shared-lib/components/anna-no-data/anna-no-data.component\";\r\n// eslint-disable-next-line max-len\r\nimport { ShowEllipsisTextOnHoverDirective } from \"../../../anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive\";\r\nimport {\r\n GtColumnIconEmittedData,\r\n RatingSellerGroupHierarchy,\r\n} 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 {\r\n EllipsisWithTableTooltip,\r\n IGtGeneralConfig,\r\n IGtTableHeader,\r\n IHeaderInfo,\r\n InnerHTMLTooltipAction,\r\n ITotalRowInfo,\r\n} from \"../../../anna-core-shared-lib/models/anna-non-editable-gt-models\";\r\nimport { RadioButtonModel } from \"../../../anna-core-shared-lib/models/anna-tooltip.model\";\r\nimport { AnnaDateTimeFormatService } from \"../../../anna-core-shared-lib/services/anna-date-time-format.service\";\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\n// eslint-disable-next-line max-len\r\nimport { AnnaColumnCheckboxFilterComponent } from \"../anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component\";\r\n// eslint-disable-next-line max-len\r\nimport { AnnaColumnDateRangeFilterComponent } from \"../anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component\";\r\n// eslint-disable-next-line max-len\r\nimport { AnnaColumnSliderFilterComponent } from \"../anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component\";\r\nimport { AnnaColumnTimeFilterComponent } from \"../anna-column-filters/anna-column-time-filter/anna-column-time-filter.component\";\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 AnnaEstIconTemplateComponent,\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 @Input() showOrHideToggleForTotalRow: 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 @Output() statusNotePopupOpened = new EventEmitter<string>();\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 ellispsisWithTableTooltip: { open: () => void; close: () => void };\r\n ellipsisWithTooltipHeading: string;\r\n ellipsisWithTooltipTableHeaders: any[];\r\n ellipsisWithTooltipTableData: any[];\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 @ViewChild(\"tableElementRef\", { static: true }) tableElementRef: 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: any = [];\r\n tooltipContainingTable: TableTooltipType = null;\r\n tableBottomBorderClass: string = null;\r\n showCheckboxesForTimeFilter: boolean = false;\r\n\r\n stringWithTooltipTemplate: TemplateRef<any> = null;\r\n @ViewChild(\"textActionTooltipTemplate\") public textActionTooltipTemplateRef: TemplateRef<any>;\r\n @ViewChild(\"programChangeTooltipTemplate\") public programChangeTooltipTemplateRef: TemplateRef<any>;\r\n stringWithTooltipNgbTooltipRef: { open: () => void; close: () => void };\r\n\r\n statusNoteTooltip: any;\r\n statusNoteForTooltip: string = \"\";\r\n statusNoteForPopup: string = \"\";\r\n noOfRowsToCheck: number;\r\n toolTipInnerHtmlData: string;\r\n innerHtmlTooltip: any;\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.annaFilterService.setMarginLeftForFilterIcon(this.viewChildTableHeaders);\r\n }\r\n\r\n ngOnInit() {\r\n document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"0px\");\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.setScrollToInitialPosition();\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.annaFilterService.disableEnableEachColumnTooltipIcon(\r\n this.tableHeaders,\r\n this.tableData,\r\n this.clonedTableData,\r\n );\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 (changes.tableHeaders && !isEqual(changes.tableHeaders.currentValue, changes.tableHeaders.previousValue)) {\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 const viewportHeight = window.innerHeight;\r\n if (viewportHeight < 740) {\r\n this.filterAlignment = \"left right top bottom\";\r\n } else {\r\n this.filterAlignment = \"bottom left right top\";\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 showHideTotalRow() {\r\n this.gtGeneralConfig.totalRow = !this.gtGeneralConfig.totalRow;\r\n if (!this.gtGeneralConfig.totalRow) {\r\n document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"40px\");\r\n } else {\r\n document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"0px\");\r\n }\r\n }\r\n\r\n setTableHeight() {\r\n let viewportHeight = window.innerHeight;\r\n const { rowHeight } = this.gtDimension;\r\n const { headerHeight } = this.gtDimension;\r\n const { dataOnTopHeight } = this.gtDimension;\r\n const { marginFromBottom } = this.gtDimension;\r\n let actualTableHeight;\r\n\r\n if (this.fixNumberOfRowsForPopup) {\r\n const maxNoOfRowsToDisplay = viewportHeight < 740 ? 5 : 10;\r\n this.maximumRowsWhichCanBeRenderedWithoutScroll = maxNoOfRowsToDisplay;\r\n actualTableHeight = this.maximumRowsWhichCanBeRenderedWithoutScroll * rowHeight + headerHeight;\r\n } else {\r\n const minHeightForTable = headerHeight + 3 * rowHeight;\r\n viewportHeight = viewportHeight <= dataOnTopHeight ? dataOnTopHeight + minHeightForTable : viewportHeight;\r\n const heightLeftForTable = viewportHeight - dataOnTopHeight - marginFromBottom;\r\n this.maximumRowsWhichCanBeRenderedWithoutScroll = Math.ceil(\r\n (heightLeftForTable - headerHeight) / rowHeight,\r\n );\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 if (this.maximumRowsWhichCanBeRenderedWithoutScroll) {\r\n this.noOfRowsToCheck = this.maximumRowsWhichCanBeRenderedWithoutScroll;\r\n if (this.gtGeneralConfig.totalRow) {\r\n this.noOfRowsToCheck = this.maximumRowsWhichCanBeRenderedWithoutScroll - 1;\r\n }\r\n } else {\r\n this.noOfRowsToCheck = 5;\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(\"stationOrderNumber\", \"STN Order#\");\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(\"sellerProgram\", \"Seller 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(\"altOrderWithRevNum\", \"Alt Order# - Mod#\");\r\n this.tooltipRadioTextMap.set(\"trafficOrderNum\", \"Traffic Order#\");\r\n this.tooltipRadioTextMap.set(\"startDate\", \"Start Date\");\r\n this.tooltipRadioTextMap.set(\"endDate\", \"End Date\");\r\n this.tooltipRadioTextMap.set(\"spots\", \"Spots\");\r\n\r\n this.tooltipRadioTextMap.set(\"averageRateThisYear\", \"Avg. Rate (TY)\");\r\n this.tooltipRadioTextMap.set(\"averageRateLastYear\", \"Avg. Rat (LY)\");\r\n this.tooltipRadioTextMap.set(\"averageCPP\", \"Avg. CPP\");\r\n this.tooltipRadioTextMap.set(\"projectedCPP\", \"Proj. CPP (30s)\");\r\n this.tooltipRadioTextMap.set(\"projectedCPM\", \"Proj. CPM (30s)\");\r\n this.tooltipRadioTextMap.set(\"averageCPM\", \"Avg. CPM\");\r\n this.tooltipRadioTextMap.set(\"IMPSDiff\", \"IMP ('000) Diff.\");\r\n this.tooltipRadioTextMap.set(\"RTGDiff\", \"RTG Diff.\");\r\n this.tooltipRadioTextMap.set(\"bookedEqCpmValue\", \"Booked CPM (30s)\");\r\n this.tooltipRadioTextMap.set(\"bookedEqCppValue\", \"Booked CPP (30s)\");\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 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 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 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 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 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 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 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 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 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 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 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 this.tooltipRadioTextMap.set(\"bookedAverageRate\", \"Booked AVG. Rate\");\r\n this.tooltipRadioTextMap.set(\"dollarIMPSImpact\", \"$ IMP Impact\");\r\n this.tooltipRadioTextMap.set(\"dollarRTGImpact\", \"$ RTG IMPACT\");\r\n this.tooltipRadioTextMap.set(\"IMPSImpact\", \"IMP ('000) IMPACT\");\r\n this.tooltipRadioTextMap.set(\"RTGImpact\", \"RTG Impact\");\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 this.tooltipRadioTextMap.set(\"bookedAverageRate\", \"Booked AVG. Rate\");\r\n this.tooltipRadioTextMap.set(\"dollarIMPSImpact\", \"$ IMP Impact\");\r\n this.tooltipRadioTextMap.set(\"dollarRTGImpact\", \"$ RTG IMPACT\");\r\n this.tooltipRadioTextMap.set(\"IMPSImpact\", \"IMP ('000) IMPACT\");\r\n this.tooltipRadioTextMap.set(\"RTGImpact\", \"RTG Impact\");\r\n\r\n this.tooltipRadioTextMap.set(\"sellOutPercentageSameWeek\", \"SELL OUT % SAME WEEK (LY)\");\r\n this.tooltipRadioTextMap.set(\"sellOutPercentageFinal\", \"FINAL SELL OUT % (LY)\");\r\n this.tooltipRadioTextMap.set(\"scheduledDate\", \"Sch. Date\");\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 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(\"BuyerLineNumber\", \"Buy Line #\");\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 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 this.tooltipRadioTextMap.set(\"lineAndSpotNumber\", \"Line.Spot#\");\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 this.tooltipRadioTextMap.set(\"buyerNames\", \"Buyers\");\r\n this.tooltipRadioTextMap.set(\"repUserNames\", \"Reps\");\r\n this.tooltipRadioTextMap.set(\"InventoryCode\", \"Inventory Code\");\r\n this.tooltipRadioTextMap.set(\"BuyerProgramName\", \"Buyer Program Name\");\r\n this.tooltipRadioTextMap.set(\"StartTime\", \"Start Time\");\r\n this.tooltipRadioTextMap.set(\"EndTime\", \"End Time\");\r\n this.tooltipRadioTextMap.set(\"WeeklyAUR\", \"Booked Avg. Rate\");\r\n this.tooltipRadioTextMap.set(\"DisplayRevenueClass\", \"Rev Class\");\r\n this.tooltipRadioTextMap.set(\"ActualWeekStartDate\", \"Week\");\r\n this.tooltipRadioTextMap.set(\"WeekDay\", \"Day\");\r\n this.tooltipRadioTextMap.set(\"DisplayLength\", \"Length\");\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 this.tooltipRadioTextMap.set(\"ProjectedImpressions\", \"Projected IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"ProjectedRtg\", \"Projected RTG\");\r\n\r\n this.tooltipRadioTextMap.set(\"buyerLine\", \"Buy Line\");\r\n this.tooltipRadioTextMap.set(\"sellerLine\", \"Sell Line\");\r\n this.tooltipRadioTextMap.set(\"programName\", \"Program Name\");\r\n this.tooltipRadioTextMap.set(\"InvFillTY\", \"Inventory Fill This Year\");\r\n this.tooltipRadioTextMap.set(\"InvFillLY\", \"Inventory Fill Last Year\");\r\n\r\n this.tooltipRadioTextMap.set(\"outstandingSpotsValue\", \"O/S Spots\");\r\n this.tooltipRadioTextMap.set(\"offeredMGsValue\", \"Offered MG\");\r\n this.tooltipRadioTextMap.set(\"offerCount\", \"Offer Count\");\r\n this.tooltipRadioTextMap.set(\"orderRevisionStatus\", \"Status\");\r\n this.tooltipRadioTextMap.set(\"offeredADUsValue\", \"Offered ADUs\");\r\n this.tooltipRadioTextMap.set(\"uDProjectionValue\", \"O/S UD Proj.\");\r\n this.tooltipRadioTextMap.set(\"userMGValue\", \"User MG\");\r\n this.tooltipRadioTextMap.set(\"userADUValue\", \"User ADUs\");\r\n this.tooltipRadioTextMap.set(\"outstandingPreemptionsValue\", \"O/S PE\");\r\n this.tooltipRadioTextMap.set(\"audienceDeficitValue\", \"O/S UD Proj.\");\r\n this.tooltipRadioTextMap.set(\"buyerChangesValue\", \"Buyer Changes\");\r\n this.tooltipRadioTextMap.set(\"userChangesValue\", \"User Changes\");\r\n\r\n this.tooltipRadioTextMap.set(\"SellerProgInvCode\", \"Seller Pgm (Inv Code)\");\r\n this.tooltipRadioTextMap.set(\"SellerProgramName\", \"Seller Program\");\r\n this.tooltipRadioTextMap.set(\"buyerProgramName\", \"Buyer Program\");\r\n this.tooltipRadioTextMap.set(\"LastFetchedDate\", \"Last Fetched\");\r\n \r\n this.tooltipRadioTextMap.set(\"bookedDps\", \"Booked DPs\");\r\n this.tooltipRadioTextMap.set(\"totalBookedGrp\", \"Total Booked GRP\");\r\n this.tooltipRadioTextMap.set(\"totalBookedImps\", \"Total Booked IMPS\");\r\n this.tooltipRadioTextMap.set(\"bookedGrpToDate\", \"Booked GRP To-date\");\r\n this.tooltipRadioTextMap.set(\"bookedImpsToDate\", \"Booked IMPS To-date\");\r\n this.tooltipRadioTextMap.set(\"goalGrpToDate\", \"Goal GRP To-date\");\r\n this.tooltipRadioTextMap.set(\"goalImpsToDate\", \"Goal IMPS To-date\");\r\n this.tooltipRadioTextMap.set(\"postedGrpToDate\", \"Posted GRP To-date\");\r\n this.tooltipRadioTextMap.set(\"postedImpsToDate\", \"Posted IMPS To-date\");\r\n this.tooltipRadioTextMap.set(\"udGrpToDate\", \"UD GRP To-date\");\r\n this.tooltipRadioTextMap.set(\"udImpsToDate\", \"UD IMPS To-date\");\r\n this.tooltipRadioTextMap.set(\"odGrpToDate\", \"OD GRP To-date\");\r\n this.tooltipRadioTextMap.set(\"odImpsToDate\", \"OD IMPS To-date\");\r\n this.tooltipRadioTextMap.set(\"scheduledADUs\", \"$ Scheduled ADUs\");\r\n this.tooltipRadioTextMap.set(\"postedADUs\", \"$ Posted ADUs\");\r\n this.tooltipRadioTextMap.set(\"bookedVal\", \"$ Booked\");\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 const enabledHeaders: any[] = [];\r\n this.annaFilterService.checkIfUniqueValuePresentForTheHeader(\r\n header,\r\n enabledHeaders,\r\n this.tableData,\r\n this.clonedTableData,\r\n );\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 const dataToCheck = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData, item);\r\n if (item === \"period\") {\r\n const uniqStartDate = uniq(dataToCheck.map((u: { [x: string]: any }) => u.startDate));\r\n const 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 const 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[\r\n this.annaFilterService.appliedFiltersArray.length - 1\r\n ] === item\r\n ) {\r\n activeAndLastlyAppliedHeader = true;\r\n }\r\n if (header.filter === \"CHECKBOX\" && (uniq(values).length > 1 || activeAndLastlyAppliedHeader)) {\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 // change to display name\r\n const value = this.tooltipRadioTextMap.has(key) ? this.tooltipRadioTextMap.get(key) : key;\r\n return new RadioButtonModel(\r\n key,\r\n value,\r\n columnHeader.isSortRequired[index],\r\n columnHeader.isFilterRequired[index],\r\n columnHeader?.showSplitedOptionsInFilter?.[index] ?? false,\r\n columnHeader?.splitDelimiter?.[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 const 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 const uniqStartDate = uniq(\r\n this.tableData.map((u: { [x: string]: any }) => u.startDate),\r\n );\r\n const uniqEndDate = uniq(this.tableData.map((u: { [x: string]: any }) => u.endDate));\r\n\r\n item.disableTooltipIcon = !(uniqStartDate.length > 1 || uniqEndDate.length > 1);\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).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 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 });\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, columnHeader, isIconClicked: false });\r\n }\r\n\r\n iconClickedOnStringIconActionType(rowData: any, id: any, columnHeader: IHeaderInfo) {\r\n this.gtTextActionClicked.emit({ data: rowData, id, 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 const 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; // height of loaded content, if table ht is 100px but total content is 300px it will return 300px\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 = this.gtGeneralConfig.bufferSize ? this.gtGeneralConfig.bufferSize : 150;\r\n const limit = tableScrollHeight - tableViewHeight - buffer;\r\n if (scrollLocation > limit) {\r\n const 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,\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 =\r\n 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, type: \"on-enter\" });\r\n }\r\n\r\n mouseEnterOnStringWithTooltipTextActionType(rowData: any, tooltipKey: string, tooltip: any) {\r\n if (this.stringWithTooltipNgbTooltipRef && this.stringWithTooltipNgbTooltipRef.open) {\r\n this.stringWithTooltipNgbTooltipRef.close();\r\n }\r\n\r\n this.stringWithTooltipTemplate = tooltipKey.includes(\"Pg_Sch_Week\")\r\n ? this.programChangeTooltipTemplateRef\r\n : this.textActionTooltipTemplateRef;\r\n this.textActionTooltip = rowData[tooltipKey];\r\n\r\n setTimeout(() => {\r\n this.stringWithTooltipNgbTooltipRef = tooltip;\r\n this.stringWithTooltipNgbTooltipRef.open();\r\n }, 0);\r\n\r\n this.notificationIconHover.emit({ rowData, type: \"on-enter\" });\r\n }\r\n\r\n mouseEnterOnStringWithInnerHtmlTooltipTextActionType(\r\n ROW_DATA: any,\r\n action: InnerHTMLTooltipAction,\r\n tooltipWithInnerHtmlRef: any,\r\n closeOnScroll: boolean,\r\n ) {\r\n this.toolTipInnerHtmlData = action.tooltipInnerHtmlTemplate;\r\n if (!closeOnScroll) {\r\n if (this.innerHtmlTooltip && this.innerHtmlTooltip.open) {\r\n this.innerHtmlTooltip.close();\r\n }\r\n this.innerHtmlTooltip = tooltipWithInnerHtmlRef;\r\n this.innerHtmlTooltip.open();\r\n } else {\r\n this.innerHtmlTooltip?.close();\r\n }\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, 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 });\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 statusNoteTooltip = document.getElementsByClassName(\"status-note-tooltip\");\r\n document.querySelectorAll(\".tooltip:not(.keep-on-scroll-tooltip)\").forEach((e) => {\r\n e.remove();\r\n this.tooltip = null;\r\n });\r\n\r\n while (elements && elements.length > 0) {\r\n elements[0].remove();\r\n }\r\n while (gtTooltip && gtTooltip.length > 0) {\r\n gtTooltip[0].remove();\r\n }\r\n while (statusNoteTooltip && statusNoteTooltip.length > 0) {\r\n statusNoteTooltip[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 const enteredValue = pasteEvent ? event.clipboardData.getData(\"text\") : event.key;\r\n const 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?.charactersToRestrict && editedObject?.charactersToRestrict.includes(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, value, keyEdited });\r\n }\r\n\r\n radioButtonIconClicked(data: any) {\r\n this.radioButtonMessageIconClicked.emit(data);\r\n }\r\n\r\n setScrollToInitialPosition() {\r\n this.tableElementRef.nativeElement.scrollTop = 0;\r\n this.tableElementRef.nativeElement.scrollLeft = 0;\r\n }\r\n\r\n filterApplied(tableData: any[]) {\r\n this.tableData = tableData;\r\n this.setScrollToInitialPosition();\r\n this.setInitialRowsForTable();\r\n this.annaFilterService.disableEnableEachColumnTooltipIcon(\r\n this.tableHeaders,\r\n this.tableData,\r\n this.clonedTableData,\r\n );\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.annaFilterService.disableEnableEachColumnTooltipIcon(\r\n this.tableHeaders,\r\n this.tableData,\r\n this.clonedTableData,\r\n );\r\n this.sortingAppliedToTable.emit(tableData);\r\n this.closeTooltip();\r\n }\r\n\r\n bindTheValueToTableTooltip(obj: EllipsisWithTableTooltip, tooltip: any) {\r\n if (this.ellispsisWithTableTooltip && this.ellispsisWithTableTooltip.open) {\r\n this.ellispsisWithTableTooltip.close();\r\n }\r\n this.ellipsisWithTooltipHeading = obj.tooltipHeader;\r\n this.ellipsisWithTooltipTableData = obj.tableData;\r\n this.ellipsisWithTooltipTableHeaders = obj.tableHeaders;\r\n this.ellispsisWithTableTooltip = tooltip;\r\n this.ellispsisWithTableTooltip.open();\r\n }\r\n\r\n bindTheValueToStatusNote(note: string, tooltip: any) {\r\n if (this.statusNoteTooltip && this.statusNoteTooltip.isOpen()) {\r\n this.statusNoteTooltip.close();\r\n }\r\n const lastIndex = note.length < 100 ? note.length : 100;\r\n this.statusNoteForTooltip = \"\";\r\n\r\n this.statusNoteForTooltip = note.substring(0, lastIndex);\r\n\r\n this.statusNoteForPopup = note;\r\n this.statusNoteTooltip = tooltip;\r\n this.statusNoteTooltip.open();\r\n }\r\n\r\n showEntireStatusNote() {\r\n this.closeStatusNoteTooltip();\r\n this.statusNotePopupOpened.emit(this.statusNoteForPopup);\r\n }\r\n\r\n closeStatusNoteTooltip() {\r\n if (this.statusNoteTooltip && this.statusNoteTooltip.isOpen()) {\r\n this.statusNoteTooltip.close();\r\n }\r\n this.statusNoteTooltip = null;\r\n }\r\n}\r\n","<div\r\n id=\"generic-table-conatiner\"\r\n #tableElementRef\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 'table-with-show-hide-total-row-toggle': showOrHideToggleForTotalRow\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 < noOfRowsToCheck\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 <button\r\n *ngIf=\"showOrHideToggleForTotalRow && !showSkeletonLoading && (isNoDataToDisplaySubject$ | async) === false\"\r\n [ngClass]=\"{\r\n 'shift-toggle-top-on-total-row-click': !gtGeneralConfig.totalRow\r\n }\"\r\n class=\"show-or-hide-toggle-btn\"\r\n (click)=\"showHideTotalRow()\"\r\n >\r\n <i\r\n class=\"mdi mdi-menu-swap\"\r\n tooltipClass=\"show-or-hide-toggle-tooltip\"\r\n placement=\"auto\"\r\n container=\"body\"\r\n [ngbTooltip]=\"showOrHideToggleForTotalRowTooltip\"\r\n ></i>\r\n </button>\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\"\r\n >{{ column.data }}\r\n <span\r\n class=\"red-text-totol-row\"\r\n *ngIf=\"column.additionalRedTextAfterData\"\r\n >{{ column.additionalRedTextAfterData }}</span\r\n ></strong\r\n >\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=\"top 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]=\"tdsHaveRowSpan ? ROW_DATA[columnDef.headerInfo[0].objectKey + 'Rowspan'] : 1\"\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) === false\">\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 annaCoreShowEllipsisTextOnHover>\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 [ngClass]=\"{ 'disabled-starring': starredInProgress }\"\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\r\n class=\"spinner-for-button-directive\"\r\n [ngClass]=\"{ 'disabled-starring': starredInProgress }\"\r\n ></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]=\"\r\n action.showTooltip && action?.tooltipData\r\n ? action.tooltipData\r\n : null\r\n \"\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 </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 <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=\"pr-4\"\r\n *ngIf=\"action?.showObjectKey\"\r\n >\r\n {{ ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey] }}\r\n </span>\r\n\r\n <span\r\n class=\"pr-4 {{ action?.additionalTextClass }}\"\r\n *ngIf=\"action?.additionalText\"\r\n >\r\n {{ action?.additionalText }}\r\n </span>\r\n\r\n <anna-core-icon-column\r\n class=\"pr-4\"\r\n *ngIf=\"action?.svgOrIconName\"\r\n [componentName]=\"gtGeneralConfig.component\"\r\n [dataObject]=\"ROW_DATA\"\r\n [iconToShow]=\"action.svgOrIconName\"\r\n data-html=\"true\"\r\n [ngbTooltip]=\"tipContent\"\r\n [disableTooltip]=\"!action?.svgOrIconTooltipMsg\"\r\n placement=\"auto\"\r\n container=\"body\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\r\n (columnIconClicked)=\"svgIconClicked($event)\"\r\n >\r\n <ng-template #tipContent>\r\n <div [innerHTML]=\"action?.svgOrIconTooltipMsg\"></div\r\n ></ng-template>\r\n </anna-core-icon-column>\r\n </ng-container>\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 >{{ text.name }}</a\r\n >\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 <span\r\n class=\"text-with-icon-and-text\"\r\n [ngClass]=\"{ 'reduced-width': action.showIcon }\"\r\n annaCoreShowEllipsisTextOnHover\r\n >{{ action.data }}</span\r\n >\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 <span\r\n *ngIf=\"action.showIcon\"\r\n [ngClass]=\"{ disabled: action.disabledIcon }\"\r\n class=\"icon-tooltip-text\"\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 [class]=\"action.iconClass\"> </i>\r\n {{ action.additionalTextAfterIcon ?? \"\" }}\r\n </span>\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 annaCoreShowEllipsisTextOnHover\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 <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 container=\"body\"\r\n [ngbTooltip]=\"tipContent\"\r\n tooltipClass=\"gt-total-row-tooltip\"\r\n placement=\"bottom\"\r\n class=\"{{ action.iconClass }}\"\r\n >\r\n <ng-template #tipContent>\r\n <div [innerHTML]=\"action?.iconTooltip\"></div\r\n ></ng-template>\r\n </i>\r\n <ng-container *ngIf=\"action.showSvgIcon\">\r\n <anna-core-icon-column\r\n class=\"pr-4\"\r\n *ngIf=\"action?.svgOrIconName\"\r\n [componentName]=\"gtGeneralConfig.component\"\r\n [dataObject]=\"ROW_DATA\"\r\n [iconToShow]=\"action.svgOrIconName\"\r\n data-html=\"true\"\r\n [ngbTooltip]=\"tipContent\"\r\n placement=\"auto\"\r\n container=\"body\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\r\n >\r\n <ng-template #tipContent>\r\n <div\r\n [innerHTML]=\"action?.svgOrIconTooltipMsg\"\r\n ></div></ng-template\r\n ></anna-core-icon-column>\r\n </ng-container>\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']; else showHyphen\"\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 <i\r\n *ngIf=\"radioButton.tooltipMessage\"\r\n class=\"mi mdi-info-outline\"\r\n [ngbTooltip]=\"radioButton.tooltipMessage\"\r\n placement=\"bottom auto\"\r\n container=\"body\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\r\n ></i>\r\n <br *ngIf=\"!last\" />\r\n </ng-container>\r\n </mat-radio-group>\r\n <ng-template #showHyphen> - </ng-template>\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 class=\"action-data\"> {{ action?.dataToDisplay }}</span>\r\n <ng-container *ngIf=\"action?.additionalTextWoTooltip\">\r\n <span\r\n class=\"additional-text-wo-tooltip\"\r\n [innerHtml]=\"action.additionalTextWoTooltip\"\r\n >\r\n </span>\r\n </ng-container>\r\n <span\r\n *ngIf=\"action?.showTooltip\"\r\n [ngbTooltip]=\"stringWithTooltipTemplate\"\r\n (mouseenter)=\"\r\n mouseEnterOnStringWithTooltipTextActionType(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].tooltipKey,\r\n tooltipWithStringRef\r\n )\r\n \"\r\n [placement]=\"action?.tooltipPosition\"\r\n container=\"body\"\r\n [class]=\"action?.tooltipIconClass\"\r\n [autoClose]=\"'outside'\"\r\n [triggers]=\"action.isManualTrigger ? 'manual' : 'hover focus'\"\r\n #tooltipWithStringRef=\"ngbTooltip\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class {{\r\n action?.tooltipInnerClass\r\n }}\"\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 *ngSwitchCase=\"'STRING_ELLIPSIS_WITH_TABLE_TOOLTIP'\">\r\n <div class=\"new-ellipsis-container\">\r\n <span\r\n annaCoreShowEllipsisTextOnHover\r\n class=\"cell-value\"\r\n >\r\n {{\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n .cellValue\r\n }}\r\n </span>\r\n <span\r\n *ngIf=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n ?.showTooltip\r\n \"\r\n class=\"tooltip-text\"\r\n [ngbTooltip]=\"tableInsideTooltip\"\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=\"table-inside-tooltip remove-on-scroll-class {{\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n ?.tooltipClass\r\n }}\"\r\n (mouseenter)=\"\r\n bindTheValueToTableTooltip(\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey],\r\n info\r\n )\r\n \"\r\n >\r\n {{\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n ?.tooltipHoverText\r\n }}\r\n </span>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'STRING_WITH_ELLIPSIS_AND_READ_MORE_TOOLTIP'\">\r\n <span\r\n title=\"\"\r\n *ngIf=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].length <\r\n 25\r\n \"\r\n >\r\n {{ ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey] }}\r\n </span>\r\n\r\n <span\r\n title=\"\"\r\n [ngbTooltip]=\"statusNoteTooltip\"\r\n placement=\"bottom auto\"\r\n container=\"body\"\r\n [autoClose]=\"true\"\r\n [triggers]=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].length >\r\n 100\r\n ? 'manual'\r\n : 'hover focus'\r\n \"\r\n (hidden)=\"closeTooltip()\"\r\n #info=\"ngbTooltip\"\r\n tooltipClass=\"status-note-tooltip\"\r\n (mouseenter)=\"\r\n bindTheValueToStatusNote(\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey],\r\n info\r\n )\r\n \"\r\n *ngIf=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].length >\r\n 25\r\n \"\r\n >\r\n {{ ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey] }}\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'STRING_WITH_TOOLTIP_INNER_HTML'\">\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 annaCoreShowEllipsisTextOnHover\r\n class=\"action-data\"\r\n [ngClass]=\"action?.showTooltip ? 'reduced-width-text' : ''\"\r\n >\r\n {{ action?.dataToDisplay }}</span\r\n >\r\n <span\r\n *ngIf=\"action?.showTooltip\"\r\n [ngbTooltip]=\"innerHtmlToolTipTemplate\"\r\n (mouseenter)=\"\r\n mouseEnterOnStringWithInnerHtmlTooltipTextActionType(\r\n ROW_DATA,\r\n action,\r\n tooltipWithInnerHtmlRef,\r\n !action.isManualTrigger\r\n )\r\n \"\r\n [placement]=\"action?.tooltipPosition\"\r\n container=\"body\"\r\n [class]=\"\r\n 'innrHtml-tooltip-icon-marker ' + action?.tooltipIconClass\r\n \"\r\n [autoClose]=\"'outside'\"\r\n [triggers]=\"action.isManualTrigger ? 'manual' : 'hover focus'\"\r\n #tooltipWithInnerHtmlRef=\"ngbTooltip\"\r\n tooltipClass=\"gt-icon-innerHtml-tooltip remove-on-scroll-class {{\r\n action?.tooltipInnerClass\r\n }}\"\r\n [disableTooltip]=\"action?.disableTooltip\"\r\n >\r\n {{ action.tooltipMarkerText }}\r\n </span>\r\n <span *ngIf=\"action?.dataToDisplayAfterTooltip\">\r\n {{ action?.dataToDisplayAfterTooltip }}\r\n </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 annaCoreShowEllipsisTextOnHover>{{\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=\"\r\n ROW_DATA.activityname.toLowerCase() === 'order onboarded'\r\n \"\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 class=\"black-color-text 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 annaCoreShowEllipsisTextOnHover>{{ data.InventoryCode }}</span>\r\n </td>\r\n <td>\r\n <span annaCoreShowEllipsisTextOnHover>{{ 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 class=\"black-color-text\">Seller group not available for this inventory code</span>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #tableInsideTooltip>\r\n <label class=\"ellipsis-tooltip-heading\">{{ ellipsisWithTooltipHeading }}</label>\r\n <section class=\"table-inside-tooltip-container\">\r\n <table class=\"ellipsis-tooltip-table\">\r\n <thead>\r\n <tr>\r\n <th\r\n [style.width]=\"header.width\"\r\n *ngFor=\"let header of ellipsisWithTooltipTableHeaders\"\r\n >\r\n <div>\r\n <span\r\n annaCoreShowEllipsisTextOnHover\r\n class=\"upper-label\"\r\n >{{ header.headerName }}</span\r\n >\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of ellipsisWithTooltipTableData\">\r\n <td *ngFor=\"let header of ellipsisWithTooltipTableHeaders\">\r\n <div>\r\n <span\r\n annaCoreShowEllipsisTextOnHover\r\n class=\"upper-label\"\r\n >{{ data[header.objectKey] }}</span\r\n >\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </section>\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 ANNA calculates projected RTG/IMPS values using either the computed estimates or the actual posted data,\r\n depending on what is available. If posted data has not yet been received, ANNA will use the computed estimates\r\n as the projected value. Once the actual posted data is received, the projection will automatically update to\r\n reflect the real, posted values. This ensures that projected data is always based on the most accurate and\r\n up-to-date information.\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 automate the orders. Only for the automated orders, any approved\r\n MGs, ADUs, or credited spots on ANNA will be fed into the traffic 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 #programChangeTooltipTemplate>\r\n <div class=\"program-schedule-tooltip\">\r\n <h2>Program Change</h2>\r\n <p class=\"previous\">Previous:</p>\r\n <b annaCoreShowEllipsisTextOnHover>{{ textActionTooltip.OldProgramName }}</b>\r\n\r\n <p class=\"updated\">Updated:</p>\r\n <b\r\n *ngIf=\"textActionTooltip.NewProgramNames.length === 1\"\r\n annaCoreShowEllipsisTextOnHover\r\n >{{ textActionTooltip.NewProgramNames[0] }}</b\r\n >\r\n <ul *ngIf=\"textActionTooltip.NewProgramNames.length > 1\">\r\n <li *ngFor=\"let item of textActionTooltip.NewProgramNames\">\r\n <label class=\"dot\"></label>\r\n <span annaCoreShowEllipsisTextOnHover>{{ item }}</span>\r\n </li>\r\n </ul>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #showOrHideToggleForTotalRowTooltip>\r\n <div>\r\n {{ showOrHideToggleForTotalRow && !gtGeneralConfig.totalRow ? \"Show Total Row\" : \"Hide Total Row\" }}\r\n </div>\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\r\n<ng-template #statusNoteTooltip>\r\n <div>\r\n <span class=\"status-note-tooltip\">{{ statusNoteForTooltip }}</span>\r\n <span *ngIf=\"statusNoteForPopup.length > 100\"\r\n >...<a\r\n class=\"view-more-comments\"\r\n (click)=\"showEntireStatusNote()\"\r\n >View more</a\r\n ></span\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #innerHtmlToolTipTemplate>\r\n <div [innerHtml]=\"toolTipInnerHtmlData\"></div>\r\n</ng-template>\r\n","/* eslint-disable max-len */\r\nimport { ScrollingModule } from \"@angular/cdk/scrolling\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonToggleModule } from \"@angular/material/button-toggle\";\r\nimport { MatRadioModule } from \"@angular/material/radio\";\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { NgxSliderModule } from \"@angular-slider/ngx-slider\";\r\nimport { NgbModule } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { NgCircleProgressModule } from \"ng-circle-progress\";\r\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\r\n\r\nimport { AnnaBuyerApprovalIconTemplateComponent } from \"./anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component\";\r\nimport { AnnaDeletedOrderIconTemplateComponent } from \"./anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component\";\r\nimport { AnnaEstIconTemplateComponent } from \"./anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component\";\r\nimport { AnnaIconColumnComponent } from \"./anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component\";\r\nimport { AnnaLicensingTableComponent } from \"./anna-core-shared-lib/components/anna-licensing-table/anna-licensing-table.component\";\r\nimport { AnnaLiveIconTemplateComponent } from \"./anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component\";\r\nimport { AnnaNoDataComponent } from \"./anna-core-shared-lib/components/anna-no-data/anna-no-data.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 { AnnaSpinnerLoaderComponent } from \"./anna-core-shared-lib/components/anna-spinner-loader/anna-spinner-loader.component\";\r\nimport { DigitOnlyDirective } from \"./anna-core-shared-lib/directives/digits-only/digits-only.directive\";\r\nimport { FixedRowsPopupTableDirective } from \"./anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive\";\r\nimport { ShowEllipsisTextOnHoverDirective } from \"./anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive\";\r\nimport { AnnaConvertArrayToCommaSeperatedValue } from \"./anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe\";\r\nimport { AnnaConvertZeroOrNullOrUndefinedPipe } from \"./anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe\";\r\nimport { AnnaDateFormatterPipe } from \"./anna-core-shared-lib/pipes/annaDateFormatter.pipe\";\r\nimport { AnnaFilterSearchedTextPipe } from \"./anna-core-shared-lib/pipes/annaFilterSearchedText.pipe\";\r\nimport { AnnaReplaceCharPipe } from \"./anna-core-shared-lib/pipes/annaReplaceChar.pipe\";\r\nimport { AnnaTypeofDataPipe } from \"./anna-core-shared-lib/pipes/annaTypeOfData.pipe\";\r\nimport { AnnaCalendarFilterComponent } from \"./anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component\";\r\nimport { AnnaWeekCalendarComponent } from \"./anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-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 { AnnaColumnDateRangeFilterComponent } from \"./anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component\";\r\nimport { AnnaColumnSliderFilterComponent } from \"./anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-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 { 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\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 AnnaNonEditableGenericTableComponent,\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 AnnaSpinnerLoaderComponent,\r\n AnnaLicensingTableComponent,\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 AnnaPayForPerformanceIconTemplateComponent,\r\n AnnaRejectedIconTemplateComponent,\r\n ShowEllipsisTextOnHoverDirective,\r\n AnnaIconColumnComponent,\r\n AnnaWeekCalendarComponent,\r\n AnnaCalendarFilterComponent,\r\n AnnaSortComponent,\r\n AnnaNonEditableGenericTableComponent,\r\n AnnaColumnDateRangeFilterComponent,\r\n AnnaColumnTimeFilterComponent,\r\n AnnaColumnCheckboxFilterComponent,\r\n DigitOnlyDirective,\r\n AnnaDeletedOrderIconTemplateComponent,\r\n AnnaColumnSliderFilterComponent,\r\n AnnaDateFormatterPipe,\r\n AnnaConvertArrayToCommaSeperatedValue,\r\n FixedRowsPopupTableDirective,\r\n AnnaSpinnerLoaderComponent,\r\n AnnaLicensingTableComponent\r\n ],\r\n})\r\nexport class AnnaCoreModule {}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, ElementRef, Input, OnChanges, Renderer2 } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"anna-core-circular-progress\",\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: \"./anna-circular-progress.component.html\",\r\n styleUrls: [\"./anna-circular-progress.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AnnaCircularProgressComponent implements OnChanges {\r\n @Input() percent: number = 0;\r\n @Input() radius: number = 22;\r\n @Input() outerStrokeWidth: number = 5;\r\n @Input() innerStrokeWidth: number = 5;\r\n @Input() outerStrokeColor: string = \"#268bff\";\r\n @Input() innerStrokeColor: string = \"#d5d5d5\";\r\n @Input() animationDuration: number = 0;\r\n\r\n circumference: number = 0;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n ) {}\r\n\r\n ngOnChanges(): void {\r\n this.updateCircumference();\r\n this.applyAnimationDuration();\r\n }\r\n\r\n updateCircumference(): void {\r\n this.circumference = 2 * Math.PI * (this.radius - this.outerStrokeWidth / 2);\r\n }\r\n\r\n applyAnimationDuration(): void {\r\n const progressBar = this.el.nativeElement.querySelector(\".custom-progress-bar\");\r\n if (progressBar) {\r\n this.renderer.setStyle(progressBar, \"transition\", `stroke-dashoffset ${this.animationDuration}ms ease`);\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"custom-progress-wrapper\"\r\n [ngStyle]=\"{ width: radius * 2 + 1 + 'px', height: radius * 2 + 1 + 'px' }\"\r\n>\r\n <svg\r\n class=\"custom-progress-circle\"\r\n [attr.viewBox]=\"'0 0 ' + radius * 2 + ' ' + radius * 2\"\r\n >\r\n <!-- Background circle -->\r\n <circle\r\n class=\"custom-progress-bg\"\r\n [attr.cx]=\"radius\"\r\n [attr.cy]=\"radius\"\r\n [attr.r]=\"radius - outerStrokeWidth / 2\"\r\n [attr.stroke-width]=\"outerStrokeWidth\"\r\n [attr.stroke]=\"innerStrokeColor\"\r\n [attr.fill]=\"'none'\"\r\n ></circle>\r\n\r\n <!-- Progress circle -->\r\n <circle\r\n class=\"custom-progress-bar\"\r\n [attr.cx]=\"radius\"\r\n [attr.cy]=\"radius\"\r\n [attr.r]=\"radius - outerStrokeWidth / 2\"\r\n [attr.stroke-width]=\"outerStrokeWidth\"\r\n [attr.stroke]=\"outerStrokeColor\"\r\n [attr.fill]=\"'none'\"\r\n [attr.stroke-dasharray]=\"circumference\"\r\n [attr.stroke-dashoffset]=\"circumference - (percent / 100) * circumference\"\r\n [attr.transform]=\"'rotate(' + radius + ' ' + radius + ')'\"\r\n ></circle>\r\n </svg>\r\n</div>\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { cloneDeep } from \"lodash-es\";\r\nimport { Subject } from \"rxjs\";\r\n\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 const numberOfSkeletonColumns: any[][] = [];\r\n let headersInEachColumn = 0;\r\n tableHeaders.forEach((column) => {\r\n if (column.visible) {\r\n headersInEachColumn = 0;\r\n column.headerInfo.forEach(() => {\r\n headersInEachColumn += 1;\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 const isFilterApplied = this.annaFilterService.appliedFiltersArray.length > 0;\r\n const isSortApplied = this.isSortingAppliedToTable();\r\n\r\n return !(isFilterApplied || isSortApplied);\r\n }\r\n\r\n updateFiltersInURL() {\r\n const 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 const 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 this.annaSortService.columnSortState.forEach((value, key) => {\r\n if (value === \"ASC\" || value === \"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 let sortedUsersTableData = usersTable;\r\n this.annaSortService.columnSortState.forEach((value, key) => {\r\n if (value === \"ASC\") {\r\n sortedUsersTableData = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(\r\n true,\r\n usersTable,\r\n key,\r\n );\r\n } else if (value === \"DESC\") {\r\n sortedUsersTableData = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(\r\n false,\r\n usersTable,\r\n key,\r\n );\r\n }\r\n });\r\n\r\n return sortedUsersTableData;\r\n }\r\n\r\n isSortingAppliedToTable() {\r\n let isSortingApplied = false;\r\n\r\n this.annaSortService.columnSortState.forEach((value, key) => {\r\n if (value === \"ASC\" || value === \"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","import { Injectable } from \"@angular/core\";\r\n\r\nimport { ITooltipTableHeader, ITooltipTableRowData } from \"../models/anna-non-editable-gt-models\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class GenericTooltipHtmlService {\r\n \r\n static generateTableHTML(\r\n headers: ITooltipTableHeader[],\r\n rowData: ITooltipTableRowData[],\r\n tableHeading: string = \"\",\r\n ): string {\r\n const rowsToSkip: { [key: number]: number[] } = {}; // Track rows to skip by index for rowspan\r\n\r\n // Start table HTML\r\n let tableHTML = \"\";\r\n\r\n tableHTML =\r\n tableHeading === \"\" ? tableHTML : `<label class=\"generic-innerHtml-table-heading\">${tableHeading}</label>`;\r\n\r\n tableHTML += '<section class=\"generic-innerHtml-table-container\"><table class=\"tooltip-table\">';\r\n\r\n // Generate header row\r\n tableHTML += \"<thead><tr>\";\r\n headers.forEach((header) => {\r\n const colspan = header.colspan ? ` colspan=\"${header.colspan}\"` : \"\";\r\n const rowspan = header.rowspan ? ` rowspan=\"${header.rowspan}\"` : \"\";\r\n const width = header.width ? ` width=\"${header.width}\"` : \"\";\r\n tableHTML += `<th${colspan}${rowspan}${width}>${header.name}</th>`;\r\n });\r\n tableHTML += \"</tr></thead>\";\r\n\r\n // Generate rows\r\n tableHTML += \"<tbody>\";\r\n rowData.forEach((row, rowIndex) => {\r\n tableHTML += \"<tr>\";\r\n\r\n headers.forEach((header, headerIndex) => {\r\n // Check if the current column is part of a rowspan from previous row\r\n if (rowsToSkip[rowIndex] && rowsToSkip[rowIndex].includes(headerIndex)) {\r\n // colIndex++;\r\n return; // Skip this column due to rowspan from a previous row\r\n }\r\n\r\n const cellData = row[header.key] || \"\";\r\n const colspan = row[`${header.key}_colspan`] ? ` colspan=\"${row[`${header.key}_colspan`]}\"` : \"\";\r\n const rowspan = row[`${header.key}_rowspan`] ? ` rowspan=\"${row[`${header.key}_rowspan`]}\"` : \"\";\r\n\r\n // If rowspan is defined, mark future rows to skip this cell\r\n if (row[`${header.key}_rowspan`]) {\r\n const rowsToSpan = row[`${header.key}_rowspan`] as number;\r\n for (let i = 1; i < rowsToSpan; i++) {\r\n if (!rowsToSkip[rowIndex + i]) rowsToSkip[rowIndex + i] = [];\r\n rowsToSkip[rowIndex + i].push(headerIndex); // Mark column to be skipped\r\n }\r\n }\r\n\r\n tableHTML += `<td${colspan}${rowspan}>${cellData}</td>`;\r\n });\r\n\r\n tableHTML += \"</tr>\";\r\n });\r\n tableHTML += \"</tbody>\";\r\n\r\n // Close table\r\n tableHTML += \"</table></section>\";\r\n\r\n return tableHTML;\r\n }\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 const result = AnnaNumberFormatService.GetValueInUnits(Math.abs(inputValue));\r\n let value = result[0];\r\n const unit = result[1];\r\n\r\n value = +(+value).toFixed(digitsToRoundDecimalPoint);\r\n if (inputValue < 0) {\r\n 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 const result = this.GetValueInUnits(Math.abs(inputValue));\r\n let value = result[0];\r\n const unit = result[1];\r\n\r\n value = +value;\r\n if (inputValue < 0) {\r\n value *= -1;\r\n }\r\n\r\n let digitToRoundOff = digitsToRoundDecimalPoint;\r\n if (digitsToRoundDecimalPoint === 0 && (unit === \"M\" || unit === \"B\" || unit === \"K\")) {\r\n digitToRoundOff = 2;\r\n }\r\n return Number.isInteger(value) ? value.toString() + unit : value.toFixed(digitToRoundOff) + 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 updatedInputValue = inputValue;\r\n const thousand = 1000;\r\n const million = 1000000;\r\n const billion = 1000000000;\r\n\r\n if (inputValue >= thousand && inputValue < million) {\r\n updatedInputValue = inputValue / thousand;\r\n unit = \"K\";\r\n } else if (inputValue >= million && inputValue < billion) {\r\n updatedInputValue = inputValue / million;\r\n unit = \"M\";\r\n } else if (inputValue >= billion) {\r\n updatedInputValue = inputValue / billion;\r\n unit = \"B\";\r\n }\r\n\r\n return [updatedInputValue, 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 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 const 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 // if (hashCode === \"d909d7a911336eb2b8732b67d22cfb32c9603a7e\") {\r\n // return;\r\n // // Added by Manisha, stationId with null was getting added\r\n // }\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 const 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 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 { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class RegexPatternsService {\r\n public readonly emailPattern: RegExp = /\\S+@\\S+\\.\\S+/;\r\n public readonly phonePattern: RegExp = /^[(][0-9]{3}[)][0-9]{3}[-][0-9]{4}$/;\r\n public readonly buyerNamePattern: RegExp = /^[A-Za-z]+([ '-][A-Za-z]+)*$/;\r\n public readonly usernamePattern: RegExp = /^\\\\S*$/;\r\n}\r\n","export class LicensingPlan {\r\n Id: number;\r\n PlanId: number;\r\n PlanName: string;\r\n PlanStartDate?: string;\r\n PlanEndDate?: string;\r\n PlanExpiryDays?: number;\r\n FeatureDetails: FeatureDetails[];\r\n constructor(data: any) {\r\n this.Id = data.Id;\r\n this.PlanId = data.PlanId;\r\n this.PlanName = data.PlanName;\r\n this.PlanStartDate = data.PlanStartDate;\r\n this.PlanEndDate = data.PlanEndDate;\r\n this.PlanExpiryDays = data.PlanExpiryDays;\r\n this.FeatureDetails = data.FeatureDetails.map((feature: any) => new FeatureDetails(feature));\r\n }\r\n}\r\n\r\nexport class FeatureDetails {\r\n FeatureId: number;\r\n FeatureName: string;\r\n FeatureDescription: string;\r\n IsEnabled: boolean;\r\n Specification: any[];\r\n constructor(data: any) {\r\n this.FeatureId = data.FeatureId;\r\n this.FeatureName = data.FeatureName;\r\n this.FeatureDescription = data.FeatureDescription;\r\n this.IsEnabled = data.IsEnabled;\r\n this.Specification = data.Specification.map((spec: any) => ({\r\n Json: JSON.parse(spec.Json),\r\n JsonType: spec.JsonType\r\n }));\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 showSplitedOptionsInFilter?: boolean[]; \r\n // Indicates whether to display split options in a checkbox filter. \r\n // When set to true, the values in the filter will be split into individual options. \r\n // For example, if the filter has values like \"A18+, A35+\", it will split them into two separate options (\"A18+\" and \"A35+\") in the checkbox filter.\r\n\r\n splitDelimiter?: string[]; \r\n // Defines the key or logic used to split the values in the checkbox filter when `showSplitedOptionsInFilter` is true.\r\n // This key determines how the values are split. For example, if the filter contains \"A18+, A35+\" and `splitDelimiter` is set to a comma or plus sign ('+'), \r\n // the filter will generate separate options for \"A18+\" and \"A35+\" based on the split delimiter.\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\n | \"STRING_WITH_ELLIPSIS_AND_READ_MORE_TOOLTIP\"\r\n | \"STRING_ELLIPSIS_WITH_TABLE_TOOLTIP\"\r\n | \"STRING_WITH_TOOLTIP_INNER_HTML\"\r\n\r\ntype FILTERTYPE = \"CHECKBOX\" | \"SLIDER\" | \"DATE\" | \"TIME\" | \"WEEK\";\r\n\r\nexport interface ISvgOrIconTypeInGTTable {\r\n showObjectKey: boolean;\r\n svgOrIconName?: string;\r\n svgOrIconTooltipMsg?: string;\r\n additionalText?: string;\r\n additionalTextClass?: string;\r\n}\r\n\r\nexport class SvgOrIconTypeInGTTable {\r\n showObjectKey: boolean;\r\n svgOrIconName?: string;\r\n constructor(data: { showObjectKey: boolean; svgOrIconName: string }) {\r\n this.showObjectKey = data.showObjectKey;\r\n this.svgOrIconName = data.svgOrIconName;\r\n }\r\n}\r\n\r\nexport enum SvgOrIconNames {\r\n PAY_FOR_PERFORMANCE_ACTIVE = \"PAY_FOR_PERFORMANCE_ACTIVE\",\r\n AUTOMATED = \"AUTOMATED\",\r\n DELETED_ORDER = \"DELETED_ORDER\",\r\n WARNING_ICON = \"WARNING_ICON\",\r\n INFORMATION_OUTLINE_ICON = \"INFORMATION_OUTLINE_ICON\",\r\n CANCEL_ICON = \"CANCEL_ICON\",\r\n ALPHA_B_CIRCLE = \"ALPHA_B_CIRCLE\",\r\n ALPHA_R_CIRCLE = \"ALPHA_R_CIRCLE\",\r\n ALPHA_E_CIRCLE = \"ALPHA_E_CIRCLE\",\r\n ALPHA_A_CIRCLE = \"ALPHA_A_CIRCLE\",\r\n}\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 additionalRedTextAfterData?: 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 IActionItemTypeWithStringIconOrTextAction {\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 | \"AUTOMATED\"\r\n | \"WARNING_ICON\"\r\n | \"INFORMATION_OUTLINE_ICON\"\r\n | \"CANCEL_ICON\"\r\n | \"ALPHA_B_CIRCLE\"\r\n | \"ALPHA_R_CIRCLE\"\r\n | \"ALPHA_E_CIRCLE\"\r\n | \"ALPHA_A_CIRCLE\";\r\n\r\nexport class TableClassNameConstant {\r\n static readonly defaultClass = \"table-body-row \";\r\n static readonly selectedRow = \"selected-row \";\r\n static readonly selectableRow = \"selectable-row \";\r\n static readonly lastRowOfGroup = \"last-row-of-group \";\r\n static readonly mgRow = \"mg-row \";\r\n static readonly redColorCellBorder = \"redcolor-cell-border \";\r\n static readonly redColorCellBorderForBookedRtgImpsCol = \" redcolor-cell-border-rtg-imps-col\";\r\n static readonly greenColorCellBorder = \"greencolor-cell-border \";\r\n static readonly yellowColorCellBorder = \"yellowcolor-cell-border\";\r\n static readonly orangeColorCellBorder = \"orangecolor-cell-border \";\r\n static readonly redColorStatus = \"redcolor-status \";\r\n\r\n static readonly groupedTableClass = \"grouped-table-container \";\r\n}\r\n\r\nexport class EllipsisWithTableTooltip {\r\n tooltipHeader: string;\r\n tableHeaders: HeaderWithObjectKey[];\r\n tableData: any[];\r\n cellValue: string;\r\n tooltipHoverText: string;\r\n showTooltip: boolean;\r\n tooltipClass: string;\r\n\r\n constructor(\r\n heading: string,\r\n tableHeaders: HeaderWithObjectKey[],\r\n tableData: any[],\r\n cellValue: string,\r\n tooltipText: string,\r\n showTooltip: boolean,\r\n tooltipClass: string,\r\n ) {\r\n this.tooltipHeader = heading;\r\n this.tableHeaders = tableHeaders;\r\n this.tableData = tableData;\r\n this.cellValue = cellValue;\r\n this.tooltipHoverText = tooltipText;\r\n this.showTooltip = showTooltip;\r\n this.tooltipClass = tooltipClass;\r\n }\r\n}\r\n\r\nexport interface HeaderWithObjectKey {\r\n headerName: string;\r\n objectKey: string;\r\n width: string;\r\n}\r\n\r\nexport interface InnerHTMLTooltipAction {\r\n dataToDisplay?: string; // Text or data to display before the tooltip\r\n showTooltip?: boolean; // Whether to show the tooltip\r\n tooltipInnerHtmlTemplate?: string; // Template or content for the tooltip\r\n tooltipPosition?: string; // Tooltip position (e.g., 'top', 'bottom')\r\n tooltipIconClass?: string; // CSS class for the tooltip icon\r\n tooltipInnerClass?: string; // CSS class for customizing tooltip's inner content\r\n disableTooltip?: boolean; // Whether to disable the tooltip\r\n tooltipMarkerText?: string; // Text for the tooltip icon or indicator\r\n dataToDisplayAfterTooltip?: string; // Data to display after the tooltip\r\n isManualTrigger?: boolean; // Whether the tooltip trigger is manual or automatic\r\n}\r\n\r\nexport interface ITooltipTableHeader {\r\n name: string;\r\n key: string;\r\n width: string;\r\n colspan?: number;\r\n rowspan?: number;\r\n}\r\n\r\nexport interface ITooltipTableRowData {\r\n [key: string]: any; // Allow dynamic keys for row data\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 static readonly SERVER_ERROR_MSG = \"Something went wrong! Please try again\";\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","export class AnnaApplicationConstants {\r\n static readonly PayForPerformanceEasyFilter = \"PoD\";\r\n static readonly AnnaOrderEntryEasyFilter = \"ANNA ORDER ENTRY\";\r\n}\r\n","/* eslint-disable max-len */\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-buyer-approval-icon-template/anna-buyer-approval-icon-template.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-circular-progress/anna-circular-progress.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-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-licensing-table/anna-licensing-table.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-no-data/anna-no-data.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-spinner-loader/anna-spinner-loader.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-filter.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-generic-table.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-generic-tooltip-html.services\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-global-config.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\nexport * from \"./lib/anna-core-shared-lib/services/anna-regex-patterns.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-sort.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-spinner-loader.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-licensing-table.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-sort.model\";\r\nexport * from \"./lib/anna-core-shared-lib/models/anna-tooltip.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/annaConvertArrayToCommaSeperatedValue.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe\";\r\n\r\n// directives\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\nexport * from \"./lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.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-core-shared-lib/constants/anna-application.constants\";\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-slider-filter/anna-column-slider-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-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\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AnnaSpinnerLoaderService","i2","customParseFormat","i1.AnnaDateTimeFormatService","i1","i2.AnnaDateTimeFormatService","i3.AnnaGlobalConfigService","i4","CustomParseFormat","i2.AnnaSortService","i1.AnnaSortService","i2.AnnaFilterService","i3","i3.AnnaFilterService","i1.AnnaFilterService","i5","i6","i3.AnnaSortService"],"mappings":"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"}
|