@annalib/anna-core 33.0.2 → 34.0.1
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-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-dropdown-lib/components/anna-single-select/anna-single-select.component.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-single-select/anna-single-select.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-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({\n selector: \"anna-core-buyer-approval-icon-template\",\n templateUrl: \"./anna-buyer-approval-icon-template.component.html\",\n styleUrls: [\"./anna-buyer-approval-icon-template.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\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({\n selector: \"anna-core-anna-est-icon-template\",\n templateUrl: \"./anna-est-icon-template.component.html\",\n styleUrls: [\"./anna-est-icon-template.component.scss\"],\n imports: []\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({\n selector: \"anna-core-live-icon-template\",\n templateUrl: \"./anna-live-icon-template.component.html\",\n styleUrls: [\"./anna-live-icon-template.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\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({\n selector: \"anna-core-pay-for-performance-icon-template\",\n templateUrl: \"./anna-pay-for-performance-icon-template.component.html\",\n styleUrls: [\"./anna-pay-for-performance-icon-template.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\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({\n selector: \"anna-core-rejected-icon-template\",\n templateUrl: \"./anna-rejected-icon-template.component.html\",\n styleUrls: [\"./anna-rejected-icon-template.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\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({\n selector: \"anna-core-icon-column\",\n templateUrl: \"./anna-icon-column.component.html\",\n styleUrls: [\"./anna-icon-column.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n AnnaPayForPerformanceIconTemplateComponent,\n AnnaLiveIconTemplateComponent,\n AnnaRejectedIconTemplateComponent,\n AnnaNotifyIconTemplateComponent,\n AnnaBuyerApprovalIconTemplateComponent,\n AnnaDeletedOrderIconTemplateComponent,\n AnnaEstIconTemplateComponent,\n ]\n})\r\nexport class AnnaIconColumnComponent {\r\n @Input() componentName: string;\r\n @Input({ required: true }) 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() {\r\n this.columnIconClicked.emit();\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 === 'ALERT_OCTAGON_ICON'\"\r\n class=\"mdi mdi-alert-octagon\"\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 === 'MESSAGE'\"\r\n class=\"mdi mdi-comment-edit-outline\"\r\n (click)=\"svgIconClicked()\"\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 { 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({\n selector: \"anna-core-spinner-loader\",\n imports: [CommonModule],\n templateUrl: \"./anna-spinner-loader.component.html\",\n styleUrls: [\"./anna-spinner-loader.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush\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({\n selector: \"anna-core-calendar-filter-lib\",\n templateUrl: \"./anna-calendar-filter.component.html\",\n styleUrls: [\"./anna-calendar-filter.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgIf, FormsModule, NgbInputDatepicker, NgClass, TitleCasePipe]\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 IConfirmationPopupConfig,\r\n ICustomMultiSelect,\r\n ICustomSingleSelect,\r\n INgbDatePickerSettings,\r\n INgSelectSettings,\r\n INgxSkeletonLoaderSettings,\r\n IWeekCalendar,\r\n} from \"../models/anna-global-dropdown-config.model\";\r\nimport { IGtGeneralConfig } from \"../models/anna-non-editable-gt-models\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaGlobalConfigService {\r\n readonly defaultNgbDatePickerSettings: INgbDatePickerSettings;\r\n readonly defaultNgSelectSettings: INgSelectSettings;\r\n readonly defaultNgxSkeletonLoaderSettings: INgxSkeletonLoaderSettings;\r\n readonly defaultConfirmationPopupConfig: IConfirmationPopupConfig;\r\n readonly defaultUnsavedChangesConfirmationPopupConfig: IConfirmationPopupConfig;\r\n readonly defaultWeekCalendarConfig: IWeekCalendar;\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.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.defaultNgxSkeletonLoaderSettings = {\r\n numberOfSkeletonRows: Array(6).fill(0),\r\n };\r\n\r\n this.defaultConfirmationPopupConfig = {\r\n showCancelButton: true,\r\n title: \"Are you sure you want to save the changes?\",\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.defaultUnsavedChangesConfirmationPopupConfig = {\r\n showCancelButton: true,\r\n title: \"You have unsaved changes. All the changes will be lost if you switch. Do you want to continue?\",\r\n showConfirmButton: true,\r\n cancelButtonLabel: \"No\",\r\n confirmButtonLabel: \"Yes\",\r\n showCloseIcon: false,\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.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 minHeightOfList: 30,\r\n maxHeightOfList: 180,\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({\n selector: \"anna-core-week-calendar-filter-lib\",\n templateUrl: \"./anna-week-calendar-filter.component.html\",\n styleUrls: [\"./anna-week-calendar-filter.component.scss\"],\n imports: [NgIf, FormsModule, NgbInputDatepicker, NgClass, NgbDatepicker]\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.annaGlobalConfig.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 annaGlobalConfig: 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 \"AirDate\"\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 = cloneDeep(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 \"buyerBookedValue\",\r\n \"trafficBookedValue\",\r\n \"bookedVal\",\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 \"scheduledADUsProjGrp\",\r\n \"scheduledADUsProjImps\",\r\n \"postedADUsGrp\",\r\n \"postedADUsImps\",\r\n \"bookedVal\",\r\n \"userMGValue\",\r\n \"rating\",\r\n \"IMPS\",\r\n \"rate\",\r\n \"amount\",\r\n \"bookedGRP\",\r\n \"bookedGI\",\r\n \"projectedGRP\",\r\n \"projectedGI\",\r\n \"budget\",\r\n \"bookedImps\",\r\n \"postedImps\",\r\n \"projectedImps\",\r\n ];\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 \"createdOn\",\r\n \"airDate\",\r\n \"scheduledWeek\",\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 const formatNumber = (num: number) => parseFloat(num.toFixed(2));\r\n \r\n if (Math.abs(data) >= 1000) {\r\n const formatted = formatNumber(Math.abs(data) / 1000);\r\n return `${data < 0 ? '-' : ''}${formatted}k%`;\r\n }\r\n return `${formatNumber(data)}%`;\r\n };\r\n \r\n currencyTranslateFunction = (data: number): string => {\r\n const formatNumber = (num: number) => parseFloat(num.toFixed(2));\r\n \r\n if (Math.abs(data) >= 1000) {\r\n const formatted = formatNumber(Math.abs(data) / 1000);\r\n return `${data < 0 ? '-' : ''}$${formatted}k`;\r\n }\r\n return `${data < 0 ? '-' : ''}$${formatNumber(Math.abs(data))}`;\r\n };\r\n \r\n normalTranslateFunction = (data: number): string => {\r\n const formatNumber = (num: number) => parseFloat(num.toFixed(2));\r\n \r\n if (data >= 1000) {\r\n return `${formatNumber(data / 1000)}k`;\r\n }\r\n return formatNumber(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 this.selectedRadio === \"airDate\" ||\r\n this.selectedRadio === \"scheduledWeek\"\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 && this.nestedKeyExists(originalData[0], 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 key === \"createdOn\" ||\r\n key === \"airDate\" ||\r\n key === \"scheduledWeek\"\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\r\n ? value.find((val: any) => u[key].includes(val))\r\n : value.includes(this.getValueFromObject(u, key)),\r\n );\r\n }\r\n }\r\n });\r\n return filteredData;\r\n }\r\n\r\n getValueFromObject(obj: any, key: string) {\r\n return key.split(\".\").reduce((res, currentKey) => res && res[currentKey], obj);\r\n }\r\n\r\n nestedKeyExists(obj: any, key: string) {\r\n return (\r\n key.split(\".\").reduce((acc, currentKey) => {\r\n if (acc && currentKey in acc) {\r\n return acc[currentKey];\r\n }\r\n return undefined;\r\n }, obj) !== undefined\r\n );\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 key === \"airDate\" ||\r\n key === \"scheduledWeek\"\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 key === \"createdOn\" ||\r\n key === \"airDate\" ||\r\n key === \"scheduledWeek\"\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(\r\n optionData,\r\n header,\r\n showSplitedOptions,\r\n splitDelimiter,\r\n );\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 findString = find.replace(\"<\", \"<\").replace(\">\", \">\");\r\n updatedString = updatedString.replace(\"<\", \"<\").replace(\">\", \">\");\r\n const indexes = this.getIndicesOf(findString, 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 + findString.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({\n selector: \"anna-core-sort-lib\",\n templateUrl: \"./anna-sort.component.html\",\n styleUrls: [\"./anna-sort.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgFor, NgClass]\n})\r\nexport class AnnaSortComponent implements OnChanges, OnInit {\r\n @Input({ required: true }) 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({\n selector: \"anna-core-anna-column-checkbox-filter\",\n templateUrl: \"./anna-column-checkbox-filter.component.html\",\n styleUrls: [\"./anna-column-checkbox-filter.component.scss\"],\n imports: [\n NgIf,\n NgFor,\n NgClass,\n AnnaSortComponent,\n FormsModule,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n ]\n})\r\nexport class AnnaColumnCheckboxFilterComponent implements OnInit {\r\n @Input() showFilterHeaderTabs: boolean;\r\n @Input() isLurAndCsrComponent: boolean;\r\n @Input({ required: true }) tableData: any[];\r\n @Input({ required: true }) clonedTableData: any[];\r\n @Input({ required: true }) 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\r\n ? activeTab.splitDelimiter ?? this.annaFilterService.DEFAULT_SPLIT_SEPARATOR\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.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(\r\n header,\r\n optionData,\r\n this.showSplitedOptions,\r\n this.splitDelimiter,\r\n );\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 *ngIf=\"searchItem\"\r\n class=\"data\"\r\n title=\"{{ option.value }}\"\r\n [innerHTML]=\"option.label\"\r\n ></span>\r\n <span\r\n *ngIf=\"!searchItem\"\r\n class=\"data\"\r\n title=\"{{ option.value }}\"\r\n >{{ option.label }}</span\r\n >\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({\n selector: \"anna-core-anna-column-date-range-filter\",\n templateUrl: \"./anna-column-date-range-filter.component.html\",\n styleUrls: [\"./anna-column-date-range-filter.component.scss\"],\n imports: [NgIf, NgFor, NgClass, AnnaSortComponent, AnnaCalendarFilterComponent]\n})\r\nexport class AnnaColumnDateRangeFilterComponent implements OnInit {\r\n @Input({ required: true }) tableData: any[];\r\n @Input({ required: true }) clonedTableData: any[];\r\n @Input({ required: true }) 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({\n selector: \"anna-core-anna-column-slider-filter\",\n templateUrl: \"./anna-column-slider-filter.component.html\",\n styleUrls: [\"./anna-column-slider-filter.component.scss\"],\n imports: [NgIf, NgFor, NgClass, AnnaSortComponent, FormsModule, NgxSliderModule]\n})\r\nexport class AnnaColumnSliderFilterComponent implements OnInit {\r\n @Input() filterTabObjects: any[];\r\n @Input() isLurAndCsrComponent: boolean;\r\n @Input({ required: true }) tableData: any[];\r\n @Input({ required: true }) showFilterHeaderTabs: boolean;\r\n @Input({ required: true }) 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({\n selector: \"anna-core-anna-column-time-filter\",\n templateUrl: \"./anna-column-time-filter.component.html\",\n styleUrls: [\"./anna-column-time-filter.component.scss\"],\n imports: [NgIf, NgFor, NgClass, AnnaSortComponent, FormsModule, MatButtonToggleModule]\n})\r\nexport class AnnaColumnTimeFilterComponent implements OnInit {\r\n @Input({ required: true }) tableData: any[];\r\n @Input({ required: true }) clonedTableData: any[];\r\n @Input({ required: true }) filterTabObjects: any[];\r\n @Input() isLurAndCsrComponent: boolean;\r\n @Input() showFilterHeaderTabs: boolean;\r\n @Input() showAllTimeRangeCheckboxes: 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","/* eslint-disable import/no-extraneous-dependencies */\r\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from \"@angular/cdk/scrolling\";\r\nimport { NgClass, NgFor, NgIf, NgTemplateOutlet } from \"@angular/common\";\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { isEqual } from \"lodash-es\";\r\n\r\nimport { ICustomSingleSelect } from \"../../../anna-core-shared-lib/models/anna-global-dropdown-config.model\";\r\nimport { AnnaFilterSearchedTextPipe } from \"../../../anna-core-shared-lib/pipes/annaFilterSearchedText.pipe\";\r\nimport { AnnaTypeofDataPipe } from \"../../../anna-core-shared-lib/pipes/annaTypeOfData.pipe\";\r\nimport { AnnaGlobalConfigService } from \"../../../anna-core-shared-lib/services/anna-global-config.service\";\r\nimport { SingleSelectIdText } from \"./models/anna-single-select.model\";\r\n\r\n@Component({\n selector: \"anna-core-single-select\",\n templateUrl: \"./anna-single-select.component.html\",\n styleUrls: [\"./anna-single-select.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatMenuModule,\n NgIf,\n NgClass,\n FormsModule,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n NgTemplateOutlet,\n NgFor,\n AnnaFilterSearchedTextPipe,\n AnnaTypeofDataPipe,\n ]\n})\r\nexport class AnnaSingleSelectComponent implements OnInit, OnChanges {\r\n @Input() config: ICustomSingleSelect;\r\n @Input() loading: boolean = false;\r\n @Input() showAdditionalDataInSelectedText: boolean = false;\r\n @Input() disabled: boolean;\r\n @Input() items: SingleSelectIdText[] | string[] | any;\r\n @Input() selectedItem: SingleSelectIdText | string | any;\r\n @Input() keyToUseForDisplay: string = \"text\";\r\n @Input() keyToUseForCheckingSelectedItem: string = \"id\";\r\n @Input() hideDropdownArrow: boolean = false;\r\n @Input() borderbottomObject: any = {};\r\n @Input() defaultDropdownHeight: number = null;\r\n @Input() itemsToHideInDropdownIds: number[] = [];\r\n @Input() showClearSelection: boolean = false;\r\n\r\n @Output() valueChanged: EventEmitter<SingleSelectIdText> = new EventEmitter<SingleSelectIdText>();\r\n @Output() dropdownClosedEvent: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() dropdownOpenedEvent: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() clearSelectionClickedEvent: EventEmitter<any> = new EventEmitter<any>();\r\n searchFor: string;\r\n yPosition: any = \"above\";\r\n width: number;\r\n heightOfCheckboxTooltipFilter: number;\r\n\r\n @ViewChild(\"dropdown\") buttonElement: ElementRef;\r\n\r\n constructor(\r\n private annaGlobalConfig: AnnaGlobalConfigService,\r\n private searchFilterPipe: AnnaFilterSearchedTextPipe,\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.config?.currentValue) {\r\n this.config = { ...this.annaGlobalConfig.defaultSingleSelectConfig, ...this.config };\r\n }\r\n\r\n if (changes.items?.currentValue) {\r\n if (this.defaultDropdownHeight) this.heightOfCheckboxTooltipFilter = this.defaultDropdownHeight;\r\n else this.heightOfCheckboxTooltipFilter = this.items.length > 7 ? 200 : 25.68 * this.items.length;\r\n }\r\n\r\n if (changes.itemsToHideInDropdownIds?.currentValue) {\r\n this.items = this.items.filter(\r\n (item: SingleSelectIdText) => !this.itemsToHideInDropdownIds.includes(item.id),\r\n );\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.config = { ...this.annaGlobalConfig.defaultSingleSelectConfig, ...this.config };\r\n this.setPostion();\r\n }\r\n\r\n trackByFn(index: number) {\r\n return index;\r\n }\r\n\r\n itemSelected(item: SingleSelectIdText, event: MouseEvent) {\r\n if (item?.isDisabled) {\r\n event.stopPropagation();\r\n return;\r\n }\r\n if (!isEqual(this.selectedItem, item)) {\r\n this.valueChanged.emit(item);\r\n }\r\n this.selectedItem = item;\r\n }\r\n\r\n dropdownOpened() {\r\n this.searchFor = \"\";\r\n this.updateHeight();\r\n this.width = this.buttonElement.nativeElement.offsetWidth;\r\n this.dropdownOpenedEvent.emit();\r\n }\r\n\r\n dropdownClosed() {\r\n this.dropdownClosedEvent.emit();\r\n }\r\n\r\n clearSelectionClicked() {\r\n this.selectedItem = null;\r\n this.clearSelectionClickedEvent.emit();\r\n }\r\n\r\n setPostion() {\r\n if (this.config && this.config.position === \"TOP\") {\r\n this.yPosition = \"above\";\r\n } else if (this.config && this.config.position === \"BOTTOM\") {\r\n this.yPosition = \"below\";\r\n }\r\n }\r\n updateHeight() {\r\n const items = this.searchFilterPipe.transform(this.items, this.searchFor, this.keyToUseForDisplay);\r\n if (items.length > 7) {\r\n this.heightOfCheckboxTooltipFilter = 200;\r\n } else if (items.length > 0) {\r\n this.heightOfCheckboxTooltipFilter = 25.68 * items.length;\r\n } else {\r\n this.heightOfCheckboxTooltipFilter = 25.68;\r\n }\r\n }\r\n}\r\n","<button\r\n id=\"dropdown-trigger\"\r\n #dropdown\r\n #t=\"matMenuTrigger\"\r\n (menuClosed)=\"dropdownClosed()\"\r\n (menuOpened)=\"dropdownOpened()\"\r\n [matMenuTriggerFor]=\"contextMenu\"\r\n [disabled]=\"disabled || loading\"\r\n>\r\n <span\r\n class=\"placeholder\"\r\n *ngIf=\"!selectedItem && config\"\r\n >{{ config.placeholder }}</span\r\n >\r\n <span\r\n class=\"selected-item\"\r\n [class]=\"selectedItem.class\"\r\n annaCoreShowEllipsisTextOnHover\r\n *ngIf=\"selectedItem\"\r\n >\r\n <ng-container *ngIf=\"(selectedItem | AnnatypeofData) === 'object'; else stringTypeTemplate\">\r\n {{ selectedItem[keyToUseForDisplay] }}\r\n <ng-container *ngIf=\"showAdditionalDataInSelectedText && selectedItem && selectedItem?.additionalData\">\r\n <span [class]=\"selectedItem?.additionalClass\">{{ selectedItem?.additionalData }} </span>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #stringTypeTemplate>\r\n {{ selectedItem }}\r\n </ng-template>\r\n </span>\r\n <div\r\n *ngIf=\"loading\"\r\n [ngClass]=\"{ 'spinner-for-button-directive': loading }\"\r\n ></div>\r\n\r\n <ng-container *ngIf=\"!loading && !hideDropdownArrow\">\r\n <i\r\n *ngIf=\"!t.menuOpen\"\r\n class=\"mdi mdi-menu-down icon\"\r\n ></i>\r\n <i\r\n *ngIf=\"t.menuOpen\"\r\n class=\"mdi mdi-menu-up icon\"\r\n ></i>\r\n </ng-container>\r\n</button>\r\n<ng-content select=\".role-tooltip-icon\"></ng-content>\r\n<mat-menu\r\n backdropClass=\"single-select-dropdown\"\r\n [yPosition]=\"yPosition\"\r\n #contextMenu=\"matMenu\"\r\n>\r\n <ng-template matMenuContent>\r\n <div\r\n class=\"{{ config.classes }}\"\r\n [style.width.px]=\"width\"\r\n >\r\n <div\r\n class=\"gap\"\r\n *ngIf=\"config.showSearchBar\"\r\n ></div>\r\n <div\r\n *ngIf=\"showClearSelection\"\r\n class=\"clear-selection\"\r\n >\r\n <a\r\n (click)=\"clearSelectionClicked()\"\r\n [ngClass]=\"{ disabled: !selectedItem }\"\r\n >Clear selection</a\r\n >\r\n </div>\r\n <section\r\n *ngIf=\"config.showSearchBar\"\r\n class=\"search-bar\"\r\n >\r\n <i class=\"mi mdi-search search-icon\"></i>\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"searchFor\"\r\n placeholder=\"Search\"\r\n (ngModelChange)=\"updateHeight()\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n </section>\r\n <cdk-virtual-scroll-viewport\r\n class=\"dropdown-data-container\"\r\n itemSize=\"18\"\r\n [style.height.px]=\"heightOfCheckboxTooltipFilter\"\r\n >\r\n <ul\r\n class=\"single-select-ul\"\r\n [style.width.px]=\"width\"\r\n >\r\n <ng-container *ngIf=\"items && (items[0] | AnnatypeofData) === 'object'; else stringTypeTemplate\">\r\n <li\r\n annaCoreShowEllipsisTextOnHover\r\n *cdkVirtualFor=\"\r\n let item of items | AnnafilterSearchedText: searchFor : keyToUseForDisplay;\r\n let last = last;\r\n trackBy: trackByFn\r\n \"\r\n [ngClass]=\"{\r\n active:\r\n selectedItem &&\r\n selectedItem[keyToUseForCheckingSelectedItem] ===\r\n item[keyToUseForCheckingSelectedItem],\r\n 'show-bottom-border': !last && borderbottomObject[item.id],\r\n disabled: item.isDisabled\r\n }\"\r\n (click)=\"itemSelected(item, $event)\"\r\n >\r\n <span [class]=\"item.class\"> {{ item[keyToUseForDisplay] }} </span>\r\n <ng-container *ngIf=\"item && item.additionalData\">\r\n <span\r\n class=\"ml-0\"\r\n [class]=\"item.additionalClass\"\r\n >\r\n {{ item?.additionalData }}\r\n </span>\r\n </ng-container>\r\n </li>\r\n\r\n <ng-container\r\n [ngTemplateOutlet]=\"noDataCase\"\r\n [ngTemplateOutletContext]=\"{ items: items }\"\r\n ></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #stringTypeTemplate>\r\n <ng-container\r\n *ngFor=\"\r\n let item of items | AnnafilterSearchedText: searchFor : keyToUseForDisplay;\r\n trackBy: trackByFn\r\n \"\r\n >\r\n <li\r\n annaCoreShowEllipsisTextOnHover\r\n [ngClass]=\"{ active: selectedItem && selectedItem === item }\"\r\n (click)=\"itemSelected(item, $event)\"\r\n >\r\n <span> {{ item }} </span>\r\n </li>\r\n </ng-container>\r\n <ng-container\r\n [ngTemplateOutlet]=\"noDataCase\"\r\n [ngTemplateOutletContext]=\"{ items: items }\"\r\n ></ng-container>\r\n </ng-template>\r\n </ul>\r\n </cdk-virtual-scroll-viewport>\r\n </div>\r\n </ng-template>\r\n</mat-menu>\r\n\r\n<ng-template\r\n #noDataCase\r\n let-items=\"items\"\r\n>\r\n <li\r\n annaCoreShowEllipsisTextOnHover\r\n *ngIf=\"(items | AnnafilterSearchedText: searchFor : keyToUseForDisplay)?.length === 0\"\r\n >\r\n <span> No data found </span>\r\n </li>\r\n</ng-template>\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 } 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\nimport { AnnaSingleSelectComponent } from \"../../../anna-dropdown-lib/components/anna-single-select/anna-single-select.component\";\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({\n selector: \"anna-core-non-editable-generic-table-lib\",\n templateUrl: \"./anna-non-editable-generic-table.component.html\",\n styleUrls: [\"./anna-non-editable-generic-table.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgClass,\n NgStyle,\n MatTableModule,\n NgFor,\n NgIf,\n NgTemplateOutlet,\n NgbTooltip,\n NgxSkeletonLoaderModule,\n ShowEllipsisTextOnHoverDirective,\n NgSwitch,\n NgSwitchCase,\n AnnaIconColumnComponent,\n FormsModule,\n MatRadioModule,\n NgSwitchDefault,\n AnnaNoDataComponent,\n AnnaColumnCheckboxFilterComponent,\n AnnaColumnSliderFilterComponent,\n AnnaColumnDateRangeFilterComponent,\n AnnaColumnTimeFilterComponent,\n NgCircleProgressModule,\n AsyncPipe,\n AnnaEstIconTemplateComponent,\n AnnaSingleSelectComponent,\n ]\n})\r\nexport class AnnaNonEditableGenericTableComponent implements OnInit, OnChanges, AfterViewChecked {\r\n @Input() showSkeletonLoading: boolean;\r\n @Input({ required: true }) tableHeaders: IGtTableHeader[];\r\n @Input({ required: true }) tableData: any[];\r\n @Input({ required: true }) clonedTableData: any[];\r\n @Input({ required: true }) gtGeneralConfig: IGtGeneralConfig;\r\n @Input() totalRowInfo?: ITotalRowInfo[];\r\n @Input({ required: true }) 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 @Output() singleSelectDropdownValueEmit = new EventEmitter<{\r\n selectedItem: any;\r\n row: any;\r\n dropdownIndex: number;\r\n }>();\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 intialRowLimit: number = 30;\r\n end: number = this.intialRowLimit + 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 // 10 is extra just in case, also it increase scrollbar height, if we keep limit same as maximum no of rows then scrollbar height will be less indicating there is less content to scroll.\r\n this.intialRowLimit = cloneDeep(this.maximumRowsWhichCanBeRenderedWithoutScroll + 10);\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(\"revisionType\", \"Revision Type\");\r\n this.tooltipRadioTextMap.set(\"revisionStatus\", \"Current Status\");\r\n this.tooltipRadioTextMap.set(\"annaRevised\", \"ANNA Revised\");\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(\"sellerProgramName\", \"Seller Program\");\r\n this.tooltipRadioTextMap.set(\"LastFetchedDate\", \"Last Fetched\");\r\n\r\n this.tooltipRadioTextMap.set(\"trafficOrderId\", \"Order Id\");\r\n this.tooltipRadioTextMap.set(\"repOrderIdWithModCode\", \"Alt/Rep Order Id - Mod Code#\");\r\n this.tooltipRadioTextMap.set(\"smReviewedBy\", \"SM Reviewer\");\r\n this.tooltipRadioTextMap.set(\"smReviewedDateTime\", \"SM Reviewed At\");\r\n this.tooltipRadioTextMap.set(\"sentForEntryBy\", \"Sent For Entry By\");\r\n this.tooltipRadioTextMap.set(\"sentForEntryDateTime\", \"Sent For Entry At\");\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(\"scheduledADUsProjGrp\", \"Sch. ADUs Proj. GRP\");\r\n this.tooltipRadioTextMap.set(\"scheduledADUsProjImps\", \"Sch. ADUs Proj. IMPS\");\r\n this.tooltipRadioTextMap.set(\"postedADUsGrp\", \"Posted ADUs GRP\");\r\n this.tooltipRadioTextMap.set(\"postedADUsImps\", \"Posted ADUs IMPS\");\r\n this.tooltipRadioTextMap.set(\"bookedVal\", \"$ Booked\");\r\n this.tooltipRadioTextMap.set(\"station\", \"Station\");\r\n this.tooltipRadioTextMap.set(\"networkAffiliate\", \"Network Affiliate\");\r\n this.tooltipRadioTextMap.set(\"market\", \"Market\");\r\n\r\n // Offer tracker\r\n this.tooltipRadioTextMap.set(\"orderIdPodP4s\", \"Order Id (POD/P4S)\");\r\n this.tooltipRadioTextMap.set(\"altOrRepOrderId\", \"Alt/Rep Order Id\");\r\n this.tooltipRadioTextMap.set(\"stnuserReview\", \"Stn User Review\");\r\n this.tooltipRadioTextMap.set(\"reviewedByBuyerName\", \"Buyer Reviewed By\");\r\n this.tooltipRadioTextMap.set(\"reviewedBySM\", \"SM Reviewed By\");\r\n this.tooltipRadioTextMap.set(\"offerId\", \"Offer Id\");\r\n this.tooltipRadioTextMap.set(\"offerType\", \"Offer Type\");\r\n this.tooltipRadioTextMap.set(\"reviewedByUser\", \"Reviewed By\");\r\n this.tooltipRadioTextMap.set(\"lastUpdatedAtDate\", \"Last Updated At\");\r\n this.tooltipRadioTextMap.set(\"createdOn\", \"Created On\");\r\n\r\n this.tooltipRadioTextMap.set(\"scheduledWeek\", \"Scheduled Week\");\r\n this.tooltipRadioTextMap.set(\"scheduledDay\", \"Scheduled Day\");\r\n this.tooltipRadioTextMap.set(\"airDate\", \"Air Date\");\r\n this.tooltipRadioTextMap.set(\"projectedImps\", \"Projected IMPS\");\r\n this.tooltipRadioTextMap.set(\"postedImps\", \"Posted IMPS\");\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 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, // Defaulting to 'false' if undefined\r\n columnHeader?.splitDelimiter?.[index],\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, key: string) {\r\n this.gtSVGIconClicked.emit({ data, key });\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.intialRowLimit + 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 // buffer size tells after how much px unit scroll we should append more rows, default is 150 (in px)\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 const onScrollNoOfRowsToAppend: number = 30;\r\n this.start = this.end;\r\n this.end = onScrollNoOfRowsToAppend + 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 onDropdownChanged(selectedItem: any, row: any, dropdownIndex: number) {\r\n this.singleSelectDropdownValueEmit.emit({ selectedItem, row, dropdownIndex });\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', marginBottom: '0' }\"\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)=\"\r\n svgIconClicked(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].actionKey\r\n )\r\n \"\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\r\n <ng-template #inputBox>\r\n <span class=\"input-box-container\">\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[\r\n columnDef.headerInfo[subLineIndex].objectKey\r\n ],\r\n false\r\n )\r\n \"\r\n (paste)=\"\r\n changesMadeInEditableInputBox(\r\n $event,\r\n ROW_DATA[\r\n columnDef.headerInfo[subLineIndex].objectKey\r\n ],\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]\r\n .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[\r\n 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 *ngIf=\"action?.showLink\">\r\n <a\r\n [id]=\"action?.id\"\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 >{{ action?.linkText }}\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </span>\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_SELECT_DROPDOWN'\">\r\n <ng-container\r\n *ngFor=\"\r\n let dropdown of ROW_DATA[\r\n columnDef.headerInfo[subLineIndex].actionKey\r\n ];\r\n let dropdownIndex = index\r\n \"\r\n >\r\n <anna-core-single-select\r\n class=\"gt-single-select dropdown {{ dropdown?.className }}\"\r\n [ngClass]=\"{ error: !dropdown?.selectedItem }\"\r\n [items]=\"dropdown?.itemList\"\r\n [selectedItem]=\"dropdown?.selectedItem\"\r\n [config]=\"dropdown?.dropdownConfig\"\r\n (valueChanged)=\"\r\n onDropdownChanged($event, ROW_DATA, dropdownIndex)\r\n \"\r\n >\r\n </anna-core-single-select>\r\n </ng-container>\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 26\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\r\n *ngSwitchCase=\"\r\n 'ICON_CELL_AND_STRING_WITH_ELLIPSIS_AND_READ_MORE_TOOLTIP'\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 [class]=\"action.iconClass\"\r\n title=\"\"\r\n (mouseenter)=\"\r\n mouseEnterOnStringTextActionType(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].tooltipKey\r\n )\r\n \"\r\n placement=\"bottom auto\"\r\n container=\"body\"\r\n [autoClose]=\"true\"\r\n tooltipClass=\"team-user-tooltip remove-on-scroll-class\"\r\n [ngbTooltip]=\"action.showTooltip ? action.tooltipData : null\"\r\n (click)=\"\r\n textActionClicked(\r\n ROW_DATA,\r\n action.id,\r\n columnDef.headerInfo[subLineIndex]\r\n )\r\n \"\r\n [disableTooltip]=\"!action.showTooltip\"\r\n >\r\n </i>\r\n\r\n <ng-container *ngIf=\"action.showObjectKey\">\r\n <span\r\n title=\"\"\r\n *ngIf=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n .length < 26\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]\r\n .length > 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[\r\n columnDef.headerInfo[subLineIndex].objectKey\r\n ],\r\n info\r\n )\r\n \"\r\n *ngIf=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n .length > 25\r\n \"\r\n >\r\n {{ ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey] }}\r\n </span>\r\n </ng-container>\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 { 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 ],\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 ],\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({\n selector: \"anna-core-circular-progress\",\n imports: [CommonModule],\n templateUrl: \"./anna-circular-progress.component.html\",\n styleUrls: [\"./anna-circular-progress.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush\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 public static GetRoundedValuesWithoutUnits(inputValue: number, digitsToRoundDecimalPoint = 2) {\r\n let value = inputValue;\r\n value = +(+value).toFixed(digitsToRoundDecimalPoint);\r\n if (inputValue < 0) {\r\n value *= -1;\r\n }\r\n return value.toLocaleString(\"en-IN\");\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 .'-]{0,19}$/;\r\n public readonly usernamePattern: RegExp = /^\\\\S*$/;\r\n public readonly namePattern: RegExp = /^[A-Za-z][A-Za-z .'-]{0,49}$/;\r\n}\r\n","import { SingleSelectIdText } from \"../../anna-dropdown-lib/components/anna-single-select/models/anna-single-select.model\";\r\nimport { ICustomSingleSelect, 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 | \"ICON_CELL_AND_STRING_WITH_ELLIPSIS_AND_READ_MORE_TOOLTIP\"\r\n | \"SINGLE_SELECT_DROPDOWN\";\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 ALERT_OCTAGON_ICON = \"ALERT_OCTAGON_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 additionalTextAfterLink?:string;\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 | \"ALERT_OCTAGON_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 | \"MESSAGE\";\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}\r\n\r\nexport interface IDropdownConfigForGT {\r\n itemList: SingleSelectIdText[];\r\n selectedItem: SingleSelectIdText;\r\n dropdownConfig: ICustomSingleSelect;\r\n}\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 static readonly UNAUTHORIZED_ACCESS = 401;\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-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-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","customParseFormat","i1.AnnaDateTimeFormatService","i2","i2.AnnaDateTimeFormatService","i3.AnnaGlobalConfigService","CustomParseFormat","i2.AnnaSortService","i1.AnnaSortService","i2.AnnaFilterService","i3","i3.AnnaFilterService","i1.AnnaFilterService","i4","i1.AnnaGlobalConfigService","i2.AnnaFilterSearchedTextPipe","i5","i6","i1","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-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-dropdown-lib/components/anna-single-select/anna-single-select.component.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-single-select/anna-single-select.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-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({\n selector: \"anna-core-buyer-approval-icon-template\",\n templateUrl: \"./anna-buyer-approval-icon-template.component.html\",\n styleUrls: [\"./anna-buyer-approval-icon-template.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\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({\n selector: \"anna-core-anna-est-icon-template\",\n templateUrl: \"./anna-est-icon-template.component.html\",\n styleUrls: [\"./anna-est-icon-template.component.scss\"],\n imports: []\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({\n selector: \"anna-core-live-icon-template\",\n templateUrl: \"./anna-live-icon-template.component.html\",\n styleUrls: [\"./anna-live-icon-template.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\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({\n selector: \"anna-core-pay-for-performance-icon-template\",\n templateUrl: \"./anna-pay-for-performance-icon-template.component.html\",\n styleUrls: [\"./anna-pay-for-performance-icon-template.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\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({\n selector: \"anna-core-rejected-icon-template\",\n templateUrl: \"./anna-rejected-icon-template.component.html\",\n styleUrls: [\"./anna-rejected-icon-template.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\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({\n selector: \"anna-core-icon-column\",\n templateUrl: \"./anna-icon-column.component.html\",\n styleUrls: [\"./anna-icon-column.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n AnnaPayForPerformanceIconTemplateComponent,\n AnnaLiveIconTemplateComponent,\n AnnaRejectedIconTemplateComponent,\n AnnaNotifyIconTemplateComponent,\n AnnaBuyerApprovalIconTemplateComponent,\n AnnaDeletedOrderIconTemplateComponent,\n AnnaEstIconTemplateComponent,\n ]\n})\r\nexport class AnnaIconColumnComponent {\r\n @Input() componentName: string;\r\n @Input({ required: true }) 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() {\r\n this.columnIconClicked.emit();\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 === 'ALERT_OCTAGON_ICON'\"\r\n class=\"mdi mdi-alert-octagon\"\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 === 'MESSAGE'\"\r\n class=\"mdi mdi-comment-edit-outline\"\r\n (click)=\"svgIconClicked()\"\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 { 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({\n selector: \"anna-core-spinner-loader\",\n imports: [CommonModule],\n templateUrl: \"./anna-spinner-loader.component.html\",\n styleUrls: [\"./anna-spinner-loader.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush\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({\n selector: \"anna-core-calendar-filter-lib\",\n templateUrl: \"./anna-calendar-filter.component.html\",\n styleUrls: [\"./anna-calendar-filter.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgIf, FormsModule, NgbInputDatepicker, NgClass, TitleCasePipe]\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 IConfirmationPopupConfig,\r\n ICustomMultiSelect,\r\n ICustomSingleSelect,\r\n INgbDatePickerSettings,\r\n INgSelectSettings,\r\n INgxSkeletonLoaderSettings,\r\n IWeekCalendar,\r\n} from \"../models/anna-global-dropdown-config.model\";\r\nimport { IGtGeneralConfig } from \"../models/anna-non-editable-gt-models\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaGlobalConfigService {\r\n readonly defaultNgbDatePickerSettings: INgbDatePickerSettings;\r\n readonly defaultNgSelectSettings: INgSelectSettings;\r\n readonly defaultNgxSkeletonLoaderSettings: INgxSkeletonLoaderSettings;\r\n readonly defaultConfirmationPopupConfig: IConfirmationPopupConfig;\r\n readonly defaultUnsavedChangesConfirmationPopupConfig: IConfirmationPopupConfig;\r\n readonly defaultWeekCalendarConfig: IWeekCalendar;\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.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.defaultNgxSkeletonLoaderSettings = {\r\n numberOfSkeletonRows: Array(6).fill(0),\r\n };\r\n\r\n this.defaultConfirmationPopupConfig = {\r\n showCancelButton: true,\r\n title: \"Are you sure you want to save the changes?\",\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.defaultUnsavedChangesConfirmationPopupConfig = {\r\n showCancelButton: true,\r\n title: \"You have unsaved changes. All the changes will be lost if you switch. Do you want to continue?\",\r\n showConfirmButton: true,\r\n cancelButtonLabel: \"No\",\r\n confirmButtonLabel: \"Yes\",\r\n showCloseIcon: false,\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.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 minHeightOfList: 30,\r\n maxHeightOfList: 180,\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({\n selector: \"anna-core-week-calendar-filter-lib\",\n templateUrl: \"./anna-week-calendar-filter.component.html\",\n styleUrls: [\"./anna-week-calendar-filter.component.scss\"],\n imports: [NgIf, FormsModule, NgbInputDatepicker, NgClass, NgbDatepicker]\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.annaGlobalConfig.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 annaGlobalConfig: 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 \"AirDate\"\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 = cloneDeep(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 \"buyerBookedValue\",\r\n \"trafficBookedValue\",\r\n \"bookedVal\",\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 \"scheduledADUsProjGrp\",\r\n \"scheduledADUsProjImps\",\r\n \"postedADUsGrp\",\r\n \"postedADUsImps\",\r\n \"bookedVal\",\r\n \"userMGValue\",\r\n \"rating\",\r\n \"IMPS\",\r\n \"rate\",\r\n \"amount\",\r\n \"bookedGRP\",\r\n \"bookedGI\",\r\n \"projectedGRP\",\r\n \"projectedGI\",\r\n \"budget\",\r\n \"bookedImps\",\r\n \"postedImps\",\r\n \"projectedImps\",\r\n ];\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 \"createdOn\",\r\n \"airDate\",\r\n \"scheduledWeek\",\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 const formatNumber = (num: number) => parseFloat(num.toFixed(2));\r\n \r\n if (Math.abs(data) >= 1000) {\r\n const formatted = formatNumber(Math.abs(data) / 1000);\r\n return `${data < 0 ? '-' : ''}${formatted}k%`;\r\n }\r\n return `${formatNumber(data)}%`;\r\n };\r\n \r\n currencyTranslateFunction = (data: number): string => {\r\n const formatNumber = (num: number) => parseFloat(num.toFixed(2));\r\n \r\n if (Math.abs(data) >= 1000) {\r\n const formatted = formatNumber(Math.abs(data) / 1000);\r\n return `${data < 0 ? '-' : ''}$${formatted}k`;\r\n }\r\n return `${data < 0 ? '-' : ''}$${formatNumber(Math.abs(data))}`;\r\n };\r\n \r\n normalTranslateFunction = (data: number): string => {\r\n const formatNumber = (num: number) => parseFloat(num.toFixed(2));\r\n \r\n if (data >= 1000) {\r\n return `${formatNumber(data / 1000)}k`;\r\n }\r\n return formatNumber(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 this.selectedRadio === \"airDate\" ||\r\n this.selectedRadio === \"scheduledWeek\"\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 && this.nestedKeyExists(originalData[0], 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 key === \"createdOn\" ||\r\n key === \"airDate\" ||\r\n key === \"scheduledWeek\"\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\r\n ? value.find((val: any) => u[key].includes(val))\r\n : value.includes(this.getValueFromObject(u, key)),\r\n );\r\n }\r\n }\r\n });\r\n return filteredData;\r\n }\r\n\r\n getValueFromObject(obj: any, key: string) {\r\n return key.split(\".\").reduce((res, currentKey) => res && res[currentKey], obj);\r\n }\r\n\r\n nestedKeyExists(obj: any, key: string) {\r\n return (\r\n key.split(\".\").reduce((acc, currentKey) => {\r\n if (acc && currentKey in acc) {\r\n return acc[currentKey];\r\n }\r\n return undefined;\r\n }, obj) !== undefined\r\n );\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 key === \"airDate\" ||\r\n key === \"scheduledWeek\"\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 key === \"createdOn\" ||\r\n key === \"airDate\" ||\r\n key === \"scheduledWeek\"\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(\r\n optionData,\r\n header,\r\n showSplitedOptions,\r\n splitDelimiter,\r\n );\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 findString = find.replace(\"<\", \"<\").replace(\">\", \">\");\r\n updatedString = updatedString.replace(\"<\", \"<\").replace(\">\", \">\");\r\n const indexes = this.getIndicesOf(findString, 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 + findString.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({\n selector: \"anna-core-sort-lib\",\n templateUrl: \"./anna-sort.component.html\",\n styleUrls: [\"./anna-sort.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgFor, NgClass]\n})\r\nexport class AnnaSortComponent implements OnChanges, OnInit {\r\n @Input({ required: true }) 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({\n selector: \"anna-core-anna-column-checkbox-filter\",\n templateUrl: \"./anna-column-checkbox-filter.component.html\",\n styleUrls: [\"./anna-column-checkbox-filter.component.scss\"],\n imports: [\n NgIf,\n NgFor,\n NgClass,\n AnnaSortComponent,\n FormsModule,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n ]\n})\r\nexport class AnnaColumnCheckboxFilterComponent implements OnInit {\r\n @Input() showFilterHeaderTabs: boolean;\r\n @Input() isLurAndCsrComponent: boolean;\r\n @Input({ required: true }) tableData: any[];\r\n @Input({ required: true }) clonedTableData: any[];\r\n @Input({ required: true }) 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\r\n ? activeTab.splitDelimiter ?? this.annaFilterService.DEFAULT_SPLIT_SEPARATOR\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.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(\r\n header,\r\n optionData,\r\n this.showSplitedOptions,\r\n this.splitDelimiter,\r\n );\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 *ngIf=\"searchItem\"\r\n class=\"data\"\r\n title=\"{{ option.value }}\"\r\n [innerHTML]=\"option.label\"\r\n ></span>\r\n <span\r\n *ngIf=\"!searchItem\"\r\n class=\"data\"\r\n title=\"{{ option.value }}\"\r\n >{{ option.label }}</span\r\n >\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({\n selector: \"anna-core-anna-column-date-range-filter\",\n templateUrl: \"./anna-column-date-range-filter.component.html\",\n styleUrls: [\"./anna-column-date-range-filter.component.scss\"],\n imports: [NgIf, NgFor, NgClass, AnnaSortComponent, AnnaCalendarFilterComponent]\n})\r\nexport class AnnaColumnDateRangeFilterComponent implements OnInit {\r\n @Input({ required: true }) tableData: any[];\r\n @Input({ required: true }) clonedTableData: any[];\r\n @Input({ required: true }) 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({\n selector: \"anna-core-anna-column-slider-filter\",\n templateUrl: \"./anna-column-slider-filter.component.html\",\n styleUrls: [\"./anna-column-slider-filter.component.scss\"],\n imports: [NgIf, NgFor, NgClass, AnnaSortComponent, FormsModule, NgxSliderModule]\n})\r\nexport class AnnaColumnSliderFilterComponent implements OnInit {\r\n @Input() filterTabObjects: any[];\r\n @Input() isLurAndCsrComponent: boolean;\r\n @Input({ required: true }) tableData: any[];\r\n @Input({ required: true }) showFilterHeaderTabs: boolean;\r\n @Input({ required: true }) 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({\n selector: \"anna-core-anna-column-time-filter\",\n templateUrl: \"./anna-column-time-filter.component.html\",\n styleUrls: [\"./anna-column-time-filter.component.scss\"],\n imports: [NgIf, NgFor, NgClass, AnnaSortComponent, FormsModule, MatButtonToggleModule]\n})\r\nexport class AnnaColumnTimeFilterComponent implements OnInit {\r\n @Input({ required: true }) tableData: any[];\r\n @Input({ required: true }) clonedTableData: any[];\r\n @Input({ required: true }) filterTabObjects: any[];\r\n @Input() isLurAndCsrComponent: boolean;\r\n @Input() showFilterHeaderTabs: boolean;\r\n @Input() showAllTimeRangeCheckboxes: 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","/* eslint-disable import/no-extraneous-dependencies */\r\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from \"@angular/cdk/scrolling\";\r\nimport { NgClass, NgFor, NgIf, NgTemplateOutlet } from \"@angular/common\";\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { isEqual } from \"lodash-es\";\r\n\r\nimport { ICustomSingleSelect } from \"../../../anna-core-shared-lib/models/anna-global-dropdown-config.model\";\r\nimport { AnnaFilterSearchedTextPipe } from \"../../../anna-core-shared-lib/pipes/annaFilterSearchedText.pipe\";\r\nimport { AnnaTypeofDataPipe } from \"../../../anna-core-shared-lib/pipes/annaTypeOfData.pipe\";\r\nimport { AnnaGlobalConfigService } from \"../../../anna-core-shared-lib/services/anna-global-config.service\";\r\nimport { SingleSelectIdText } from \"./models/anna-single-select.model\";\r\n\r\n@Component({\n selector: \"anna-core-single-select\",\n templateUrl: \"./anna-single-select.component.html\",\n styleUrls: [\"./anna-single-select.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatMenuModule,\n NgIf,\n NgClass,\n FormsModule,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n NgTemplateOutlet,\n NgFor,\n AnnaFilterSearchedTextPipe,\n AnnaTypeofDataPipe,\n ]\n})\r\nexport class AnnaSingleSelectComponent implements OnInit, OnChanges {\r\n @Input() config: ICustomSingleSelect;\r\n @Input() loading: boolean = false;\r\n @Input() showAdditionalDataInSelectedText: boolean = false;\r\n @Input() disabled: boolean;\r\n @Input() items: SingleSelectIdText[] | string[] | any;\r\n @Input() selectedItem: SingleSelectIdText | string | any;\r\n @Input() keyToUseForDisplay: string = \"text\";\r\n @Input() keyToUseForCheckingSelectedItem: string = \"id\";\r\n @Input() hideDropdownArrow: boolean = false;\r\n @Input() borderbottomObject: any = {};\r\n @Input() defaultDropdownHeight: number = null;\r\n @Input() itemsToHideInDropdownIds: number[] = [];\r\n @Input() showClearSelection: boolean = false;\r\n\r\n @Output() valueChanged: EventEmitter<SingleSelectIdText> = new EventEmitter<SingleSelectIdText>();\r\n @Output() dropdownClosedEvent: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() dropdownOpenedEvent: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() clearSelectionClickedEvent: EventEmitter<any> = new EventEmitter<any>();\r\n searchFor: string;\r\n yPosition: any = \"above\";\r\n width: number;\r\n heightOfCheckboxTooltipFilter: number;\r\n\r\n @ViewChild(\"dropdown\") buttonElement: ElementRef;\r\n\r\n constructor(\r\n private annaGlobalConfig: AnnaGlobalConfigService,\r\n private searchFilterPipe: AnnaFilterSearchedTextPipe,\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.config?.currentValue) {\r\n this.config = { ...this.annaGlobalConfig.defaultSingleSelectConfig, ...this.config };\r\n }\r\n\r\n if (changes.items?.currentValue) {\r\n if (this.defaultDropdownHeight) this.heightOfCheckboxTooltipFilter = this.defaultDropdownHeight;\r\n else this.heightOfCheckboxTooltipFilter = this.items.length > 7 ? 200 : 25.68 * this.items.length;\r\n }\r\n\r\n if (changes.itemsToHideInDropdownIds?.currentValue) {\r\n this.items = this.items.filter(\r\n (item: SingleSelectIdText) => !this.itemsToHideInDropdownIds.includes(item.id),\r\n );\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.config = { ...this.annaGlobalConfig.defaultSingleSelectConfig, ...this.config };\r\n this.setPostion();\r\n }\r\n\r\n trackByFn(index: number) {\r\n return index;\r\n }\r\n\r\n itemSelected(item: SingleSelectIdText, event: MouseEvent) {\r\n if (item?.isDisabled) {\r\n event.stopPropagation();\r\n return;\r\n }\r\n if (!isEqual(this.selectedItem, item)) {\r\n this.valueChanged.emit(item);\r\n }\r\n this.selectedItem = item;\r\n }\r\n\r\n dropdownOpened() {\r\n this.searchFor = \"\";\r\n this.updateHeight();\r\n this.width = this.buttonElement.nativeElement.offsetWidth;\r\n this.dropdownOpenedEvent.emit();\r\n }\r\n\r\n dropdownClosed() {\r\n this.dropdownClosedEvent.emit();\r\n }\r\n\r\n clearSelectionClicked() {\r\n this.selectedItem = null;\r\n this.clearSelectionClickedEvent.emit();\r\n }\r\n\r\n setPostion() {\r\n if (this.config && this.config.position === \"TOP\") {\r\n this.yPosition = \"above\";\r\n } else if (this.config && this.config.position === \"BOTTOM\") {\r\n this.yPosition = \"below\";\r\n }\r\n }\r\n updateHeight() {\r\n const items = this.searchFilterPipe.transform(this.items, this.searchFor, this.keyToUseForDisplay);\r\n if (items.length > 7) {\r\n this.heightOfCheckboxTooltipFilter = 200;\r\n } else if (items.length > 0) {\r\n this.heightOfCheckboxTooltipFilter = 25.68 * items.length;\r\n } else {\r\n this.heightOfCheckboxTooltipFilter = 25.68;\r\n }\r\n }\r\n}\r\n","<button\r\n id=\"dropdown-trigger\"\r\n #dropdown\r\n #t=\"matMenuTrigger\"\r\n (menuClosed)=\"dropdownClosed()\"\r\n (menuOpened)=\"dropdownOpened()\"\r\n [matMenuTriggerFor]=\"contextMenu\"\r\n [disabled]=\"disabled || loading\"\r\n>\r\n <span\r\n class=\"placeholder\"\r\n *ngIf=\"!selectedItem && config\"\r\n >{{ config.placeholder }}</span\r\n >\r\n <span\r\n class=\"selected-item\"\r\n [class]=\"selectedItem.class\"\r\n annaCoreShowEllipsisTextOnHover\r\n *ngIf=\"selectedItem\"\r\n >\r\n <ng-container *ngIf=\"(selectedItem | AnnatypeofData) === 'object'; else stringTypeTemplate\">\r\n {{ selectedItem[keyToUseForDisplay] }}\r\n <ng-container *ngIf=\"showAdditionalDataInSelectedText && selectedItem && selectedItem?.additionalData\">\r\n <span [class]=\"selectedItem?.additionalClass\">{{ selectedItem?.additionalData }} </span>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #stringTypeTemplate>\r\n {{ selectedItem }}\r\n </ng-template>\r\n </span>\r\n <div\r\n *ngIf=\"loading\"\r\n [ngClass]=\"{ 'spinner-for-button-directive': loading }\"\r\n ></div>\r\n\r\n <ng-container *ngIf=\"!loading && !hideDropdownArrow\">\r\n <i\r\n *ngIf=\"!t.menuOpen\"\r\n class=\"mdi mdi-menu-down icon\"\r\n ></i>\r\n <i\r\n *ngIf=\"t.menuOpen\"\r\n class=\"mdi mdi-menu-up icon\"\r\n ></i>\r\n </ng-container>\r\n</button>\r\n<ng-content select=\".role-tooltip-icon\"></ng-content>\r\n<mat-menu\r\n backdropClass=\"single-select-dropdown\"\r\n [yPosition]=\"yPosition\"\r\n #contextMenu=\"matMenu\"\r\n>\r\n <ng-template matMenuContent>\r\n <div\r\n class=\"{{ config.classes }}\"\r\n [style.width.px]=\"width\"\r\n >\r\n <div\r\n class=\"gap\"\r\n *ngIf=\"config.showSearchBar\"\r\n ></div>\r\n <div\r\n *ngIf=\"showClearSelection\"\r\n class=\"clear-selection\"\r\n >\r\n <a\r\n (click)=\"clearSelectionClicked()\"\r\n [ngClass]=\"{ disabled: !selectedItem }\"\r\n >Clear selection</a\r\n >\r\n </div>\r\n <section\r\n *ngIf=\"config.showSearchBar\"\r\n class=\"search-bar\"\r\n >\r\n <i class=\"mi mdi-search search-icon\"></i>\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"searchFor\"\r\n placeholder=\"Search\"\r\n (ngModelChange)=\"updateHeight()\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n </section>\r\n <cdk-virtual-scroll-viewport\r\n class=\"dropdown-data-container\"\r\n itemSize=\"18\"\r\n [style.height.px]=\"heightOfCheckboxTooltipFilter\"\r\n >\r\n <ul\r\n class=\"single-select-ul\"\r\n [style.width.px]=\"width\"\r\n >\r\n <ng-container *ngIf=\"items && (items[0] | AnnatypeofData) === 'object'; else stringTypeTemplate\">\r\n <li\r\n annaCoreShowEllipsisTextOnHover\r\n *cdkVirtualFor=\"\r\n let item of items | AnnafilterSearchedText: searchFor : keyToUseForDisplay;\r\n let last = last;\r\n trackBy: trackByFn\r\n \"\r\n [ngClass]=\"{\r\n active:\r\n selectedItem &&\r\n selectedItem[keyToUseForCheckingSelectedItem] ===\r\n item[keyToUseForCheckingSelectedItem],\r\n 'show-bottom-border': !last && borderbottomObject[item.id],\r\n disabled: item.isDisabled\r\n }\"\r\n (click)=\"itemSelected(item, $event)\"\r\n >\r\n <span [class]=\"item.class\"> {{ item[keyToUseForDisplay] }} </span>\r\n <ng-container *ngIf=\"item && item.additionalData\">\r\n <span\r\n class=\"ml-0\"\r\n [class]=\"item.additionalClass\"\r\n >\r\n {{ item?.additionalData }}\r\n </span>\r\n </ng-container>\r\n </li>\r\n\r\n <ng-container\r\n [ngTemplateOutlet]=\"noDataCase\"\r\n [ngTemplateOutletContext]=\"{ items: items }\"\r\n ></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #stringTypeTemplate>\r\n <ng-container\r\n *ngFor=\"\r\n let item of items | AnnafilterSearchedText: searchFor : keyToUseForDisplay;\r\n trackBy: trackByFn\r\n \"\r\n >\r\n <li\r\n annaCoreShowEllipsisTextOnHover\r\n [ngClass]=\"{ active: selectedItem && selectedItem === item }\"\r\n (click)=\"itemSelected(item, $event)\"\r\n >\r\n <span> {{ item }} </span>\r\n </li>\r\n </ng-container>\r\n <ng-container\r\n [ngTemplateOutlet]=\"noDataCase\"\r\n [ngTemplateOutletContext]=\"{ items: items }\"\r\n ></ng-container>\r\n </ng-template>\r\n </ul>\r\n </cdk-virtual-scroll-viewport>\r\n </div>\r\n </ng-template>\r\n</mat-menu>\r\n\r\n<ng-template\r\n #noDataCase\r\n let-items=\"items\"\r\n>\r\n <li\r\n annaCoreShowEllipsisTextOnHover\r\n *ngIf=\"(items | AnnafilterSearchedText: searchFor : keyToUseForDisplay)?.length === 0\"\r\n >\r\n <span> No data found </span>\r\n </li>\r\n</ng-template>\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 } 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\nimport { AnnaSingleSelectComponent } from \"../../../anna-dropdown-lib/components/anna-single-select/anna-single-select.component\";\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 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 AnnaSingleSelectComponent,\r\n ]\r\n})\r\nexport class AnnaNonEditableGenericTableComponent implements OnInit, OnChanges, AfterViewChecked {\r\n @Input() showSkeletonLoading: boolean;\r\n @Input({ required: true }) tableHeaders: IGtTableHeader[];\r\n @Input({ required: true }) tableData: any[];\r\n @Input({ required: true }) clonedTableData: any[];\r\n @Input({ required: true }) gtGeneralConfig: IGtGeneralConfig;\r\n @Input() totalRowInfo?: ITotalRowInfo[];\r\n @Input({ required: true }) 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 @Output() singleSelectDropdownValueEmit = new EventEmitter<{\r\n selectedItem: any;\r\n row: any;\r\n dropdownIndex: number;\r\n }>();\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 intialRowLimit: number = 30;\r\n end: number = this.intialRowLimit + 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 // 10 is extra just in case, also it increase scrollbar height, if we keep limit same as maximum no of rows then scrollbar height will be less indicating there is less content to scroll.\r\n this.intialRowLimit = cloneDeep(this.maximumRowsWhichCanBeRenderedWithoutScroll + 10);\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(\"revisionType\", \"Revision Type\");\r\n this.tooltipRadioTextMap.set(\"revisionStatus\", \"Current Status\");\r\n this.tooltipRadioTextMap.set(\"annaRevised\", \"ANNA Revised\");\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(\"sellerProgramName\", \"Seller Program\");\r\n this.tooltipRadioTextMap.set(\"LastFetchedDate\", \"Last Fetched\");\r\n\r\n this.tooltipRadioTextMap.set(\"trafficOrderId\", \"Order Id\");\r\n this.tooltipRadioTextMap.set(\"repOrderIdWithModCode\", \"Alt/Rep Order Id - Mod Code#\");\r\n this.tooltipRadioTextMap.set(\"smReviewedBy\", \"SM Reviewer\");\r\n this.tooltipRadioTextMap.set(\"smReviewedDateTime\", \"SM Reviewed At\");\r\n this.tooltipRadioTextMap.set(\"sentForEntryBy\", \"Sent For Entry By\");\r\n this.tooltipRadioTextMap.set(\"sentForEntryDateTime\", \"Sent For Entry At\");\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(\"scheduledADUsProjGrp\", \"Sch. ADUs Proj. GRP\");\r\n this.tooltipRadioTextMap.set(\"scheduledADUsProjImps\", \"Sch. ADUs Proj. IMPS\");\r\n this.tooltipRadioTextMap.set(\"postedADUsGrp\", \"Posted ADUs GRP\");\r\n this.tooltipRadioTextMap.set(\"postedADUsImps\", \"Posted ADUs IMPS\");\r\n this.tooltipRadioTextMap.set(\"bookedVal\", \"$ Booked\");\r\n this.tooltipRadioTextMap.set(\"station\", \"Station\");\r\n this.tooltipRadioTextMap.set(\"networkAffiliate\", \"Network Affiliate\");\r\n this.tooltipRadioTextMap.set(\"market\", \"Market\");\r\n\r\n // Offer tracker\r\n this.tooltipRadioTextMap.set(\"orderIdPodP4s\", \"Order Id (POD/P4S)\");\r\n this.tooltipRadioTextMap.set(\"altOrRepOrderId\", \"Alt/Rep Order Id\");\r\n this.tooltipRadioTextMap.set(\"stnuserReview\", \"Stn User Review\");\r\n this.tooltipRadioTextMap.set(\"reviewedByBuyerName\", \"Buyer Reviewed By\");\r\n this.tooltipRadioTextMap.set(\"reviewedBySM\", \"SM Reviewed By\");\r\n this.tooltipRadioTextMap.set(\"offerId\", \"Offer Id\");\r\n this.tooltipRadioTextMap.set(\"offerType\", \"Offer Type\");\r\n this.tooltipRadioTextMap.set(\"reviewedByUser\", \"Reviewed By\");\r\n this.tooltipRadioTextMap.set(\"lastUpdatedAtDate\", \"Last Updated At\");\r\n this.tooltipRadioTextMap.set(\"createdOn\", \"Created On\");\r\n\r\n this.tooltipRadioTextMap.set(\"scheduledWeek\", \"Scheduled Week\");\r\n this.tooltipRadioTextMap.set(\"scheduledDay\", \"Scheduled Day\");\r\n this.tooltipRadioTextMap.set(\"airDate\", \"Air Date\");\r\n this.tooltipRadioTextMap.set(\"projectedImps\", \"Projected IMPS\");\r\n this.tooltipRadioTextMap.set(\"postedImps\", \"Posted IMPS\");\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 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, // Defaulting to 'false' if undefined\r\n columnHeader?.splitDelimiter?.[index],\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, key: string) {\r\n this.gtSVGIconClicked.emit({ data, key });\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.intialRowLimit + 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 // buffer size tells after how much px unit scroll we should append more rows, default is 150 (in px)\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 const onScrollNoOfRowsToAppend: number = 30;\r\n this.start = this.end;\r\n this.end = onScrollNoOfRowsToAppend + 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 onDropdownChanged(selectedItem: any, row: any, dropdownIndex: number) {\r\n this.singleSelectDropdownValueEmit.emit({ selectedItem, row, dropdownIndex });\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', marginBottom: '0' }\"\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)=\"\r\n svgIconClicked(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].actionKey\r\n )\r\n \"\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\r\n <ng-template #inputBox>\r\n <span class=\"input-box-container\">\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[\r\n columnDef.headerInfo[subLineIndex].objectKey\r\n ],\r\n false\r\n )\r\n \"\r\n (paste)=\"\r\n changesMadeInEditableInputBox(\r\n $event,\r\n ROW_DATA[\r\n columnDef.headerInfo[subLineIndex].objectKey\r\n ],\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]\r\n .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[\r\n 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 *ngIf=\"action?.showLink\">\r\n <a\r\n [id]=\"action?.id\"\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 >{{ action?.linkText }}\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </span>\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_SELECT_DROPDOWN'\">\r\n <ng-container\r\n *ngFor=\"\r\n let dropdown of ROW_DATA[\r\n columnDef.headerInfo[subLineIndex].actionKey\r\n ];\r\n let dropdownIndex = index\r\n \"\r\n >\r\n <anna-core-single-select\r\n class=\"gt-single-select dropdown {{ dropdown?.className }}\"\r\n [ngClass]=\"{ error: !dropdown?.selectedItem }\"\r\n [items]=\"dropdown?.itemList\"\r\n [selectedItem]=\"dropdown?.selectedItem\"\r\n [config]=\"dropdown?.dropdownConfig\"\r\n (valueChanged)=\"\r\n onDropdownChanged($event, ROW_DATA, dropdownIndex)\r\n \"\r\n >\r\n </anna-core-single-select>\r\n </ng-container>\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 26\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\r\n *ngSwitchCase=\"\r\n 'ICON_CELL_AND_STRING_WITH_ELLIPSIS_AND_READ_MORE_TOOLTIP'\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 [class]=\"action.iconClass\"\r\n title=\"\"\r\n (mouseenter)=\"\r\n mouseEnterOnStringTextActionType(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].tooltipKey\r\n )\r\n \"\r\n placement=\"bottom auto\"\r\n container=\"body\"\r\n [autoClose]=\"true\"\r\n tooltipClass=\"team-user-tooltip remove-on-scroll-class\"\r\n [ngbTooltip]=\"action.showTooltip ? action.tooltipData : null\"\r\n (click)=\"\r\n textActionClicked(\r\n ROW_DATA,\r\n action.id,\r\n columnDef.headerInfo[subLineIndex]\r\n )\r\n \"\r\n [disableTooltip]=\"!action.showTooltip\"\r\n >\r\n </i>\r\n\r\n <ng-container *ngIf=\"action.showObjectKey\">\r\n <span\r\n title=\"\"\r\n *ngIf=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n .length < 26\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]\r\n .length > 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[\r\n columnDef.headerInfo[subLineIndex].objectKey\r\n ],\r\n info\r\n )\r\n \"\r\n *ngIf=\"\r\n ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n .length > 25\r\n \"\r\n >\r\n {{ ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey] }}\r\n </span>\r\n </ng-container>\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 { 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 ],\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 ],\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({\n selector: \"anna-core-circular-progress\",\n imports: [CommonModule],\n templateUrl: \"./anna-circular-progress.component.html\",\n styleUrls: [\"./anna-circular-progress.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush\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 public static GetRoundedValuesWithoutUnits(inputValue: number, digitsToRoundDecimalPoint = 2) {\r\n let value = inputValue;\r\n value = +(+value).toFixed(digitsToRoundDecimalPoint);\r\n if (inputValue < 0) {\r\n value *= -1;\r\n }\r\n return value.toLocaleString(\"en-IN\");\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 .'-]{0,19}$/;\r\n public readonly usernamePattern: RegExp = /^\\\\S*$/;\r\n public readonly namePattern: RegExp = /^[A-Za-z][A-Za-z .'-]{0,49}$/;\r\n}\r\n","import { SingleSelectIdText } from \"../../anna-dropdown-lib/components/anna-single-select/models/anna-single-select.model\";\r\nimport { ICustomSingleSelect, 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 | \"ICON_CELL_AND_STRING_WITH_ELLIPSIS_AND_READ_MORE_TOOLTIP\"\r\n | \"SINGLE_SELECT_DROPDOWN\";\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 ALERT_OCTAGON_ICON = \"ALERT_OCTAGON_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 additionalTextAfterLink?:string;\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 | \"ALERT_OCTAGON_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 | \"MESSAGE\";\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}\r\n\r\nexport interface IDropdownConfigForGT {\r\n itemList: SingleSelectIdText[];\r\n selectedItem: SingleSelectIdText;\r\n dropdownConfig: ICustomSingleSelect;\r\n}\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 static readonly UNAUTHORIZED_ACCESS = 401;\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-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-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","customParseFormat","i1.AnnaDateTimeFormatService","i2","i2.AnnaDateTimeFormatService","i3.AnnaGlobalConfigService","CustomParseFormat","i2.AnnaSortService","i1.AnnaSortService","i2.AnnaFilterService","i3","i3.AnnaFilterService","i1.AnnaFilterService","i4","i1.AnnaGlobalConfigService","i2.AnnaFilterSearchedTextPipe","i5","i6","i1","i3.AnnaSortService"],"mappings":"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"}
|