@annalib/anna-core 22.3.1 → 22.3.2

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/pipes/annaFilterSearchedText.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-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-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-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-icon-column/anna-icon-column.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-global-config.service.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.html","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-tooltip.model.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-sort.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-sort.model.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-filter.service.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-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-time-filter/anna-column-time-filter.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-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-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-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-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-generic-table.service.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.ts","../../../projects/anna-core/src/lib/anna-core.module.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-number-format.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-persisting-filter.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/constants/shared.constant.ts","../../../projects/anna-core/src/public-api.ts","../../../projects/anna-core/src/annalib-anna-core.ts"],"sourcesContent":["import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { memoize } from \"lodash-es\";\r\n\r\n@Pipe({\r\n name: \"AnnafilterSearchedText\",\r\n})\r\nexport class AnnaFilterSearchedTextPipe implements PipeTransform {\r\n callFilter = memoize(this.filter, (...args) => this.filter(args[0], args[1], args[2]));\r\n\r\n transform(items: any[], searchText: any, keyName?: any): any[] {\r\n return this.callFilter(items, searchText, keyName);\r\n }\r\n\r\n filter(items: any[], searchText: string, keyName?: any): any[] {\r\n if (!items) return [];\r\n if (!searchText) return items;\r\n searchText = searchText.toString().toLowerCase();\r\n\r\n\r\n // if keyName is an array then loop through all the keynames\r\n if(keyName && typeof(keyName) == 'object'){\r\n let isFoundAtleastOnce = false;\r\n let isFound:any[];\r\n\r\n for(const key of keyName){\r\n isFound = items.filter((item) => item[key].toString().toLowerCase().includes(searchText));\r\n if(isFound.length){\r\n isFoundAtleastOnce = true;\r\n break;\r\n }\r\n }\r\n return isFoundAtleastOnce ? isFound : [];\r\n }\r\n else {\r\n //if keyName is undefined every key will be considered for filtering.\r\n let searchResult = [];\r\n if (!keyName)\r\n searchResult = items.filter(\r\n (item) => Object.values(item).filter((n) => n ? n.toString().toLowerCase().includes(searchText) : false).length > 0\r\n );\r\n else if(keyName == 'NoKey'){\r\n searchResult = items.filter((item)=> item.toString().toLowerCase().includes(searchText)); \r\n }\r\n else {\r\n searchResult = items.filter((item) => item[keyName] ? item[keyName].toString().toLowerCase().includes(searchText) : false);\r\n }\r\n return searchResult;\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from \"@angular/core\";\r\n@Component({\r\n selector: \"anna-core-no-data-lib\",\r\n templateUrl: \"./anna-no-data.component.html\",\r\n styleUrls: [\"./anna-no-data.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\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 [style.marginRight]=\"width\" [style.marginTop]=\"marginTop\" class=\"no-data\">\r\n <label>{{ message }}</label>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-buyer-approval-icon-template',\r\n templateUrl: './anna-buyer-approval-icon-template.component.html',\r\n styleUrls: ['./anna-buyer-approval-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaBuyerApprovalIconTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"buyerApprovalIcon\"></ng-container>\r\n\r\n<ng-template #buyerApprovalIcon>\r\n <svg width=\"15px\" height=\"15px\" viewBox=\"0 0 20 20\">\r\n <g id=\"Awaiting-Buyer-Approval-icon\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"time-left\" transform=\"translate(3.000000, 2.000000)\" fill=\"#4A4A4A\" fill-rule=\"nonzero\">\r\n <path\r\n d=\"M6.23157622,14.1696467 C5.70535057,14.0721422 5.2005579,13.9061054 4.72188769,13.6745242 C4.71622258,13.6714711 4.71115545,13.6679958 4.70520709,13.6652025 C4.59240848,13.6104091 4.47979871,13.551718 4.37065094,13.4903961 C4.37027327,13.4899414 4.36958087,13.4896491 4.36898288,13.4893893 C4.16872129,13.37558 3.97327504,13.2496557 3.78339947,13.1117139 C1.01467199,11.0989392 0.348958764,7.13679055 2.29945571,4.27950803 C2.72358352,3.65842885 3.23684237,3.14027823 3.80904983,2.72960334 C3.81609974,2.72453649 3.82314965,2.71950212 3.83013662,2.71440279 C5.84650619,1.28061347 8.58442178,1.183986 10.7254867,2.65733574 L10.2656372,3.34301728 C10.1377946,3.53386873 10.2164452,3.67294733 10.4402485,3.65216024 L12.4377343,3.46760989 C12.6618209,3.4468228 12.7958322,3.24677957 12.7355617,3.0234483 L12.1991703,1.02899228 C12.1391202,0.805401178 11.9853754,0.778637804 11.8574069,0.969456765 L11.3964873,1.6567623 C9.82523796,0.568265989 7.94067659,0.153206329 6.0701521,0.487943386 C5.88175576,0.521592483 5.69600314,0.562776899 5.51279981,0.610717118 C5.51138354,0.610976957 5.51025052,0.611139356 5.50911749,0.611399194 C5.50203611,0.613185585 5.4948603,0.615556612 5.48796775,0.617537881 C3.8749854,1.04500483 2.46767797,2.01585923 1.46347449,3.40105873 C1.4550083,3.41141979 1.44629033,3.4215535 1.43829623,3.432824 C1.40490356,3.47923766 1.37176268,3.52672316 1.33931419,3.57420867 C1.28625101,3.65203032 1.23394317,3.73180077 1.18390138,3.81157121 C1.17763828,3.82118524 1.17285441,3.83096167 1.16737814,3.84067314 C0.338698623,5.1658824 -0.0610062726,6.69795566 0.00754154337,8.25770173 C0.00769890751,8.26283354 0.00741565207,8.26799784 0.00754154337,8.27325957 C0.0141823097,8.42562242 0.0258902012,8.58009646 0.0417839785,8.73216699 C0.0426337448,8.7419759 0.0447424242,8.75126512 0.0463475384,8.76107403 C0.0627763537,8.91398904 0.0833910551,9.06726132 0.109230246,9.22050113 C0.371839509,10.7840149 1.08652445,12.1909434 2.15745032,13.2856758 C2.15993667,13.2882417 2.16251744,13.291035 2.16503527,13.2936983 C2.16591651,13.2947052 2.16689216,13.2952249 2.16774193,13.2961668 C2.45546651,13.5890373 2.7684323,13.8599191 3.10541185,14.1048494 C3.98728044,14.7461311 4.9692641,15.1700252 6.02385557,15.3653264 C6.3438398,15.424667 6.64950389,15.2048436 6.70691032,14.8747836 C6.76428528,14.5444963 6.55146603,14.2287924 6.23157622,14.1696467 Z\"\r\n id=\"Path\"\r\n ></path>\r\n <path\r\n d=\"M9.22237925,14.6588011 C9.29073073,14.9263505 9.1292489,15.198652 8.86169949,15.2670034 C8.51639563,15.355219 8.1641424,15.4188128 7.8069689,15.4570516 C7.53239558,15.4864472 7.28598003,15.2876915 7.25658436,15.0131182 C7.22718869,14.7385449 7.42594445,14.4921293 7.70051776,14.4627336 C8.01004537,14.4295958 8.31515603,14.3745129 8.61417689,14.2981213 C8.8817263,14.2297698 9.15402777,14.3912517 9.22237925,14.6588011 Z M12.5552524,12.2886551 C12.7611952,12.4726175 12.7790139,12.7886982 12.5950515,12.994641 C12.3569806,13.2611574 12.1001968,13.5104915 11.8267859,13.7406023 C11.6155121,13.9184167 11.3000937,13.8912925 11.1222793,13.6800187 C10.9444648,13.4687448 10.9715891,13.1533264 11.1828629,12.975512 C11.4200152,12.7759175 11.6427598,12.5596351 11.8492666,12.3284542 C12.033229,12.1225114 12.3493096,12.1046927 12.5552524,12.2886551 Z M13.9945063,8.57622811 C14.2674538,8.61811209 14.4547678,8.87333344 14.4128838,9.14628095 C14.3584322,9.50112883 14.2787427,9.85020038 14.1746496,10.1914009 C14.0940709,10.4555252 13.8146338,10.6043183 13.5505094,10.5237395 C13.2863851,10.4431608 13.137592,10.1637237 13.2181708,9.89959931 C13.3082912,9.6041989 13.3772907,9.30195366 13.4244534,8.99460564 C13.4663374,8.72165813 13.7215588,8.53434413 13.9945063,8.57622811 Z M13.8741743,4.99628976 C14.0173723,5.32357494 14.1370467,5.66111195 14.2320931,6.00667963 C14.305325,6.27293459 14.1488489,6.54814305 13.8825939,6.62137492 C13.6163389,6.6946068 13.3411305,6.53813067 13.2678986,6.27187571 C13.1856167,5.97271686 13.0820133,5.68050756 12.958028,5.39713383 C12.847338,5.14414702 12.9626923,4.84932868 13.2156791,4.73863865 C13.4686659,4.62794862 13.7634843,4.74330295 13.8741743,4.99628976 Z\"\r\n id=\"Combined-Shape\"\r\n ></path>\r\n <path\r\n d=\"M6.49684035,4 C6.22234237,4 6,4.21290493 6,4.47514225 L6,9.20888548 L10.5252942,11.4469308 C10.5981282,11.4830116 10.6761155,11.5 10.7528554,11.5 C10.9325937,11.5 11.106194,11.4063595 11.1944548,11.2429754 C11.3203307,11.0097848 11.2250786,10.7233052 10.9813357,10.6028789 L6.9931227,8.63027395 L6.9931227,4.47514225 C6.99308988,4.21290493 6.77101009,4 6.49684035,4 Z\"\r\n id=\"Path\"\r\n ></path>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-live-icon-template',\r\n templateUrl: './anna-live-icon-template.component.html',\r\n styleUrls: ['./anna-live-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaLiveIconTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"liveIcon\"></ng-container>\r\n<ng-template #liveIcon>\r\n <svg width=\"15px\" height=\"15px\" viewBox=\"0 0 20 20\">\r\n <g id=\"Live-Icon\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"next\" transform=\"translate(2.000000, 2.000000)\" fill-rule=\"nonzero\">\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 id=\"Oval\" fill=\"#8BAC2A\" cx=\"8\" cy=\"8\" r=\"4\"></circle>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-notify-icon-template',\r\n templateUrl: './anna-notify-icon-template.component.html',\r\n styleUrls: ['./anna-notify-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaNotifyIconTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<i class=\"mdi mdi-bell\"></i>","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-pay-for-performance-icon-template',\r\n templateUrl: './anna-pay-for-performance-icon-template.component.html',\r\n styleUrls: ['./anna-pay-for-performance-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AnnaPayForPerformanceIconTemplateComponent implements OnInit {\r\n\r\n @Input() isTitle: boolean;\r\n @Input() color: string;\r\n @Input() width: string;\r\n @Input() height: string;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"PayForPerformanceIcon\"\r\n [ngTemplateOutletContext]=\"{ color: color,width: width,height:height}\"> \r\n</ng-container>\r\n\r\n<ng-template #PayForPerformanceIcon let-color=\"color\" let-width=\"width\" let-height=\"height\">\r\n <svg [attr.width]=\"width\" [attr.height]=\"height\" viewBox=\"0 0 20 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"02.-PAY-FOR-PERFORMANCE-MARKED\" transform=\"translate(-100.000000, -537.000000)\" [attr.fill]=\"color\" fill-rule=\"nonzero\">\r\n <g id=\"PFP\" transform=\"translate(100.000000, 537.000000)\">\r\n <path 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\" id=\"Shape-Copy-9\"></path>\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-rejected-icon-template',\r\n templateUrl: './anna-rejected-icon-template.component.html',\r\n styleUrls: ['./anna-rejected-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaRejectedIconTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"rejectedIcon\"></ng-container>\r\n\r\n<ng-template #rejectedIcon>\r\n <svg width=\"15px\" height=\"15px\" viewBox=\"0 0 20 20\">\r\n <g id=\"Buyer-rejected-icon\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M15.7822266,4.21777344 C14.3671875,2.80276367 12.4951465,2 10.5,2 C6.37918945,2 3,5.37253906 3,9.5 C3,13.6296289 6.37133789,17 10.5,17 C14.6105273,17 18,13.6429004 18,9.5 C18,7.50485352 17.1972656,5.6327832 15.7822266,4.21777344 Z M10.5,15.2128906 C7.34220703,15.2128906 4.78710938,12.664502 4.78710938,9.5 C4.78710938,8.26950195 5.17382812,7.10055664 5.88574219,6.13375977 L13.8662402,14.1054395 C12.8993848,14.8261719 11.730498,15.2128906 10.5,15.2128906 Z M15.1054688,12.8661816 L7.13375977,4.88574219 C8.10061523,4.17382813 9.26950195,3.78710938 10.5,3.78710938 C13.6578809,3.78710938 16.2128906,6.33549805 16.2128906,9.5 C16.2128906,10.7304395 15.8261719,11.8993848 15.1054688,12.8661816 Z\"\r\n id=\"Shape\"\r\n fill=\"#4A4A4A\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-deleted-order-icon-template',\r\n templateUrl: './anna-deleted-order-icon-template.component.html',\r\n styleUrls: ['./anna-deleted-order-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaDeletedOrderIconTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<i class=\"mdi mdi-file-remove-outline\"></i>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { GtColumnIconEmittedData } from '../../models/anna-generic-data-type.model';\r\nimport { IconToShow } from '../../models/anna-non-editable-gt-models';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-icon-column',\r\n templateUrl: './anna-icon-column.component.html',\r\n styleUrls: ['./anna-icon-column.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaIconColumnComponent implements OnInit {\r\n\r\n @Input() componentName: string;\r\n @Input() iconToShow: IconToShow;\r\n // @Input() objectKey: string;\r\n @Input() dataObject: any;\r\n PfpIconActiveColor = \"#9B1B93\"\r\n PfpIconDisableColor = \"rgba(189,189,189,0.5)\";\r\n @Output() onColumnIconClicked = new EventEmitter<GtColumnIconEmittedData>();\r\n \r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n svgIconClicked(rowData: any,key: string){\r\n this.onColumnIconClicked.emit({data: rowData,key: key});\r\n }\r\n\r\n}\r\n","<span\r\n *ngIf=\"iconToShow == 'PAY_FOR_PERFORMANCE_ACTIVE' \"\r\n class=\"cursor-not-allowed\"\r\n (click)=\"$event.stopPropagation()\"\r\n>\r\n <anna-pay-for-performance-icon-template\r\n [color]=\"PfpIconActiveColor\"\r\n [width]=\"'15px'\"\r\n [height]=\"'15px'\"\r\n >\r\n </anna-pay-for-performance-icon-template>\r\n</span>\r\n<span\r\n *ngIf=\"iconToShow == 'PAY_FOR_PERFORMANCE' \"\r\n (click)=\"svgIconClicked(dataObject,'payForPerformance')\"\r\n >\r\n <anna-pay-for-performance-icon-template\r\n [color]=\"PfpIconDisableColor\"\r\n [width]=\"'15px'\"\r\n [height]=\"'15px'\"\r\n >\r\n </anna-pay-for-performance-icon-template>\r\n</span>\r\n\r\n<anna-live-icon-template *ngIf=\"iconToShow == 'LIVE'\"></anna-live-icon-template>\r\n\r\n<anna-rejected-icon-template *ngIf=\"iconToShow == 'REJECTED'\"></anna-rejected-icon-template>\r\n<anna-notify-icon-template *ngIf=\"iconToShow == 'NOTIFY'\"></anna-notify-icon-template>\r\n<anna-buyer-approval-icon-template *ngIf=\"iconToShow == 'AWAITING_APPROVAL'\"></anna-buyer-approval-icon-template>\r\n<anna-deleted-order-icon-template *ngIf=\"iconToShow == 'DELETED_ORDER' \"></anna-deleted-order-icon-template>\r\n\r\n<i class=\"mdi mdi-alert\" *ngIf=\"iconToShow == 'NEED_SELLER_CONFIRMATION' \"></i>\r\n<i class=\"mdi mdi-alert\" *ngIf=\"iconToShow == 'NEED_BUYER_CONFIRMATION' \"></i>\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[showEllipsisTextOnHover]'\r\n})\r\n\r\nexport class showEllipsisTextOnHoverDirective {\r\n\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n let domElement = this.elementRef.nativeElement;\r\n if (domElement.offsetWidth < domElement.scrollWidth || this.checkPositionsInDecimals(domElement)) {\r\n domElement.title = (domElement.textContent == \"\") ? domElement.value : domElement.textContent;\r\n }\r\n else if (domElement.title) domElement.removeAttribute('title');\r\n }\r\n\r\n checkPositionsInDecimals(domElement: Element): boolean {\r\n // if we don't have any children element Then we can't calculate and compare anything so we are returning false from here\r\n if (!domElement.children || (domElement.children && domElement.children.length == 0)) return false;\r\n\r\n let elementRect = domElement.getBoundingClientRect();\r\n let childRect = domElement.children[0].getBoundingClientRect();\r\n\r\n let paddingOnRight = window.getComputedStyle(domElement).paddingRight;\r\n let padding = +(paddingOnRight.endsWith(\"px\") ? paddingOnRight.slice(0, -2) : paddingOnRight);\r\n\r\n // If overflow happens then Child element's right side position will be greater than container element's right side position.\r\n return (childRect.right + padding) > elementRect.right;\r\n }\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { memoize } from \"lodash-es\";\r\n\r\n@Pipe({\r\n name: \"AnnaConvertZeroOrNullOrUndefined\",\r\n})\r\nexport class AnnaConvertZeroOrNullOrUndefinedPipe implements PipeTransform {\r\n transformer = memoize(this.replace, (...args) => this.replace(args[0], args[1]));\r\n\r\n transform(value:any, convertTo:any): number | string {\r\n return this.transformer(value, convertTo);\r\n }\r\n\r\n replace(value:any, convertTo:any): number | string {\r\n if (value === \"undefined\" || value === null || value === \"\" || Number(value) === 0) {\r\n return convertTo;\r\n }\r\n return value;\r\n }\r\n}\r\n","// Angular import statements\r\nimport { Injectable } from '@angular/core';\r\nimport { NgbDate } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n// Third party import statements\r\nimport dayjs from \"dayjs\";\r\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\r\n\r\n// User defined import statements \r\nexport type NgbDateType = { year: number, month: number, day: number };\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AnnaDateTimeFormatService {\r\n\r\n constructor() {\r\n dayjs.extend(customParseFormat);\r\n }\r\n\r\n convertToNgbDateStandardFormat(date: any): NgbDateType | NgbDate {\r\n return {\r\n year: parseInt(dayjs(date, \"MM/DD/YYYY\").format(\"YYYY\")),\r\n month: parseInt(dayjs(date, \"MM/DD/YYYY\").format(\"M\")),\r\n day: parseInt(dayjs(date, \"MM/DD/YYYY\").format(\"D\")),\r\n };\r\n }\r\n\r\n convertToNgbDate(date: any, parseFormat: any): NgbDateType | NgbDate {\r\n return {\r\n year: parseInt(dayjs(date, parseFormat).format(\"YYYY\")),\r\n month: parseInt(dayjs(date, parseFormat).format(\"M\")),\r\n day: parseInt(dayjs(date, parseFormat).format(\"D\")),\r\n };\r\n }\r\n\r\n public static formatToTwelveHrs(time: any, callRemoveZero: boolean) {\r\n if (time.endsWith('A') || time.endsWith('P')) {\r\n time = time.substring(0, time.length - 1);\r\n }\r\n let tmp = time.split(\":\");\r\n let formattedTime = [];\r\n if (+tmp[0] > 12) {\r\n formattedTime[0] = (+tmp[0] - 12).toString();\r\n if (+tmp[0] == 24) formattedTime[2] = \"AM\";\r\n else formattedTime[2] = \"PM\";\r\n } else if (tmp[0] == \"12\") {\r\n formattedTime[0] = tmp[0];\r\n formattedTime[2] = \"PM\";\r\n } else if (tmp[0] == \"00\") {\r\n formattedTime[0] = \"12\"\r\n formattedTime[2] = \"AM\";\r\n } else {\r\n formattedTime[0] = tmp[0];\r\n formattedTime[2] = \"AM\";\r\n }\r\n formattedTime[1] = tmp[1];\r\n if (callRemoveZero) formattedTime = AnnaDateTimeFormatService.removeZero(formattedTime);\r\n return formattedTime;\r\n }\r\n\r\n convertTotwentyFourHrsFormat(time: any, callAddZero: any) {\r\n let tmp = time.split(/[ :]+/);\r\n let formattedTime = [];\r\n if (tmp[0] != \"12\" && tmp[2] == \"PM\") {\r\n formattedTime[0] = (+tmp[0] + 12).toString();\r\n } else if (tmp[0] == \"12\" && tmp[2] == \"AM\") {\r\n formattedTime[0] = \"00\";\r\n } else formattedTime[0] = tmp[0].toString();\r\n formattedTime[1] = tmp[1].toString();\r\n if (callAddZero) formattedTime = this.addZero(formattedTime);\r\n return formattedTime;\r\n }\r\n\r\n public static removeZero(time: any) {\r\n let removedZero;\r\n let formattedTime = time;\r\n if (\r\n time[0] == \"01\" ||\r\n time[0] == \"02\" ||\r\n time[0] == \"03\" ||\r\n time[0] == \"04\" ||\r\n time[0] == \"05\" ||\r\n time[0] == \"06\" ||\r\n time[0] == \"07\" ||\r\n time[0] == \"08\" ||\r\n time[0] == \"09\"\r\n ) {\r\n removedZero = time[0].toString();\r\n formattedTime[0] = removedZero.charAt(1);\r\n formattedTime[1] = time[1];\r\n formattedTime[2] = time[2];\r\n }\r\n return formattedTime;\r\n }\r\n\r\n addZero(time: any) {\r\n let addedZero;\r\n let formattedTime = time;\r\n if (time[1] == \"0\") time[1] = \"0\" + time[1];\r\n if (\r\n time[0] == \"0\" ||\r\n time[0] == \"1\" ||\r\n time[0] == \"2\" ||\r\n time[0] == \"3\" ||\r\n time[0] == \"4\" ||\r\n time[0] == \"5\" ||\r\n time[0] == \"6\" ||\r\n time[0] == \"7\" ||\r\n time[0] == \"8\" ||\r\n time[0] == \"9\"\r\n ) {\r\n addedZero = \"0\" + time[0];\r\n formattedTime[0] = addedZero;\r\n formattedTime[1] = time[1];\r\n }\r\n return formattedTime;\r\n }\r\n\r\n sortByTimeAscending(a: any, b: any) {\r\n let format = \"MM/DD/YYYY HH:mm:ss\";\r\n a = dayjs('01/01/2001 ' + a, format);\r\n b = dayjs('01/01/2001 ' + b, format);\r\n\r\n let results;\r\n\r\n results = a.get('hour') > b.get('hour') ? 1 : a.get('hour') < b.get('hour') ? -1 : 0;\r\n\r\n if (results === 0) results = a.get('minute') > b.get('minute') ? 1 : a.get('minute') < b.get('minute') ? -1 : 0;\r\n\r\n if (results === 0) results = a.get('second') > b.get('second') ? 1 : a.get('second') < b.get('second') ? -1 : 0;\r\n\r\n return results;\r\n }\r\n\r\n sortByTimeDescending(a: any, b: any) {\r\n let format = \"MM/DD/YYYY HH:mm:ss\";\r\n a = dayjs('01/01/2001 ' + a, format);\r\n b = dayjs('01/01/2001 ' + b, format);\r\n\r\n let results;\r\n\r\n results = a.get('hour') < b.get('hour') ? 1 : a.get('hour') > b.get('hour') ? -1 : 0;\r\n\r\n if (results === 0) results = a.get('minute') < b.get('minute') ? 1 : a.get('minute') > b.get('minute') ? -1 : 0;\r\n\r\n if (results === 0) results = a.get('second') < b.get('second') ? 1 : a.get('second') > b.get('second') ? -1 : 0;\r\n\r\n return results;\r\n }\r\n\r\n convertNgbDateToMoment(ngbDate: NgbDate | NgbDateType): string {\r\n let formatType = \"MM/DD/YYYY\";\r\n let converted = null;\r\n if (ngbDate && ngbDate.month && ngbDate.day && ngbDate.year) {\r\n converted = ngbDate.month + \"/\" + ngbDate.day + \"/\" + ngbDate.year;\r\n converted = dayjs(converted).format(formatType);\r\n }\r\n return converted;\r\n }\r\n\r\n compareDate(a: string, b: string, isAsc: boolean) {\r\n return isAsc ? dayjs(a).diff(b) : dayjs(b).diff(a);\r\n }\r\n\r\n public static formatTwentyFourHourTimeToHHMMAFormat(value: any, date?: string): string {\r\n value = dayjs(date ? date : '01/01/2000 ' + value).format(\"MM/DD/YYYY HH:mm:ss\");\r\n return value[14] == \"0\" && value[15] == \"0\"\r\n ? dayjs(value, [\"MM/DD/YYYY HH:mm:ss\"]).format(\"hA\").slice(0, -1)\r\n : dayjs(value, [\"MM/DD/YYYY HH:mm:ss\"]).format(\"h:mmA\").slice(0, -1);\r\n }\r\n\r\n public static formatTwelveHourTimeToHHMMAFormat(timeValue: any, date?: string): string {\r\n timeValue = dayjs(date ? date : '01/01/2000 ' + timeValue).format(\"MM/DD/YYYY HH:mm:ss\");\r\n // check if min==00\r\n return timeValue[14] == \"0\" && timeValue[15] == \"0\"\r\n ? dayjs(timeValue, [\"MM/DD/YYYY HH:mm:ss\"]).format(\"hA\").slice(0, -1)\r\n : dayjs(timeValue, [\"MM/DD/YYYY HH:mm:ss\"]).format(\"h:mmA\").slice(0, -1);\r\n }\r\n\r\n formatDateAndHHMMATimeToStandardFormat(dateAndTime: any) {\r\n let standardFormat, date, time;\r\n if (dateAndTime.includes(\"|\")) {\r\n date = dateAndTime.slice(0, dateAndTime.indexOf(\"|\"));\r\n time = dateAndTime.slice(dateAndTime.indexOf('|') + 1, dateAndTime.length).trim();\r\n\r\n time = time.slice(0, 2) + \":\" + time.slice(2, 4) + \" \" + time.slice(4, 5);\r\n time = time + \"M\";\r\n standardFormat = date + time;\r\n }\r\n else {\r\n standardFormat = dateAndTime + \" 00:00 AM\"\r\n }\r\n return dayjs(standardFormat).format(\"MM/DD/YYYY hh:mm A\");\r\n }\r\n\r\n compare(a: number | string, b: number | string, isAsc: boolean) {\r\n if (typeof a == 'string' && typeof b == 'string') {\r\n a = a == \"-\" ? \"0\" : a.toLowerCase();\r\n b = b == \"-\" ? \"0\" : b.toLowerCase();\r\n }\r\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\r\n }\r\n\r\n sortDataByBroadcastTimeAsc(firstParamTime: string, secondParamTime: string, broadcastTime: string) {\r\n let format = \"HH:mm:ss\";\r\n\r\n let a = dayjs(firstParamTime, format);\r\n let b = dayjs(secondParamTime, format);\r\n\r\n let broadcastdayjsDateTime = dayjs(broadcastTime, \"HH:mm:ss\");\r\n\r\n a = a.isBefore(broadcastdayjsDateTime) ? a.add(1, \"d\") : a;\r\n b = b.isBefore(broadcastdayjsDateTime) ? b.add(1, \"d\") : b;\r\n\r\n let result = a.isBefore(b) ? -1 : a.isAfter(b) ? 1 : 0;\r\n return result;\r\n }\r\n\r\n convertNgbDateToMomentInSpecificFormat(ngbDate: NgbDateType, format: string){\r\n let converted = null;\r\n \r\n if (ngbDate && ngbDate.month && ngbDate.day && ngbDate.year) {\r\n converted = ngbDate.month + \"/\" + ngbDate.day + \"/\" + ngbDate.year;\r\n converted = dayjs(converted).format(format);\r\n }\r\n \r\n return converted;\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport {\r\n IAngular2MultiSelectSettings,\r\n INgxAsideSettings,\r\n INgbDatePickerSettings,\r\n INgSelectSettings,\r\n INgxInfiniteScrollSettings,\r\n INgxSkeletonLoaderSettings,\r\n IRadioButtonComponentConfig,\r\n IConfirmationPopupConfig,\r\n IWeekCalendar,\r\n ICustomSingleSelect,\r\n ICustomMultiSelect,\r\n} from \"../models/anna-global-dropdown-config.model\";\r\nimport {\r\n IGtHeaderConfig,\r\n IGtGeneralConfig\r\n} from \"../models/anna-non-editable-gt-models\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaGlobalConfigService {\r\n readonly defaultAngular2MultiSelectSettings: IAngular2MultiSelectSettings;\r\n readonly defaultNgxAsideSettings: INgxAsideSettings;\r\n readonly defaultNgbDatePickerSettings: INgbDatePickerSettings;\r\n readonly defaultNgSelectSettings: INgSelectSettings;\r\n readonly defaultNgxInfiniteScrollSettings: INgxInfiniteScrollSettings;\r\n readonly defaultNgxSkeletonLoaderSettings: INgxSkeletonLoaderSettings;\r\n readonly defaultRadioButtonsComponentConfig: IRadioButtonComponentConfig;\r\n readonly defaultConfirmationPopupConfig: IConfirmationPopupConfig;\r\n readonly defaultWeekCalendarConfig: IWeekCalendar;\r\n readonly defaultGtHeaderConfig: IGtHeaderConfig;\r\n readonly defaultGtGeneralConfig: IGtGeneralConfig;\r\n readonly defaultSingleSelectConfig: ICustomSingleSelect;\r\n readonly defaultMultiSelectConfig: ICustomMultiSelect;\r\n\r\n /*\r\n Initializing all default settings\r\n */\r\n constructor() {\r\n this.defaultAngular2MultiSelectSettings = {\r\n text: \"Select option\",\r\n selectAllText: \"Select All\",\r\n unSelectAllText: \"UnSelect All\",\r\n badgeShowLimit: 1,\r\n singleSelection: false,\r\n classes: \"filter-dropdowns\",\r\n enableSearchFilter: true,\r\n enableCheckAll: true,\r\n autoPosition: false,\r\n disabled: false,\r\n position: \"bottom\",\r\n lazyLoading: false,\r\n showCheckbox: true,\r\n maxHeight: 300,\r\n enableFilterSelectAll: true,\r\n };\r\n\r\n this.defaultNgxAsideSettings = {\r\n title: '\"Filters\"',\r\n cancelButtonTitle: '\"Cancel\"',\r\n submitButtonTitle: '\"Apply\"',\r\n closeOnEscape: false,\r\n showOverlay: false,\r\n showDefaultFooter: false,\r\n showDefaultHeader: false,\r\n };\r\n\r\n this.defaultNgbDatePickerSettings = {\r\n autoClose: false,\r\n placeholder: \"mm-dd-yyyy\",\r\n displayMonths: 1,\r\n firstDayOfWeek: 1,\r\n showWeekNumbers: false,\r\n readonly: true,\r\n };\r\n\r\n this.defaultNgSelectSettings = {\r\n allowClear: false,\r\n placeholder: \"Select\",\r\n };\r\n\r\n this.defaultNgxInfiniteScrollSettings = {\r\n infiniteScrollDistance: 1,\r\n infiniteScrollUpDistance: 2,\r\n infiniteScrollThrottle: 300,\r\n scrollWindow: false,\r\n };\r\n\r\n this.defaultNgxSkeletonLoaderSettings = {\r\n numberOfSkeletonRows: Array(6).fill(0),\r\n };\r\n\r\n this.defaultRadioButtonsComponentConfig = {\r\n heading: \"Select Option\",\r\n radioButtons: [\r\n {\r\n value: \"Yes\",\r\n isDisabled: false,\r\n label: \"Yes\",\r\n class: \"\",\r\n },\r\n {\r\n value: \"No\",\r\n isDisabled: false,\r\n label: \"No\",\r\n class: \"\",\r\n },\r\n ],\r\n };\r\n\r\n this.defaultConfirmationPopupConfig = {\r\n showCancelButton: true,\r\n title: \"Are you sure ?\",\r\n showConfirmButton: true,\r\n cancelButtonLabel: \"No\",\r\n confirmButtonLabel: \"Yes\",\r\n showCloseIcon: true,\r\n backdrop: \"static\",\r\n windowClass: \"\",\r\n size: \"sm\",\r\n keyboard: false,\r\n };\r\n\r\n this.defaultWeekCalendarConfig = {\r\n firstDayOfWeek: 1,\r\n showWeekNumbers: true,\r\n dateFormatToDisplay: \"d MMM y\",\r\n dateFormatForRequest: \"y-MM-dd\",\r\n maxWeeksToShowWithRemainingCount: 2,\r\n numberOfMonthsToEnableInPast: 1,\r\n selectMultipleWeeks: false,\r\n customClass: \"\",\r\n emitMultipleWeekObjects: true,\r\n maxWeeksToSelect: 0,\r\n showAsDropdown: true,\r\n selectCurrentWeek: true,\r\n };\r\n\r\n this.defaultGtHeaderConfig = {\r\n iconColumn: false,\r\n checkboxColumn: false,\r\n lastColumnKeys: []\r\n };\r\n\r\n this.defaultGtGeneralConfig = {\r\n component: \"\",\r\n totalRow: false,\r\n isHeaderChecked: false,\r\n disableHeaderCheckbox: false,\r\n verticalScrollOffsetForFilterTooltip: 0,\r\n isGrouped: false,\r\n showAllColumnFilter: true,\r\n bufferSize: 20,\r\n page: \"\"\r\n };\r\n\r\n this.defaultSingleSelectConfig = {\r\n showSearchBar: false,\r\n placeholder: \"Select\",\r\n classes: \"\",\r\n position: \"BOTTOM\",\r\n maxHeightOfList: 200\r\n }\r\n\r\n this.defaultMultiSelectConfig = {...this.defaultSingleSelectConfig, ...{showErrorWhenNoOptionSelected: true}};\r\n }\r\n}\r\n","// Angular import statements\r\nimport { DatePipe } from \"@angular/common\";\r\nimport { AfterViewInit, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from \"@angular/core\";\r\n\r\n// Third party import statements\r\nimport { NgbCalendar, NgbDate, NgbDatepickerConfig, NgbDateStruct, NgbInputDatepicker } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\nimport { WeekObject } from '../../../anna-core-shared-lib/models/anna-generic-data-type.model';\r\nimport { IWeekCalendar } from '../../../anna-core-shared-lib/models/anna-global-dropdown-config.model';\r\nimport { AnnaDateTimeFormatService } from '../../../anna-core-shared-lib/services/anna-date-time-format.service';\r\nimport { AnnaGlobalConfigService } from '../../../anna-core-shared-lib/services/anna-global-config.service';\r\n\r\n// User defined import statements\r\n\r\n\r\n\r\n@Component({\r\n selector: \"anna-core-week-calendar-filter-lib\",\r\n templateUrl: \"./anna-week-calendar-filter.component.html\",\r\n styleUrls: [\"./anna-week-calendar-filter.component.scss\"],\r\n})\r\nexport class AnnaWeekCalendarComponent implements OnInit, OnChanges, AfterViewInit {\r\n fromDate: NgbDate | null;\r\n hoveredDate: NgbDate | null = null;\r\n toDate: NgbDate | null = null;\r\n today: NgbDate;\r\n\r\n model: NgbDateStruct;\r\n\r\n weekNumbers: string[] = [];\r\n pipe: DatePipe;\r\n dateToDisplay: string = \"\";\r\n weekObjects: WeekObject[];\r\n multiSelectDropdownOpen: boolean = false;\r\n datepicker: NgbInputDatepicker;\r\n private formatter: any;\r\n public formattedStartDate: string;\r\n public formattedEndDate: string;\r\n private calendarMap = new Map();\r\n private flag1: boolean;\r\n private flag2: boolean;\r\n @Input(\"from-date\") selectedFromDate: NgbDateStruct;\r\n @Input(\"to-date\") selectedEndDate: NgbDateStruct;\r\n @Input(\"disabled-dates\") disabledDates: NgbDate[] = [];\r\n @Input() maxDate: any;\r\n @Input() minDate: any;\r\n\r\n disabledFunc: any;\r\n state: any;\r\n\r\n //Setting the default values;\r\n private _defaultValues: IWeekCalendar;\r\n\r\n @Input(\"week-calendar-config\") config: IWeekCalendar;\r\n @Output(\"apply\") applyWeekCalendarChanges = new EventEmitter();\r\n @Output(\"toggle-calendar\") calendarToggled = new EventEmitter();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n //if some values are not sent, setting the default values\r\n this._defaultValues = this.globalConfigService.defaultWeekCalendarConfig;\r\n this.config = { ...this._defaultValues, ...this.config };\r\n\r\n if (this.config.selectCurrentWeek) {\r\n this.initializeWeekData();\r\n this.fromDate && this.selectWeek(this.fromDate);\r\n }\r\n\r\n this.formatter = this.formattedDates();\r\n\r\n if (this.selectedFromDate && this.selectedEndDate && this.config) {\r\n // this.selectWeek(this.fromDate);\r\n this.fromDate = NgbDate.from(this.selectedFromDate);\r\n this.toDate = NgbDate.from(this.selectedEndDate);\r\n this.weekNumberGenerator();\r\n this.displayToUI();\r\n this.setCalendarMap();\r\n }\r\n\r\n if (this.disabledDates.length > 0) {\r\n this.disabledFunc = (date: NgbDate, current: { month: number }) => {\r\n return this.checkIfDateIsDisabled(date);\r\n };\r\n }\r\n }\r\n\r\n constructor(\r\n private calendar: NgbCalendar,\r\n private datePickerConfig: NgbDatepickerConfig,\r\n private annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n private globalConfigService: AnnaGlobalConfigService\r\n ) { }\r\n\r\n\r\n getWeekNumber(week: any, firstDayOfWeek: any) {\r\n const weekStartDate = dayjs(convertNgbDateToMoment(week[0]), \"MM/DD/YYYY\");\r\n const weekYear = weekStartDate.year();\r\n const yearStartDate = dayjs(`01/01/${weekYear}`, \"MM/DD/YYYY\");\r\n const weekDay = yearStartDate.day();\r\n\r\n const noOfDays = weekStartDate.diff(yearStartDate, \"d\") + 1;\r\n\r\n function convertNgbDateToMoment(ngbDate: NgbDate): string {\r\n let formatType = \"MM/DD/YYYY\";\r\n let converted = null;\r\n if(ngbDate && ngbDate.month && ngbDate.day && ngbDate.year){\r\n converted = ngbDate.month+ \"/\" + ngbDate.day + \"/\" + ngbDate.year;\r\n converted = dayjs(converted).format(formatType);\r\n }\r\n return converted;\r\n }\r\n\r\n function checkIfYearIsBroadcastLeapYear() {\r\n let isLeapYear = (weekYear % 4 == 0 && weekYear % 100 != 0) || weekYear % 400 == 0;\r\n return (isLeapYear && (weekDay == 0 || weekDay == 6)) || (!isLeapYear && weekDay == 0);\r\n }\r\n\r\n const isLeapYear = checkIfYearIsBroadcastLeapYear();\r\n const divider = isLeapYear ? 53 : 52;\r\n const adder = isLeapYear ? 2 : 1;\r\n\r\n let broadcastNumberOfDays = weekDay + noOfDays;\r\n let broadcastWeekNumber = broadcastNumberOfDays % 7 > 0 ? broadcastNumberOfDays / 7 + adder : broadcastNumberOfDays / 7;\r\n\r\n if (Math.floor(broadcastWeekNumber % divider) === 0) {\r\n return divider;\r\n }\r\n return Math.floor(broadcastWeekNumber % divider);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // CHANGES@ANNALIB Changed this.\r\n // this.calendar[\"__proto__\"].getWeekNumber = this.getWeekNumber;\r\n Object.setPrototypeOf(this.calendar, {getWeekNumber: this.getWeekNumber})\r\n }\r\n\r\n ngOnInit(): void {\r\n // this.selectWeek(this.fromDate);\r\n this.setCalendarMap();\r\n }\r\n\r\n initializeWeekData() {\r\n this.weekObjects = [];\r\n\r\n this.fromDate = this.calendar.getToday();\r\n this.today = this.calendar.getToday();\r\n\r\n let backDatedPeriod = JSON.parse(localStorage.getItem(\"userDetails\") || '{}').locking_period_days;\r\n if (backDatedPeriod < 0) {\r\n let date: NgbDate = this.calendar.getPrev(this.calendar.getToday(), \"d\", Math.abs(backDatedPeriod));\r\n this.today = NgbDate.from(date);\r\n this.fromDate = NgbDate.from(date);\r\n }\r\n\r\n // Disable months before numberOfMonthsToEnable\r\n this.datePickerConfig.markDisabled = (date: NgbDateStruct) => {\r\n let previousMonth = this.calendar.getPrev(this.today, \"m\", this.config.numberOfMonthsToEnableInPast);\r\n let previousDay = this.calendar.getPrev(previousMonth, \"d\", 1);\r\n return !NgbDate.from(previousDay).before(date);\r\n };\r\n this.formatter = this.formattedDates();\r\n this.flag1 = false;\r\n this.flag2 = false;\r\n }\r\n\r\n selectWeek(date: NgbDate): void {\r\n const dateObject = new Date(date.year, date.month - 1, date.day);\r\n let constructDate = this.buildDate(dateObject);\r\n\r\n if (!this.config.selectMultipleWeeks) {\r\n //Single week selection\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n this.weekNumberGenerator();\r\n } else {\r\n if (date.before(this.fromDate)) {\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n if (this.flag1) {\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n }\r\n this.flag1 = !this.flag1;\r\n } else if (date.after(this.toDate)) {\r\n if (this.flag2) {\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n //this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n }\r\n this.flag2 = !this.flag2;\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n } else {\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n }\r\n\r\n if (this.disabledDates.length > 0) {\r\n let dayjsStartDate = dayjs(this.annaDateTimeFormatService.convertNgbDateToMoment(this.fromDate), \"MM/DD/YYYY\");\r\n let dayjsEndDate = dayjs(this.annaDateTimeFormatService.convertNgbDateToMoment(this.toDate), \"MM/DD/YYYY\");\r\n let ngbDate;\r\n while (!dayjsStartDate.isSame(dayjsEndDate)) {\r\n ngbDate = this.annaDateTimeFormatService.convertToNgbDate(dayjsStartDate, \"MM/DD/YYYY\");\r\n if (this.checkIfDateIsDisabled(ngbDate)) {\r\n break;\r\n }\r\n dayjsStartDate.add(1, \"d\");\r\n }\r\n let newDateObject = new Date(ngbDate.year, ngbDate.month - 1, ngbDate.day - 1);\r\n let constructDate = this.buildDate(newDateObject);\r\n this.toDate = this.constructEndDate(newDateObject)(constructDate);\r\n }\r\n\r\n this.weekNumberGenerator();\r\n }\r\n\r\n if (!this.config.showAsDropdown) {\r\n this.applyChanges();\r\n }\r\n }\r\n\r\n weekNumberGenerator(): void {\r\n let dates = [];\r\n let week = [];\r\n\r\n let startDate = NgbDate.from(this.fromDate);\r\n let endDate = NgbDate.from(this.toDate);\r\n\r\n week.push(startDate);\r\n while (endDate != null && !startDate.equals(endDate)) {\r\n let date = this.calendar.getNext(startDate, \"d\", 1);\r\n startDate = date;\r\n week.push(date);\r\n\r\n // Collect all days in week to calculate the week number\r\n if (week.length == 7) {\r\n dates.push(week);\r\n week = [];\r\n }\r\n }\r\n if (((this.config.maxWeeksToSelect ?? 0) > 0 && dates.length > (this.config.maxWeeksToSelect ?? 0))) {\r\n dates.splice((this.config.maxWeeksToSelect ?? 0), dates.length - (this.config.maxWeeksToSelect ?? 0));\r\n }\r\n this.selectedDates(dates);\r\n\r\n this.weekNumbers = [];\r\n this.weekObjects = [];\r\n if (dates.length > 0) {\r\n for (let date of dates) {\r\n this.weekNumbers.push(\" Week \" + this.calendar.getWeekNumber(date, this.config.firstDayOfWeek));\r\n let dates = this.formatter(date[0], date[6]);\r\n let dateObjects = { startDate: dates.formattedStartDate, endDate: dates.formattedEndDate };\r\n this.weekObjects.push(dateObjects);\r\n }\r\n }\r\n this.displayToUI();\r\n }\r\n\r\n selectedDates(dates: any) {\r\n this.fromDate = dates[0][0];\r\n this.toDate = dates[dates.length - 1][6];\r\n }\r\n\r\n formattedDates() {\r\n let pipe = new DatePipe(\"en-US\");\r\n let thisObj = this;\r\n return function (fromDate: NgbDate, toDate: NgbDate) {\r\n let fromDateObject = new Date(fromDate.year, fromDate.month - 1, fromDate.day);\r\n let toDateObject = new Date(toDate.year, toDate.month - 1, toDate.day);\r\n thisObj.formattedStartDate = pipe.transform(fromDateObject, thisObj.config.dateFormatForRequest);\r\n thisObj.formattedEndDate = pipe.transform(toDateObject, thisObj.config.dateFormatForRequest);\r\n\r\n thisObj.dateToDisplay =\r\n pipe.transform(fromDateObject, thisObj.config.dateFormatToDisplay) +\r\n \" to \" +\r\n pipe.transform(toDateObject, thisObj.config.dateFormatToDisplay);\r\n return thisObj;\r\n };\r\n }\r\n\r\n displayToUI() {\r\n if (!this.config.selectMultipleWeeks && this.fromDate && this.toDate) {\r\n // Display for only Single Week\r\n this.formatter(this.fromDate, this.toDate);\r\n } else {\r\n // Display for Multiple Weeks\r\n if (this.weekNumbers.length > (this.config.maxWeeksToShowWithRemainingCount ?? 0)) {\r\n let weekDisplay = [];\r\n for (let i = 0; i < (this.config.maxWeeksToShowWithRemainingCount ?? 0); i++) {\r\n weekDisplay.push(this.weekNumbers.shift());\r\n }\r\n let remainingWeeks = this.weekNumbers.length;\r\n this.weekNumbers = [];\r\n this.weekNumbers.push(weekDisplay + \" +\" + remainingWeeks);\r\n }\r\n }\r\n }\r\n\r\n constructStartDate(date: Date) {\r\n let firstDayOfWeek = this.config.firstDayOfWeek;\r\n return function (constructDate: any) {\r\n let startDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) - date.getDay() : -6;\r\n return constructDate(startDay);\r\n };\r\n }\r\n\r\n constructEndDate(date: Date) {\r\n let firstDayOfWeek = this.config.firstDayOfWeek;\r\n return function (constructDate: any) {\r\n let endDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) + 6 - date.getDay() : 0;\r\n return constructDate(endDay);\r\n };\r\n }\r\n\r\n buildDate(date: Date) {\r\n return function (number: number): NgbDate | null {\r\n let day = date.getDate() + number;\r\n const dateObject = new Date(date.getFullYear(), date.getMonth(), day);\r\n\r\n let ngbDateObject = {} as NgbDate;\r\n ngbDateObject.day = day;\r\n\r\n if (ngbDateObject.day > 31 || ngbDateObject.day < 1) {\r\n ngbDateObject.day = dateObject.getDate();\r\n }\r\n\r\n ngbDateObject.month = dateObject.getMonth() + 1;\r\n ngbDateObject.year = dateObject.getFullYear();\r\n return NgbDate.from(ngbDateObject);\r\n };\r\n }\r\n\r\n isHovered(date: NgbDate): boolean | null {\r\n return this.fromDate && !this.toDate && this.hoveredDate && date.after(this.fromDate) && date.before(this.hoveredDate);\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) || (this.toDate && date.equals(this.toDate)) || this.isInside(date) || this.isHovered(date)\r\n );\r\n }\r\n\r\n previousWeek(): void {\r\n if (this.fromDate) {\r\n this.toDate = this.calendar.getPrev(this.fromDate, \"d\", 1);\r\n this.fromDate = this.calendar.getPrev(this.fromDate, \"d\", this.calendar.getDaysPerWeek());\r\n }\r\n this.weekNumberGenerator();\r\n this.applyChanges();\r\n }\r\n\r\n nextWeek(): void {\r\n if (this.fromDate) {\r\n this.fromDate = this.calendar.getNext(this.fromDate, \"d\", this.calendar.getDaysPerWeek());\r\n this.toDate = this.calendar.getNext(this.fromDate, \"d\", this.calendar.getDaysPerWeek() - 1);\r\n }\r\n this.weekNumberGenerator();\r\n this.applyChanges();\r\n }\r\n\r\n setCalendarMap() {\r\n let dateObj = { fromDate: this.fromDate, toDate: this.toDate };\r\n this.calendarMap.set(\"oldDates\", dateObj);\r\n }\r\n\r\n applyChanges() {\r\n this.multiSelectDropdownOpen = false;\r\n if (!this.config.emitMultipleWeekObjects) {\r\n let dates = {} as WeekObject;\r\n let formattedDates = this.formatter(this.fromDate, this.toDate);\r\n dates.startDate = formattedDates.formattedStartDate;\r\n dates.endDate = formattedDates.formattedEndDate;\r\n this.applyWeekCalendarChanges.emit(dates);\r\n } else {\r\n this.applyWeekCalendarChanges.emit(this.weekObjects);\r\n }\r\n this.setCalendarMap();\r\n }\r\n\r\n isFocused(value: any) {\r\n this.calendarToggled.emit(value);\r\n }\r\n\r\n isDropdownOpenedForCalendar(datepicker: NgbInputDatepicker) {\r\n this.datepicker = datepicker;\r\n if (this.datepicker.isOpen()) {\r\n this.revertDates();\r\n this.datepicker.close();\r\n this.multiSelectDropdownOpen = false;\r\n } else {\r\n this.datepicker.open();\r\n this.multiSelectDropdownOpen = true;\r\n }\r\n }\r\n\r\n revertDates() {\r\n this.multiSelectDropdownOpen = false;\r\n if (this.calendarMap.get(\"oldDates\")) {\r\n let dateObj = this.calendarMap.get(\"oldDates\");\r\n this.fromDate = dateObj.fromDate;\r\n this.toDate = dateObj.toDate;\r\n this.weekNumberGenerator();\r\n this.displayToUI();\r\n }\r\n }\r\n\r\n checkIfDateIsDisabled(date: any): boolean {\r\n const validatorFunc = (ngbDate: NgbDate) => 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 class=\"form-inline\" *ngIf=\"config.showAsDropdown\">\r\n <div class=\"form-group hidden\">\r\n <div class=\"input-group\">\r\n <input\r\n name=\"datepicker\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"false\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n (closed)=\"isFocused(false)\"\r\n [displayMonths]=\"1\"\r\n [dayTemplate]=\"t\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n tabindex=\"-1\"\r\n style=\"display: none\"\r\n [footerTemplate]=\"footerTemplate\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!--Single week select-->\r\n <div *ngIf=\"!config.selectMultipleWeeks\">\r\n <span style=\"position: relative; left: 30px; font-size: 12px\"> &nbsp;{{ 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 class=\"material-icons next-round-btn\" (click)=\"previousWeek()\"> navigate_next </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 class=\"mdi mdi-menu-down\" *ngIf='!datepicker.isOpen()' (click)=\"datepicker.open()\"></i>\r\n <i class='mdi mdi-menu-up' *ngIf=\"datepicker.isOpen()\" (click)=\"isDropdownOpenedForCalendar(datepicker)\"></i>\r\n <div class=\"right\">\r\n <span class=\"material-icons round-btn\" (click)=\"nextWeek()\"> navigate_next </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 class=\"form-group\" *ngIf=\"config.selectMultipleWeeks\">\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 *ngIf=\"!multiSelectDropdownOpen\" class=\"mdi mdi-menu-down multiselect-input-arrow\"></i>\r\n <i *ngIf=\"multiSelectDropdownOpen\" class=\"mdi mdi-menu-up multiselect-input-arrow\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ngb-datepicker\r\n #weekPicker\r\n *ngIf=\"!config.showAsDropdown\"\r\n [displayMonths]=\"1\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n [dayTemplate]=\"t\"\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n [markDisabled]=\"disabledFunc\"\r\n>\r\n</ngb-datepicker>\r\n\r\n<ng-template #footerTemplate>\r\n <hr class=\"my-0\" />\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"applyChanges(); closeDatepicker(datepicker)\"\r\n style=\"background-color: #268bff; color: #ffffff\"\r\n >\r\n Apply\r\n </button>\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"revertDates(); closeDatepicker(datepicker)\"\r\n style=\"background-color: rgba(38, 139, 255, 0.12); color: #268bff\"\r\n >\r\n Cancel\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #t let-date let-focused=\"focused\" let-disabled=\"disabled\">\r\n <span\r\n class=\"custom-day\"\r\n [class.focused]=\"focused\"\r\n [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\"\r\n [class.disabled]=\"disabled\"\r\n (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\"\r\n >\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n<!--\r\n\r\n<hr>\r\n\r\n<pre>From: {{ fromDate | json }} </pre>\r\n<pre>To: {{ toDate | json }} </pre>\r\n<pre>weekNumbers: {{ weekNumbers | json }} </pre>\r\n\r\n-->\r\n","// Angular import statements\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from \"@angular/core\";\r\n\r\n//Third party import statements\r\nimport { NgbDate, NgbDateStruct } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AnnaDateTimeFormatService } from '../../../anna-core-shared-lib/services/anna-date-time-format.service';\r\nimport dayjs from \"dayjs\";\r\nimport { Placement } from \"@ng-bootstrap/ng-bootstrap/util/positioning\";\r\n\r\n@Component({\r\n selector: \"anna-core-calendar-filter-lib\",\r\n templateUrl: \"./anna-calendar-filter.component.html\",\r\n styleUrls: [\"./anna-calendar-filter.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AnnaCalendarFilterComponent implements OnInit,OnChanges {\r\n \r\n @Input() maxDate: any;\r\n @Input() autoClose: \"inside\" | \"outside\" | boolean = \"outside\";\r\n @Input() label: string;\r\n @Input() minDate: any;\r\n @Input() showLabel: boolean = true;\r\n @Input() dateFormat: string = \"MM/DD/YYYY\";\r\n @Input() placeholder: string = \"MM/DD/YYYY\";\r\n @Input() disabled: boolean = false;\r\n @Output() selectedDate = new EventEmitter();\r\n @Input() selectedFromDate: any;\r\n @Input() selectedToDate: any;\r\n @Input() disableFunction: any;\r\n @Input() showFooterTemplate: boolean = false;\r\n @Input() placement: Placement[] = ['top-start', 'left', 'bottom-start', 'auto'];\r\n\r\n @Output() apply = new EventEmitter();\r\n @Output() cancel = new EventEmitter();\r\n fromDate: any;\r\n toDate: any;\r\n hoveredDate: any;\r\n disableApplyBtn: boolean = false;\r\n dateToBeShownInInput: string = \"\";\r\n \r\n constructor(private annaTimeService: AnnaDateTimeFormatService) { \r\n this.disableFunction = (date: NgbDateStruct) => {\r\n return false;\r\n };\r\n }\r\n \r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.setStartAndEndDate();\r\n this.setInputText();\r\n }\r\n\r\n setStartAndEndDate(){\r\n this.fromDate = this.selectedFromDate;\r\n this.toDate = this.selectedToDate;\r\n }\r\n\r\n ngOnInit() {\r\n this.disableApplyBtn = true;\r\n // this.fromDate = this.selectedFromDate;\r\n // this.toDate = this.selectedToDate;\r\n // this.setInputText();\r\n }\r\n\r\n onDateSelection(date: NgbDate) {\r\n if (!this.fromDate && !this.toDate) {\r\n this.fromDate = date;\r\n } else if (this.fromDate && !this.toDate && (date.after(this.fromDate) || date.equals(this.fromDate))) {\r\n let isDisabledDatePresent = this.checkIfDisabledDateSelectedInRange(date);\r\n this.toDate = isDisabledDatePresent ? null : date;\r\n } else {\r\n this.toDate = null;\r\n this.fromDate = date;\r\n }\r\n this.selectedDate.emit({ fromDate: this.fromDate, toDate: this.toDate });\r\n this.disableCalendarApplyBtn();\r\n this.setInputText();\r\n }\r\n\r\n checkIfDisabledDateSelectedInRange(date: NgbDate){\r\n let dayJsStartDate = dayjs(this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.fromDate, this.dateFormat), this.dateFormat);\r\n let dayJsEndDate = dayjs(this.annaTimeService.convertNgbDateToMomentInSpecificFormat(date, this.dateFormat),this.dateFormat);\r\n\r\n while(!dayJsStartDate.isSame(dayJsEndDate)){\r\n if(this.disableFunction(this.annaTimeService.convertToNgbDate(dayJsStartDate.format(this.dateFormat), this.dateFormat))){\r\n return true;\r\n }\r\n else{\r\n dayJsStartDate = dayJsStartDate.add(1,\"day\");\r\n }\r\n }\r\n \r\n }\r\n\r\n isHovered(date: NgbDate) {\r\n return this.fromDate && !this.toDate && this.hoveredDate && date.after(this.fromDate) && date.before(this.hoveredDate);\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) || (this.toDate && date.equals(this.toDate)) || this.isInside(date) || this.isHovered(date)\r\n );\r\n }\r\n\r\n cancelSelection() {\r\n this.cancel.emit();\r\n }\r\n\r\n applySelection() {\r\n if (this.fromDate && this.toDate) {\r\n let dateObj = { fromDate: this.fromDate, toDate: this.toDate };\r\n this.apply.emit(dateObj);\r\n }\r\n }\r\n\r\n disableCalendarApplyBtn() {\r\n this.disableApplyBtn = !(this.fromDate && this.toDate);\r\n }\r\n\r\n setInputText(){\r\n\r\n if(this.fromDate && this.toDate){\r\n this.dateToBeShownInInput = `${this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.fromDate, this.dateFormat)} - ${this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.toDate, this.dateFormat)}`;\r\n }\r\n else if(this.fromDate){\r\n this.dateToBeShownInInput = `${this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.fromDate, this.dateFormat)}`;\r\n }\r\n else{\r\n this.dateToBeShownInInput = null;\r\n }\r\n\r\n }\r\n\r\n datepickerClosed(){\r\n //Required for Pending ec order\r\n if(this.showFooterTemplate){\r\n this.selectedFromDate = this.fromDate = null;\r\n this.selectedToDate = this.toDate = null;\r\n this.setInputText();\r\n this.disableApplyBtn = true;\r\n }\r\n }\r\n \r\n}\r\n","<!-- container=\"body\"\r\ndatepickerClass = \"calendar-filter\" -->\r\n \r\n<p class=\"calendar-label\" *ngIf=\"showLabel\">{{label | titlecase }}</p>\r\n<form>\r\n <div class=\"padding-class\" style=\"padding: 0 12px;\">\r\n <div class=\"dp-hidden position-absolute\">\r\n <div class=\"input-group\">\r\n <input 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 #t let-date let-focused=\"focused\">\r\n <span 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 {{ date.day }}\r\n </span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"input-group\">\r\n <input #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 class=\"icon-container\" (click)=\"datepicker.toggle()\" type=\"button\" [disabled]=\"disabled\">\r\n <i class=\"mdi mdi-calendar-range\" *ngIf=\"!datepicker.isOpen()\"></i>\r\n <i class=\"mdi mdi-check\" *ngIf=\"datepicker.isOpen()\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #footerTemplate>\r\n\t<div class=\"buttons-container\" *ngIf=\"showFooterTemplate\">\r\n <button class=\"button\" (click)=\"cancelSelection(); datepicker.close()\">Cancel</button> \r\n <button class=\"button\" [ngClass]=\"{ disabled: disableApplyBtn }\" [disabled]=\"disableApplyBtn\" (click)=\"applySelection(); datepicker.close()\">Apply</button>\r\n </div>\r\n</ng-template>","export class TooltipModel {\r\n isSelected: boolean;\r\n label: string;\r\n id: number;\r\n value: string;\r\n\r\n constructor(obj: string,id: number) {\r\n this.label = obj != null ? obj.toString() : \"-\";\r\n this.value = obj;\r\n this.isSelected = false;\r\n this.id = id;\r\n }\r\n}\r\n\r\nexport class tooltipModelForColumnLevelFiltering {\r\n isHidden;\r\n isSelected: boolean;\r\n data: string;\r\n constructor(data: string) {\r\n this.data = data;\r\n this.isSelected = true;\r\n this.isHidden = false;\r\n }\r\n}\r\n\r\nexport class radioButtonModel {\r\n key: string;\r\n label: string;\r\n isSortRequired: boolean;\r\n isFilterRequired: boolean;\r\n\r\n constructor(key: string, value: string,sort: boolean, filter: boolean) {\r\n this.key = key;\r\n this.label = value;\r\n this.isSortRequired = sort;\r\n this.isFilterRequired = filter;\r\n }\r\n}\r\n\r\nexport enum AllSelectedStatus {\r\n none = 0,\r\n allSelected = 1,\r\n fewSelected = 2,\r\n}\r\n","// Angular import statements\r\nimport { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { SortType } from '../models/anna-sort.model';\r\nimport { AnnaDateTimeFormatService } from './anna-date-time-format.service';\r\nimport { cloneDeep } from 'lodash-es';\r\n\r\n// Third party import statements\r\n\r\n// User defined import statements\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AnnaSortService {\r\n columnSortState: Map<string, SortType>;\r\n noSortingAppliedData: any[];\r\n updateSortTypeSubject: Subject<string> = new Subject();\r\n\r\n dateSet = new Set([\r\n 'endDate',\r\n 'startDate',\r\n 'end_date',\r\n 'start_date',\r\n 'flightStartDate',\r\n 'flightEndDate',\r\n \"date\",\r\n \"GeneratedOn\"\r\n ]);\r\n\r\n constructor(private annaDateTimeFormatService: AnnaDateTimeFormatService) {\r\n }\r\n\r\n sortDataForComponentOtherThanLurAndCsrPage(\r\n isAsc: boolean,\r\n data: any[],\r\n key: string\r\n ) {\r\n let param1: string | number;\r\n let param2: string | number;\r\n\r\n if (this.dateSet.has(key)) {\r\n data.sort((a, b) => {\r\n return this.annaDateTimeFormatService.compareDate(\r\n a[key],\r\n b[key],\r\n isAsc\r\n );\r\n });\r\n } else if (key === 'AirDateAndTime' || key === 'Date') {\r\n data.sort((a, b) => {\r\n let first, second;\r\n if (a[key] == '-') {\r\n return 1;\r\n }\r\n\r\n if (b[key] == '-') {\r\n return -1;\r\n } else {\r\n first =\r\n this.annaDateTimeFormatService.formatDateAndHHMMATimeToStandardFormat(\r\n a[key]\r\n );\r\n second =\r\n this.annaDateTimeFormatService.formatDateAndHHMMATimeToStandardFormat(\r\n b[key]\r\n );\r\n let compareDate = this.annaDateTimeFormatService.compareDate(\r\n first,\r\n second,\r\n isAsc\r\n );\r\n return compareDate;\r\n }\r\n });\r\n } else if (key == 'startEndTime' || key == 'TimeBand') {\r\n data.sort((a, b) => {\r\n if (isAsc) {\r\n param1 = a[key][1];\r\n param2 = b[key][1];\r\n } else {\r\n param1 = a[key][2];\r\n param2 = b[key][2];\r\n }\r\n let val = isAsc\r\n ? this.annaDateTimeFormatService.sortByTimeAscending(param1, param2)\r\n : this.annaDateTimeFormatService.sortByTimeDescending(param1, param2);\r\n return val;\r\n });\r\n } else {\r\n let dataWithoutEmptyOrHyphenValues = data.filter(n => n[key] != \"-\");\r\n let rowsWithHyphenOrZeroValues = data.filter(n => n[key] == \"-\");\r\n\r\n dataWithoutEmptyOrHyphenValues.sort((a, b) => {\r\n param1 = a[key];\r\n param2 = b[key];\r\n\r\n if (param1 !== param2) {\r\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n data = isAsc ? [...rowsWithHyphenOrZeroValues, ...dataWithoutEmptyOrHyphenValues] :\r\n [...dataWithoutEmptyOrHyphenValues, ...rowsWithHyphenOrZeroValues];\r\n }\r\n\r\n return data;\r\n }\r\n\r\n sortEnterEditLurAndCsrPage(isAsc: boolean, data: any[], key: any) {\r\n let param1: string | number;\r\n let param2: string | number;\r\n\r\n if (key.includes('_')) {\r\n let keys = key.split('_');\r\n let weekNumber = keys[0];\r\n let sortKey = keys[1];\r\n\r\n if (keys.length > 2) {\r\n sortKey =\r\n keys[2] == true\r\n ? 'BookedAurIncludingNoChargeSpots'\r\n : 'BookedAurExcludingNoChargeSpots';\r\n }\r\n\r\n data.sort((a, b) => {\r\n let aInventoryCodeWeekWiseKey = Object.keys(\r\n a.WeekWiseInventoryCodeData\r\n ).filter((key) => key.split('_')[1] == weekNumber);\r\n let bInventoryCodeWeekWiseKey = Object.keys(\r\n b.WeekWiseInventoryCodeData\r\n ).filter((key) => key.split('_')[1] == weekNumber);\r\n\r\n param1 = null;\r\n param2 = null;\r\n if (aInventoryCodeWeekWiseKey.length > 0) {\r\n param1 =\r\n a.WeekWiseInventoryCodeData[aInventoryCodeWeekWiseKey[0]][\r\n sortKey\r\n ][1];\r\n }\r\n\r\n if (bInventoryCodeWeekWiseKey.length > 0) {\r\n param2 =\r\n b.WeekWiseInventoryCodeData[bInventoryCodeWeekWiseKey[0]][\r\n sortKey\r\n ][1];\r\n }\r\n\r\n if (param1 !== param2) {\r\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\r\n }\r\n\r\n return 0;\r\n });\r\n } else if (key == 'TimeBand') {\r\n data.sort((a, b) => {\r\n if (isAsc) {\r\n param1 = a[key][1];\r\n param2 = b[key][1];\r\n } else {\r\n param1 = a[key][2];\r\n param2 = b[key][2];\r\n }\r\n let val = isAsc\r\n ? this.annaDateTimeFormatService.sortByTimeAscending(param1, param2)\r\n : this.annaDateTimeFormatService.sortByTimeDescending(param1, param2);\r\n return val;\r\n });\r\n } else {\r\n data.sort((a, b) => {\r\n param1 = a[key];\r\n param2 = b[key];\r\n\r\n if (param1 !== param2) {\r\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\r\n }\r\n\r\n return 0;\r\n });\r\n }\r\n\r\n return data;\r\n }\r\n\r\n checkIfSortingIsApplied(tableData: any[], isLurAndCsrComponent: boolean){\r\n for(let [key,value] of this.columnSortState.entries()){\r\n if(value == \"ASC\"){\r\n tableData = cloneDeep(isLurAndCsrComponent ? this.sortEnterEditLurAndCsrPage(true, tableData, key) : this.sortDataForComponentOtherThanLurAndCsrPage(true, tableData,key) );\r\n }\r\n else if(value == \"DESC\"){\r\n tableData = cloneDeep(isLurAndCsrComponent ? this.sortEnterEditLurAndCsrPage(false, tableData, key) : this.sortDataForComponentOtherThanLurAndCsrPage(false, tableData,key));\r\n }\r\n }\r\n\r\n return tableData;\r\n }\r\n\r\n applySorting(key: string, tempSortOrder: SortType, tableData: any[], isLurAndCsrComponent: boolean){\r\n if(tempSortOrder == \"ASC\"){\r\n tableData = cloneDeep(isLurAndCsrComponent ? this.sortEnterEditLurAndCsrPage(true, tableData, key) : this.sortDataForComponentOtherThanLurAndCsrPage(true, tableData,key));\r\n }\r\n else if(tempSortOrder == \"DESC\"){\r\n tableData = cloneDeep(isLurAndCsrComponent ? this.sortEnterEditLurAndCsrPage(false, tableData, key) : this.sortDataForComponentOtherThanLurAndCsrPage(false, tableData,key));\r\n }\r\n else if(tempSortOrder == \"DEFAULT\"){\r\n tableData = cloneDeep(this.noSortingAppliedData);\r\n }\r\n\r\n return tableData;\r\n }\r\n\r\n\r\n}\r\n","export type SortType = \"DEFAULT\" | \"ASC\" | \"DESC\";\r\n\r\nexport interface SortOption{\r\n sortType: SortType,\r\n isOptionActive: boolean,\r\n text: string\r\n}\r\n\r\nexport enum SortTypeEnum {\r\n DEFAULT = \"DEFAULT\",\r\n ASC = \"ASC\",\r\n DESC = \"DESC\"\r\n}","// Angular import statements\r\nimport { Options } from '@angular-slider/ngx-slider';\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Third party import statements\r\nimport { min, max, map, sortBy, uniq, cloneDeep, isEqual } from \"lodash-es\";\r\nimport dayjs from \"dayjs\";\r\nimport CustomParseFormat from \"dayjs/plugin/customParseFormat\";\r\nimport minMax from \"dayjs/plugin/minMax\";\r\nimport isBetween from \"dayjs/plugin/isBetween\";\r\nimport { SortType, SortTypeEnum } from '../models/anna-sort.model';\r\n\r\n// User defined import statements \r\nimport { AnnaDateTimeFormatService, NgbDateType } from './anna-date-time-format.service';\r\nimport { AnnaSortService } from './anna-sort.service';\r\nimport { TooltipModel } from '../models/anna-tooltip.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AnnaFilterService {\r\n\r\n tooltipMap = new Map();\r\n tooltipSelectedMap = new Map();\r\n initialValueMap: Map<string, any>;\r\n translateFunc: string;\r\n selectedRadio: string;\r\n subRadioButton: string;\r\n\r\n calendarSet: Set<string>;\r\n sliderSet: Set<string>;\r\n timeSet: Set<string>;\r\n\r\n includeMultiTime: boolean;\r\n includeZeroTime: boolean;\r\n includeTimeRange: boolean;\r\n\r\n appliedFiltersArray: string[] = [];\r\n flightDateRange: { minSelectedDate: any, maxSelectedDate: any };\r\n sliderData: { min: any, max: any };\r\n ngxSliderObj: Options;\r\n sliderCurrencySet = new Set([\r\n 'booked',\r\n 'cpp',\r\n 'cpm',\r\n 'rcvPreempt',\r\n 'osPreempt',\r\n 'postedAdu',\r\n 'scheduledAdu',\r\n 'audienceDeficit',\r\n 'Rate',\r\n 'userADUs',\r\n 'buyerChanges',\r\n 'userChanges',\r\n 'userMG',\r\n \"udValue\",\r\n \"odValue\"\r\n ]);\r\n\r\n public static bufferSize = 20;\r\n isFilterSortActive: any = {};\r\n resetFilterSortActiveStatus: boolean = true;\r\n\r\n constructor(private dateTimeFormatService: AnnaDateTimeFormatService, private annaSortService: AnnaSortService) {\r\n dayjs.extend(minMax);\r\n dayjs.extend(isBetween);\r\n dayjs.extend(CustomParseFormat);\r\n const sliderArr = [\r\n \"rcvPreempt\",\r\n \"osPreempt\",\r\n \"rcvUnderDly\",\r\n \"postedAudPercent\",\r\n \"booked\",\r\n \"spots\",\r\n \"grp\",\r\n \"cpp\",\r\n \"imps\",\r\n \"cpm\",\r\n \"osUnderDly\",\r\n \"totalWeeks\",\r\n \"WeekNumber\",\r\n \"Rate\",\r\n \"OrderedRatingsOrImpressions\",\r\n \"PostedRatingsOrImpressions\", ,\r\n \"postedAudPercent\",\r\n \"postedAdu\",\r\n \"scheduledAdu\",\r\n \"audienceDeficit\",\r\n \"offeredMGs\",\r\n \"outstandingPE\",\r\n \"offeredADUs\",\r\n \"udDeficitValue\",\r\n \"bookedValue\",\r\n \"bookedSpots\",\r\n \"userChanges\",\r\n \"UDGrp\",\r\n \"UDImps\",\r\n \"ODGrp\",\r\n \"ODImps\",\r\n \"udImpsPercent\",\r\n \"udGrpPercent\",\r\n \"odImpsPercent\",\r\n \"odGrpPercent\",\r\n \"userADUs\",\r\n \"buyerChanges\",\r\n \"userChanges\",\r\n \"userMG\",\r\n \"WeeklyAUR\",\r\n \"WeeklyAURatingOrImpressions\",\r\n \"MGsValue\",\r\n \"ADUsValue\",\r\n \"UserCreditedValue\",\r\n \"UserUnresolvedValue\",\r\n \"BuyerAddedValue\",\r\n \"BuyerDeletedValue\",\r\n \"BuyerChangesValue\",\r\n \"UserChangesValue\",\r\n \"BookedGRPOrIMPS\",\r\n \"BookedCPPOrCPM\",\r\n \"BookedValue\",\r\n \"BookedSpots\",\r\n \"BookedRate\",\r\n \"BookedRTG\",\r\n \"BookedIMPS\",\r\n \"AURTG\",\r\n \"AURTG\",\r\n \"PostedRating\",\r\n \"PostedImpressions\",\r\n \"NormalizedOrderedRating\",\r\n \"NormalizedOrderedImpressions\",\r\n \"NormalizedPostedRating\",\r\n \"NormalizedPostedImpressions\",\r\n \"BookedGRP\",\r\n \"BookedIMPSRevTab\",\r\n \"BookedCPP\",\r\n \"BookedCPM\",\r\n \"AUIMPS\",\r\n \"bookedAmountValue\",\r\n \"equivalizedBookedAmountValue\",\r\n \"IMPS\",\r\n \"udValue\",\r\n \"odValue\",\r\n \"ViolatedBookedValue\",\r\n \"ViolatedBookedEURValue\",\r\n \"ViolatingBookedEURValue\",\r\n \"ViolatingBookedValue\",\r\n \"Rebate\",\r\n \"OtherAvailableSpotsTableWeeklyAUR\",\r\n \"parentRowAnnaEstimatesRtg\",\r\n \"parentRowPostedRtg\",\r\n \"parentRowRollingAverageRtg\",\r\n \"parentRowStationEstimatesRtg\",\r\n \"parentRowAnnaEstimatesImps\",\r\n \"parentRowPostedImps\",\r\n \"parentRowRollingAverageImps\",\r\n \"parentRowStationEstimatesImps\",\r\n \"parentRowAnnaEstimatesShare\",\r\n \"parentRowPostedShare\",\r\n \"parentRowRollingAverageShare\",\r\n \"parentRowAnnaEstimatesPutPer\",\r\n \"parentRowPostedPutPer\",\r\n \"parentRowRollingAveragePutPer\",\r\n \"parentRowAnnaEstimatesPut\",\r\n \"parentRowPostedPut\",\r\n \"parentRowRollingAveragePut\",\r\n \"ProjectedImpressions\",\r\n \"ProjectedRtg\"\r\n ];\r\n const calendarArr = [\"period\", \"AirDate\", \"flightStartDate\", \"flightEndDate\", \"date\",\r\n \"startDate\", \"endDate\", \"revisionStartDate\", \"GeneratedOn\", \"Week\", \"timeoutDate\", \"ViolatingSpotDate\", \"ViolatedSpotDate\"];\r\n const timeArr = [\"StartTimeForFilter\", \"EndTimeForFilter\", \"time\", \"startTimeForFilter\", \"endTimeForFilter\",\r\n \"start_time_for_filter\", \"end_time_for_filter\", \"startEndTimeMulti\", \"startEndTime\", \"timeoutTime\", \"OtherAvailableSpotsTableStartTime\",\r\n \"OtherAvailableSpotsTableEndTime\"];\r\n this.sliderSet = new Set(sliderArr);\r\n this.calendarSet = new Set(calendarArr);\r\n this.timeSet = new Set(timeArr);\r\n }\r\n\r\n returnMaxAndMinValue(data: any[], key: string, isMin: boolean) {\r\n data = data.filter((obj) => ![\"\", \"-\", null].includes(obj[key]));\r\n const values = data.map((x) => x[key]);\r\n let valueToReturn = isMin ? min(values) : max(values);\r\n return valueToReturn;\r\n }\r\n\r\n returnMinAndMaxDate(data: any[], key: string) {\r\n data = data.filter((obj) => ![\"\", \"-\", null].includes(obj[key]));\r\n let DateArr = data.map((obj) => dayjs(obj[key]));\r\n let minDate = dayjs.min(DateArr);\r\n let maxDate = dayjs.max(DateArr);\r\n\r\n\r\n return [minDate, maxDate];\r\n }\r\n\r\n isTooltipActive(header: string[], sortMap: Map<string, SortType>): boolean {\r\n let set: Set<string> = new Set(this.appliedFiltersArray);\r\n let isSortMapForHeader0Active = sortMap.has(header[0]) && (sortMap.get(header[0]) != SortTypeEnum.DEFAULT);\r\n let isSortMapForHeader1Active = sortMap.has(header[1]) && (sortMap.get(header[1]) != SortTypeEnum.DEFAULT);\r\n\r\n if (header.length == 1) {\r\n return ((sortMap.size > 0 && isSortMapForHeader0Active) || set.has(header[0]));\r\n }\r\n\r\n return ((sortMap.size > 0 && sortMap.has(header[0]) && isSortMapForHeader0Active) || (sortMap.size > 0 && sortMap.has(header[1]) && isSortMapForHeader1Active) || set.has(header[0]) || set.has(header[1]));\r\n\r\n }\r\n\r\n clearColumnFilter() {\r\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n this.tooltipSelectedMap.delete(this.selectedRadio);\r\n let appliedFilterSet: Set<string> = new Set(this.appliedFiltersArray);\r\n appliedFilterSet.delete(this.selectedRadio);\r\n this.appliedFiltersArray = [...appliedFilterSet];\r\n }\r\n\r\n if (this.annaSortService.columnSortState.has(this.selectedRadio)) {\r\n this.annaSortService.columnSortState.delete(this.selectedRadio);\r\n }\r\n\r\n }\r\n\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\r\n if (Math.abs(data) >= 1000) {\r\n let isNegVal = data < 0;\r\n const val = (Math.abs(data) / 1000).toFixed(1) + \"k%\";\r\n return isNegVal ? \"-\" + val : val;\r\n\r\n } else {\r\n let isNegVal = data < 0;\r\n let isWholeNum = parseInt(data.toString()) == data;\r\n let val = isWholeNum ? Math.abs(data).toString() : Math.abs(data).toFixed(1);\r\n return isNegVal ? \"-\" + val + \"%\" : val + \"%\";\r\n }\r\n\r\n };\r\n\r\n currencyTranslateFunction = (data: number): string => {\r\n if (Math.abs(data) >= 1000) {\r\n let isNegVal = data < 0;\r\n const val = \"$\" + (Math.abs(data) / 1000).toFixed(1) + \"k\";\r\n return isNegVal ? \"-\" + val : val;\r\n\r\n } else {\r\n let isNegVal = data < 0;\r\n let isWholeNum = parseInt(data.toString()) == data;\r\n let val = isWholeNum ? Math.abs(data).toString() : Math.abs(data).toFixed(1);\r\n return isNegVal ? \"-$\" + val : \"$\" + val;\r\n }\r\n };\r\n\r\n normalTranslateFunction = (data: number): string => {\r\n if (data >= 1000) {\r\n const val = (data / 1000).toFixed(1) + \"k\";\r\n return val;\r\n } else if (data != Math.floor(data)) {\r\n return data.toFixed(1).toString();\r\n }\r\n return data.toString();\r\n };\r\n\r\n findUniqueDatesWithData(data: any[]) {\r\n let uniqueDates = uniq(data.map((u) => u[\"date\"]));\r\n let uniqueDatesInNgbDateFormat: NgbDateType[] = [];\r\n uniqueDates.forEach((date: any) => {\r\n uniqueDatesInNgbDateFormat.push(\r\n this.dateTimeFormatService.convertToNgbDateStandardFormat(dayjs(date, \"MM/DD/YY\").format(\"MM/DD/YYYY\"))\r\n );\r\n });\r\n return uniqueDatesInNgbDateFormat;\r\n }\r\n\r\n reOrderAppliedFiltersArray(isHierarchialUserFiltered: boolean, date?: any) {\r\n let isFiltered = true;\r\n isFiltered = this.checkIfDataIsFiltered(isFiltered, isHierarchialUserFiltered, date);\r\n this.removeOrChangeLatestFilterIndex(isFiltered);\r\n }\r\n\r\n checkIfDataIsFiltered(isFiltered: boolean, isHierarchialUserFiltered: boolean, date?: any) {\r\n if (this.selectedRadio == \"user\" && !this.tooltipMap.has(\"user\")) {\r\n isFiltered = cloneDeep(isHierarchialUserFiltered);\r\n } else if (this.selectedRadio == \"StartTimeForFilter\" || this.selectedRadio == \"EndTimeForFilter\" ||\r\n this.selectedRadio == \"startTimeForFilter\" || this.selectedRadio == \"endTimeForFilter\" ||\r\n this.selectedRadio == \"time\" || this.selectedRadio == \"timeoutTime\" || this.selectedRadio == \"OtherAvailableSpotsTableStartTime\"\r\n || this.selectedRadio == \"OtherAvailableSpotsTableEndTime\"\r\n || this.selectedRadio == \"start_time_for_filter\" || this.selectedRadio == \"end_time_for_filter\" || this.selectedRadio == \"startEndTimeMulti\") {\r\n isFiltered = !isEqual(\r\n this.initialValueMap.get(this.selectedRadio),\r\n this.tooltipSelectedMap.get(this.selectedRadio)\r\n ) || !this.includeZeroTime || !this.includeMultiTime;\r\n }\r\n else if (this.selectedRadio == \"startEndTime\" || this.selectedRadio == \"TimeBand\") {\r\n isFiltered = !isEqual(this.initialValueMap.get(this.selectedRadio), this.tooltipSelectedMap.get(this.selectedRadio)) || !this.includeZeroTime || !this.includeMultiTime;\r\n }\r\n else if (this.sliderSet.has(this.selectedRadio)) {\r\n isFiltered = !isEqual(this.initialValueMap.get(this.selectedRadio), this.tooltipSelectedMap.get(this.selectedRadio)) && !isEqual(this.tooltipSelectedMap.get(this.selectedRadio), this.sliderData);\r\n if (this.selectedRadio == \"postedAdu\" && this.subRadioButton == \"notRequired\") {\r\n isFiltered = true;\r\n }\r\n if (!isFiltered && this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n this.tooltipSelectedMap.delete(this.selectedRadio);\r\n }\r\n } else if (\r\n this.selectedRadio == \"startDate\" ||\r\n this.selectedRadio == \"endDate\" ||\r\n this.selectedRadio == \"period\" ||\r\n this.selectedRadio == \"AirDate\" ||\r\n this.selectedRadio == \"timeoutDate\" ||\r\n this.selectedRadio === \"flightStartDate\" ||\r\n this.selectedRadio === \"flightEndDate\" ||\r\n this.selectedRadio == \"date\" ||\r\n this.selectedRadio == \"revisionStartDate\" ||\r\n this.selectedRadio == \"GeneratedOn\" ||\r\n this.selectedRadio == \"Week\"\r\n ) {\r\n isFiltered =\r\n !isEqual(this.initialValueMap.get(this.selectedRadio), this.tooltipSelectedMap.get(this.selectedRadio)) &&\r\n !isEqual(this.tooltipSelectedMap.get(this.selectedRadio), this.flightDateRange);\r\n if (!isFiltered && this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n this.tooltipSelectedMap.delete(this.selectedRadio);\r\n }\r\n } else {\r\n let totalOptionsCount = this.tooltipMap.get(this.selectedRadio).filter((x: any) => !x.isHidden).length;\r\n let selectedOptionsCount = this.tooltipMap.get(this.selectedRadio).filter((x: any) => !x.isHidden && x.isSelected).length;\r\n isFiltered = selectedOptionsCount > 0 && selectedOptionsCount != totalOptionsCount ? true : false;\r\n }\r\n return isFiltered;\r\n }\r\n\r\n removeOrChangeLatestFilterIndex(isFiltered: boolean) {\r\n let set = new Set(this.appliedFiltersArray);\r\n\r\n if (isFiltered && !set.has(this.selectedRadio)) {\r\n set.add(this.selectedRadio);\r\n } else if (isFiltered && set.has(this.selectedRadio)) {\r\n set.delete(this.selectedRadio);\r\n set.add(this.selectedRadio);\r\n } else {\r\n set.delete(this.selectedRadio);\r\n }\r\n this.appliedFiltersArray = [...set];\r\n }\r\n\r\n checkIfSortingIsAppliedThenSortTheData(originalData: any[]) {\r\n if (!this.annaSortService?.columnSortState) return originalData;\r\n for (let [key, value] of this.annaSortService.columnSortState.entries()) {\r\n if (value == \"ASC\") {\r\n originalData = cloneDeep(this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(true, originalData, key));\r\n }\r\n else if (value == \"DESC\") {\r\n originalData = cloneDeep(this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(false, originalData, key));\r\n }\r\n }\r\n return originalData;\r\n }\r\n\r\n filterData(originalData: any[], keyToSkip: string, isLurCsrPage: boolean = false) {\r\n let filteredData = [...originalData];\r\n if (!isLurCsrPage) {\r\n filteredData = this.checkIfSortingIsAppliedThenSortTheData(originalData);\r\n }\r\n this.tooltipSelectedMap.forEach((value, key) => {\r\n if (key != keyToSkip && originalData.length > 0 && Object.keys(originalData[0]).includes(key)) {\r\n if (this.sliderSet.has(key)) {\r\n filteredData = filteredData.filter((obj) => obj[key] >= value.min && obj[key] <= value.max);\r\n }\r\n else if (key === \"startDate\" || key === \"endDate\" || key === \"AirDate\" || key === \"timeoutDate\" || key === \"flightStartDate\" || key === \"flightEndDate\" || key == \"date\" || key == \"Date\" || key == \"revisionStartDate\" || key == \"GeneratedOn\" || key === \"Week\" || key === \"ViolatedSpotDate\" || key === \"ViolatingSpotDate\") {\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 }\r\n else if (key === \"StartTimeForFilter\" || key === \"EndTimeForFilter\" || key == \"timeoutTime\" ||\r\n key === \"startTimeForFilter\" || key === \"endTimeForFilter\" || key === \"OtherAvailableSpotsTableStartTime\"\r\n || key == \"OtherAvailableSpotsTableEndTime\"\r\n || key === \"start_time_for_filter\" || key === \"end_time_for_filter\" || key == \"time\") {\r\n filteredData = filteredData.filter((obj) => this.returnDataForFromAndToTimeRange(obj, value, key));\r\n }\r\n else if (key === \"startEndTimeMulti\" || key == \"startEndTime\" || key === \"TimeBand\") {\r\n filteredData = filteredData.filter((obj) => this.returnDataForStartAndEndTimeRange(obj, value, key));\r\n }\r\n else if (value.length > 0) {\r\n filteredData = filteredData.filter((u) => value.includes(u[key]));\r\n }\r\n }\r\n });\r\n return filteredData;\r\n }\r\n\r\n returnOrdersInTheRange(order: any, range: any, key: any) {\r\n let isDateBetweenTheSelectedRange = dayjs(order[key]).isBetween(range.minSelectedDate, range.maxSelectedDate);\r\n let isDateSameAsTheMinSelectedDate = dayjs(order[key]).isSame(range.minSelectedDate);\r\n let isDateSameAsTheMaxSelectedDate = dayjs(order[key]).isSame(range.maxSelectedDate);\r\n return isDateBetweenTheSelectedRange || isDateSameAsTheMinSelectedDate || isDateSameAsTheMaxSelectedDate;\r\n }\r\n\r\n returnDataForTimeRange(obj: any, selectedData: any) {\r\n let format = \"HH:mm:ss\";\r\n let selectedStartDate = dayjs(selectedData.startTime, format);\r\n let selectedEndDate = dayjs(selectedData.endTime, format);\r\n let startTime = dayjs(obj.startTime, format);\r\n let endTime = dayjs(obj.endTime, format);\r\n\r\n let isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedStartDate);\r\n let isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedStartDate, selectedEndDate);\r\n let isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedEndDate);\r\n let isEndTimeBetweenSelectedStartAndEndTime = endTime.isBetween(selectedStartDate, selectedEndDate);\r\n\r\n return (\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeSameAsSelectedEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeSameAsSelectedEndTime)\r\n );\r\n }\r\n\r\n returnDataForFromAndToTimeRange(obj: any, selectedData: any, key: any) {\r\n let format = \"MM/DD/YYYY HH:mm:ss\";\r\n let selectedFromTime = dayjs('01/01/2001 ' + selectedData.fromTime, format);\r\n let selectedToTime = dayjs('01/01/2001 ' + selectedData.toTime, format);\r\n let objTime = obj[key];\r\n\r\n if ([\"\", \"-\", null].includes(objTime)) {\r\n return false;\r\n }\r\n if (selectedData.includeMulti && obj[key] == \"<multi>\") {\r\n return true;\r\n }\r\n if (!selectedData.includeMulti && obj[key] == \"<multi>\") {\r\n return false;\r\n }\r\n if (selectedData.includeZero && obj[key] == \"0\") {\r\n return true;\r\n }\r\n if (!selectedData.includeZero && obj[key] == \"0\") {\r\n return false;\r\n }\r\n if (!selectedData.includeTimeRange) {\r\n return false;\r\n }\r\n\r\n\r\n let dayjsTime = dayjs('01/01/2001 ' + objTime, format);\r\n\r\n let isObjTimeSameAsSelectedFromTime = dayjsTime.isSame(selectedFromTime);\r\n let isObjTimeSameAsSelectedToTime = dayjsTime.isSame(selectedToTime);\r\n let isObjTimeBetweenSelectedFromTimeAndToTime = dayjsTime.isBetween(selectedFromTime, selectedToTime);\r\n\r\n return (\r\n isObjTimeSameAsSelectedFromTime ||\r\n isObjTimeSameAsSelectedToTime ||\r\n isObjTimeBetweenSelectedFromTimeAndToTime\r\n );\r\n }\r\n\r\n returnDataForStartAndEndTimeRange(obj: any, selectedData: any, key: string) {\r\n let format = \"MM/DD/YYYY HH:mm:ss\";\r\n let selectedFromTime = dayjs('01/01/2001 ' + selectedData.fromTime, format);\r\n let selectedToTime = dayjs('01/01/2001 ' + selectedData.toTime, format);\r\n\r\n if (selectedData.includeMulti && obj[key][0] == \"<multi>\") {\r\n return true;\r\n }\r\n\r\n if (!selectedData.includeMulti && obj[key][0] == \"<multi>\") {\r\n return false;\r\n }\r\n\r\n if (selectedData.includeZero && obj[key][0] == \"0\") {\r\n return true;\r\n }\r\n\r\n if (!selectedData.includeZero && obj[key][0] == \"0\") {\r\n return false;\r\n }\r\n\r\n if (!selectedData.includeTimeRange) {\r\n return false;\r\n }\r\n\r\n let startTime = dayjs('01/01/2001 ' + obj[key][1], format);\r\n let endTime = dayjs('01/01/2001 ' + obj[key][2], format);\r\n\r\n let isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedFromTime);\r\n let isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedFromTime, selectedToTime);\r\n let isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedToTime);\r\n let isEndTimeBetweenSelectedStartAndEndTime = endTime.isBetween(selectedFromTime, selectedToTime);\r\n\r\n return (\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeSameAsSelectedEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeSameAsSelectedEndTime)\r\n );\r\n\r\n }\r\n\r\n getDataInTheDateRange(obj: any, value: any, key: any) {\r\n let parsingFormat: string;\r\n if (key === \"period\") {\r\n parsingFormat = \"YYYY-MM-DD\";\r\n\r\n let dayjsStartDate = dayjs(obj.startDate);\r\n let dayjsEndDate = dayjs(obj.endDate);\r\n\r\n let startDateIsBetweenSelDate = dayjsStartDate.isBetween(\r\n value.fromDate,\r\n value.toDate\r\n );\r\n let endDateIsBetweenSelDate = dayjsEndDate.isBetween(\r\n value.fromDate,\r\n value.toDate\r\n );\r\n\r\n\r\n let startDateIsSameAsSelStartDate = value.fromDate.isSame(dayjsStartDate);\r\n let endDateIsSameAsSelEndDate = value.toDate.isSame(dayjsEndDate);\r\n\r\n return (\r\n (startDateIsBetweenSelDate || startDateIsSameAsSelStartDate) &&\r\n (endDateIsBetweenSelDate || endDateIsSameAsSelEndDate)\r\n );\r\n } else if (key === \"AirDate\" || key === \"flightStartDate\" || key === \"flightEndDate\" || key === \"Week\" || key === \"timeoutDate\") {\r\n parsingFormat = \"MM/DD/YYYY\";\r\n let dateIsBetweenSelDate = dayjs(obj[key], parsingFormat).isBetween(value.minSelectedDate, value.maxSelectedDate);\r\n\r\n let dateIsSameAsSelStartDate = dayjs(obj[key], parsingFormat).isSame(value.minSelectedDate);\r\n let dateIsSameAsSelEndDate = dayjs(obj[key], parsingFormat).isSame(value.maxSelectedDate);\r\n\r\n return dateIsBetweenSelDate || dateIsSameAsSelStartDate || dateIsSameAsSelEndDate;\r\n }\r\n }\r\n\r\n\r\n public initializeTimeFilterData(clonedData: any[], key = \"startEndTime\") {\r\n let startTimeArr = map(clonedData, \"startTime\");\r\n let endTimeArr = map(clonedData, \"endTime\");\r\n\r\n startTimeArr.sort((a: any, b: any) => {\r\n return this.dateTimeFormatService.sortByTimeAscending(a, b);\r\n });\r\n\r\n endTimeArr.sort((a: any, b: any) => {\r\n return this.dateTimeFormatService.sortByTimeDescending(a, b);\r\n });\r\n\r\n let initialStartEndTime = {\r\n startTime: startTimeArr[0],\r\n endTime: endTimeArr[0],\r\n };\r\n this.initialValueMap.set(key, initialStartEndTime);\r\n }\r\n\r\n returnColumnFilterStatus(data: any[], headerName: string | number) {\r\n\r\n if (headerName == \"startEndTime\") {\r\n let time = data.map(u => u[headerName][0]);\r\n let uniqTime = uniq(time);\r\n return uniqTime.length == 0;\r\n }\r\n\r\n return uniq(data.map((u) => u[headerName])).length > 1 ? false : true;\r\n }\r\n\r\n getFilterOptionsData(data: any[], clonedData: any[], key?: string) {\r\n let appliedFilterSet = new Set(this.appliedFiltersArray);\r\n key = key ? key : this.selectedRadio;\r\n if (appliedFilterSet.has(key)) {\r\n return this.filterData(clonedData, key);\r\n }\r\n else {\r\n return data;\r\n }\r\n }\r\n\r\n reOrderAppliedFiltersState(clonedData: any[], value: any) {\r\n let isFiltered = true;\r\n isFiltered = this.checkIfFilterIsApplied(clonedData, value);\r\n this.removeOrChangeLatestFilterIndex(isFiltered);\r\n return isFiltered;\r\n }\r\n\r\n checkIfFilterIsApplied(clonedData: any[], value: any) {\r\n let initialValueOfColumn = sortBy(clonedData.map(item => item[this.selectedRadio]));\r\n let currentValueOfColumn = sortBy(this.applyFilter(clonedData, value).map(item => item[this.selectedRadio]));\r\n return !isEqual(initialValueOfColumn, currentValueOfColumn);\r\n }\r\n\r\n applyFilter(data: any[], value: any) {\r\n let filteredData = data;\r\n let key = this.selectedRadio;\r\n if (this.sliderSet.has(key)) {\r\n filteredData = filteredData.filter((obj) => obj[key] >= value.min && obj[key] <= value.max);\r\n }\r\n else if (key === \"startDate\" || key === \"endDate\" || key === \"AirDate\" || key === \"timeoutDate\"\r\n || key === \"flightStartDate\" || key === \"flightEndDate\" || key == \"date\" || key == \"Date\" || key == \"revisionStartDate\" || key == \"GeneratedOn\" || key === \"Week\" || key === \"ViolatedSpotDate\" || key === \"ViolatingSpotDate\") {\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 }\r\n else if (key === \"StartTimeForFilter\" || key === \"EndTimeForFilter\" || key == \"timeoutTime\" || key === \"startTimeForFilter\" || key === \"endTimeForFilter\"\r\n || key === \"start_time_for_filter\" || key === \"end_time_for_filter\" || key == \"time\" || key == \"OtherAvailableSpotsTableStartTime\"\r\n || key == \"OtherAvailableSpotsTableEndTime\") {\r\n filteredData = filteredData.filter((obj) => this.returnDataForFromAndToTimeRange(obj, value, key));\r\n }\r\n else if (key === \"startEndTimeMulti\" || key == \"startEndTime\" || key === \"TimeBand\") {\r\n filteredData = filteredData.filter((obj) => this.returnDataForStartAndEndTimeRange(obj, value, key));\r\n }\r\n else if (value.length > 0) {\r\n filteredData = filteredData.filter((u) => value.includes(u[key]));\r\n }\r\n return filteredData;\r\n }\r\n\r\n isObjectInTheRange(obj: any, value: any, key: string) {\r\n let objVal = obj[key];\r\n let dayjsDate = dayjs(objVal);\r\n if (typeof value.fromDate === \"string\" && typeof value.toDate === \"string\") {\r\n value.fromDate = dayjs(this.dateTimeFormatService.convertNgbDateToMoment(this.dateTimeFormatService.convertToNgbDate(value.fromDate, \"DD/MM/YYYY\")));\r\n value.toDate = dayjs(this.dateTimeFormatService.convertNgbDateToMoment(this.dateTimeFormatService.convertToNgbDate(value.toDate, \"DD/MM/YYYY\")));\r\n }\r\n let isDateSameAsStartOfTheRange = value.fromDate.isSame(objVal);\r\n let isDateSameAsEndOfTheRange = value.toDate.isSame(objVal);\r\n let isDateBetweenTheStartAndEndOfRange = dayjsDate.isBetween(value.fromDate, value.toDate);\r\n return isDateSameAsStartOfTheRange || isDateSameAsEndOfTheRange || isDateBetweenTheStartAndEndOfRange;\r\n }\r\n\r\n updateStateOfTheCurrentFilterTab(sortMap: Map<string, SortType>) {\r\n let activeKey = this.selectedRadio;\r\n let keyArr: string[] = [];\r\n Object.keys(this.isFilterSortActive).forEach(key => {\r\n if (key.includes(activeKey)) {\r\n keyArr = key.split(\",\");\r\n this.isFilterSortActive[key] = this.isTooltipActive(keyArr, sortMap);\r\n }\r\n });\r\n\r\n }\r\n\r\n updateStateOfAllTheKeys(sortMap: Map<string, SortType>) {\r\n Object.keys(this.isFilterSortActive).forEach(key => {\r\n let keyArr = key.split(\",\");\r\n this.isFilterSortActive[key] = this.isTooltipActive(keyArr, sortMap);\r\n })\r\n }\r\n\r\n incrementHour(value: any) {\r\n if (value == \"\") {\r\n value = 1;\r\n } else if (parseInt(value) < 12) {\r\n value = parseInt(value) + 1;\r\n } else {\r\n value = 1;\r\n }\r\n return value;\r\n }\r\n\r\n decrementHour(value: any) {\r\n if (value == \"\") {\r\n value = 12;\r\n } else if (parseInt(value) > 1) {\r\n value = parseInt(value) - 1;\r\n } else {\r\n value = 12;\r\n }\r\n return value;\r\n }\r\n\r\n incrementMinute(value: any) {\r\n // increment to nearest proper interval(15,30,45)\r\n let min = parseInt(value)\r\n if (min <= 14) {\r\n value = \"15\";\r\n } else if (min >= 15 && min <= 29) {\r\n value = \"30\";\r\n } else if (min >= 30 && min <= 44) {\r\n value = \"45\";\r\n } else if (min >= 45) {\r\n value = \"00\";\r\n }\r\n return value;\r\n }\r\n\r\n decrementMinute(value: any) {\r\n let min = parseInt(value);\r\n if (min > 0 && min <= 15) {\r\n value = \"00\";\r\n } else if (min >= 16 && min <= 30) {\r\n value = \"15\";\r\n } else if (min >= 31 && min <= 45) {\r\n value = \"30\";\r\n } else if (min > 45 || min == 0) {\r\n value = \"45\";\r\n }\r\n return value;\r\n }\r\n\r\n //========================================Checkbox method=============================================================//\r\n\r\n disableActiveFilterClearButton() {\r\n let selectedFilterSet = new Set(this.appliedFiltersArray);\r\n\r\n let currentColumnSortFilter = this.getColumnSortStateForSelectedRadio();\r\n let isSortPresent = (this.annaSortService.columnSortState && this.annaSortService.columnSortState.size > 0 && 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 = this.annaSortService.columnSortState && this.annaSortService.columnSortState.has(this.selectedRadio) &&\r\n this.annaSortService.columnSortState.get(this.selectedRadio);\r\n currentColumnSortFilter = currentColumnSortFilter ? currentColumnSortFilter : SortTypeEnum.DEFAULT;\r\n return currentColumnSortFilter;\r\n }\r\n\r\n\r\n createListForCheckboxFilter(header: string, optionData: any[]) {\r\n let tooltipOptions = this.getTooltipModelFromOptionData(optionData, header);\r\n\r\n this.selectUnselectListCheckbox(tooltipOptions, header);\r\n this.formatNullOptionToSpecifiedString(tooltipOptions, \"-\");\r\n\r\n return tooltipOptions;\r\n }\r\n\r\n getTooltipModelFromOptionData(optionData: any[], header: string) {\r\n let uniqOptionData = uniq(optionData.map(item => item[header]));\r\n return uniqOptionData.map((item, index) => new TooltipModel(item, index + 1));\r\n }\r\n\r\n selectUnselectListCheckbox(tooltipOptions: TooltipModel[], header: string) {\r\n\r\n if (this.tooltipSelectedMap.has(header)) {\r\n let selectedValueSet = new Set(this.tooltipSelectedMap.get(header));\r\n tooltipOptions.forEach(item => item.isSelected = selectedValueSet.has(item.value) ? true : false);\r\n }\r\n else {\r\n tooltipOptions.forEach(item => item.isSelected = true);\r\n }\r\n\r\n }\r\n\r\n formatNullOptionToSpecifiedString(tooltipOptions: TooltipModel[], formattedString: string) {\r\n let index = tooltipOptions.findIndex(item => item.value == null);\r\n\r\n if (index != -1) {\r\n tooltipOptions[index].label = formattedString;\r\n }\r\n }\r\n\r\n getClonedTooltipAndTooltipOption(tooltipOptions: TooltipModel[], sortByString: string) {\r\n let [selectedItems, unselectedItems] = this.getSelectedAndUnselectedItems(tooltipOptions);\r\n let sortedSelectedItems = sortBy(selectedItems, sortByString);\r\n let sortedUnselectedItems = sortBy(unselectedItems, sortByString);\r\n\r\n let clonedTooltipOptions = [...sortedSelectedItems, ...sortedUnselectedItems];\r\n let updatedTooltipOptions = cloneDeep(clonedTooltipOptions);\r\n\r\n return [clonedTooltipOptions, updatedTooltipOptions, selectedItems, unselectedItems];\r\n }\r\n\r\n getHeightOfCheckboxTooltipFilter(dataLength: number, margin: number) {\r\n return dataLength > 6 ? 200 : ((26.03 * dataLength) + (margin * dataLength) + margin);\r\n }\r\n\r\n unCheckAllCheckbox(tooltipOptions: TooltipModel[], clonedTooltipOptions: TooltipModel[]) {\r\n\r\n tooltipOptions.forEach(item => {\r\n item.isSelected = false;\r\n let index = clonedTooltipOptions.findIndex(opt => opt.id == item.id);\r\n clonedTooltipOptions[index].isSelected = false;\r\n });\r\n\r\n }\r\n\r\n selectAllCheckbox(tooltipOptions: TooltipModel[], clonedTooltipOptions: TooltipModel[]) {\r\n\r\n tooltipOptions.forEach(item => {\r\n item.isSelected = true;\r\n let index = clonedTooltipOptions.findIndex(opt => opt.id == item.id);\r\n clonedTooltipOptions[index].isSelected = true;\r\n });\r\n\r\n }\r\n\r\n selectUnselectCheckbox(data: TooltipModel, clonedTooltipOptions: TooltipModel[]) {\r\n data.isSelected = !data.isSelected;\r\n let index = clonedTooltipOptions.findIndex(item => item.id == data.id);\r\n clonedTooltipOptions[index].isSelected = data.isSelected;\r\n }\r\n\r\n getSelectedAndUnselectedItems(tooltipOptions: TooltipModel[]) {\r\n let selectedItems = tooltipOptions.filter(item => item.isSelected);\r\n let unselectedItems = tooltipOptions.filter(item => !item.isSelected);\r\n\r\n return [selectedItems, unselectedItems];\r\n }\r\n\r\n getCheckboxPreviousSelectedValue(clonedTableData: any[]) {\r\n let previousSelectedValue = [];\r\n\r\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n previousSelectedValue = this.tooltipSelectedMap.get(this.selectedRadio);\r\n\r\n if (!this.initialValueMap.has(this.selectedRadio)) {\r\n let initialValue = sortBy(uniq(clonedTableData.map(item => item[this.selectedRadio])));\r\n this.initialValueMap.set(this.selectedRadio, initialValue);\r\n }\r\n\r\n }\r\n else if (this.initialValueMap.has(this.selectedRadio)) {\r\n previousSelectedValue = this.initialValueMap.get(this.selectedRadio);\r\n }\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\r\n currentSelectedValue = sortBy(tooltipOptions.filter(item => item.isSelected).map(item => item.value));\r\n\r\n if (!searchedString && currentSelectedValue.length == tooltipOptions.length && this.initialValueMap.has(this.selectedRadio)) {\r\n currentSelectedValue = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n\r\n }\r\n\r\n let blankIndex = currentSelectedValue.findIndex((item: string) => item == null);\r\n if (blankIndex != -1) {\r\n currentSelectedValue = sortBy(currentSelectedValue);\r\n }\r\n\r\n return currentSelectedValue;\r\n }\r\n\r\n checkIfSortingChanged(tempSortOrder: SortType) {\r\n let currentColumnSortFilter = this.getColumnSortStateForSelectedRadio();\r\n\r\n let isSortChanged = tempSortOrder != null && tempSortOrder != currentColumnSortFilter;\r\n return isSortChanged;\r\n }\r\n\r\n getFilteredOptionAsBoldString(str: string, clonedTooltipOptions: TooltipModel[]) {\r\n let tooltipOptions = cloneDeep(clonedTooltipOptions.filter(item => item.label.toString().toLowerCase().includes(str.toLowerCase())))\r\n tooltipOptions.forEach(element => {\r\n element.label = this.boldString(element.label, str);\r\n });\r\n\r\n return tooltipOptions;\r\n }\r\n\r\n boldString(str: string, find: string) {\r\n let indexes = this.getIndicesOf(find, str, false);\r\n\r\n indexes.forEach((item, index) => {\r\n let startIndex = item + (index * 7); //Multiplying by 7 as there are 7char: <b></b>\r\n let endIndex = startIndex + find.length;\r\n let strToBeReplaced = str.substring(startIndex, endIndex);\r\n str = str.replace(strToBeReplaced, \"<b>\" + strToBeReplaced + \"</b>\");\r\n });\r\n return str;\r\n }\r\n\r\n getIndicesOf(searchStr: string, str: string, caseSensitive: boolean) {\r\n var searchStrLen = searchStr.length;\r\n if (searchStrLen == 0) {\r\n return [];\r\n }\r\n var startIndex = 0, index, indices = [];\r\n if (!caseSensitive) {\r\n str = str.toLowerCase();\r\n searchStr = searchStr.toLowerCase();\r\n }\r\n while ((index = str.indexOf(searchStr, startIndex)) > -1) {\r\n indices.push(index);\r\n startIndex = index + searchStrLen;\r\n }\r\n return indices;\r\n }\r\n\r\n disableAllBtnsWhenThereAreNoFilteredResults(): [number, boolean, boolean, boolean] {\r\n // [selectedCheckboxOptionsCount, disableCheckboxApply, disableClearAll, disableSelectAll];\r\n return [0, true, true, true];\r\n }\r\n\r\n //============================================================Calendar filter===========================================================//\r\n createRangeForTheDateFilter(optionData: any[]) {\r\n let minMaxDate;\r\n //When you want to use startDate and endDate combined as single column then use Period.\r\n if (this.selectedRadio == \"period\" || this.selectedRadio == \"buyerFlightDates\" || this.selectedRadio == \"trafficFlightDates\") {\r\n minMaxDate = this.createStartEndDateRange(optionData);\r\n }\r\n else {\r\n minMaxDate = this.returnMinAndMaxDate(optionData, this.selectedRadio);\r\n }\r\n\r\n return minMaxDate;\r\n }\r\n\r\n createStartEndDateRange(optionData: any[]) {\r\n let minStartDate = this.returnMinAndMaxDate(optionData, \"startDate\");\r\n let maxEndDate = this.returnMinAndMaxDate(optionData, \"endDate\");\r\n return [minStartDate[0], maxEndDate[1]];\r\n }\r\n\r\n getMinAndMaxDateRangeForCalendar(minMaxDate: any[], parsingFormat: string) {\r\n let calendarMinEnabledDate = this.dateTimeFormatService.convertToNgbDate(minMaxDate[0], parsingFormat);\r\n let calendarMaxEnabledDate = this.dateTimeFormatService.convertToNgbDate(minMaxDate[1], parsingFormat);\r\n return [calendarMinEnabledDate, calendarMaxEnabledDate];\r\n }\r\n\r\n getSelectedDateForCalendar(minMaxDate: any[], parsingFormat: string, minDate: NgbDateType, maxDate: NgbDateType) {\r\n let selectedMinDate;\r\n let selectedMaxDate;\r\n\r\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n let selectedDateObj = this.tooltipSelectedMap.get(this.selectedRadio);\r\n\r\n if (selectedDateObj.fromDate.isAfter(minMaxDate[0])) {\r\n selectedMinDate = this.dateTimeFormatService.convertToNgbDate(selectedDateObj.fromDate, parsingFormat);\r\n }\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 }\r\n else {\r\n selectedMaxDate = this.dateTimeFormatService.convertToNgbDate(selectedDateObj.toDate, parsingFormat);\r\n }\r\n\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\r\n }\r\n else if (this.initialValueMap.has(this.selectedRadio)) {\r\n previousSelectedDate = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n else {\r\n this.setInitialValueMapForDateFilter(optionData);\r\n previousSelectedDate = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n\r\n return previousSelectedDate;\r\n }\r\n\r\n setInitialValueMapForDateFilter(optionData: any[]) {\r\n let minMaxDate = this.createRangeForTheDateFilter(optionData);\r\n\r\n let selectedDate = { fromDate: minMaxDate[0], toDate: minMaxDate[1] };\r\n this.initialValueMap.set(this.selectedRadio, selectedDate);\r\n }\r\n\r\n getCurrentSelectedDatesForCalendar(currentSelectedDate: any, minDate: NgbDateType, maxDate: NgbDateType) {\r\n let fromDate = { year: currentSelectedDate.fromDate.year, month: currentSelectedDate.fromDate.month, day: currentSelectedDate.fromDate.day };\r\n let toDate = { year: currentSelectedDate.toDate.year, month: currentSelectedDate.toDate.month, day: currentSelectedDate.toDate.day };\r\n\r\n if (isEqual(minDate, fromDate) && isEqual(maxDate, toDate) && this.initialValueMap.has(this.selectedRadio)) {\r\n currentSelectedDate = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n else {\r\n currentSelectedDate.fromDate = dayjs(this.dateTimeFormatService.convertNgbDateToMoment(currentSelectedDate.fromDate));\r\n currentSelectedDate.toDate = dayjs(this.dateTimeFormatService.convertNgbDateToMoment(currentSelectedDate.toDate));\r\n }\r\n\r\n return currentSelectedDate;\r\n }\r\n\r\n //==================================================================SLIDER===========================================================//\r\n\r\n getSliderTranslateFuncVal(header: string, currencySet: Set<string>) {\r\n let translateFunc;\r\n\r\n if (currencySet.has(header)) {\r\n translateFunc = \"currency\";\r\n }\r\n else if (header == \"postedAudPercent\" || header == \"parentRowShares\" || header == \"parentRowPutPercent\") {\r\n translateFunc = \"percent\";\r\n }\r\n else {\r\n translateFunc = \"normal\";\r\n }\r\n\r\n return translateFunc;\r\n }\r\n\r\n getSliderOptions(optionsData: any[], translateFunc: string, header: string) {\r\n let minValue = this.returnMaxAndMinValue(optionsData, header, true);\r\n let maxValue = this.returnMaxAndMinValue(optionsData, header, false);\r\n\r\n let obj = this.setOptionValues(minValue, maxValue);\r\n\r\n if (translateFunc === \"normal\") {\r\n obj.translate = this.normalTranslateFunction;\r\n } else if (translateFunc === \"percent\") {\r\n obj.translate = this.percentTranslateFunction;\r\n } else if (translateFunc === \"currency\") {\r\n obj.translate = this.currencyTranslateFunction;\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n setSelectedRangeForSlider(header: string, options: Options) {\r\n let sliderMinValue;\r\n let sliderMaxValue;\r\n\r\n if (this.tooltipSelectedMap.has(header)) {\r\n let selectedObj = this.tooltipSelectedMap.get(header);\r\n sliderMinValue = selectedObj.min < options.floor ? options.floor : selectedObj.min;\r\n sliderMaxValue = selectedObj.max < options.ceil ? selectedObj.max : options.ceil;\r\n }\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 }\r\n else if (this.initialValueMap.has(this.selectedRadio)) {\r\n previousSliderData = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n else {\r\n this.setInitialValueMapForSliderFilter(clonedData);\r\n previousSliderData = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n\r\n return previousSliderData;\r\n }\r\n\r\n setInitialValueMapForSliderFilter(clonedData: any[]) {\r\n let minValue = this.returnMaxAndMinValue(clonedData, this.selectedRadio, true);\r\n let maxValue = this.returnMaxAndMinValue(clonedData, this.selectedRadio, false);\r\n let sliderData = { min: minValue, max: maxValue };\r\n this.initialValueMap.set(this.selectedRadio, sliderData);\r\n }\r\n\r\n getCurrentSelectedValueForSlider(minEnteredVal: number, maxEnteredVal: number, options: Options) {\r\n let currentSliderData: { min: any, max: any } = { min: null, max: null };\r\n currentSliderData.max = maxEnteredVal;\r\n currentSliderData.min = minEnteredVal;\r\n\r\n if (currentSliderData.min == options.floor && currentSliderData.max == options.ceil && this.initialValueMap.has(this.selectedRadio)) {\r\n currentSliderData = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n\r\n return currentSliderData;\r\n\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 }\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 }\r\n else {\r\n this.setInitialValueForStartOrEndTimeRange(clonedData, key);\r\n }\r\n }\r\n\r\n //use for filter where we have start and end time range in one filter\r\n //startEndTime: [\"6 - 7A\", \"06: 00 : 00\" , \"07:00:00\"] \r\n setInitialValueForStartAndEndTimeRange(clonedData: any[], key: string) {\r\n let includeMulti = clonedData.findIndex((obj) => obj[key][0] == \"<multi>\") != -1;\r\n let includeZero = clonedData.findIndex((obj) => obj[key][0] == \"0\") != -1;\r\n let includeTimeRange = clonedData.findIndex((obj) => obj[key][0] != \"0\" && obj[key][0] != \"<multi>\") != -1;\r\n\r\n let filteredStartTime = clonedData.filter((obj) => ![\"\", \"-\", null, \"0\", \"<multi>\"].includes(obj[\"startTime\"]));\r\n let filteredEndTime = clonedData.filter((obj) => ![\"\", \"-\", null, \"0\", \"<multi>\"].includes(obj[\"endTime\"]));\r\n\r\n let startTimeArr = map(filteredStartTime, \"startTime\");\r\n let endTimeArr = map(filteredEndTime, \"endTime\");\r\n\r\n\r\n startTimeArr.sort((a, b) => {\r\n return this.dateTimeFormatService.sortByTimeAscending(a, b);\r\n });\r\n\r\n endTimeArr.sort((a, b) => {\r\n return this.dateTimeFormatService.sortByTimeDescending(a, b);\r\n });\r\n\r\n let obj = {\r\n fromTime: startTimeArr[0],\r\n toTime: endTimeArr[0],\r\n includeMulti: includeMulti,\r\n includeZero: includeZero,\r\n includeTimeRange: includeTimeRange,\r\n };\r\n\r\n this.initialValueMap.set(key, obj);\r\n\r\n }\r\n\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\r\n let includeMulti = clonedData.findIndex((obj) => obj[key] == \"<multi>\") != -1;\r\n let includeZero = clonedData.findIndex((obj) => obj[key] == \"0\") != -1;\r\n let includeTimeRange = clonedData.findIndex((obj) => obj[key] != \"0\" && obj[key] != \"<multi>\") != -1;\r\n\r\n let data = clonedData.filter((obj) => ![\"\", \"-\", null, \"0\", \"<multi>\"].includes(obj[key]));\r\n\r\n let timeArr = map(data, key);\r\n timeArr.sort((a, b) => {\r\n return this.dateTimeFormatService.sortByTimeAscending(a, b);\r\n });\r\n\r\n let obj = {\r\n fromTime: timeArr[0],\r\n toTime: timeArr[timeArr.length - 1],\r\n includeMulti: includeMulti,\r\n includeZero: includeZero,\r\n includeTimeRange: includeTimeRange,\r\n };\r\n\r\n this.initialValueMap.set(key, obj);\r\n\r\n }\r\n\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 }\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 }\r\n else {\r\n timeArr = optionsData.map(item => item[key]);\r\n }\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\r\n if (timeArr.findIndex(val => val == \"<multi>\") != -1) {\r\n showMultiTimeCheckbox = true;\r\n multiTimeCheckboxChecked = selectedTimeObj.includeMulti;\r\n }\r\n\r\n\r\n if (showZeroTimeCheckbox || showMultiTimeCheckbox) {\r\n showEnterTimeCheckbox = true;\r\n }\r\n\r\n if (timeArr.findIndex(val => val != \"<multi>\" && val != \"0\") != -1) {\r\n enterTimeCheckboxChecked = selectedTimeObj?.includeTimeRange;\r\n }\r\n\r\n return {\r\n showMultiTimeCheckbox: showMultiTimeCheckbox,\r\n showZeroTimeCheckbox: showZeroTimeCheckbox,\r\n showEnterTimeCheckbox: showEnterTimeCheckbox,\r\n multiTimeCheckboxChecked: multiTimeCheckboxChecked,\r\n zeroTimeCheckboxChecked: zeroTimeCheckboxChecked,\r\n enterTimeCheckboxChecked: enterTimeCheckboxChecked\r\n }\r\n\r\n }\r\n\r\n\r\n checkIfStartTimeIsAfterEndTime(startTime: string[], endTime: string[]) {\r\n let timeFormat = \"HH:mm:ss\";\r\n\r\n let startTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n startTime[0] + \":\" + startTime[1] + \" \" + startTime[2],\r\n true\r\n );\r\n let startTime24HrFormat = startTime24HrFormatArr[0] + \":\" + startTime24HrFormatArr[1] + \":00\";\r\n let endTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n endTime[0] + \":\" + endTime[1] + \" \" + endTime[2],\r\n true\r\n );\r\n let endTime24HrFormat = endTime24HrFormatArr[0] + \":\" + endTime24HrFormatArr[1] + \":00\";\r\n return dayjs(startTime24HrFormat, timeFormat).isAfter(dayjs(endTime24HrFormat, timeFormat));\r\n }\r\n\r\n getPreviousSelectedTimeFilter() {\r\n let previousSelectedTimeFilter;\r\n\r\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n previousSelectedTimeFilter = this.tooltipSelectedMap.get(this.selectedRadio);\r\n }\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(startTime: string[], endTime: string[], includeMulti: boolean, includeZero: boolean, includeTimeRange: boolean) {\r\n let currentSelectedTimeFilter;\r\n\r\n let fromTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n startTime[0] + \":\" + startTime[1] + \" \" + startTime[2],\r\n true\r\n );\r\n let fromTime24HrFormat = fromTime24HrFormatArr[0] + \":\" + fromTime24HrFormatArr[1] + \":00\";\r\n\r\n let toTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n endTime[0] + \":\" + endTime[1] + \" \" + endTime[2],\r\n true\r\n );\r\n let toTime24HrFormat = toTime24HrFormatArr[0] + \":\" + toTime24HrFormatArr[1] + \":00\";\r\n\r\n currentSelectedTimeFilter = {\r\n fromTime: fromTime24HrFormat, toTime: toTime24HrFormat, includeMulti: includeMulti,\r\n includeZero: includeZero, includeTimeRange: includeTimeRange\r\n };\r\n\r\n return currentSelectedTimeFilter;\r\n\r\n }\r\n\r\n incrementHourInput(arr: any[]) {\r\n if (arr[0] == \"\") {\r\n arr[0] = 1;\r\n } else if (parseInt(arr[0]) < 12) {\r\n arr[0] = parseInt(arr[0]) + 1;\r\n } else {\r\n arr[0] = 1;\r\n }\r\n }\r\n\r\n decrementHourInput(arr: any[]) {\r\n if (arr[0] == \"\") {\r\n arr[0] = 12;\r\n } else if (parseInt(arr[0]) > 1) {\r\n arr[0] = parseInt(arr[0]) - 1;\r\n } else {\r\n arr[0] = 12;\r\n }\r\n }\r\n\r\n incrementMinuteInput(arr: any[]) {\r\n // increment to nearest proper interval(15,30,45)\r\n let min = parseInt(arr[1])\r\n if (min <= 14) {\r\n arr[1] = \"15\";\r\n } else if (min >= 15 && min <= 29) {\r\n arr[1] = \"30\";\r\n } else if (min >= 30 && min <= 44) {\r\n arr[1] = \"45\";\r\n } else if (min >= 45) {\r\n arr[1] = \"00\";\r\n }\r\n }\r\n\r\n decrementMinuteInput(arr: any) {\r\n let min = parseInt(arr[1]);\r\n if (min > 0 && min <= 15) {\r\n arr[1] = \"00\";\r\n } else if (min >= 16 && min <= 30) {\r\n arr[1] = \"15\";\r\n } else if (min >= 31 && min <= 45) {\r\n arr[1] = \"30\";\r\n } else if (min > 45 || min == 0) {\r\n arr[1] = \"45\";\r\n }\r\n }\r\n\r\n incrementOrDecrementHour(increment: boolean, time: string[]) {\r\n if (increment) {\r\n this.incrementHourInput(time);\r\n } else {\r\n this.decrementHourInput(time);\r\n }\r\n }\r\n\r\n incrementOrDecrementMin(increment: boolean, time: string[]) {\r\n if (increment) {\r\n this.incrementMinuteInput(time);\r\n } else {\r\n this.decrementMinuteInput(time);\r\n }\r\n }\r\n\r\n isHourValueInvalid(hr: string) {\r\n return (hr.length == 0 || !+(hr) || 1 > parseInt(hr) || parseInt(hr) > 12 || hr.includes('.') );\r\n }\r\n\r\n isMinuteValueInvalid(min: string) {\r\n return (min.length != 2 || (!+(min) && min != \"00\") || 0 > parseInt(min) || parseInt(min) > 59 || min.includes('.'));\r\n }\r\n\r\n //=============================================================SORT======================================================================//\r\n updateSortMap(tempSortOrder: SortType, tableData: any[], isLurAndCsrComponent: boolean) {\r\n this.annaSortService.columnSortState = new Map();\r\n this.annaSortService.columnSortState.set(this.selectedRadio, tempSortOrder);\r\n let sortedTableData = this.annaSortService.applySorting(this.selectedRadio, tempSortOrder, tableData, isLurAndCsrComponent);\r\n return sortedTableData;\r\n }\r\n\r\n}\r\n","// Angular import statements\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { SortOption, SortType, SortTypeEnum } from '../../../anna-core-shared-lib/models/anna-sort.model';\r\nimport { AnnaSortService } from '../../../anna-core-shared-lib/services/anna-sort.service';\r\n\r\n//Add onChange push change detection\r\n@Component({\r\n selector: 'anna-core-sort-lib',\r\n templateUrl: './anna-sort.component.html',\r\n styleUrls: ['./anna-sort.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaSortComponent implements OnChanges{\r\n \r\n @Input() sortObjectKey: string;\r\n @Output() sortOptionClicked = new EventEmitter<SortType>();\r\n\r\n sortOptions: SortOption[] = [\r\n {\r\n sortType: SortTypeEnum.ASC,\r\n isOptionActive: false,\r\n text: 'A to Z',\r\n },\r\n {\r\n sortType: SortTypeEnum.DESC,\r\n isOptionActive: false,\r\n text: 'Z to A',\r\n },\r\n {\r\n sortType: SortTypeEnum.DEFAULT,\r\n isOptionActive: false,\r\n text: 'Default',\r\n },\r\n ];\r\n\r\n constructor(private annaSortService: AnnaSortService) {}\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes[\"sortObjectKey\"] && changes[\"sortObjectKey\"].currentValue){\r\n let sortType = this.annaSortService.columnSortState.get(this.sortObjectKey);\r\n this.setSortType(sortType);\r\n }\r\n\r\n }\r\n\r\n sortOptionChanged(index: number, sortType: SortType) {\r\n this.sortOptions.forEach((item) => (item.isOptionActive = false));\r\n this.sortOptions[index].isOptionActive = true;\r\n this.sortOptionClicked.emit(sortType);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.annaSortService.updateSortTypeSubject.subscribe((item: string) => {\r\n this.setSortType(item);\r\n });\r\n }\r\n\r\n setSortType(option: string){\r\n option = option ? option :SortTypeEnum.DEFAULT;\r\n this.sortOptions.forEach(item => item.isOptionActive = false);\r\n let index = this.sortOptions.findIndex(item => item.sortType == option);\r\n this.sortOptions[index].isOptionActive = true;\r\n }\r\n}\r\n","<p class=\"sort-container\">\r\n <button\r\n class=\"sort-btn\"\r\n *ngFor=\"let option of sortOptions; let i = index\"\r\n (click)=\"sortOptionChanged(i, option.sortType)\"\r\n [ngClass]=\"{ active: option.isOptionActive }\"\r\n >\r\n {{option.text}}\r\n </button>\r\n</p>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\nimport dayjs from 'dayjs';\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\r\nimport { AnnaDateTimeFormatService, NgbDateType } from '../../../../anna-core-shared-lib/services/anna-date-time-format.service';\r\nimport { SortType, SortTypeEnum } from '../../../../anna-core-shared-lib/models/anna-sort.model';\r\nimport { radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-column-date-range-filter',\r\n templateUrl: './anna-column-date-range-filter.component.html',\r\n styleUrls: ['./anna-column-date-range-filter.component.scss']\r\n})\r\nexport class AnnaColumnDateRangeFilterComponent implements OnInit {\r\n @Input() tableData: any[];\r\n @Input() clonedTableData: any[];\r\n @Input() filterTabObjects: any[];\r\n @Input() isLurAndCsrComponent: boolean;\r\n @Input() showFilterHeaderTabs: boolean;\r\n \r\n @Output() filterAppliedToTable = new EventEmitter();\r\n @Output() sortingAppliedToTable = new EventEmitter();\r\n @Output() getSortType = new EventEmitter();\r\n @Output() closeTooltip = new EventEmitter();\r\n\r\n isFilterChanged: boolean;\r\n tempSortOrder: SortType = null;\r\n isSortChanged: boolean;\r\n showSortComponent: boolean = false;\r\n disableCalendarApplyBtn: boolean;\r\n selectedLabel: string;\r\n showFilterComponent: boolean = false;\r\n disableColumnClearAllBtn: boolean = true;\r\n\r\n calendarMinEnabledDate: NgbDateType;\r\n calendarMaxEnabledDate: NgbDateType;\r\n selectedMinDate: NgbDateType;\r\n selectedMaxDate: NgbDateType;\r\n calendarSelection: any = { fromDate: null, toDate: null };\r\n\r\n constructor(\r\n public annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n private annaSortService: AnnaSortService,\r\n public annaFilterService: AnnaFilterService) { }\r\n\r\n ngOnInit(): void {\r\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\r\n }\r\n\r\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\r\n let header = activeTab.key;\r\n this.selectedLabel = activeTab.label;\r\n \r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n \r\n this.tempSortOrder = null;\r\n this.isFilterChanged = false;\r\n this.isSortChanged = false;\r\n\r\n this.annaFilterService.selectedRadio = header;\r\n this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();\r\n \r\n if(reload){\r\n setTimeout(() => {\r\n this.createFilterTooltipData(activeTab, header);\r\n }, 100); \r\n }else{\r\n this.createFilterTooltipData(activeTab, header);\r\n }\r\n }\r\n\r\n createFilterTooltipData(activeTab: radioButtonModel, key: string) {\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n \r\n this.disableCalendarApplyBtn = true;\r\n \r\n if (this.showFilterComponent) {\r\n this.getCalendarData();\r\n }\r\n }\r\n\r\n getCalendarData() {\r\n const parsingFormat = \"MM/DD/YYYY\";\r\n let optionData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n let minMaxDate = this.annaFilterService.createRangeForTheDateFilter(optionData);\r\n this.selectRangeForTheDateFilter(minMaxDate, parsingFormat);\r\n }\r\n\r\n selectRangeForTheDateFilter(minMaxDate: any[], parsingFormat: string) {\r\n [this.calendarMinEnabledDate, this.calendarMaxEnabledDate] = this.annaFilterService.getMinAndMaxDateRangeForCalendar(minMaxDate, parsingFormat);\r\n \r\n [this.selectedMinDate, this.selectedMaxDate] = this.annaFilterService.getSelectedDateForCalendar(minMaxDate, parsingFormat, this.calendarMinEnabledDate, this.calendarMaxEnabledDate);\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(this.tempSortOrder, this.tableData, this.isLurAndCsrComponent);\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 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\r\n calendarDateChanged(event: any) {\r\n this.calendarSelection = event;\r\n this.disableCalendarApplyButton();\r\n }\r\n\r\n disableCalendarApplyButton() {\r\n if (this.showFilterComponent && this.showSortComponent) {\r\n let isFilterChanged = this.checkIfDateTooltipIsFiltered();\r\n let isSortChanged = this.checkIfSortingChanged();\r\n this.disableCalendarApplyBtn = !(this.calendarSelection.fromDate && this.calendarSelection.toDate) || (!isSortChanged && !isFilterChanged);\r\n } else if (this.showFilterComponent) {\r\n this.disableCalendarApplyBtn = !(this.calendarSelection.fromDate && this.calendarSelection.toDate) || !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\r\n let previousSelectedDate = this.annaFilterService.getPreviousSelectedDatesForCalendar(this.clonedTableData);\r\n let currentSelectedDate = cloneDeep(this.calendarSelection); \r\n \r\n if (currentSelectedDate.fromDate && currentSelectedDate.toDate) {\r\n currentSelectedDate = this.annaFilterService.getCurrentSelectedDatesForCalendar(cloneDeep(this.calendarSelection), this.calendarMinEnabledDate, this.calendarMaxEnabledDate);\r\n this.isFilterChanged = !isEqual(previousSelectedDate, currentSelectedDate);\r\n }\r\n\r\n return this.isFilterChanged;\r\n }\r\n\r\n applyDateFilterOnData() {\r\n if (this.showFilterComponent && this.isFilterChanged) {\r\n let currentSelectedDate = this.annaFilterService.getCurrentSelectedDatesForCalendar(cloneDeep(this.calendarSelection), this.calendarMinEnabledDate, this.calendarMaxEnabledDate);\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 class=\"radio-container\" *ngIf=\"showFilterHeaderTabs\">\r\n <div *ngFor=\"let data of filterTabObjects\">\r\n <p class=\"filter-tab\" [title]=\"data.label\" (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\" [ngClass]=\"{'active': annaFilterService.selectedRadio == data.key}\" *ngIf=\"filterTabObjects.length > 0\">{{ data.label }}</p>\r\n </div>\r\n</div>\r\n\r\n<anna-core-sort-lib *ngIf=\"showSortComponent\" [ngClass]=\"{'no-bottom-border': !showFilterComponent}\"\r\n(sortOptionClicked)=\"storeSortTypeInTempVariable($event)\" [sortObjectKey]=\"annaFilterService.selectedRadio\"></anna-core-sort-lib>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <div class=\"datepicker-container\">\r\n <button class=\"column-clear-all\" [disabled]=\"disableColumnClearAllBtn\" (click)=\"clearColumnFilter()\">\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 class=\"button\" (click)=\"cancelInDateFilter()\">Cancel</button>\r\n <button class=\"button\" (click)=\"applyDateFilter()\" [ngClass]=\"{ disabled: disableCalendarApplyBtn }\"\r\n [disabled]=\"disableCalendarApplyBtn\">Apply</button>\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { cloneDeep, isEqual, truncate } from \"lodash-es\";\r\n\r\nimport { radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\r\nimport { SortType } from '../../../../anna-core-shared-lib/models/anna-sort.model';\r\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\r\nimport { AnnaDateTimeFormatService } from '../../../../anna-core-shared-lib/services/anna-date-time-format.service';\r\nimport { IGtGeneralConfig } from '../../../../anna-core-shared-lib/models/anna-non-editable-gt-models';\r\n\r\n\r\n@Component({\r\n selector: 'anna-core-anna-column-time-filter',\r\n templateUrl: './anna-column-time-filter.component.html',\r\n styleUrls: ['./anna-column-time-filter.component.scss']\r\n})\r\nexport class AnnaColumnTimeFilterComponent implements OnInit {\r\n @Input() tableData: any[];\r\n @Input() clonedTableData: any[];\r\n @Input() filterTabObjects: any[];\r\n @Input() showFilterHeaderTabs: boolean;\r\n @Input() showAllTimeRangeCheckboxes: boolean; \r\n @Input() isLurAndCsrComponent: boolean; \r\n\r\n @Input() gtGeneralConfig: IGtGeneralConfig;\r\n @Input() showClearAllFilter:boolean =true;\r\n @Input() startFromText:string=\"From\";\r\n @Input() endToText:string =\"To\";\r\n @Input() isSortAndFilterAbsent:boolean=false;\r\n @Output() timeChanges= new EventEmitter();\r\n @Output() filterAppliedToTable = new EventEmitter();\r\n @Output() sortingAppliedToTable = new EventEmitter();\r\n @Output() getSortType = new EventEmitter();\r\n @Output() closeTooltip = new EventEmitter();\r\n\r\n isFilterChanged: boolean;\r\n tempSortOrder: SortType = null;\r\n isSortChanged: boolean;\r\n showSortComponent: boolean = false;\r\n showFilterComponent: boolean = false;\r\n disableColumnClearAllBtn: boolean = true;\r\n\r\n startTimeHourErr: boolean;\r\n startTimeMinErr: boolean;\r\n endTimeHourErr: boolean;\r\n endTimeMinErr: boolean;\r\n selectedFromTime: any[];\r\n selectedToTime: any[];\r\n clonedSelectedFromTime: any;\r\n clonedSelectedToTime: any;\r\n disableTimeFilterApplyBtn: boolean;\r\n tableColumns: string[] = [];\r\n totalRowColumns: string[] = null;\r\n showMultiTimeCheckbox: boolean;\r\n showZeroTimeCheckbox: boolean;\r\n showEnterTimeCheckbox: boolean;\r\n multiTimeCheckboxChecked: boolean;\r\n zeroTimeCheckboxChecked: boolean;\r\n enterTimeCheckboxChecked: boolean;\r\n bindValueFuncCalled: boolean;\r\n\r\n constructor(\r\n private annaSortService: AnnaSortService,\r\n public annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n public annaFilterService: AnnaFilterService) { }\r\n\r\n ngOnInit(): void {\r\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\r\n }\r\n\r\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\r\n let header = activeTab.key;\r\n \r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n \r\n this.tempSortOrder = null;\r\n this.isFilterChanged = false;\r\n this.isSortChanged = false;\r\n\r\n this.annaFilterService.selectedRadio = header;\r\n this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();\r\n\r\n if(reload){\r\n setTimeout(() => {\r\n this.createFilterTooltipData(activeTab, header);\r\n }, 100); \r\n }else{\r\n this.createFilterTooltipData(activeTab, header);\r\n }\r\n }\r\n\r\n createFilterTooltipData(activeTab: radioButtonModel, header: string) {\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n \r\n this.disableTimeFilterApplyBtn = true;\r\n \r\n if (this.showFilterComponent) {\r\n this.getTimeFilterData(header);\r\n }\r\n \r\n }\r\n\r\n getTimeFilterData(header: string): void {\r\n\r\n this.startTimeHourErr = this.startTimeMinErr = this.endTimeHourErr = this.endTimeMinErr = false;\r\n \r\n if(this.isSortAndFilterAbsent){\r\n this.selectedFromTime=this.clonedTableData[0].time\r\n this.selectedToTime=this.clonedTableData[1].time\r\n this.selectedFromTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedFromTime, true);\r\n this.selectedToTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedToTime, true);\r\n }\r\n else{\r\n [this.selectedFromTime, this.selectedToTime] = this.annaFilterService.getSelectedTimeRange(header, this.clonedTableData);\r\n }\r\n \r\n \r\n\r\n this.clonedSelectedFromTime = cloneDeep(this.selectedFromTime);\r\n this.clonedSelectedToTime = cloneDeep(this.selectedToTime);\r\n \r\n let optionsData = this.annaFilterService?.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n \r\n let checkedSelectedObj = this.annaFilterService?.selectUnselectTimeFilterCheckbox(header, optionsData);\r\n\r\n this.showMultiTimeCheckbox = checkedSelectedObj.showMultiTimeCheckbox;\r\n this.showZeroTimeCheckbox = checkedSelectedObj.showZeroTimeCheckbox;\r\n this.showEnterTimeCheckbox = checkedSelectedObj.showEnterTimeCheckbox;\r\n this.multiTimeCheckboxChecked = checkedSelectedObj.multiTimeCheckboxChecked;\r\n this.zeroTimeCheckboxChecked = checkedSelectedObj.zeroTimeCheckboxChecked;\r\n this.enterTimeCheckboxChecked = checkedSelectedObj.enterTimeCheckboxChecked; \r\n }\r\n \r\n selectOrUnselectMultiTimeCheckbox() {\r\n this.multiTimeCheckboxChecked = !this.multiTimeCheckboxChecked;\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n selectOrUnselectZeroTimeCheckbox() {\r\n this.zeroTimeCheckboxChecked = !this.zeroTimeCheckboxChecked;\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n selectOrUnselectEnterTimeCheckbox() {\r\n this.enterTimeCheckboxChecked = !this.enterTimeCheckboxChecked;\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n checkIfTimeTooltipIsFiltered() {\r\n let previousSelectedTimeFilter = this.annaFilterService.getPreviousSelectedTimeFilter();\r\n let currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(this.selectedFromTime, this.selectedToTime, this.multiTimeCheckboxChecked, this.zeroTimeCheckboxChecked, this.enterTimeCheckboxChecked);\r\n\r\n this.isFilterChanged = !isEqual(previousSelectedTimeFilter, currentSelectedTimeFilter);\r\n return this.isFilterChanged;\r\n }\r\ncheckIfInvalidTimeIsEntered(){\r\n if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) { \r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n}\r\n disableTimeFilterApplyButton() {\r\n \r\n if(this.isSortAndFilterAbsent){\r\n this.disableTimeFilterApplyBtn= this.checkIfInvalidTimeIsEntered() || !this.checkIfTimeTooltipIsFiltered() \r\n }\r\n else{\r\n if (this.showFilterComponent && this.showSortComponent) {\r\n let isFilterChanged = this.checkIfTimeTooltipIsFiltered();\r\n let isSortChanged = this.checkIfSortingChanged();\r\n this.disableTimeFilterApplyBtn = !this.validateTimeFilterInput() || (!isSortChanged && !isFilterChanged);\r\n }\r\n else if (this.showFilterComponent) {\r\n this.disableTimeFilterApplyBtn = !this.validateTimeFilterInput() || !this.checkIfTimeTooltipIsFiltered();\r\n }\r\n else if (this.showSortComponent) {\r\n this.disableTimeFilterApplyBtn = !this.checkIfSortingChanged();\r\n }\r\n }\r\n \r\n\r\n }\r\n\r\n checkIfSortingChanged(){\r\n this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);\r\n return this.isSortChanged;\r\n }\r\n\r\n validateTimeFilterInput() {\r\n if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) {\r\n \r\n return false;\r\n }\r\n\r\n if ((this.showMultiTimeCheckbox && !this.multiTimeCheckboxChecked) &&\r\n (this.showZeroTimeCheckbox && !this.zeroTimeCheckboxChecked) &&\r\n (this.showEnterTimeCheckbox && !this.enterTimeCheckboxChecked)) {\r\n return false;\r\n }\r\n \r\n \r\n return !this.annaFilterService.checkIfStartTimeIsAfterEndTime(this.selectedFromTime, this.selectedToTime);\r\n \r\n \r\n }\r\n\r\n\r\n\r\n applyTimeFilters() {\r\n if(this.isSortAndFilterAbsent){\r\n let timeSelected=[this.selectedFromTime,this.selectedToTime]\r\n this.timeChanges.emit(timeSelected)\r\n }\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(this.tempSortOrder, this.tableData, this.isLurAndCsrComponent);\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 else if(this.isFilterChanged){\r\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\r\n }\r\n }\r\n\r\n applyTimeFilterOnData() {\r\n if (this.showFilterComponent && this.isFilterChanged) {\r\n let currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(this.selectedFromTime, this.selectedToTime, this.multiTimeCheckboxChecked, this.zeroTimeCheckboxChecked, this.enterTimeCheckboxChecked);\r\n \r\n let isFiltered = this.annaFilterService.reOrderAppliedFiltersState(this.clonedTableData, currentSelectedTimeFilter);\r\n this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, currentSelectedTimeFilter);\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\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}\r\n","<div class=\"radio-container\" *ngIf=\"showFilterHeaderTabs\">\r\n <div *ngFor=\"let data of filterTabObjects\">\r\n <p class=\"filter-tab\" [title]=\"data.label\" (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\" [ngClass]=\"{'active': annaFilterService.selectedRadio == data.key}\" *ngIf=\"filterTabObjects.length > 0\">{{ data.label }}</p>\r\n </div>\r\n</div>\r\n\r\n<anna-core-sort-lib *ngIf=\"showSortComponent\" [ngClass]=\"{'no-bottom-border': !showFilterComponent}\"\r\n(sortOptionClicked)=\"storeSortTypeInTempVariable($event)\" [sortObjectKey]=\"annaFilterService.selectedRadio\"></anna-core-sort-lib>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <button class=\"column-clear-all\" *ngIf=\"showClearAllFilter\" [disabled]=\"disableColumnClearAllBtn\" (click)=\"clearColumnFilter()\">Clear filter</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 class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showMultiTimeCheckbox\">\r\n <span\r\n *ngIf=\"multiTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!multiTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Include Multi</p>\r\n </div>\r\n <!-- Zero time option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showZeroTimeCheckbox\">\r\n <span\r\n *ngIf=\"zeroTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!zeroTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Include Zero</p>\r\n </div>\r\n <!-- Enter time range option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showEnterTimeCheckbox\">\r\n <span\r\n *ngIf=\"enterTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!enterTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Enter time range</p>\r\n </div>\r\n </div>\r\n <div class=\"time-label-container\">\r\n <label>{{startFromText}}</label>\r\n </div>\r\n <div class=\"time-container\">\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': startTimeHourErr}\" [(ngModel)]=\"selectedFromTime[0]\" type=\"text\" pattern=\"[1-12]*\" (ngModelChange)=\"startTimeHourChange($event)\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeStartTimeHour(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" (click)=\"changeStartTimeHour(false)\"></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': startTimeMinErr}\" [(ngModel)]=\"selectedFromTime[1]\" type=\"text\" pattern=\"[0-59]*\" (ngModelChange)=\"startTimeMinChange($event)\"/>\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeStartTimeMinute(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" style=\"position: relative;left: .25px;\" (click)=\"changeStartTimeMinute(false)\"></i>\r\n </div>\r\n <div>\r\n <mat-button-toggle-group [(ngModel)]=\"selectedFromTime[2]\" (ngModelChange)=\"disableTimeFilterApplyButton()\">\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 class=\"form-control numberInput\" [(ngModel)]=\"selectedToTime[0]\" [ngClass]=\"{'error-border': endTimeHourErr}\" (ngModelChange)=\"endTimeHourChange($event)\" type=\"text\"pattern=\"[1-12]*\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeEndTimeHour(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" (click)=\"changeEndTimeHour(false)\"></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': endTimeMinErr}\" [(ngModel)]=\"selectedToTime[1]\" (ngModelChange)=\"endTimeMinChange($event)\" type=\"text\"pattern=\"[0-59]*\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeEndTimeMinute(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" style=\"position: relative;left: .25px;\" (click)=\"changeEndTimeMinute(false)\"></i>\r\n </div>\r\n <div>\r\n <mat-button-toggle-group [(ngModel)]=\"selectedToTime[2]\" (ngModelChange)=\"disableTimeFilterApplyButton()\">\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 class=\"button\" (click)=\"closeTimeFilter()\">Cancel</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>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\nimport { SortType } from '../../../../anna-core-shared-lib/models/anna-sort.model';\r\nimport { TooltipModel, radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\r\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-column-checkbox-filter',\r\n templateUrl: './anna-column-checkbox-filter.component.html',\r\n styleUrls: ['./anna-column-checkbox-filter.component.scss']\r\n})\r\nexport class AnnaColumnCheckboxFilterComponent {\r\n \r\n @Input() showFilterHeaderTabs: boolean;\r\n @Input() isLurAndCsrComponent: boolean;\r\n @Input() tableData: any[];\r\n @Input() clonedTableData: any[];\r\n @Input() filterTabObjects: any[];\r\n\r\n @Output() filterAppliedToTable = new EventEmitter();\r\n @Output() sortingAppliedToTable = new EventEmitter();\r\n @Output() getSortType = new EventEmitter();\r\n @Output() closeTooltip = new EventEmitter();\r\n\r\n tooltipOptions: TooltipModel[];\r\n clonedTooltipOptions: TooltipModel[];\r\n heightOfCheckboxTooltipFilter: number;\r\n toolTipdata: any;\r\n tempTooltipData: any;\r\n selectedCheckboxOptionsCount: number;\r\n isFilterChanged: boolean;\r\n tempSortOrder: SortType = null;\r\n isSortChanged: boolean;\r\n disableSelectAll: boolean;\r\n disableClearAll: boolean;\r\n searchItem: string;\r\n showSortComponent: boolean = false;\r\n disableCheckboxApply: boolean;\r\n showFilterComponent: boolean = false;\r\n margin = 5;\r\n \r\n constructor(\r\n private annaSortService: AnnaSortService,\r\n public annaFilterService: AnnaFilterService) { }\r\n\r\n ngOnInit() {\r\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\r\n }\r\n\r\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\r\n let header = activeTab.key;\r\n this.searchItem = null;\r\n\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n this.tempSortOrder = null;\r\n this.isFilterChanged = false;\r\n this.isSortChanged = false;\r\n\r\n this.annaFilterService.selectedRadio = header;\r\n if(reload){\r\n setTimeout(() => {\r\n this.createFilterTooltipData(activeTab, header);\r\n }, 100); \r\n }else{\r\n this.createFilterTooltipData(activeTab, header);\r\n }\r\n \r\n }\r\n\r\n createFilterTooltipData(activeTab: radioButtonModel, key: string) {\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n \r\n this.disableCheckboxApply = true;\r\n\r\n if (this.showFilterComponent) {\r\n this.getCheckboxData(key);\r\n }\r\n }\r\n\r\n getCheckboxData(header: string) {\r\n let tooltipOptions = this.createListForCheckboxFilter(header);\r\n \r\n let [clonedTooltipOptions, updatedTooltipOptions, selectedItems, unselectedItems] = 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(this.tooltipOptions.length, this.margin);\r\n\r\n this.disableSelectAll = unselectedItems.length == 0;\r\n this.disableClearAll = selectedItems.length == 0;\r\n this.selectedCheckboxOptionsCount = selectedItems.length;\r\n }\r\n\r\n createListForCheckboxFilter(header: string) {\r\n let optionData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n let tooltipOptions = this.annaFilterService.createListForCheckboxFilter(header, optionData);\r\n\r\n return tooltipOptions;\r\n }\r\n\r\n selectUnselectListCheckbox(tooltipOptions: TooltipModel[], header: string) {\r\n if (this.annaFilterService.tooltipSelectedMap.has(header)) {\r\n let selectedValueSet = new Set(this.annaFilterService.tooltipSelectedMap.get(header));\r\n tooltipOptions.forEach(item => item.isSelected = selectedValueSet.has(item.value) ? true : false);\r\n } else {\r\n tooltipOptions.forEach(item => item.isSelected = true);\r\n }\r\n }\r\n\r\n unCheckAllCheckbox() {\r\n this.annaFilterService.unCheckAllCheckbox(this.tooltipOptions, this.clonedTooltipOptions);\r\n this.selectedCheckboxOptionsCount = 0;\r\n this.disableSelectAll = false;\r\n this.disableClearAll = true;\r\n this.disableCheckboxApply = true;\r\n }\r\n\r\n selectAllCheckbox() {\r\n this.annaFilterService.selectAllCheckbox(this.tooltipOptions, this.clonedTooltipOptions);\r\n this.selectedCheckboxOptionsCount = this.tooltipOptions.length;\r\n this.disableSelectAll = true;\r\n this.disableClearAll = false;\r\n this.disableCheckboxFilterApplyButton();\r\n }\r\n\r\n searchForTheItem(str: string) {\r\n if (str) {\r\n this.tooltipOptions = this.annaFilterService.getFilteredOptionAsBoldString(str, this.clonedTooltipOptions);\r\n this.calculateHeightForFilterTooltip();\r\n \r\n if (this.tooltipOptions.length > 0) {\r\n let [selectedItems, unselectedItems] = this.annaFilterService.getSelectedAndUnselectedItems(this.tooltipOptions);\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 }\r\n else {\r\n [this.selectedCheckboxOptionsCount, this.disableCheckboxApply, this.disableClearAll, this.disableSelectAll] = this.annaFilterService.disableAllBtnsWhenThereAreNoFilteredResults();\r\n }\r\n }\r\n else {\r\n this.tooltipOptions = cloneDeep(this.clonedTooltipOptions);\r\n this.calculateHeightForFilterTooltip();\r\n let [selectedItems, unselectedItems] = this.annaFilterService.getSelectedAndUnselectedItems(this.tooltipOptions);\r\n this.selectedCheckboxOptionsCount = selectedItems.length;\r\n this.disableSelectAll = unselectedItems.length == 0;\r\n this.disableClearAll = selectedItems.length == 0;\r\n this.disableCheckboxFilterApplyButton();\r\n }\r\n }\r\n\r\n calculateHeightForFilterTooltip(){\r\n let dataLength = this.tooltipOptions.length == 0 ? 1 : this.tooltipOptions.length;\r\n this.heightOfCheckboxTooltipFilter = this.annaFilterService.getHeightOfCheckboxTooltipFilter(dataLength, this.margin); \r\n }\r\n\r\n disableCheckboxFilterApplyButton() {\r\n let selectedItems = this.showFilterComponent ? this.tooltipOptions.filter(item => item.isSelected) : [];\r\n\r\n if (this.showFilterComponent && this.showSortComponent) {\r\n let isFilterChanged = this.checkIfCheckboxTooltipIsFiltered();\r\n let isSortChanged = this.checkIfSortingChanged();\r\n this.disableCheckboxApply = selectedItems.length == 0 || (!isSortChanged && !isFilterChanged);\r\n } else if (this.showFilterComponent) {\r\n this.disableCheckboxApply = selectedItems.length == 0 || !this.checkIfCheckboxTooltipIsFiltered();\r\n } else if (this.showSortComponent) {\r\n this.disableCheckboxApply = !this.checkIfSortingChanged();\r\n }\r\n }\r\n\r\n checkIfSortingChanged(){\r\n this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);\r\n return this.isSortChanged;\r\n }\r\n\r\n checkIfCheckboxTooltipIsFiltered() {\r\n let previousSelectedValue = this.annaFilterService.getCheckboxPreviousSelectedValue(this.clonedTableData);\r\n let currentSelectedValue = this.annaFilterService.getCheckboxCurrentSelectedValue(this.searchItem, this.tooltipOptions);\r\n this.isFilterChanged = !isEqual(currentSelectedValue, previousSelectedValue);\r\n return this.isFilterChanged;\r\n }\r\n\r\n applyFilters() {\r\n this.applyListFilters();\r\n this.applySortingOnFilteredData();\r\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n this.emitData();\r\n }\r\n\r\n applyListFilters() {\r\n if (this.showFilterComponent && this.isFilterChanged) {\r\n let currentSelectedValue = this.annaFilterService.getCheckboxCurrentSelectedValue(this.searchItem, this.tooltipOptions);\r\n this.annaFilterService.reOrderAppliedFiltersState(this.clonedTableData, currentSelectedValue);\r\n this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, currentSelectedValue);\r\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, \"\");\r\n this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);\r\n }\r\n }\r\n\r\n applySortingOnFilteredData(){\r\n if(this.showSortComponent){\r\n if(this.isSortChanged){\r\n this.tableData = this.annaFilterService.updateSortMap(this.tempSortOrder, this.tableData, this.isLurAndCsrComponent);\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 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 }\r\n else if (this.isFilterChanged) {\r\n this.filterAppliedToTable.emit(this.tableData);\r\n }\r\n else if (this.isSortChanged) {\r\n this.getSortType.emit(this.tempSortOrder);\r\n this.sortingAppliedToTable.emit(this.tableData);\r\n }\r\n }\r\n\r\n selectUnselectCheckbox(data: TooltipModel) {\r\n this.annaFilterService.selectUnselectCheckbox(data, this.clonedTooltipOptions);\r\n let [selectedItems, unselectedItems] = this.annaFilterService.getSelectedAndUnselectedItems(this.tooltipOptions);\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}\r\n","<div class=\"radio-container\" *ngIf=\"showFilterHeaderTabs\">\r\n <div [ngClass]=\"{'full-width': filterTabObjects.length == 1}\" *ngFor=\"let data of filterTabObjects\">\r\n <p class=\"filter-tab\" [title]=\"data.label\" (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\" [ngClass]=\"{'active': annaFilterService.selectedRadio == data.key}\" *ngIf=\"filterTabObjects.length > 0\">{{ data.label }}</p>\r\n </div>\r\n</div>\r\n\r\n<div class=\"checkbox-sort\" *ngIf=\"showSortComponent\">\r\n <anna-core-sort-lib [ngClass]=\"{'no-bottom-border': !showFilterComponent}\"\r\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\" [sortObjectKey]=\"annaFilterService.selectedRadio\"></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 class=\"filter-text-btn\" [disabled]=\"disableClearAll\" (click)=\"unCheckAllCheckbox()\">Clear all</button>\r\n <button class=\"filter-text-btn\" [disabled]=\"disableSelectAll\" (click)=\"selectAllCheckbox()\">Select all</button>\r\n </p>\r\n <p class=\"search-box\">\r\n <i class=\"mi mdi-search search-icon search-icon-position\"></i>\r\n <input\r\n type=\"text\"\r\n placeholder=\"Search\"\r\n class=\"search-input\"\r\n style=\"margin-left: 2px; border: none; padding: 0px\"\r\n [(ngModel)]=\"searchItem\"\r\n (ngModelChange)=\"searchForTheItem($event)\"\r\n />\r\n <i class=\"mdi mdi-close search-bar-close\" [ngClass]=\"{'disable-close-icon': (!searchItem || searchItem.length == 0) }\"\r\n (click)=\"clearSearchedItem()\"></i>\r\n\r\n </p>\r\n <div style=\"position:relative\">\r\n <!-- Track By func -->\r\n <cdk-virtual-scroll-viewport itemSize=\"18\" [style.height.px]=\"heightOfCheckboxTooltipFilter\" class=\"dropdown-data-container\">\r\n <p *cdkVirtualFor=\"let option of tooltipOptions\" class=\"input example-item\" (click)=\"selectUnselectCheckbox(option)\">\r\n <span *ngIf=\"option.isSelected\" role=\"button\" class=\"mi mdi-check-box check-box\"></span>\r\n <span *ngIf=\"!option.isSelected\" role=\"button\" class=\"mi mdi-check-box-outline-blank check-box unchecked\"></span>\r\n <span class=\"data\" title=\"{{ option.value }}\" [innerHTML]=\"option.label\"></span>\r\n\r\n\r\n </p>\r\n\r\n <p class = \"no-data-case\" *ngIf=\"tooltipOptions?.length == 0\" style=\"padding-left: .4375rem;\">No data found</p>\r\n\r\n\r\n\r\n </cdk-virtual-scroll-viewport>\r\n <div style=\"position: absolute; top:0; left:0; width:100%; height:100%; pointer-events:none\"></div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"buttons-container checkbox-filter-buttons-container\">\r\n <button class=\"button\" (click)=\"closeCheckboxFilter()\">Cancel</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\">{{ selectedCheckboxOptionsCount == tooltipOptions.length && tooltipOptions.length != 0 && !searchItem? 'All ('+ selectedCheckboxOptionsCount + ')': '(' + selectedCheckboxOptionsCount + ')' }}</span>\r\n </button>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\r\nimport { SortType } from '../../../../anna-core-shared-lib/models/anna-sort.model';\r\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\r\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { Options } from '@angular-slider/ngx-slider';\r\nimport { isEqual, cloneDeep } from 'lodash-es';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-column-slider-filter',\r\n templateUrl: './anna-column-slider-filter.component.html',\r\n styleUrls: ['./anna-column-slider-filter.component.scss']\r\n})\r\nexport class AnnaColumnSliderFilterComponent {\r\n\r\n @Input() filterTabObjects: any[];\r\n @Input() isLurAndCsrComponent: boolean;\r\n @Input() tableData: any[];\r\n @Input() showFilterHeaderTabs: boolean;\r\n @Input() clonedTableData: any[];\r\n \r\n @Output() closeTooltip = new EventEmitter();\r\n @Output() filterAppliedToTable = new EventEmitter();\r\n @Output() getSortType = new EventEmitter();\r\n @Output() sortingAppliedToTable = new EventEmitter();\r\n \r\n showSortComponent: boolean;\r\n showFilterComponent: boolean;\r\n \r\n tempSortOrder: SortType = null;\r\n isFilterChanged: boolean = false;\r\n isSortChanged: boolean = false;\r\n showEmptySpaceForSlider: boolean = false;\r\n incorrectSliderInput: boolean;\r\n sliderEnteredMaxValue: number;\r\n sliderEnteredMinValue: number;\r\n showSliderMinValueError: boolean;\r\n showSliderMaxValueError: boolean;\r\n isMinTextBoxEmpty: boolean;\r\n isMaxTextBoxEmpty: boolean;\r\n options: Options;\r\n sliderFilterTextBoxStep: string;\r\n sliderMinValue: number;\r\n sliderMaxValue: number;\r\n disableSliderApplyButton: boolean;\r\n sliderValue: { min: number, max: number };\r\n disableColumnClearAllBtn: boolean = true;\r\n\r\n constructor(public annaFilterService: AnnaFilterService, public annaSortService: AnnaSortService){}\r\n\r\n ngOnInit() {\r\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\r\n }\r\n\r\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\r\n let header = activeTab.key;\r\n \r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n \r\n this.tempSortOrder = null;\r\n this.isFilterChanged = false;\r\n this.isSortChanged = false;\r\n\r\n this.annaFilterService.selectedRadio = header;\r\n this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();\r\n if(reload){\r\n setTimeout(() => {\r\n this.createFilterTooltipData(activeTab, header);\r\n }, 100); \r\n }else{\r\n this.createFilterTooltipData(activeTab, header);\r\n }\r\n }\r\n\r\n createFilterTooltipData(activeTab: radioButtonModel, key: string){\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n \r\n this.disableSliderApplyButton = true;\r\n \r\n if(this.showFilterComponent){\r\n this.getSliderData(key);\r\n } \r\n }\r\n\r\n getSliderData(key: string) {\r\n this.showEmptySpaceForSlider = true;\r\n\r\n this.createOptionsForSlider(key);\r\n this.setSelectedRangeForSlider(key);\r\n \r\n setTimeout(() => {\r\n this.showEmptySpaceForSlider = false;\r\n }, 0);\r\n }\r\n\r\n createOptionsForSlider(key: string){\r\n let translateFunc = this.annaFilterService.getSliderTranslateFuncVal(key, this.annaFilterService.sliderCurrencySet);\r\n this.incorrectSliderInput = false;\r\n this.sliderEnteredMaxValue = this.sliderEnteredMinValue = null;\r\n this.showSliderMinValueError = this.showSliderMaxValueError = this.isMinTextBoxEmpty = this.isMaxTextBoxEmpty = false;\r\n\r\n let optionsData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n this.options = this.annaFilterService.getSliderOptions(optionsData, translateFunc, key);\r\n\r\n this.options.step = 1;\r\n this.sliderFilterTextBoxStep = \"1\";\r\n if (key !== \"WeekNumber\") {\r\n this.options.step = 0.01;\r\n this.sliderFilterTextBoxStep = \"0.01\";\r\n }\r\n \r\n }\r\n\r\n setSelectedRangeForSlider(key: string){\r\n [this.sliderMinValue, this.sliderMaxValue] = this.annaFilterService.setSelectedRangeForSlider(key, this.options);\r\n this.sliderEnteredMinValue = this.sliderMinValue;\r\n this.sliderEnteredMaxValue = this.sliderMaxValue;\r\n }\r\n\r\n cancelSliderFilter() {\r\n this.sliderValue = null;\r\n this.closeTooltip.emit();\r\n }\r\n\r\n minValueChanged(val: string) {\r\n if (val || val == '0') {\r\n this.sliderEnteredMinValue = +val;\r\n this.isMinTextBoxEmpty = false;\r\n if (this.isMaxTextBoxEmpty) {\r\n if ( (this.sliderEnteredMinValue > this.options.ceil) || (this.sliderEnteredMinValue < this.options.floor)) {\r\n this.showSliderMinValueError = true;\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n } else {\r\n this.showSliderMinValueError = false;\r\n this.showSliderMaxValueError = false;\r\n this.disableSliderApplyButton = false;\r\n this.incorrectSliderInput = false;\r\n }\r\n } else if (this.sliderEnteredMinValue > this.sliderEnteredMaxValue) {\r\n if(this.annaFilterService.isValueInRange(this.options, this.sliderEnteredMaxValue)){\r\n this.showSliderMinValueError = true;\r\n this.showSliderMaxValueError = false;\r\n }\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 }\r\n else{\r\n this.showSliderMinValueError = true;\r\n }\r\n \r\n }\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n \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\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 }\r\n\r\n maxValueChanged(val: string) {\r\n if (val || val == \"0\") {\r\n this.sliderEnteredMaxValue = +val;\r\n this.isMaxTextBoxEmpty = false;\r\n if (this.isMinTextBoxEmpty) {\r\n if ( (this.sliderEnteredMaxValue < this.options.floor) || (this.sliderEnteredMaxValue > this.options.ceil)) {\r\n this.showSliderMaxValueError = true;\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n } else {\r\n this.showSliderMaxValueError = false;\r\n this.showSliderMinValueError = false;\r\n this.disableSliderApplyButton = false;\r\n this.incorrectSliderInput = false;\r\n }\r\n } else if (this.sliderEnteredMaxValue < this.sliderEnteredMinValue) {\r\n if(this.annaFilterService.isValueInRange(this.options, this.sliderEnteredMinValue)){\r\n this.showSliderMaxValueError = true;\r\n this.showSliderMinValueError = false;\r\n }\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 }\r\n else{\r\n this.showSliderMaxValueError = true;\r\n }\r\n }\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n // this.showMaxError = true;\r\n } else if (this.sliderEnteredMaxValue > this.options.ceil) {\r\n this.showSliderMaxValueError = true;\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n } else {\r\n this.showSliderMaxValueError = false;\r\n this.disableSliderApplyButton = false;\r\n this.incorrectSliderInput = false;\r\n }\r\n } else {\r\n this.sliderEnteredMaxValue = this.options.ceil;\r\n this.isMaxTextBoxEmpty = true;\r\n this.showSliderMaxValueError = false;\r\n }\r\n this.showErrorForMinAndMaxValue();\r\n }\r\n\r\n showErrorForMinAndMaxValue(){\r\n if(this.isMinTextBoxEmpty && this.isMaxTextBoxEmpty){\r\n this.showSliderMinValueError = true;\r\n this.showSliderMaxValueError = true;\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n }\r\n else if(this.showSliderMaxValueError || this.showSliderMinValueError){\r\n this.incorrectSliderInput = true;\r\n }\r\n else{\r\n this.incorrectSliderInput = false;\r\n }\r\n this.disableSliderApplyBtn();\r\n }\r\n\r\n disableSliderApplyBtn(){\r\n if(this.showFilterComponent && this.showSortComponent){\r\n let isFilterChanged = this.checkIfSliderTooltipIsFiltered();\r\n let isSortChanged = this.checkIfSortingChanged();\r\n \r\n this.disableSliderApplyButton = this.incorrectSliderInput || (!isSortChanged && !isFilterChanged );\r\n }\r\n else if(this.showFilterComponent){\r\n this.disableSliderApplyButton = this.incorrectSliderInput || !this.checkIfSliderTooltipIsFiltered();\r\n }\r\n else if(this.showSortComponent){\r\n this.disableSliderApplyButton = !this.checkIfSortingChanged();\r\n }\r\n }\r\n\r\n checkIfSortingChanged(){\r\n this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);\r\n return this.isSortChanged;\r\n }\r\n\r\n checkIfSliderTooltipIsFiltered(){\r\n let previousSelectedValue = this.annaFilterService.getPreviousSelectedValueForSlider(this.clonedTableData);\r\n let currentSelectedValue = this.annaFilterService.getCurrentSelectedValueForSlider(this.sliderEnteredMinValue, this.sliderEnteredMaxValue, this.options);\r\n\r\n this.isFilterChanged = !isEqual(previousSelectedValue, currentSelectedValue);\r\n return this.isFilterChanged;\r\n }\r\n\r\n storeSortTypeInTempVariable(event: SortType){\r\n this.tempSortOrder = event;\r\n this.disableSliderApplyBtn();\r\n }\r\n\r\n applyFilters() {\r\n this.applySliderFilter();\r\n this.applySortingOnFilteredData();\r\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n this.emitData();\r\n }\r\n\r\n applySliderFilter(){\r\n if(this.showFilterComponent && this.isFilterChanged){\r\n let currentSliderData = this.annaFilterService.getCurrentSelectedValueForSlider(this.sliderEnteredMinValue, this.sliderEnteredMaxValue, this.options);\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(this.tempSortOrder, this.tableData, this.isLurAndCsrComponent);\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 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 }\r\n else if(this.isFilterChanged){\r\n this.filterAppliedToTable.emit(this.tableData);\r\n }\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}\r\n","<div class=\"radio-container\" *ngIf=\"showFilterHeaderTabs\">\r\n <div *ngFor=\"let data of filterTabObjects\">\r\n <p\r\n class=\"filter-tab\"\r\n [title]=\"data.label\"\r\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\r\n [ngClass]=\"{ active: annaFilterService.selectedRadio == data.key }\"\r\n *ngIf=\"filterTabObjects.length > 0\"\r\n >\r\n {{ data.label }}\r\n </p>\r\n </div>\r\n</div>\r\n\r\n<anna-core-sort-lib\r\n *ngIf=\"showSortComponent\"\r\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\r\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\r\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\r\n></anna-core-sort-lib>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <button\r\n class=\"column-clear-all\"\r\n [disabled]=\"disableColumnClearAllBtn\"\r\n (click)=\"clearColumnFilter()\"\r\n >\r\n Clear filter\r\n </button>\r\n <section class=\"min-maxContainer\">\r\n <input\r\n type=\"number\"\r\n class=\"slider-text\"\r\n step=\"{{ sliderFilterTextBoxStep }}\"\r\n [(ngModel)]=\"sliderMinValue\"\r\n (ngModelChange)=\"minValueChanged($event)\"\r\n [ngClass]=\"{ 'red-border': showSliderMinValueError }\"\r\n placeholder=\"Min\"\r\n />\r\n <span>To</span>\r\n <input\r\n type=\"number\"\r\n class=\"slider-text\"\r\n step=\"{{ sliderFilterTextBoxStep }}\"\r\n [(ngModel)]=\"sliderMaxValue\"\r\n (ngModelChange)=\"maxValueChanged($event)\"\r\n [ngClass]=\"{ 'red-border': showSliderMaxValueError }\"\r\n placeholder=\"Max\"\r\n />\r\n </section>\r\n <div class=\"sidebar-slider\">\r\n <ngx-slider\r\n *ngIf=\"!showEmptySpaceForSlider\"\r\n [ngClass]=\"{\r\n 'show-min': sliderMinValue != options.floor,\r\n 'show-max': sliderMaxValue != options.ceil\r\n }\"\r\n class=\"filter-slider\"\r\n [value]=\"sliderEnteredMinValue\"\r\n [highValue]=\"sliderEnteredMaxValue\"\r\n [options]=\"options\"\r\n ></ngx-slider>\r\n <div *ngIf=\"showEmptySpaceForSlider\" class=\"slider-placeholder\"></div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"buttons-container\">\r\n <button class=\"button\" (click)=\"cancelSliderFilter()\">Cancel</button>\r\n <button\r\n class=\"button\"\r\n [ngClass]=\"{ disabled: disableSliderApplyButton }\"\r\n (click)=\"applyFilters()\"\r\n [disabled]=\"disableSliderApplyButton\"\r\n >\r\n Apply\r\n </button>\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-est-icon-template',\r\n templateUrl: './anna-est-icon-template.component.html',\r\n styleUrls: ['./anna-est-icon-template.component.scss']\r\n})\r\nexport class AnnaEstIconTemplateComponent {\r\n\r\n}\r\n","<svg width=\"12\" height=\"12\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <path d=\"M0 0H14V14H0V0Z\" fill=\"url(#pattern0)\"/>\r\n <defs>\r\n <pattern id=\"pattern0\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\r\n <use xlink:href=\"#image0_866_172\" transform=\"scale(0.0430107 0.0434783)\"/>\r\n </pattern>\r\n <image id=\"image0_866_172\" width=\"93\" height=\"23\" xlink:href=\"data:image/png;base64,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\"/>\r\n </defs>\r\n</svg>\r\n ","\r\n// Angular import statements\r\nimport { Component, OnInit, Input, ViewChildren, QueryList, Output, EventEmitter, SimpleChanges, OnChanges, ChangeDetectorRef, ElementRef, AfterViewChecked, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n// Third party import statements\r\nimport { cloneDeep, isEqual, uniq } from \"lodash-es\";\r\n\r\n\r\n//sub-entries of anna lib import statement\r\nimport { IGtGeneralConfig, IGtTableHeader, IHeaderInfo, ITotalRowInfo } from '../../../anna-core-shared-lib/models/anna-non-editable-gt-models';\r\nimport { AnnaDateTimeFormatService } from '../../../anna-core-shared-lib/services/anna-date-time-format.service';\r\nimport { IWeekCalendar } from '../../../anna-core-shared-lib/models/anna-global-dropdown-config.model';\r\nimport { GtColumnIconEmittedData, RatingSellerGroupHierarchy, } from '../../../anna-core-shared-lib/models/anna-generic-data-type.model';\r\nimport { radioButtonModel } from '../../../anna-core-shared-lib/models/anna-tooltip.model';\r\nimport { AnnaSortService } from '../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { AnnaFilterService } from '../../../anna-core-shared-lib/services/anna-filter.service';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\ninterface keyValueTooltipType { key: string, value: string };\r\ninterface tableTooltipType { tooltipTableHeader: string[], tooltipTableBody: string[][], tableHeaderMsg: string[], tableFooterMsg: string[], innerHtml: string }\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})\r\nexport class AnnaNonEditableGenericTableComponent implements OnInit, OnChanges, AfterViewChecked {\r\n\r\n @Input() showSkeletonLoading: boolean;\r\n @Input() tableHeaders: IGtTableHeader[];\r\n @Input() tableData: any[];\r\n @Input() clonedTableData: any[];\r\n @Input() gtGeneralConfig: IGtGeneralConfig;\r\n @Input() totalRowInfo?: ITotalRowInfo[];\r\n @Input() gtDimension: { rowHeight: number, headerHeight: number, dataOnTopHeight: number, marginFromBottom: number, tableHeight?: string };\r\n @Input() tableClass: string;\r\n @Input() maximumRowsWhichCanBeRenderedWithoutScroll: number = 5;\r\n @Input() fixNumberOfRowsForPopup: boolean = false;\r\n @Input() limit: number = 30;\r\n @Input() includeBorderInTableHeight: boolean = true;\r\n @Input() downloadInProgress: boolean;\r\n @Input() percentDone: number;\r\n @Input() starredInProgress: boolean;\r\n @Input() clickableRow: boolean = false;\r\n @Input() setTableHeightWhenRowSizeIsFixed: boolean = true;\r\n @Input() tableBorderBottomClassRequired: boolean = true;\r\n @Input() hideSomeTds: boolean = false;\r\n @Input() tdsHaveRowSpan: boolean = false;\r\n @Input() multipleTablesPresent: boolean = false;\r\n\r\n @Output() toggleCheckbox = new EventEmitter();\r\n @Output() toggleRowCheckbox = new EventEmitter();\r\n @Output() toggleHeaderCheckbox = new EventEmitter();\r\n @Output() undoIconClicked = new EventEmitter();\r\n @Output() filterAppliedToTable = new EventEmitter();\r\n @Output() sortingAppliedToTable = new EventEmitter();\r\n @Output() rowClicked = new EventEmitter();\r\n @Output() radioButtonSelected = new EventEmitter();\r\n @Output() columnFilterOpened = new EventEmitter();\r\n @Output() columnFilterClosed = new EventEmitter();\r\n @Output() gtIconClicked = new EventEmitter();\r\n @Output() gtSVGIconClicked = new EventEmitter();\r\n @Output() gtTextActionClicked = new EventEmitter();\r\n @Output() gtViewDetailClicked = new EventEmitter();\r\n @Output() gtInnerHTMLClicked = new EventEmitter();\r\n @Output() downloadSpotDetails = new EventEmitter();\r\n @Output() clickableDataClicked = new EventEmitter();\r\n @Output() totalRowIconClicked = new EventEmitter();\r\n @Output() notificationIconHover = new EventEmitter();\r\n @Output() notificationIconHoverLeave = new EventEmitter();\r\n @Output() editableInputEdited = new EventEmitter();\r\n @Output() radioButtonMessageIconClicked = new EventEmitter();\r\n\r\n numberOfSkeletonRows: number[][] = Array(20).fill(0);\r\n tableDataWrapper: any[];\r\n rowChecked: boolean;\r\n isAllRowsChecked: boolean;\r\n noDataWidth: string = \"50%\";\r\n markedForCreditStatus: string;\r\n markedForMGStatus: string;\r\n filterAlignment: string = \"bottom auto\";\r\n\r\n //Sort and Filter\r\n tooltipRadioTextMap: Map<any, any>;\r\n filterTabObjects: any[];\r\n tooltip: any;\r\n disableColumnClearAllBtn: boolean = true;\r\n margin = 5;\r\n\r\n //Week Filter\r\n multiWeekPickerConfig: IWeekCalendar;\r\n\r\n tableColumns: string[] = [];\r\n totalRowColumns: string[] = null;\r\n bindValueFuncCalled: boolean;\r\n\r\n hierarchyTooltip: { open: () => void; close: () => void; };\r\n sellerGroupHierarchy: RatingSellerGroupHierarchy[];\r\n showFilterTooltipTabs: boolean; //Change the Name\r\n\r\n isScrolledLeft: boolean = false;\r\n rowBorderWidth: number = 2;\r\n\r\n sameTooltipClicked: boolean;\r\n marginTop: string = \"\";\r\n @ViewChildren('tableHeader') viewChildTableHeaders: QueryList<ElementRef>;\r\n\r\n isDifferenceLessThan25Percent: boolean;\r\n start: number = 0;\r\n end: number = this.limit + this.start;\r\n renderedData: any[];\r\n selectedInventoryIdForDownload: number;\r\n selectedDemographicForDownload: any;\r\n selectedRowTypeForDownload: string;\r\n heightOfCheckboxTooltipFilter: number;\r\n isNoDataToDisplaySubject$ = new BehaviorSubject<boolean>(false);\r\n selectedStarredOrderId: string;\r\n\r\n textActionTooltip: keyValueTooltipType[] = [];\r\n tooltipContainingTable: tableTooltipType = null;\r\n tableBottomBorderClass: string = null;\r\n showCheckboxesForTimeFilter: boolean = false;\r\n\r\n constructor(\r\n private cdRef: ChangeDetectorRef,\r\n private annaSortService: AnnaSortService,\r\n public annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n public annaFilterService: AnnaFilterService\r\n ) {\r\n this.setTooltipRadioNames();\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this.setMarginLeftForFilterIcon();\r\n }\r\n\r\n ngOnInit() {\r\n this.setFilterAlignmentBasedOnScreenResolution();\r\n }\r\n\r\n detectChanges() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes && changes[\"gtDimension\"] && changes[\"gtDimension\"].currentValue && this.setTableHeightWhenRowSizeIsFixed) {\r\n this.setTableHeight();\r\n this.setTableBottomBorder();\r\n }\r\n if (this.showSkeletonLoading) {\r\n this.tableData = this.numberOfSkeletonRows;\r\n this.renderedData = this.numberOfSkeletonRows;\r\n this.isNoDataToDisplaySubject$.next(false);\r\n this.annaFilterService.initialValueMap = new Map();\r\n this.setTableBottomBorder();\r\n }\r\n else if (changes[\"percentDone\"] || changes[\"downloadInProgress\"] || (changes[\"starredInProgress\"] && changes[\"starredInProgress\"].currentValue != undefined)) {\r\n //no task will be performed\r\n }\r\n else {\r\n this.setInitialRowsForTable();\r\n this.disableEnableEachColumnTooltipIcon();\r\n this.tableColumns = this.tableHeaders.filter(x => x.visible).map(x => x.headerInfo[0].objectKey);\r\n if ((this.tableData && this.tableData.length == 0) || (this.tableData.length == 2 && this.checkIfAllTheElementsAreZero())) {\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 }\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.setColumnSortStateMap();\r\n this.setActiveStateObject();\r\n }\r\n\r\n if (changes['totalRowInfo'] && changes['totalRowInfo'].currentValue) {\r\n this.totalRowColumns = this.totalRowInfo.map(x => x.colName);\r\n }\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n setFilterAlignmentBasedOnScreenResolution() {\r\n let viewportHeight = window.innerHeight;\r\n if (viewportHeight < 740) {\r\n this.filterAlignment = \"left right\";\r\n }\r\n else {\r\n this.filterAlignment = \"bottom left right\";\r\n }\r\n }\r\n\r\n setTableBottomBorder() {\r\n if (this.tableBorderBottomClassRequired && this.tableData && this.tableData.length && this.maximumRowsWhichCanBeRenderedWithoutScroll < this.tableData.length) {\r\n this.tableBottomBorderClass = 'bottom-border';\r\n }\r\n else {\r\n this.tableBottomBorderClass = null;\r\n }\r\n }\r\n\r\n checkIfAllTheElementsAreZero() {\r\n return !this.tableData.some(item => item != 0);\r\n }\r\n\r\n setTableHeight() {\r\n let viewportHeight = window.innerHeight;\r\n let rowHeight = this.gtDimension.rowHeight;\r\n let headerHeight = this.gtDimension.headerHeight;\r\n let dataOnTopHeight = this.gtDimension.dataOnTopHeight;\r\n let marginFromBottom = this.gtDimension.marginFromBottom;\r\n let actualTableHeight;\r\n\r\n if (this.fixNumberOfRowsForPopup) {\r\n let maxNoOfRowsToDisplay = viewportHeight < 740 ? 5 : 10;\r\n this.maximumRowsWhichCanBeRenderedWithoutScroll = maxNoOfRowsToDisplay;\r\n actualTableHeight = this.maximumRowsWhichCanBeRenderedWithoutScroll * rowHeight + headerHeight;\r\n }\r\n else {\r\n let minHeightForTable = headerHeight + 3 * rowHeight;\r\n viewportHeight = viewportHeight <= dataOnTopHeight ? dataOnTopHeight + minHeightForTable : viewportHeight;\r\n let heightLeftForTable = viewportHeight - dataOnTopHeight - marginFromBottom;\r\n this.maximumRowsWhichCanBeRenderedWithoutScroll =\r\n Math.ceil((heightLeftForTable - headerHeight - rowHeight) / rowHeight) + 1;\r\n actualTableHeight = viewportHeight - dataOnTopHeight - marginFromBottom;\r\n }\r\n\r\n // let actualTableHeight = heightLeftForTable - ((heightLeftForTable - headerHeight - rowHeight) % rowHeight);\r\n\r\n this.gtDimension.tableHeight = `${actualTableHeight}px`;\r\n\r\n\r\n this.numberOfSkeletonRows = this.maximumRowsWhichCanBeRenderedWithoutScroll ? Array(this.maximumRowsWhichCanBeRenderedWithoutScroll).fill(0) \r\n : Array(5).fill(0);\r\n }\r\n\r\n\r\n trackByFn(index: number) {\r\n return index;\r\n }\r\n\r\n setTooltipRadioNames() {\r\n this.tooltipRadioTextMap = new Map();\r\n this.tooltipRadioTextMap.set(\"StartTimeForFilter\", \"Start Time\");\r\n this.tooltipRadioTextMap.set(\"EndTimeForFilter\", \"End Time\");\r\n this.tooltipRadioTextMap.set(\"startTimeForFilter\", \"Start Time\");\r\n this.tooltipRadioTextMap.set(\"endTimeForFilter\", \"End Time\");\r\n this.tooltipRadioTextMap.set(\"start_time_for_filter\", \"Start Time\");\r\n this.tooltipRadioTextMap.set(\"end_time_for_filter\", \"End Time\");\r\n this.tooltipRadioTextMap.set(\"primaryAEName\", \"Primary AE\");\r\n this.tooltipRadioTextMap.set(\"region\", \"Region\");\r\n this.tooltipRadioTextMap.set(\"agencyName\", \"Agency\");\r\n this.tooltipRadioTextMap.set(\"location\", \"Location\");\r\n this.tooltipRadioTextMap.set(\"advertiserName\", \"Advertiser\");\r\n this.tooltipRadioTextMap.set(\"productCode\", \"Product Code\");\r\n this.tooltipRadioTextMap.set(\"flightStartDate\", \"Start Date\");\r\n this.tooltipRadioTextMap.set(\"flightEndDate\", \"End Date\");\r\n this.tooltipRadioTextMap.set(\"orderIdAndRevNumber\", \"STN Order#-Rev#\");\r\n this.tooltipRadioTextMap.set(\"alternateOrderId\", \"Alt/Rep Order #\");\r\n this.tooltipRadioTextMap.set(\"grp\", \"GRP\");\r\n this.tooltipRadioTextMap.set(\"cpp\", \"CPP\");\r\n this.tooltipRadioTextMap.set(\"imps\", \"IMPS\");\r\n this.tooltipRadioTextMap.set(\"cpm\", \"CPM\");\r\n this.tooltipRadioTextMap.set(\"offeredMGs\", \"Offered MG\");\r\n this.tooltipRadioTextMap.set(\"outstandingPE\", \"O/S PE\");\r\n this.tooltipRadioTextMap.set(\"offeredADUs\", \"Offered ADUs\");\r\n this.tooltipRadioTextMap.set(\"udDeficitValue\", \"O/S Aud Delta\");\r\n this.tooltipRadioTextMap.set(\"startEndTimeMulti\", \"Time\");\r\n this.tooltipRadioTextMap.set(\"bookedValue\", \"Booked\");\r\n this.tooltipRadioTextMap.set(\"bookedSpots\", \"Spots\");\r\n this.tooltipRadioTextMap.set(\"UserCreditedValue\", \"User Credited\");\r\n this.tooltipRadioTextMap.set(\"UserUnresolvedValue\", \"User Unresolved\");\r\n this.tooltipRadioTextMap.set(\"BuyerAddedValue\", \"Buyer Added\");\r\n this.tooltipRadioTextMap.set(\"BuyerDeletedValue\", \"Buyer Deleted\");\r\n this.tooltipRadioTextMap.set(\"userChanges\", \"User Changes\");\r\n this.tooltipRadioTextMap.set(\"buyerChanges\", \"Buyer Changes\");\r\n this.tooltipRadioTextMap.set(\"userMG\", \"User MG\");\r\n this.tooltipRadioTextMap.set(\"userADUs\", \"User ADUs\");\r\n this.tooltipRadioTextMap.set(\"inventoryCode\", \"Inventory Code\");\r\n this.tooltipRadioTextMap.set(\"program\", \"Program\");\r\n this.tooltipRadioTextMap.set(\"agency\", \"Agency\");\r\n this.tooltipRadioTextMap.set(\"advertiser\", \"Advertiser\");\r\n this.tooltipRadioTextMap.set(\"startDate\", \"Start Date\");\r\n this.tooltipRadioTextMap.set(\"endDate\", \"End Date\");\r\n this.tooltipRadioTextMap.set(\"date\", \"Date\");\r\n this.tooltipRadioTextMap.set(\"rcvPreempt\", \"$ Madegood PEs\");\r\n this.tooltipRadioTextMap.set(\"osPreempt\", \"$ O/S PEs\");\r\n this.tooltipRadioTextMap.set(\"rcvUnderDly\", \"Recovered UD\");\r\n this.tooltipRadioTextMap.set(\"osUnderDly\", \"O/s Under Dly\");\r\n this.tooltipRadioTextMap.set(\"primaryAe\", \"Primary AE\");\r\n this.tooltipRadioTextMap.set(\"region\", \"Region\");\r\n this.tooltipRadioTextMap.set(\"revCode1\", \"Rev code 1\");\r\n this.tooltipRadioTextMap.set(\"orderNoRevNo\", \"STN Order#-Rev#\");\r\n this.tooltipRadioTextMap.set(\"revCode2\", \"Rev code 2\");\r\n this.tooltipRadioTextMap.set(\"revCode3\", \"Rev code 3\");\r\n this.tooltipRadioTextMap.set(\"booked\", \"$ Booked\");\r\n this.tooltipRadioTextMap.set(\"spots\", \"Spots\");\r\n this.tooltipRadioTextMap.set(\"postedAudPercent\", \"Posted %\");\r\n this.tooltipRadioTextMap.set(\"revision\", \"Revision\");\r\n this.tooltipRadioTextMap.set(\"buyerOrderId\", \"ALT/REP Order#\");\r\n this.tooltipRadioTextMap.set(\"demo\", \"Demo\");\r\n this.tooltipRadioTextMap.set(\"postedAdu\", \"$ Posted ADUs\");\r\n this.tooltipRadioTextMap.set(\"scheduledAdu\", \"$ Scheduled ADUs\");\r\n this.tooltipRadioTextMap.set(\"audienceDeficit\", \"$ O/S Audience\");\r\n this.tooltipRadioTextMap.set(\"postedAudPercent\", \"Posted Audience %\");\r\n this.tooltipRadioTextMap.set(\"potentialUnitsValue\", \"POT Units\");\r\n this.tooltipRadioTextMap.set(\"bookedUnitsValue\", \"Booked Eq Units\");\r\n this.tooltipRadioTextMap.set(\"bookedAmountWithZeroRatingValue\", \"Total $ Booked\");\r\n this.tooltipRadioTextMap.set(\"bookedAmountPercentageWithZeroRatingValue\", \"% Against All Demos\");\r\n this.tooltipRadioTextMap.set(\"bookedAmountWithoutZeroRatingValue\", \"$Booked With Imps(’000)\");\r\n this.tooltipRadioTextMap.set(\"bookedAmountPercentageWithoutZeroRatingValue\", \"% Against All Demos\");\r\n\r\n this.tooltipRadioTextMap.set(\"totalBookedAmountValue\", \"Total $Booked\");\r\n this.tooltipRadioTextMap.set(\"averageUnitRateValue\", \" AUR\");\r\n this.tooltipRadioTextMap.set(\"totalBookedAmountWithRatingValue\", \"$Booked With Rating\");\r\n this.tooltipRadioTextMap.set(\"averageUnitRateWithRatingValue\", \"AUR With Rating\");\r\n\r\n this.tooltipRadioTextMap.set(\"totalBookedAmountWithImpressionValue\", \"$Booked With IMPS\");\r\n this.tooltipRadioTextMap.set(\"averageUnitRateWithImpressionValue\", \"AUR With IMPS\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedUnitsWithRatingValue\", \"Booked Units With Rating\");\r\n this.tooltipRadioTextMap.set(\"postedUnitsWithRatingValue\", \"Posted Units With Rating\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedUnitsWithImpressionValue\", \"Booked Units With IMPS\");\r\n this.tooltipRadioTextMap.set(\"postedUnitsWithImpressionValue\", \"Posted Units With IMPS\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedRatings\", \"Booked Rating\");\r\n this.tooltipRadioTextMap.set(\"postedRatings\", \"POSTED Rating\");\r\n this.tooltipRadioTextMap.set(\"PostedRating\", \"Posted RTG\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedImpressions\", \"Booked IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"postedImpressions\", \"Posted IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"PostedImpressions\", \"Posted IMP('000)\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedAverageRating\", \"Booked AU Rating\");\r\n this.tooltipRadioTextMap.set(\"postedAverageRating\", \"Posted AU Rating\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedAverageImpression\", \"Booked AU IMPS\");\r\n this.tooltipRadioTextMap.set(\"postedAverageImpression\", \"Posted AU IMPS\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedCppValue\", \"Booked CPP\");\r\n this.tooltipRadioTextMap.set(\"bookedEffectiveCppValue\", \"Effective CPP\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedCpmValue\", \"Booked CPM\");\r\n this.tooltipRadioTextMap.set(\"bookedEffectiveCpmValue\", \"Effective CPM\");\r\n\r\n this.tooltipRadioTextMap.set(\"orderSource\", \"Order Route\");\r\n this.tooltipRadioTextMap.set(\"orderCategory\", \"Rev Category\");\r\n this.tooltipRadioTextMap.set(\"cashOrTrade\", \"C/T\");\r\n this.tooltipRadioTextMap.set(\"revisionStartDate\", \"Revision Start Date\");\r\n this.tooltipRadioTextMap.set(\"name\", \"name\");\r\n this.tooltipRadioTextMap.set(\"role\", \"role\");\r\n this.tooltipRadioTextMap.set(\"stationCount\", \"stationCount\");\r\n this.tooltipRadioTextMap.set(\"stationList\", \"stationList\");\r\n this.tooltipRadioTextMap.set(\"approvedOn\", \"Approved On\");\r\n this.tooltipRadioTextMap.set(\"approvedBy\", \"Approved By\");\r\n this.tooltipRadioTextMap.set(\"ODImps\",\"Proj. OD IMPS\");\r\n this.tooltipRadioTextMap.set(\"UDImps\",\"Proj. UD IMPS\");\r\n this.tooltipRadioTextMap.set(\"ODGrp\",\"Proj. OD GRP\");\r\n this.tooltipRadioTextMap.set(\"UDGrp\",\"Proj. UD GRP\"); \r\n this.tooltipRadioTextMap.set(\"udImpsPercent\",\"Proj. UD %\");\r\n this.tooltipRadioTextMap.set(\"udGrpPercent\",\"Proj. UD GRP %\");\r\n this.tooltipRadioTextMap.set(\"odImpsPercent\",\"Proj. OD %\");\r\n this.tooltipRadioTextMap.set(\"odGrpPercent\",\"Proj. OD GRP %\");\r\n\r\n this.tooltipRadioTextMap.set(\"RevisionNumber\", \"Revision #\");\r\n this.tooltipRadioTextMap.set(\"RevisionType\", \"Revision Type\");\r\n this.tooltipRadioTextMap.set(\"GeneratedOn\", \"Generated On\");\r\n this.tooltipRadioTextMap.set(\"BookedValueForDisplay\", \"$ BOOKED\");\r\n this.tooltipRadioTextMap.set(\"BookedValue\", \"$ Booked\");\r\n this.tooltipRadioTextMap.set(\"BookedSpots\", \"Spots\");\r\n this.tooltipRadioTextMap.set(\"BookedGRP\", \"GRP\");\r\n this.tooltipRadioTextMap.set(\"BookedIMPSRevTab\", \"IMPS'(000)\");\r\n this.tooltipRadioTextMap.set(\"BookedCPP\", \"CPP\");\r\n this.tooltipRadioTextMap.set(\"BookedCPM\", \"CPM\");\r\n this.tooltipRadioTextMap.set(\"MGsValueForDisplay\", \"$ MGS\");\r\n this.tooltipRadioTextMap.set(\"MGsValue\", \"$ MGS\");\r\n this.tooltipRadioTextMap.set(\"ADUsValueForDisplay\", \"$ ADUS\");\r\n this.tooltipRadioTextMap.set(\"ADUsValue\", \"$ ADUS\");\r\n this.tooltipRadioTextMap.set(\"BuyerChangesValueForDisplay\", \"$ Buyer Change\");\r\n this.tooltipRadioTextMap.set(\"BuyerChangesValue\", \"$ Buyer Change\");\r\n this.tooltipRadioTextMap.set(\"UserChangesValueForDisplay\", \"$ Seller User Change\");\r\n this.tooltipRadioTextMap.set(\"UserChangesValue\", \"$ Seller User Change\");\r\n this.tooltipRadioTextMap.set(\"SellerLine\", \"Seller Line #\");\r\n this.tooltipRadioTextMap.set(\"BuyerLine\", \"Buy Line #\");\r\n this.tooltipRadioTextMap.set(\"SpotStatus\", \"Spot Status\");\r\n this.tooltipRadioTextMap.set(\"InventoryCode\", \"Inventory Code\");\r\n this.tooltipRadioTextMap.set(\"BuyerProgramName\", \"Buyer Program Name\");\r\n this.tooltipRadioTextMap.set(\"RevenueClass\", \"Revenue Class\");\r\n this.tooltipRadioTextMap.set(\"WeeklyAUR\", \"Booked Avg. Rate\");\r\n this.tooltipRadioTextMap.set(\"BookedRate\", \"Booked Rate\");\r\n this.tooltipRadioTextMap.set(\"BookedRTG\", \"Booked RTG\");\r\n this.tooltipRadioTextMap.set(\"BookedIMPS\", \"Booked IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"IMPS\", \"IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"AURTG\", \"Avg RTG\");\r\n this.tooltipRadioTextMap.set(\"AUIMPS\", \"Avg IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"PostedRatingsOrImpressions\", \"Posted RTG\");\r\n this.tooltipRadioTextMap.set(\"ScheduleFlightWeek\", \"Schedule Week\");\r\n this.tooltipRadioTextMap.set(\"ScheduledDay\", \"Scheduled Day\");\r\n this.tooltipRadioTextMap.set(\"AirStatus\", \"Air Status\");\r\n this.tooltipRadioTextMap.set(\"AirDateAndTime\", \"Air Date & Time\");\r\n this.tooltipRadioTextMap.set(\"AirDate\", \"Air Date\");\r\n this.tooltipRadioTextMap.set(\"NormalizedOrderedRating\", \"Normalized Booked RTG\");\r\n this.tooltipRadioTextMap.set(\"NormalizedOrderedImpressions\", \"Normalized Booked IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"NormalizedPostedRating\", \"Normalized Posted RTG\");\r\n this.tooltipRadioTextMap.set(\"NormalizedPostedImpressions\", \"Normalized Posted IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"AdId\", \"Ad-Id\");\r\n\r\n this.tooltipRadioTextMap.set(\"displayimps\", \"IMPS\");\r\n this.tooltipRadioTextMap.set(\"displayGrp\", \"GRP\");\r\n this.tooltipRadioTextMap.set(\"bookedSpotsForDisplay\", \"Spots\");\r\n this.tooltipRadioTextMap.set(\"displaySpots\", \"Spots\");\r\n\r\n this.tooltipRadioTextMap.set(\"estimateNo\", \"Estimate#\");\r\n this.tooltipRadioTextMap.set(\"primaryBuyer\", \"Primary Buyer\");\r\n this.tooltipRadioTextMap.set(\"primaryBuyerName\", \"Primary Buyer\");\r\n this.tooltipRadioTextMap.set(\"secondaryBuyerName\", \"Secondary Buyer\");\r\n this.tooltipRadioTextMap.set(\"secondaryBuyer\", \"Secondary Buyer\");\r\n this.tooltipRadioTextMap.set(\"timeoutDate\", \"Timeout Date\");\r\n this.tooltipRadioTextMap.set(\"DisplaytSpotStatusBI\", \"Spot Status\");\r\n this.tooltipRadioTextMap.set(\"LineSpot\", \"Line.Spot\");\r\n this.tooltipRadioTextMap.set(\"LurWindowName\", \"Political Window\");\r\n\r\n this.tooltipRadioTextMap.set(\"udValue\", \"Proj. $ UD\");\r\n this.tooltipRadioTextMap.set(\"odValue\", \"Proj. $ OD\");\r\n\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableInventoryCode\", \"Inventory Code\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableBuyerProgramName\", \"Buyer Program Name\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableStartTime\", \"Start Time\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableEndTime\", \"End Time\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableWeeklyAUR\", \"Booked Avg. Rate\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableDisplayRevenueClass\", \"Rev Class\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableActualWeekStartDate\", \"Week\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableWeekDay\", \"Day\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableDisplayLength\", \"Length\");\r\n\r\n this.tooltipRadioTextMap.set(\"ProjectedImpressions\", \"Projected IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"ProjectedRtg\", \"Projected RTG\");\r\n }\r\n\r\n selectOrUnselectCheckbox(rowData: any, columnKeys: any, isCheckboxSelected: any) {\r\n rowData[columnKeys] = !rowData[columnKeys];\r\n this.toggleCheckbox.emit({ rowData, columnKeys, isCheckboxSelected });\r\n }\r\n\r\n selectOrUnselectRadiobox(rowData: any, columnKeys: any, isCheckboxSelected: boolean) {\r\n if (rowData[columnKeys] == isCheckboxSelected) return;\r\n rowData[columnKeys] = isCheckboxSelected;\r\n this.toggleCheckbox.emit({ rowData, columnKeys, isCheckboxSelected });\r\n }\r\n\r\n selectUnselectAllRows() {\r\n this.toggleHeaderCheckbox.emit();\r\n }\r\n\r\n selectUnselectRow(rowData: any) {\r\n this.toggleRowCheckbox.emit(rowData);\r\n }\r\n\r\n undoCreditedSpot(data: any) {\r\n this.undoIconClicked.emit({ data, mgOrCredit: \"Credit\" });\r\n }\r\n\r\n undoMgSpot(data: any) {\r\n this.undoIconClicked.emit({ data, mgOrCredit: \"MakeGood\" });\r\n }\r\n\r\n //Sort and Filter Logic begins!\r\n closeTooltip() {\r\n\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\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 }\r\n else {\r\n let enabledHeaders: any[] = [];\r\n this.checkIfUniqueValuePresentForTheHeader(header, enabledHeaders);\r\n this.openTooltip(tooltip, enabledHeaders, header);\r\n\r\n if (window.innerWidth < 1500 && window.innerHeight < 768 && !this.annaFilterService.sliderSet.has(header.filterSortObjectKeys[0])) {\r\n this.columnFilterOpened.emit();\r\n }\r\n\r\n this.showCheckboxesForTimeFilter = this.gtGeneralConfig.component == 'SPOTDETAILS' || this.gtGeneralConfig.component == 'EXCLUDEINVENTORYPOPUP' || this.gtGeneralConfig.component == 'RATING';\r\n this.showFilterTooltipTabs = header.filterSortObjectKeys.length > 1;\r\n this.bindValueFuncCalled = false;\r\n }\r\n }\r\n\r\n checkIfUniqueValuePresentForTheHeader(header: IHeaderInfo, enabledHeaders: any[]) {\r\n header.filterSortObjectKeys.forEach((item: string) => {\r\n let dataToCheck = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData, item);\r\n if (item == \"period\") {\r\n let uniqStartDate = uniq(dataToCheck.map((u: { [x: string]: any; }) => u[\"startDate\"]));\r\n let uniqEndDate = uniq(dataToCheck.map((u: { [x: string]: any; }) => u[\"endDate\"]));\r\n if (uniqStartDate.length > 1 || uniqEndDate.length > 1 || this.isTooltipActive([item])) {\r\n enabledHeaders.push(item);\r\n }\r\n }\r\n\r\n else {\r\n let values = dataToCheck.map((u: { [x: string]: any; }) => u[item]);\r\n // if last applied filter is this header, push it alos as enabledHeader\r\n let activeAndLastlyAppliedHeader = false;\r\n if (this.annaFilterService.appliedFiltersArray.length > 0 &&\r\n this.annaFilterService.appliedFiltersArray[this.annaFilterService.appliedFiltersArray.length - 1] == item) {\r\n activeAndLastlyAppliedHeader = true;\r\n }\r\n if (header.filter == \"CHECKBOX\" && (uniq(values).filter(n => n != null).length > 1 || activeAndLastlyAppliedHeader)) {\r\n enabledHeaders.push(item);\r\n }\r\n else if (header.filter != \"CHECKBOX\" && (uniq(values).filter(n => n != null && n != \"-\").length > 1 || activeAndLastlyAppliedHeader)) {\r\n enabledHeaders.push(item);\r\n }\r\n }\r\n });\r\n }\r\n\r\n openTooltip(tooltip: any, header: any, columnHeader: IHeaderInfo) {\r\n this.closeTooltip();\r\n this.tooltip = tooltip;\r\n this.tooltip.open();\r\n //convert key into the header\r\n this.filterTabObjects = header.map((key: string, index: number) => {\r\n let value = this.tooltipRadioTextMap.has(key)\r\n ? this.tooltipRadioTextMap.get(key)\r\n : key; //change to display name\r\n return new radioButtonModel(key, value, columnHeader.isSortRequired[index], columnHeader.isFilterRequired[index]);\r\n });\r\n }\r\n\r\n disableEnableEachColumnTooltipIcon() {\r\n this.tableHeaders.forEach(header => {\r\n\r\n header.headerInfo.forEach(item => {\r\n if (item.showTooltipIcon) {\r\n\r\n let values = [];\r\n item.disableTooltipIcon = true;\r\n\r\n item.filterSortObjectKeys.forEach(key => {\r\n\r\n let latestFilters = this.annaFilterService.appliedFiltersArray;\r\n\r\n if (latestFilters.length > 0 && item.disableTooltipIcon && latestFilters[latestFilters.length - 1] == key) {\r\n item.disableTooltipIcon = false;\r\n }\r\n\r\n if (item.disableTooltipIcon) {\r\n\r\n if (key == \"period\") {\r\n let uniqStartDate = uniq(this.tableData.map((u: { [x: string]: any; }) => u[\"startDate\"]));\r\n let uniqEndDate = uniq(this.tableData.map((u: { [x: string]: any; }) => u[\"endDate\"]));\r\n\r\n item.disableTooltipIcon = (uniqStartDate.length > 1 || uniqEndDate.length > 1) ? false : true;\r\n }\r\n else {\r\n values = this.tableData.map((u: { [x: string]: any; }) => u[key]);\r\n if ((item.filter == \"CHECKBOX\" && uniq(values).filter(n => n != null).length > 1) || (item.filter != \"CHECKBOX\" && 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 });\r\n\r\n\r\n }\r\n\r\n setMarginLeftForFilterIcon() {\r\n let elementArr = this.viewChildTableHeaders.toArray();\r\n elementArr.forEach((item) => {\r\n let childDivElements = item.nativeElement.children;\r\n\r\n if (childDivElements.length == 2) {\r\n let firstParagraphOffsetWidth: number = childDivElements[0]?.children[0]?.offsetWidth ? childDivElements[0]?.children[0]?.offsetWidth : 0;\r\n let secondParagraphOffsetWidth: number = childDivElements[1].children[0]?.offsetWidth ? childDivElements[1].children[0]?.offsetWidth : 0;\r\n\r\n if (firstParagraphOffsetWidth > secondParagraphOffsetWidth) {\r\n let diff = firstParagraphOffsetWidth - secondParagraphOffsetWidth;\r\n if (childDivElements[0].children.length == 2) {\r\n childDivElements[0].children[1].style.marginLeft = 4 + 'px';\r\n }\r\n\r\n if (childDivElements[1].children.length == 2) {\r\n\r\n childDivElements[1].children[1].style.marginLeft = diff + 4 + 'px';\r\n }\r\n }\r\n else {\r\n let diff = secondParagraphOffsetWidth - firstParagraphOffsetWidth;\r\n if (childDivElements[0].children.length == 2) {\r\n childDivElements[0].children[1].style.marginLeft = diff + 4 + 'px';\r\n }\r\n\r\n if (childDivElements[1].children.length == 2) {\r\n\r\n childDivElements[1].children[1].style.marginLeft = 4 + 'px';\r\n }\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n dataRowClicked(rowData: any) {\r\n this.rowClicked.emit(rowData);\r\n }\r\n\r\n radioButtonClicked(data: any, action: string, isDisabled: boolean) {\r\n if (!isDisabled) {\r\n this.radioButtonSelected.emit({ data, action });\r\n }\r\n }\r\n\r\n bindTheValueToSellerGroupTooltip(sellerGroupHierarchy: RatingSellerGroupHierarchy[], tooltip: any): void {\r\n if (this.hierarchyTooltip && this.hierarchyTooltip.open) {\r\n this.hierarchyTooltip.close();\r\n }\r\n this.sellerGroupHierarchy = sellerGroupHierarchy;\r\n this.hierarchyTooltip = tooltip;\r\n this.hierarchyTooltip.open();\r\n }\r\n\r\n iconClicked(rowData: any, iconClass: string) {\r\n\r\n if (\"orderId\" in rowData && iconClass.includes(\"mdi-star\")) {\r\n this.selectedStarredOrderId = rowData.orderId;\r\n }\r\n\r\n this.gtIconClicked.emit({ data: rowData, iconClass: iconClass });\r\n }\r\n\r\n svgIconClicked(data: GtColumnIconEmittedData) {\r\n this.gtSVGIconClicked.emit(data);\r\n }\r\n\r\n textActionClicked(rowData: any, id: any, columnHeader: IHeaderInfo) {\r\n this.gtTextActionClicked.emit({ data: rowData, id: id, columnHeader: columnHeader, isIconClicked: false });\r\n }\r\n\r\n iconClickedOnStringIconActionType(rowData: any, id: any, columnHeader: IHeaderInfo) {\r\n this.gtTextActionClicked.emit({ data: rowData, id: id, columnHeader: columnHeader, isIconClicked: true });\r\n }\r\n\r\n innerHTMLCellClicked(event: any, rowData: any) {\r\n this.gtInnerHTMLClicked.emit({ event, rowData });\r\n }\r\n\r\n viewDetailsClicked(rowData: any) {\r\n this.gtViewDetailClicked.emit({ data: rowData });\r\n }\r\n\r\n setActiveStateObject() {\r\n this.annaFilterService.isFilterSortActive = !this.annaFilterService.resetFilterSortActiveStatus || this.multipleTablesPresent\r\n ? this.annaFilterService.isFilterSortActive\r\n : {};\r\n this.tableHeaders.forEach(item => {\r\n item.headerInfo.forEach(header => {\r\n if (header.showTooltipIcon) {\r\n let key = header.filterSortObjectKeys.join(',');\r\n header.joinedFilterSortObjectKeys = key;\r\n // ANNA-4113 fix\r\n if (this.annaFilterService.resetFilterSortActiveStatus) {\r\n this.annaFilterService.isFilterSortActive[key] = false;\r\n }\r\n }\r\n })\r\n });\r\n this.annaFilterService.resetFilterSortActiveStatus = true;\r\n }\r\n\r\n setIsDifference(value: boolean) {\r\n this.isDifferenceLessThan25Percent = value;\r\n }\r\n\r\n resetIndex() {\r\n this.start = 0;\r\n this.end = this.limit + this.start;\r\n }\r\n\r\n onTableContainerScroll(e: any) {\r\n const tableViewHeight = e.target.offsetHeight; // viewport\r\n const tableScrollHeight = e.target.scrollHeight; // length of all table\r\n const scrollLocation = e.target.scrollTop; // how far user scrolled\r\n\r\n this.removeTooltipOnScroll();\r\n\r\n // If the user has scrolled within 150px of the bottom, add more data\r\n const buffer = 150;\r\n const limit = tableScrollHeight - tableViewHeight - buffer;\r\n if (scrollLocation > limit) {\r\n let data = this.getTableData(this.start, this.end);\r\n this.renderedData = this.renderedData.concat(data);\r\n this.updateIndex();\r\n }\r\n this.tableContainerScrolled(e);\r\n }\r\n\r\n getTableData(start: number, end: number) {\r\n return this.tableData.filter((value, index) => index >= start && index < end);\r\n }\r\n\r\n updateIndex() {\r\n this.start = this.end;\r\n this.end = this.limit + this.start;\r\n }\r\n\r\n setInitialRowsForTable() {\r\n this.resetIndex();\r\n this.renderedData = this.getTableData(this.start, this.end);\r\n this.updateIndex();\r\n }\r\n\r\n spotDetailsDownloadClicked(parentChildOrTotalRow: \"DATAROW\" | \"TOTALROW\", rowdata?: any) {\r\n if (rowdata) {\r\n this.selectedInventoryIdForDownload = rowdata.inventoryCodeId;\r\n this.selectedDemographicForDownload = rowdata.demographic;\r\n } else {\r\n this.selectedInventoryIdForDownload = null;\r\n this.selectedDemographicForDownload = null;\r\n }\r\n this.selectedRowTypeForDownload = parentChildOrTotalRow;\r\n this.downloadSpotDetails.emit({\r\n parentChildOrTotalRow: parentChildOrTotalRow,\r\n inventoryCodeId: this.selectedInventoryIdForDownload,\r\n demographic: this.selectedDemographicForDownload\r\n })\r\n }\r\n\r\n tableContainerScrolled(event: any) {\r\n this.isScrolledLeft = event.target.scrollLeft > 0;\r\n this.removeTooltipOnScroll();\r\n }\r\n\r\n mouseEnterOnStringTextActionType(rowData: any, tooltipKey: string) {\r\n this.textActionTooltip = rowData[tooltipKey];\r\n this.notificationIconHover.emit({ rowData: rowData, type: \"on-enter\" })\r\n }\r\n\r\n mouseEnterOnStringTextActionTypeContainingTable(rowData: any, tooltipKey: string) {\r\n this.tooltipContainingTable = rowData[tooltipKey];\r\n }\r\n\r\n mouseLeaveTextActionType(rowData: any) {\r\n this.notificationIconHoverLeave.emit({ rowData: rowData, type: \"on-leave\" })\r\n }\r\n\r\n mouseEnterOnTextActionType(rowData: any, tooltipKey: string) {\r\n this.textActionTooltip = rowData[tooltipKey];\r\n }\r\n\r\n onClickableDataClicked(Rowdata: any, id: number) {\r\n this.clickableDataClicked.emit({ data: Rowdata, id: id });\r\n }\r\n\r\n removeTooltipOnScroll() {\r\n const elements = document.getElementsByClassName(\"remarks-info-tooltip\");\r\n // const tooltipElements = document.getElementsByClassName(\"tooltip\");\r\n const gtTooltip = document.getElementsByClassName(\"remove-on-scroll-class\");\r\n const tooltipElements = document.getElementsByClassName(\"tooltip\");\r\n\r\n while (elements && elements.length > 0) {\r\n elements[0].remove();\r\n }\r\n while (tooltipElements && tooltipElements.length > 0) {\r\n tooltipElements[0].remove();\r\n this.tooltip = null;\r\n }\r\n while (gtTooltip && gtTooltip.length > 0) {\r\n gtTooltip[0].remove();\r\n }\r\n }\r\n\r\n iconClickedInTotalRow(colName: string) {\r\n this.totalRowIconClicked.emit(colName);\r\n }\r\n\r\n changesMadeInEditableInputBox(event: any, editedObject: any, pasteEvent: boolean) {\r\n let enteredValue = pasteEvent ? event.clipboardData.getData('text') : event.key;\r\n let dotIndex = editedObject.value.indexOf(\".\");\r\n\r\n if (event.keyCode != 8 && event.keyCode != 46 && !(event.keyCode >= 37 && event.keyCode <= 40) &&\r\n (!editedObject?.allowSpecialCharacters && !(/[`0-9.]/.test(enteredValue)) ||\r\n (editedObject.isDecimalPointCheckRequired && dotIndex >= 0\r\n && ((event?.target?.selectionStart > dotIndex) && (editedObject.value.length - ((dotIndex) + 1)) >= editedObject.maxDecimalPointsAllowed)))) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n editableInputValueChanged(value: any, row: any, keyEdited: string) {\r\n this.editableInputEdited.emit({ row: row, value: value, keyEdited: keyEdited });\r\n }\r\n\r\n radioButtonIconClicked(data: any) {\r\n this.radioButtonMessageIconClicked.emit(data)\r\n }\r\n\r\n filterApplied(tableData: any[]) {\r\n this.tableData = tableData;\r\n this.setInitialRowsForTable();\r\n this.disableEnableEachColumnTooltipIcon();\r\n this.filterAppliedToTable.emit(tableData);\r\n this.closeTooltip();\r\n }\r\n\r\n sortingApplied(tableData: any[]) {\r\n this.tableData = tableData;\r\n this.setInitialRowsForTable();\r\n this.disableEnableEachColumnTooltipIcon();\r\n this.sortingAppliedToTable.emit(tableData);\r\n this.closeTooltip();\r\n }\r\n}\r\n","<div id=\"generic-table-conatiner\" class=\"table-container {{gtGeneralConfig?.tableOuterContainerName}} {{tableBottomBorderClass}}\"\r\n [ngClass]=\"{ 'scroll-left-shadow-effect': isScrolledLeft, 'clickable-row': clickableRow, 'no-data-table': (isNoDataToDisplaySubject$ | async) }\"\r\n (scroll)=\"onTableContainerScroll($event)\">\r\n <div [class]=\"gtGeneralConfig.tableContainerName\" class=\"horizontal-scroll-for-table-container\" [ngStyle]=\"{\r\n height:\r\n tableData.length < maximumRowsWhichCanBeRenderedWithoutScroll\r\n ? 'calc(' +\r\n ((gtDimension.rowHeight) * tableData.length +\r\n (!tableData.length || !gtGeneralConfig.totalRow\r\n ? gtDimension.headerHeight\r\n : gtDimension.headerHeight + gtDimension.rowHeight)) +\r\n 'px)'\r\n : gtDimension.tableHeight\r\n }\">\r\n <table class=\"gt\" [ngClass]=\"tableClass\" mat-table [dataSource]=\"renderedData\">\r\n <tr class=\"header-row\" mat-header-row *matHeaderRowDef=\"tableColumns; sticky: true\"\r\n [style.height.px]=\"gtDimension.headerHeight\"></tr>\r\n <tr class=\"total-row\" mat-header-row [style.height.px]=\"gtDimension.rowHeight\"\r\n *matHeaderRowDef=\"totalRowColumns; sticky: true\" [class.hidden]=\"\r\n showSkeletonLoading ||\r\n (!showSkeletonLoading && !tableData.length ) ||\r\n (isNoDataToDisplaySubject$ | async) || \r\n (!showSkeletonLoading && !gtGeneralConfig.totalRow)\r\n \"></tr>\r\n <tr [class]=\"rowData.gtClass\" [ngClass]=\"{'no-border-tr': (isNoDataToDisplaySubject$ | async)}\" mat-row\r\n *matRowDef=\"let rowData; columns: tableColumns\" [style.height.px]=\"gtDimension.rowHeight\"\r\n (click)=\"dataRowClicked(rowData)\"></tr>\r\n\r\n <!-- TOTAL ROW -->\r\n <ng-container [matColumnDef]=\"column.colName\" *ngFor=\"let column of totalRowInfo; trackBy: trackByFn\">\r\n <td mat-header-cell *matHeaderCellDef [attr.colspan]=\"column.colspan\" class=\"{{column.class}}\">\r\n\r\n <ng-container *ngIf=\"column['isActionColumn']\">\r\n <a *ngFor=\"let data of column.actionData\" [class]=\"data.class\"\r\n (click)=\"onClickableDataClicked({}, data.id)\">\r\n {{ data.name }}\r\n </a>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"column['isIconColumn']\">\r\n <i class=\"{{column?.iconData?.class}}\" (click)=\"iconClickedInTotalRow(column?.colName)\">\r\n </i>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!column['isActionColumn']\">\r\n <strong class=\"upper-label\">{{ column.data }}</strong>\r\n <ng-container *ngIf=\"column.lowerData\">\r\n <br>\r\n <span *ngIf=\"column.colName == 'total-potential-booked-unit' && gtGeneralConfig.component == 'RATING';\r\n else columnLowerData\" class=\"clickable-data\"\r\n (click)=\"spotDetailsDownloadClicked('TOTALROW')\"\r\n [ngClass]=\"{ 'disabled-clickable-data': downloadInProgress }\">{{ column.lowerData }}\r\n <span class=\"material-icons spot-details-download-icons\">get_app</span>\r\n <ng-container *ngIf=\"downloadInProgress \r\n && 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 class=\"{{column.tooltipIconClass}}\" container=\"body\" [ngbTooltip]=\"column.tooltipMessage\"\r\n tooltipClass=\"gt-total-row-tooltip\" placement=\"bottom\"></i>\r\n </ng-container>\r\n <ng-container *ngIf=\"gtGeneralConfig.component == 'LUR_VIOLATIONS' && column.tooltipMessage\">\r\n <i class=\"mi mdi-info-outline info-label\" container=\"body\"\r\n [ngbTooltip]=\"lurViolationTotalRowToolTip\" tooltipClass=\"gt-total-row-tooltip\"\r\n placement=\"bottom\"></i>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <!-- MAIN ROW -->\r\n <ng-container [matColumnDef]=\"columnDef.headerInfo[0].objectKey\"\r\n *ngFor=\"let columnDef of tableHeaders; trackBy: trackByFn\">\r\n <th #tableHeader nowrap mat-header-cell *matHeaderCellDef [style.width]=\"columnDef.width\">\r\n <div class=\"row mx-0\" *ngFor=\"let header of columnDef.headerInfo; let j = index;\">\r\n <p *ngIf=\"header.typeOfHeaderData === 'STRING'\"\r\n [ngClass]=\"{ 'upper-label': j === 0, 'lower-label': j === 1 }\">\r\n <ngx-skeleton-loader *ngIf=\"header.name == null\" count=\"1\"\r\n [theme]=\"{ height: '10px', display: 'block', width: columnDef.width, 'max-width':'calc(100% - 20px)' }\">\r\n </ngx-skeleton-loader>\r\n <ng-container *ngIf=\"header.name\">\r\n {{ header.name }}\r\n </ng-container>\r\n\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'impsInfoTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"impsInfoTooltip\" container=\"body\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'spotsColumnEquivalizationMessageTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" container=\"body\" #t=\"ngbTooltip\"\r\n container=\"body\" [ngbTooltip]=\"spotsColumnEquivalizationMessageTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'underDeliveryTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" container=\"body\" #t=\"ngbTooltip\"\r\n container=\"body\" [ngbTooltip]=\"underDeliveryTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'overDeliveryTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" container=\"body\" #t=\"ngbTooltip\"\r\n container=\"body\" [ngbTooltip]=\"overDeliveryTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'ratingInfoTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"ratingInfoTooltip\" container=\"body\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'rateInfoTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"rateInfoTooltip\" container=\"body\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'ongoingRevBookedColumnTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"ongoingRevBookedColumnTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'completedRevBookedColumnTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"completedRevBookedColumnTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'avgBookedRate'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"avgBookedRate\" placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'avgBookedRtg'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"avgBookedRtg\" placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'avgBookedImps'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"avgBookedImps\" placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'automationTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"automationTooltip\" placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'rebateImpact'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"rebateImpact\" placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'projectedImpsRtg'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"projectedImpsRtg\" placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n </p>\r\n\r\n <ng-container *ngIf=\"header.typeOfHeaderData === 'CHECKBOX'\">\r\n <span *ngIf=\"gtGeneralConfig.isHeaderChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\" (click)=\"selectUnselectAllRows()\">\r\n check_box\r\n </span>\r\n <span *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 check_box_outline_blank\r\n </span>\r\n </ng-container>\r\n\r\n <div *ngIf=\"gtGeneralConfig.showAllColumnFilter\" class=\"sort-filter-container\">\r\n <ng-container *ngIf=\"header.showTooltipIcon\">\r\n <!-- Active tooltip Functionality -->\r\n <ng-container *ngIf=\"header.filter === 'CHECKBOX'\">\r\n\r\n <span class=\"mdi mdi-filter-variant\" [ngClass]=\"{\r\n active: annaFilterService.isFilterSortActive && annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys], \r\n disabled: header.disableTooltipIcon || showSkeletonLoading\r\n }\" [ngbTooltip]=\"filterTooltip\" placement=\"{{filterAlignment}}\"\r\n container=\"body\" tooltipClass=\"non-edit-checkbox-tooltip\"\r\n [autoClose]=\"'outside'\" triggers=\"manual\" #t=\"ngbTooltip\"\r\n (click)=\"bindTheValueToToolTip(t, header)\" (hidden)=\"closeTooltip()\">\r\n </span><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'SLIDER'\">\r\n <span class=\"mdi mdi-filter-variant\" [ngClass]=\"{\r\n active: annaFilterService.isFilterSortActive && annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\r\n disabled: header.disableTooltipIcon || showSkeletonLoading\r\n }\" [ngbTooltip]=\"sliderToolTip\" placement=\"bottom left-top\" container=\"body\"\r\n tooltipClass=\"non-edit-slider-tooltip\" [autoClose]=\"'outside'\" triggers=\"manual\"\r\n #t1=\"ngbTooltip\" (click)=\"bindTheValueToToolTip(t1, header)\"\r\n (hidden)=\"closeTooltip()\">\r\n </span><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'DATE'\">\r\n <span class=\"mdi mdi-filter-variant\" [ngClass]=\"{\r\n active: annaFilterService.isFilterSortActive && annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\r\n disabled: header.disableTooltipIcon || showSkeletonLoading\r\n }\" [ngbTooltip]=\"datePickerTooltip\" placement=\"bottom auto\" container=\"body\"\r\n tooltipClass=\"non-edit-datepicker-tooltip\" [autoClose]=\"'outside'\"\r\n triggers=\"manual\" #t2=\"ngbTooltip\" (click)=\"bindTheValueToToolTip(t2, header)\"\r\n (hidden)=\"closeTooltip()\">\r\n </span><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'WEEK'\">\r\n <span class=\"mdi mdi-filter-variant\" [ngClass]=\"{\r\n active: annaFilterService.isFilterSortActive && annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\r\n disabled: header.disableTooltipIcon || showSkeletonLoading\r\n }\" [ngbTooltip]=\"weekPickerToolTip\" placement=\"bottom left-top\"\r\n container=\"body\" [autoClose]=\"'outside'\" triggers=\"manual\" #t3=\"ngbTooltip\"\r\n (click)=\"bindTheValueToToolTip(t3, header)\" (hidden)=\"closeTooltip()\">\r\n </span><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'TIME'\">\r\n <span class=\"mdi mdi-filter-variant\" [ngClass]=\"{\r\n active: annaFilterService.isFilterSortActive && annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\r\n disabled: header.disableTooltipIcon || showSkeletonLoading\r\n }\" [ngbTooltip]=\"timeFilterToolTip\" placement=\"bottom left-top auto\"\r\n container=\"body\" tooltipClass=\"non-edit-time-tooltip\" [autoClose]=\"'outside'\"\r\n triggers=\"manual\" #t4=\"ngbTooltip\" (click)=\"bindTheValueToToolTip(t4, header)\"\r\n (hidden)=\"closeTooltip()\">\r\n </span><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 *ngIf=\"header.tooltip && header.tooltip.name == 'lurViolationInfoTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"lurViolationInfoTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n\r\n </div>\r\n </div>\r\n </th>\r\n\r\n <ng-container *matCellDef=\"let ROW_DATA\">\r\n <td mat-cell [style.background]=\"ROW_DATA.backgroundColor\" \r\n [style.border]=\"ROW_DATA.border\"\r\n class=\"{{ROW_DATA.rowClass}}\"\r\n [ngClass]=\"ROW_DATA[columnDef.headerInfo[0].objectKey + 'TdClass']\"\r\n [attr.rowspan]=\"ROW_DATA[columnDef.headerInfo[0].objectKey + 'Rowspan']\"\r\n *ngIf=\"!hideSomeTds ||( hideSomeTds && !ROW_DATA['hide' + columnDef.headerInfo[0].objectKey + 'Td'])\"\r\n >\r\n <ngx-skeleton-loader *ngIf=\"showSkeletonLoading\" count=\"1\" [theme]=\"{ height: '10px', display: 'block' }\">\r\n </ngx-skeleton-loader>\r\n\r\n <ng-container *ngIf=\"!showSkeletonLoading\">\r\n <ng-container *ngIf=\"tableData.length > 0 && !(isNoDataToDisplaySubject$ | async)\">\r\n <ng-container\r\n *ngFor=\"let subline of columnDef.headerInfo; let subLineIndex = index; trackBy: trackByFn\">\r\n <div showEllipsisTextOnHover>\r\n <ng-container [ngSwitch]=\"columnDef.headerInfo[subLineIndex].typeOfBodyData\">\r\n <ng-container *ngSwitchCase=\"'ICON'\">\r\n <i *ngIf=\"!(starredInProgress && ROW_DATA.orderId == selectedStarredOrderId)\"\r\n [class]=\"ROW_DATA.iconClass\"\r\n (click)=\"iconClicked(ROW_DATA,ROW_DATA.iconClass)\"\r\n ngbTooltip=\"{{ ROW_DATA.iconTitleText }}\" placement=\"bottom\"\r\n container=\"body\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"></i>\r\n <ng-container\r\n *ngIf=\"starredInProgress && ROW_DATA.orderId == selectedStarredOrderId\">\r\n <div class=\"spinner-for-button-directive\"></div>\r\n </ng-container>\r\n\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'ICON_CELL'\">\r\n <ng-container\r\n *ngFor=\"let action of ROW_DATA[columnDef.headerInfo[subLineIndex].actionKey]\">\r\n\r\n <i *ngIf=\"action.showIcon\" [class]=\"action.iconClass\"\r\n (mouseenter)=\"mouseEnterOnStringTextActionType(ROW_DATA, columnDef.headerInfo[subLineIndex].tooltipKey)\"\r\n placement=\"bottom auto\" container=\"body\" [autoClose]=\"true\"\r\n tooltipClass=\"team-user-tooltip remove-on-scroll-class\"\r\n [ngbTooltip]=\"action.showTooltip ? userLoggedInDetails : null\"\r\n (click)=\"textActionClicked(ROW_DATA, action.id, columnDef.headerInfo[subLineIndex])\"\r\n [disableTooltip]=\"!action.showTooltip\">\r\n </i>\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 </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'HTML_STRING'\">\r\n <p [innerHTML]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n (click)=\"innerHTMLCellClicked($event,ROW_DATA)\"></p>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'SVG_ICON'\">\r\n <anna-core-anna-icon-column [componentName]=\"gtGeneralConfig.component\"\r\n [dataObject]=\"ROW_DATA\"\r\n [iconToShow]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey] \"\r\n (onColumnIconClicked)=\"svgIconClicked($event)\"></anna-core-anna-icon-column>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'TEXT_ACTIONS'\">\r\n <ng-container\r\n *ngFor=\"let text of ROW_DATA[columnDef.headerInfo[subLineIndex].actionKey]\">\r\n <button *ngIf=\"text.showTooltip\"\r\n (click)=\"textActionClicked(ROW_DATA,text.id, columnDef.headerInfo[subLineIndex])\"\r\n [disabled]=\"text.isDisabled\" class=\"{{text.class}}\"\r\n (mouseenter)=\"mouseEnterOnTextActionType(ROW_DATA, columnDef.headerInfo[subLineIndex].tooltipKey)\"\r\n [ngbTooltip]=\"textActionTooltipTemplate\" placement=\"auto\"\r\n container=\"body\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\">\r\n {{ text.name}}\r\n </button>\r\n\r\n <button *ngIf=\"!text.showTooltip\"\r\n (click)=\"textActionClicked(ROW_DATA,text.id, columnDef.headerInfo[subLineIndex])\"\r\n [disabled]=\"text.isDisabled\" class=\"{{text.class}}\">\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 *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n [ngClass]=\"{\r\n 'disable-checkbox': ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\r\n }\" class=\"material-icons custom-column-checkbox-checked\" (click)=\"\r\n selectOrUnselectCheckbox(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].objectKey,\r\n false\r\n )\r\n \">\r\n check_box\r\n </span>\r\n <span *ngIf=\"!ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n class=\"material-icons custom-column-checkbox-unchecked\" [ngClass]=\"{\r\n 'disable-checkbox': ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\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 check_box_outline_blank\r\n </span>\r\n\r\n <ng-container\r\n *ngFor=\"let action of ROW_DATA[columnDef.headerInfo[subLineIndex].actionKey]\">\r\n <i *ngIf=\"action.showIcon\" [class]=\"action.iconClass\"\r\n [ngClass]=\"{'disabled': action.disabledIcon}\"\r\n (mouseenter)=\"mouseEnterOnStringTextActionTypeContainingTable(ROW_DATA, columnDef.headerInfo[subLineIndex].tooltipKey)\"\r\n placement=\"bottom auto\" container=\"body\" [autoClose]=\"true\"\r\n tooltipClass=\"tooltip-containing-table remove-on-scroll-class\"\r\n [ngbTooltip]=\"tooltipContainingTableTemplate\">\r\n </i>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'CLICKABLE_DATA'\">\r\n <a *ngFor=\"let text of ROW_DATA[columnDef.headerInfo[subLineIndex].actionKey]\"\r\n [class]=\"text.class\"\r\n (click)=\"onClickableDataClicked(ROW_DATA, text.id)\">\r\n {{ text.name }}\r\n </a>\r\n <span\r\n *ngIf=\"subline.objectKey == 'displayBookedUnits' && gtGeneralConfig.component == 'RATING'\"\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\r\n class=\"material-icons spot-details-download-icons\">get_app</span>\r\n <ng-container *ngIf=\"downloadInProgress \r\n && ROW_DATA.inventoryCodeId == selectedInventoryIdForDownload \r\n && ROW_DATA.demographic == selectedDemographicForDownload \">\r\n <ng-container\r\n [ngTemplateOutlet]=\"circularProgressBar\"></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=\"let action of ROW_DATA[columnDef.headerInfo[subLineIndex].actionKey]\">\r\n <span [class]=\"action.additionalTextBeforeLinkClass\"\r\n [innerHtml]=\"action.additionalTextBeforeLink\"\r\n ngbTooltip=\"{{ action.additionalTextBeforeLink }}\"\r\n placement=\"bottom\" container=\"body\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\r\n [disableTooltip]=\"!action.enableTooltipForAdditionalText\"></span>\r\n\r\n <ng-container *ngIf=\"action && action.typeOfData== 'STRING'\">\r\n {{ action.data }}\r\n </ng-container>\r\n\r\n <a [id]=\"action.id\" *ngIf=\"action.showLink\"\r\n (click)=\"textActionClicked(ROW_DATA, action.id, columnDef.headerInfo[subLineIndex])\"\r\n [class]=\"action.linkClass\"\r\n [ngClass]=\"{'disabled': action.disabledLink}\">{{action.data}}</a>\r\n <span ngbTooltip=\"{{ action.additionalTextAfterLink }}\"\r\n placement=\"bottom\" 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 {{ action.additionalTextAfterLink }}\r\n </span>\r\n\r\n <ng-container *ngIf=\"action.showTooltip\">\r\n <ng-container *ngIf=\"action.tooltipData.innerHtml\">\r\n\r\n <i *ngIf=\"action.showIcon\" [class]=\"action.iconClass\"\r\n [ngClass]=\"{'disabled': action.disabledIcon}\"\r\n (mouseenter)=\"mouseEnterOnStringTextActionTypeContainingTable(ROW_DATA, columnDef.headerInfo[subLineIndex].tooltipKey)\"\r\n placement=\"bottom auto\" container=\"body\"\r\n [autoClose]=\"true\"\r\n tooltipClass=\"tooltip-containing-table remove-on-scroll-class\"\r\n [ngbTooltip]=\"tooltipContainingTableTemplate\">\r\n </i>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!action.tooltipData.tooltipTableBody\">\r\n <i *ngIf=\"action.showIcon\" [class]=\"action.iconClass\"\r\n [ngClass]=\"{'disabled': action.disabledIcon}\"\r\n (click)=\"iconClickedOnStringIconActionType(ROW_DATA, action.id, columnDef.headerInfo[subLineIndex])\"\r\n (mouseleave)=\"mouseLeaveTextActionType(ROW_DATA)\"\r\n (mouseenter)=\"mouseEnterOnStringTextActionType(ROW_DATA, columnDef.headerInfo[subLineIndex].tooltipKey)\"\r\n [placement]=\"action.tooltipPlacement ? action.tooltipPlacement : 'bottom auto'\"\r\n container=\"body\" [autoClose]=\"true\"\r\n tooltipClass=\"team-user-tooltip remove-on-scroll-class {{ action.tooltipClass }}\"\r\n [ngbTooltip]=\"userLoggedInDetails\">\r\n </i>\r\n <ng-container *ngIf=\"action['showSvgIcon']\">\r\n <anna-core-anna-est-icon-template\r\n class=\"float-right\" \r\n *ngIf=\"action['svgIconName'] == 'anna-icon'\"\r\n (mouseleave)=\"mouseLeaveTextActionType(ROW_DATA)\"\r\n (mouseenter)=\"mouseEnterOnStringTextActionType(ROW_DATA, columnDef.headerInfo[subLineIndex].tooltipKey)\"\r\n [placement]=\"action.tooltipPlacement ? action.tooltipPlacement : 'bottom auto'\"\r\n tooltipClass=\"team-user-tooltip remove-on-scroll-class {{ action['tooltipClass'] }}\"\r\n [ngbTooltip]=\"userLoggedInDetails\"\r\n container=\"body\" [autoClose]=\"true\">\r\n </anna-core-anna-est-icon-template>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!action.showTooltip\">\r\n <i *ngIf=\"action.showIcon\" [class]=\"action.iconClass\"\r\n [ngClass]=\"{'disabled': action.disabledIcon}\"\r\n (click)=\"iconClickedOnStringIconActionType(ROW_DATA, action.id, columnDef.headerInfo[subLineIndex])\">\r\n </i>\r\n </ng-container>\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'STRING_OR_INPUT'\">\r\n <ng-container *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]?.type == 'STRING';\r\n else inputBox\">\r\n <span\r\n [innerHtml]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]?.value\"></span>\r\n </ng-container>\r\n <ng-template #inputBox>\r\n <input\r\n placeholder=\"{{ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]?.placeholder}}\"\r\n showEllipsisTextOnHover\r\n class=\"{{ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].className}}\"\r\n (keydown)=\"changesMadeInEditableInputBox($event,ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey], false)\"\r\n (paste)=\"changesMadeInEditableInputBox($event, ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey], true)\"\r\n (ngModelChange)=\"editableInputValueChanged($event, ROW_DATA, columnDef.headerInfo[subLineIndex].objectKey)\"\r\n [ngModel]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].value\"\r\n [disabled]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].disabled\"\r\n [ngClass]=\"{'red-border': ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].hasError }\">\r\n\r\n <i *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].showIcon\"\r\n container=\"body\"\r\n [ngbTooltip]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].iconTooltip\"\r\n tooltipClass=\"gt-total-row-tooltip\" placement=\"bottom\"\r\n class=\"{{ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].iconClass}}\">\r\n </i>\r\n <ng-container *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]['showSvgIcon']\">\r\n <anna-core-anna-est-icon-template\r\n class=\"float-right\" \r\n *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]['svgIconName'] == 'anna-icon'\"\r\n [placement]=\"'bottom auto'\"\r\n tooltipClass=\"gt-total-row-tooltip\"\r\n [ngbTooltip]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].iconTooltip\"\r\n container=\"body\">\r\n </anna-core-anna-est-icon-template>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'HTML'\">\r\n <span\r\n [innerHtml]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"></span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'SINGLE_RADIO'\">\r\n <span *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n [ngClass]=\"{\r\n 'disable-checkbox': ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\r\n }\"\r\n class=\"mdi mdi-radiobox-marked\" (click)=\"\r\n null\r\n \">\r\n\r\n </span>\r\n <span *ngIf=\"!ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n class=\"mdi mdi-radiobox-blank\" [ngClass]=\"{\r\n 'disable-checkbox': ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\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 *ngIf=\"ROW_DATA['RadioButtonConfig']\"\r\n [ngModel]=\"ROW_DATA[subline.objectKey]\"\r\n [disabled]=\"ROW_DATA['RadioButtonConfig'][0].isDisabled\">\r\n <ng-container\r\n *ngFor=\"let radioButton of ROW_DATA['RadioButtonConfig']; let last = last\">\r\n <mat-radio-button value=\"{{ radioButton.value }}\"\r\n class=\"{{ radioButton.class }}\" (click)=\"\r\n radioButtonClicked(\r\n ROW_DATA,\r\n radioButton.value,\r\n ROW_DATA['RadioButtonConfig'][0].isDisabled\r\n )\r\n \">{{ radioButton.label }}\r\n </mat-radio-button>\r\n <i class=\" {{radioButton.iconClass}}\"\r\n (click)=\"radioButtonIconClicked(ROW_DATA)\"></i>\r\n <br *ngIf=\"!last\" />\r\n </ng-container>\r\n </mat-radio-group>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'STRING_WITH_TOOLTIP'\">\r\n <ng-container\r\n *ngFor=\"let action of ROW_DATA[columnDef.headerInfo[subLineIndex].actionKey]\">\r\n <span> {{ action?.dataToDisplay }}</span>\r\n <span *ngIf=\"action?.showTooltip\"\r\n [ngbTooltip]=\"textActionTooltipTemplate\"\r\n (mouseenter)=\"mouseEnterOnStringTextActionType(ROW_DATA, columnDef.headerInfo[subLineIndex].tooltipKey)\"\r\n [placement]=\"action?.tooltipPosition\" container=\"body\"\r\n [class]=\"action?.tooltipIconClass\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\r\n [disableTooltip]=\"action?.disableTooltip\">\r\n </span>\r\n <span> {{ action?.dataToDisplayAfterTooltip }}</span>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"subline.objectKey != 'description'\">\r\n <span>{{ ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n }}</span>\r\n <i *ngIf=\"subline.objectKey == 'inventoryCode' && ROW_DATA['isSellerGroup'] && gtGeneralConfig.component == 'RATING' \"\r\n class=\"mi mdi-info-outline seller-tooltip\"\r\n [ngbTooltip]=\"sellerHierarchyTooltip\" placement=\"bottom auto\"\r\n container=\"body\" [autoClose]=\"true\" triggers=\"manual\"\r\n (hidden)=\"closeTooltip()\" #info=\"ngbTooltip\"\r\n tooltipClass=\"hierarchy-tooltip remove-on-scroll-class\"\r\n (mouseenter)=\"bindTheValueToSellerGroupTooltip(ROW_DATA.sellerGroupHierarchy, info)\">\r\n </i>\r\n\r\n <i *ngIf=\"subline.objectKey == 'displayBookedAverageRating' && gtGeneralConfig.component == 'RATING' && ROW_DATA['showRatingAverageIcon'] \"\r\n class=\"mi mdi-info-outline seller-tooltip\"\r\n placement=\"bottom auto\" container=\"body\" [autoClose]=\"true\"\r\n (mouseenter)=\"setIsDifference(ROW_DATA.isDifferenceLessThan25Percent)\"\r\n tooltipClass=\"posted-avg-tooltip remove-on-scroll-class\"\r\n [ngbTooltip]=\"postedRatingDifference\">\r\n </i>\r\n\r\n <i *ngIf=\"subline.objectKey == 'displayBookedAverageImpression' && gtGeneralConfig.component == 'RATING' && ROW_DATA['showImpressionAverageIcon'] \"\r\n class=\"mi mdi-info-outline seller-tooltip\"\r\n placement=\"bottom auto\" container=\"body\" [autoClose]=\"true\"\r\n (mouseenter)=\"setIsDifference(ROW_DATA.isDifferenceLessThan25Percent)\"\r\n tooltipClass=\"posted-avg-tooltip remove-on-scroll-class\"\r\n [ngbTooltip]=\"postedImpDifference\">\r\n </i>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"subline.objectKey == 'description'\">\r\n <p\r\n *ngIf=\"ROW_DATA.descriptionMessage || ROW_DATA.descriptionEmailReferenceNum\">\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=\"ROW_DATA.descriptionEmailReferenceNum != '-' && ROW_DATA.descriptionEmailReferenceNum != ''\">\r\n Email Ref: {{ ROW_DATA.descriptionEmailReferenceNum }}\r\n <br />\r\n </ng-container>\r\n </p>\r\n <a href=\"{{ ROW_DATA.descriptionDetailsUrl }}\" target=\"_blank\"\r\n *ngIf=\"ROW_DATA.descriptionDetailsUrlType === 'PDF' || ROW_DATA.descriptionDetailsUrlType === 'EXCEL'\">\r\n <button class=\"btn viewDetailsAndEmailBtn\">Download</button>\r\n </a>\r\n <ng-container\r\n *ngIf=\"ROW_DATA.activityname.toLowerCase() == 'order onboarded'\">\r\n <a *ngIf=\"ROW_DATA.descriptionDetailsUrlType === 'LINK'\"\r\n (click)=\"viewDetailsClicked(ROW_DATA)\">\r\n <button\r\n class=\"btn viewDetailsAndEmailBtn order-onboarded\">View\r\n details</button>\r\n </a>\r\n </ng-container>\r\n\r\n <a href=\"{{ ROW_DATA.descriptionEmailUrl }}\" target=\"_blank\"\r\n *ngIf=\"ROW_DATA.descriptionEmailUrl != '-' && ROW_DATA.descriptionEmailUrl != ''\">\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\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 [width]=\"noDataWidth\" [marginTop]=\"marginTop\" *ngIf=\"(isNoDataToDisplaySubject$ | async)\">\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 [tableData]=\"tableData\" [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\r\n [isLurAndCsrComponent]=\"false\" [clonedTableData]=\"clonedTableData\" [filterTabObjects]=\"filterTabObjects\"\r\n (filterAppliedToTable)=\"filterApplied($event)\" (sortingAppliedToTable)=\"sortingApplied($event)\"\r\n (closeTooltip)=\"closeTooltip()\">\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 [tableData]=\"tableData\" [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\r\n [isLurAndCsrComponent]=\"false\" [clonedTableData]=\"clonedTableData\" [filterTabObjects]=\"filterTabObjects\"\r\n (filterAppliedToTable)=\"filterApplied($event)\" (sortingAppliedToTable)=\"sortingApplied($event)\"\r\n (closeTooltip)=\"closeTooltip()\">\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 [tableData]=\"tableData\" [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\r\n [isLurAndCsrComponent]=\"false\" [clonedTableData]=\"clonedTableData\" [filterTabObjects]=\"filterTabObjects\"\r\n (filterAppliedToTable)=\"filterApplied($event)\" (sortingAppliedToTable)=\"sortingApplied($event)\"\r\n (closeTooltip)=\"closeTooltip()\">\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 [tableData]=\"tableData\" [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\r\n [isLurAndCsrComponent]=\"false\" [showAllTimeRangeCheckboxes]=\"showCheckboxesForTimeFilter\"\r\n [clonedTableData]=\"clonedTableData\" [filterTabObjects]=\"filterTabObjects\"\r\n (filterAppliedToTable)=\"filterApplied($event)\" (sortingAppliedToTable)=\"sortingApplied($event)\"\r\n (closeTooltip)=\"closeTooltip()\">\r\n </anna-core-anna-column-time-filter>\r\n</ng-template>\r\n\r\n<ng-template #columnInfoTooltip>\r\n <p style=\"color: black;white-space: nowrap;\">This preemption is rejected and not marked for credit.</p>\r\n</ng-template>\r\n\r\n<ng-template #ratingInfoTooltip>\r\n <p class=\"first-row\">Shows 'Booked Rating' for Preemptions & MakeGood Offered spot(s).</p>\r\n <p class=\"second-row\">Shows 'Projected Rating' for ADU Offered spot(s).</p>\r\n</ng-template>\r\n\r\n<ng-template #impsInfoTooltip>\r\n <p class=\"first-row\">Shows 'Booked IMPS' for Preemptions & MakeGood Offered spot(s).</p>\r\n <p class=\"second-row\">Shows 'Projected IMPS' for ADU Offered spot(s).</p>\r\n</ng-template>\r\n\r\n<ng-template #spotsColumnEquivalizationMessageTooltip>\r\n <p class=\"spot-column-tooltip-message\">This consists of equivalized spots and un-equivalized Paid Programs &\r\n un-equivalized Non-spots.</p>\r\n</ng-template>\r\n\r\n<ng-template #underDeliveryTooltip>\r\n <p class=\"spot-column-tooltip-message\">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\">Indicates the Over-delivery percentage based on booked and posted RTG/IMPS.\r\n </p>\r\n</ng-template>\r\n\r\n<ng-template #rateInfoTooltip>\r\n <p class=\"first-row\">Shows 'Booked Rate' for Preemptions & MakeGood Offered spot(s).</p>\r\n <p class=\"second-row\">Shows 'Projected $ Value' for ADU Offered spot(s).</p>\r\n</ng-template>\r\n\r\n<ng-template #sellerHierarchyTooltip>\r\n <ng-container *ngIf=\"sellerGroupHierarchy.length > 0\">\r\n <section class=\"hierarchy-table-container\">\r\n <table class=\"seller-hierarchy-table\">\r\n <thead>\r\n <tr>\r\n <th>#</th>\r\n <th>Inventory Codes</th>\r\n <th>Program/Description</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of sellerGroupHierarchy; let tooltipIndex = index\">\r\n <td>{{ tooltipIndex + 1 }}</td>\r\n <td>\r\n <span showEllipsisTextOnHover>{{ data.InventoryCode }}</span>\r\n </td>\r\n <td>\r\n <span showEllipsisTextOnHover>{{ data.Program }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </section>\r\n </ng-container>\r\n <ng-container *ngIf=\"sellerGroupHierarchy.length == 0\">\r\n <span style=\"color: #000\">Seller group not available for this inventory code</span>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #lurViolationInfoTooltip>\r\n <p class=\"first-row\">The values are for the entire week.</p>\r\n</ng-template>\r\n\r\n<ng-template #postedRatingDifference>\r\n <p class=\"difference-text\">The difference between posted and booked average rating is\r\n {{isDifferenceLessThan25Percent ? 'less' : 'more'}} than 25%.</p>\r\n</ng-template>\r\n\r\n<ng-template #postedImpDifference>\r\n <p class=\"difference-text\">The difference between posted and booked average impression is\r\n {{isDifferenceLessThan25Percent ? 'less' : 'more'}} than 25%.</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>All projections are derived from the sum of actual posted information until the last posted date and estimates for the remaining selected period.</p>\r\n</ng-template>\r\n\r\n<ng-template #automationTooltip>\r\n <p>Please get the order business rules approved to activate the order for automation. Only for the\r\n automation-activated orders, any approved MGs, ADUs, or credited spots on ANNA will be fed into the traffic\r\n system i.e. ANNA revisions. \r\n <!-- removed below line as part of enhancmennt in 14.0 releas -->\r\n <!-- Additionally, ANNA will only enter buyer revisions into traffic for the selected\r\n Medialine/WOC orders. -->\r\n </p>\r\n</ng-template>\r\n\r\n<ng-template #rebateImpact>\r\n <p>\r\n Rebate impact value is for the originally ordered spot length and is not equivalized.\r\n </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\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\r\n</ng-template>\r\n\r\n<ng-template #circularProgressBar>\r\n <circle-progress [percent]=\"percentDone\" [radius]=\"5\" [showTitle]=\"false\" [showUnits]=\"false\" [showSubtitle]=\"false\"\r\n [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"'#268bff'\"\r\n [innerStrokeColor]=\"'#d5d5d5'\" [animationDuration]=\"10\"></circle-progress>\r\n</ng-template>\r\n\r\n\r\n<ng-template #userLoggedInDetails>\r\n <div class=\"tooltip-div-container\">\r\n <ng-container *ngFor=\"let data of textActionTooltip\">\r\n <span *ngIf=\"data.key != 'read'\">\r\n {{ data.key }} <b> {{data.value}}</b>\r\n </span>\r\n <span *ngIf=\"data.key == 'read'\">\r\n {{data.value}}\r\n </span>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #markAsReadTip>\r\n <div class=\"notification-tooltip-div-container\">\r\n <ng-container *ngFor=\"let data of textActionTooltip\">\r\n {{data.value}}\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #textActionTooltipTemplate>\r\n <ng-container *ngFor=\"let data of textActionTooltip\">\r\n {{ data.key }} <b> {{data.value}}</b>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #tooltipContainingTableTemplate>\r\n <div *ngIf=\"tooltipContainingTable\" [innerHTML]=\"tooltipContainingTable.innerHtml\" class=\"notification-tooltip-div-container\">\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\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> -->","// Angular import statements\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\n\r\n// Third party import statements\r\nimport { Subject } from \"rxjs\";\r\nimport { cloneDeep } from \"lodash-es\";\r\n\r\n//sub-entries of anna lib import statement\r\nimport { AnnaFilterService } from \"./anna-filter.service\";\r\nimport { AnnaSortService } from \"./anna-sort.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaGtHelperService {\r\n\r\n virtualScrollSubject = new Subject();\r\n constructor(\r\n private annaFilterService: AnnaFilterService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private annaSortService: AnnaSortService) {\r\n }\r\n\r\n calculateNumberOfSkeletonColumnsForTable(tableHeaders: any[]): number[][] {\r\n let numberOfSkeletonColumns: any[][] = [];\r\n var headersInEachColumn = 0;\r\n tableHeaders.forEach((column) => {\r\n if (column.visible) {\r\n headersInEachColumn = 0;\r\n column.headerInfo.forEach(() => {\r\n headersInEachColumn++;\r\n })\r\n numberOfSkeletonColumns.push(Array(headersInEachColumn).fill(0));\r\n }\r\n })\r\n return numberOfSkeletonColumns;\r\n }\r\n\r\n initColumnFilterAndSorting() {\r\n this.annaFilterService.tooltipSelectedMap = new Map();\r\n this.annaFilterService.selectedRadio = null;\r\n this.annaFilterService.appliedFiltersArray = [];\r\n this.annaFilterService.initialValueMap = new Map();\r\n this.annaSortService.columnSortState = new Map();\r\n this.annaSortService.noSortingAppliedData = [];\r\n }\r\n\r\n\r\n enableOrDisableClearAllBtn(): boolean {\r\n let isFilterApplied = this.annaFilterService.appliedFiltersArray.length > 0;\r\n let isSortApplied = this.isSortingAppliedToTable();\r\n\r\n return isFilterApplied || isSortApplied ? false : true;\r\n }\r\n\r\n updateFiltersInURL() {\r\n let latestQueryParams = this.prepareQueryParamsOnFilter();\r\n\r\n if(Object.keys(latestQueryParams).length > 0){\r\n this.router.navigate([],{\r\n queryParams: { filters: JSON.stringify(latestQueryParams) },\r\n relativeTo: this.route.parent,\r\n queryParamsHandling: 'merge'\r\n });\r\n }\r\n else{\r\n this.router.navigate([],{\r\n relativeTo: this.route.parent,\r\n });\r\n }\r\n\r\n }\r\n\r\n prepareQueryParamsOnFilter() {\r\n\r\n let query:any = {};\r\n\r\n if(this.annaFilterService.appliedFiltersArray.length > 0){\r\n query[\"appliedFilters\"] = this.annaFilterService.appliedFiltersArray;\r\n query[\"selectedFilterData\"] = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\r\n }\r\n\r\n if(this.checkIfSortingIsApplied()){\r\n query[\"sortState\"] = JSON.stringify(Array.from(this.annaSortService.columnSortState));\r\n }\r\n\r\n return query;\r\n }\r\n\r\n checkIfSortingIsApplied(){\r\n let isSortingApplied = false;\r\n for(let val of this.annaSortService.columnSortState.values()){\r\n if(val == \"ASC\" || val == \"DESC\"){\r\n isSortingApplied = true;\r\n }\r\n }\r\n\r\n return isSortingApplied;\r\n }\r\n\r\n initTableFilters(clonedTableData: any) {\r\n this.annaFilterService.tooltipSelectedMap = new Map();\r\n this.annaFilterService.selectedRadio = null;\r\n this.annaFilterService.appliedFiltersArray = [];\r\n\r\n this.annaSortService.columnSortState = new Map();\r\n\r\n this.annaSortService.noSortingAppliedData = cloneDeep(clonedTableData);\r\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n }\r\n\r\n initFilters() {\r\n this.annaFilterService.tooltipSelectedMap = new Map();\r\n this.annaFilterService.appliedFiltersArray = [];\r\n }\r\n\r\n setDataAsPerPersistingFilter(isPersistingFilter: boolean, clonedTable: any, filters: any): any {\r\n let usersTable;\r\n if (isPersistingFilter) {\r\n usersTable = this.annaFilterService.filterData(clonedTable, \"\");\r\n this.annaSortService.noSortingAppliedData = cloneDeep(usersTable);\r\n }\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 {\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\r\n callSort(usersTable: any): any {\r\n for (let [key, value] of this.annaSortService.columnSortState) {\r\n if (value == \"ASC\") {\r\n usersTable = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(true, usersTable, key);\r\n }\r\n else if (value == \"DESC\") {\r\n usersTable = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(false, usersTable, key);\r\n }\r\n }\r\n return usersTable;\r\n }\r\n\r\n isSortingAppliedToTable() {\r\n let isSortingApplied = false;\r\n for (let val of this.annaSortService.columnSortState?.values()) {\r\n if (val == \"ASC\" || val == \"DESC\") {\r\n isSortingApplied = true;\r\n }\r\n }\r\n\r\n return isSortingApplied;\r\n }\r\n\r\n updateQueryParamsFilter(key: string, value: any, operation: \"ADD\" | \"DELETE\", queryParamObj: any) {\r\n if (operation == \"ADD\") {\r\n queryParamObj[key] = value;\r\n } else if (operation == \"DELETE\") {\r\n delete queryParamObj[key];\r\n }\r\n return queryParamObj;\r\n }\r\n\r\n\r\n\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n\r\n import { Directionality } from \"@angular/cdk/bidi\";\r\n import { ListRange } from \"@angular/cdk/collections\";\r\n import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Inject,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n } from \"@angular/core\";\r\n import {\r\n animationFrameScheduler,\r\n asapScheduler,\r\n Observable,\r\n Subject,\r\n Observer,\r\n Subscription\r\n } from \"rxjs\";\r\n import { auditTime, startWith, takeUntil } from \"rxjs/operators\";\r\n import {\r\n CdkVirtualScrollViewport,\r\n CdkScrollable,\r\n CdkVirtualScrollRepeater,\r\n VIRTUAL_SCROLL_STRATEGY,\r\n VirtualScrollStrategy,\r\n ScrollDispatcher,\r\n ViewportRuler,\r\n ExtendedScrollToOptions\r\n } from \"@angular/cdk/scrolling\";\r\nimport { AnnaGtHelperService } from '../../../anna-core-shared-lib/services/anna-generic-table.service';\r\n \r\n /** Checks if the given ranges are equal. */\r\n function rangesEqual(r1: ListRange, r2: ListRange): boolean {\r\n return r1.start == r2.start && r1.end == r2.end;\r\n }\r\n \r\n /**\r\n * Scheduler to be used for scroll events. Needs to fall back to\r\n * something that doesn't rely on requestAnimationFrame on environments\r\n * that don't support it (e.g. server-side rendering).\r\n */\r\n const SCROLL_SCHEDULER =\r\n typeof requestAnimationFrame !== \"undefined\"\r\n ? animationFrameScheduler\r\n : asapScheduler;\r\n \r\n /**\r\n * A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`.\r\n * Uses `top: #px` instead of `transform: translateY(#px)` like the cdk virtual scroll viewport does\r\n * which avoids flickering of elements in the transformed container with `position: sticky`.\r\n */\r\n @Component({\r\n selector: \"anna-table-virtual-scroll-viewport\",\r\n templateUrl: \"anna-table-virtual-scroll-viewport.component.html\",\r\n styleUrls: [\"anna-table-virtual-scroll-viewport.component.scss\"],\r\n host: {\r\n class: \"anna-table-virtual-scroll-viewport\",\r\n \"[class.anna-table-virtual-scroll-orientation-horizontal]\":\r\n 'orientation === \"horizontal\"',\r\n \"[class.anna-table-virtual-scroll-orientation-vertical]\":\r\n 'orientation !== \"horizontal\"'\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: CdkScrollable,\r\n useExisting: AnnaTableVirtualScrollViewportComponent\r\n },\r\n {\r\n provide: CdkVirtualScrollViewport,\r\n useExisting: AnnaTableVirtualScrollViewportComponent\r\n }\r\n ]\r\n })\r\n export class AnnaTableVirtualScrollViewportComponent extends CdkScrollable\r\n implements OnInit, OnDestroy {\r\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\r\n private _detachedSubject = new Subject<void>();\r\n \r\n /** Emits when the rendered range changes. */\r\n private _renderedRangeSubject = new Subject<ListRange>();\r\n \r\n /** The direction the viewport scrolls. */\r\n @Input()\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n set orientation(orientation: \"horizontal\" | \"vertical\") {\r\n if (this._orientation !== orientation) {\r\n this._orientation = orientation;\r\n this._calculateSpacerSize();\r\n }\r\n }\r\n private _orientation: \"horizontal\" | \"vertical\" = \"vertical\";\r\n \r\n // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\r\n // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\r\n // depending on how the strategy calculates the scrolled index, it may come at a cost to\r\n // performance.\r\n /** Emits when the index of the first element visible in the viewport changes. */\r\n @Output() scrolledIndexChange: Observable<number> = new Observable(\r\n (observer: Observer<number>) =>\r\n this._scrollStrategy.scrolledIndexChange.subscribe(index =>\r\n Promise.resolve().then(() =>\r\n this.ngZone.run(() => observer.next(index))\r\n )\r\n )\r\n );\r\n \r\n /** The element that wraps the rendered content. */\r\n @ViewChild(\"contentWrapper\", { static: true }) _contentWrapper: ElementRef<\r\n HTMLElement\r\n >;\r\n \r\n /** A stream that emits whenever the rendered range changes. */\r\n renderedRangeStream: Observable<ListRange> = this._renderedRangeSubject;\r\n \r\n /**\r\n * The total size of all content (in pixels), including content that is not currently rendered.\r\n */\r\n private _totalContentSize = 0;\r\n \r\n /** A string representing the `style.width` property value to be used for the spacer element. */\r\n _totalContentWidth = \"\";\r\n \r\n /** A string representing the `style.height` property value to be used for the spacer element. */\r\n _totalContentHeight = \"\";\r\n \r\n /**\r\n * The CSS transform applied to the rendered subset of items so that they appear within the bounds\r\n * of the visible viewport.\r\n */\r\n private _renderedContentTransform: string;\r\n \r\n /** The currently rendered range of indices. */\r\n private _renderedRange: ListRange = { start: 0, end: 0 };\r\n \r\n /** The length of the data bound to this viewport (in number of items). */\r\n private _dataLength = 0;\r\n \r\n /** The size of the viewport (in pixels). */\r\n private _viewportSize = 0;\r\n \r\n /** the currently attached CdkVirtualScrollRepeater. */\r\n private _forOf: CdkVirtualScrollRepeater<any> | null;\r\n \r\n /** The last rendered content offset that was set. */\r\n private _renderedContentOffset = 0;\r\n \r\n /**\r\n * Whether the last rendered content offset was to the end of the content (and therefore needs to\r\n * be rewritten as an offset to the start of the content).\r\n */\r\n private _renderedContentOffsetNeedsRewrite = false;\r\n \r\n /** Whether there is a pending change detection cycle. */\r\n private _isChangeDetectionPending = false;\r\n \r\n /** A list of functions to run after the next change detection cycle. */\r\n private _runAfterChangeDetection: Function[] = [];\r\n \r\n /** Subscription to changes in the viewport size. */\r\n private _viewportChanges = Subscription.EMPTY;\r\n \r\n constructor(\r\n public override elementRef: ElementRef<HTMLElement>,\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n ngZone: NgZone,\r\n @Optional()\r\n @Inject(VIRTUAL_SCROLL_STRATEGY)\r\n private _scrollStrategy: VirtualScrollStrategy,\r\n @Optional() dir: Directionality,\r\n scrollDispatcher: ScrollDispatcher,\r\n viewportRuler: ViewportRuler,\r\n private annaGtService: AnnaGtHelperService\r\n ) {\r\n super(elementRef, scrollDispatcher, ngZone, dir);\r\n \r\n if (!_scrollStrategy) {\r\n throw Error(\r\n 'Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.'\r\n );\r\n }\r\n \r\n this._viewportChanges = viewportRuler.change().subscribe(() => {\r\n this.checkViewportSize();\r\n });\r\n }\r\n \r\n override ngOnInit() {\r\n super.ngOnInit();\r\n \r\n // It's still too early to measure the viewport at this point. Deferring with a promise allows\r\n // the Viewport to be rendered with the correct size before we measure. We run this outside the\r\n // zone to avoid causing more change detection cycles. We handle the change detection loop\r\n // ourselves instead.\r\n this.ngZone.runOutsideAngular(() =>\r\n Promise.resolve().then(() => {\r\n this._measureViewportSize();\r\n this._scrollStrategy.attach(this as any);\r\n \r\n this.elementScrolled()\r\n .pipe(\r\n // Start off with a fake scroll event so we properly detect our initial position.\r\n startWith(null),\r\n // Collect multiple events into one until the next animation frame. This way if\r\n // there are multiple scroll events in the same frame we only need to recheck\r\n // our layout once.\r\n auditTime(0, SCROLL_SCHEDULER)\r\n )\r\n .subscribe(() => { this._scrollStrategy.onContentScrolled(); this.annaGtService.virtualScrollSubject.next(true);});\r\n \r\n this._markChangeDetectionNeeded();\r\n })\r\n );\r\n }\r\n \r\n override ngOnDestroy() {\r\n this.detach();\r\n this._scrollStrategy.detach();\r\n \r\n // Complete all subjects\r\n this._renderedRangeSubject.complete();\r\n this._detachedSubject.complete();\r\n this._viewportChanges.unsubscribe();\r\n \r\n super.ngOnDestroy();\r\n }\r\n \r\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\r\n attach(forOf: CdkVirtualScrollRepeater<any>) {\r\n if (this._forOf) {\r\n throw Error(\"CdkVirtualScrollViewport is already attached.\");\r\n }\r\n \r\n // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\r\n // changes. Run outside the zone to avoid triggering change detection, since we're managing the\r\n // change detection loop ourselves.\r\n this.ngZone.runOutsideAngular(() => {\r\n this._forOf = forOf;\r\n this._forOf.dataStream\r\n .pipe(takeUntil(this._detachedSubject))\r\n .subscribe(data => {\r\n const newLength = data.length;\r\n if (newLength !== this._dataLength) {\r\n this._dataLength = newLength;\r\n this._scrollStrategy.onDataLengthChanged();\r\n }\r\n this._doChangeDetection();\r\n });\r\n });\r\n }\r\n \r\n /** Detaches the current `CdkVirtualForOf`. */\r\n detach() {\r\n this._forOf = null;\r\n this._detachedSubject.next();\r\n }\r\n \r\n /** Gets the length of the data bound to this viewport (in number of items). */\r\n getDataLength(): number {\r\n return this._dataLength;\r\n }\r\n \r\n /** Gets the size of the viewport (in pixels). */\r\n getViewportSize(): number {\r\n return this._viewportSize;\r\n }\r\n \r\n // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\r\n // cycle happens. I'm being careful to only call it after the render cycle is complete and before\r\n // setting it to something else, but its error prone and should probably be split into\r\n // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\r\n \r\n /** Get the current rendered range of items. */\r\n getRenderedRange(): ListRange {\r\n return this._renderedRange;\r\n }\r\n \r\n /**\r\n * Sets the total size of all content (in pixels), including content that is not currently\r\n * rendered.\r\n */\r\n setTotalContentSize(size: number) {\r\n if (this._totalContentSize !== size) {\r\n this._totalContentSize = size;\r\n this._calculateSpacerSize();\r\n this._markChangeDetectionNeeded();\r\n }\r\n }\r\n \r\n /** Sets the currently rendered range of indices. */\r\n setRenderedRange(range: ListRange) {\r\n if (!rangesEqual(this._renderedRange, range)) {\r\n this._renderedRangeSubject.next((this._renderedRange = range));\r\n this._markChangeDetectionNeeded(() =>\r\n this._scrollStrategy.onContentRendered()\r\n );\r\n }\r\n }\r\n \r\n /**\r\n * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\r\n */\r\n getOffsetToRenderedContentStart(): number | null {\r\n return this._renderedContentOffsetNeedsRewrite\r\n ? null\r\n : this._renderedContentOffset;\r\n }\r\n \r\n /**\r\n * Sets the offset from the start of the viewport to either the start or end of the rendered data\r\n * (in pixels).\r\n */\r\n setRenderedContentOffset(offset: number) {\r\n let top = `${Number(offset)}px`;\r\n this._renderedContentOffset = offset;\r\n if (this._renderedContentTransform != top) {\r\n // We know this value is safe because we parse `offset` with `Number()` before passing it\r\n // into the string.\r\n this._renderedContentTransform = top;\r\n this._markChangeDetectionNeeded(() => {\r\n if (this._renderedContentOffsetNeedsRewrite) {\r\n this._renderedContentOffset -= this.measureRenderedContentSize();\r\n this._renderedContentOffsetNeedsRewrite = false;\r\n this.setRenderedContentOffset(this._renderedContentOffset);\r\n } else {\r\n this._scrollStrategy.onRenderedOffsetChanged();\r\n }\r\n });\r\n }\r\n }\r\n \r\n /**\r\n * Scrolls to the given offset from the start of the viewport. Please note that this is not always\r\n * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\r\n * direction, this would be the equivalent of setting a fictional `scrollRight` property.\r\n * @param offset The offset to scroll to.\r\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\r\n */\r\n scrollToOffset(offset: number, behavior: ScrollBehavior = \"auto\") {\r\n const options: ExtendedScrollToOptions = { behavior, top: offset };\r\n this.scrollTo(options);\r\n }\r\n \r\n /**\r\n * Scrolls to the offset for the given index.\r\n * @param index The index of the element to scroll to.\r\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\r\n */\r\n scrollToIndex(index: number, behavior: ScrollBehavior = \"auto\") {\r\n this._scrollStrategy.scrollToIndex(index, behavior);\r\n }\r\n \r\n /**\r\n * Gets the current scroll offset from the start of the viewport (in pixels).\r\n * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\r\n * in horizontal mode.\r\n */\r\n // CHANGES@ANNALIB added override to functions\r\n override measureScrollOffset(\r\n from?: \"top\" | \"left\" | \"right\" | \"bottom\" | \"start\" | \"end\"\r\n ): number {\r\n return from\r\n ? super.measureScrollOffset(from)\r\n : super.measureScrollOffset(\"top\");\r\n }\r\n \r\n /** Measure the combined size of all of the rendered items. */\r\n measureRenderedContentSize(): number {\r\n const contentEl = this._contentWrapper.nativeElement;\r\n return contentEl.offsetHeight;\r\n }\r\n \r\n /**\r\n * Measure the total combined size of the given range. Throws if the range includes items that are\r\n * not rendered.\r\n */\r\n measureRangeSize(range: ListRange): number {\r\n if (!this._forOf) {\r\n return 0;\r\n }\r\n return this._forOf.measureRangeSize(range, this.orientation);\r\n }\r\n \r\n /** Update the viewport dimensions and re-render. */\r\n checkViewportSize() {\r\n // TODO: Cleanup later when add logic for handling content resize\r\n this._measureViewportSize();\r\n this._scrollStrategy.onDataLengthChanged();\r\n }\r\n \r\n /** Measure the viewport size. */\r\n private _measureViewportSize() {\r\n const viewportEl = this.elementRef.nativeElement;\r\n this._viewportSize = viewportEl.clientHeight;\r\n }\r\n \r\n /** Queue up change detection to run. */\r\n private _markChangeDetectionNeeded(runAfter?: Function) {\r\n if (runAfter) {\r\n this._runAfterChangeDetection.push(runAfter);\r\n }\r\n \r\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\r\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\r\n if (!this._isChangeDetectionPending) {\r\n this._isChangeDetectionPending = true;\r\n this.ngZone.runOutsideAngular(() =>\r\n Promise.resolve().then(() => {\r\n this._doChangeDetection();\r\n })\r\n );\r\n }\r\n }\r\n \r\n /** Run change detection. */\r\n private _doChangeDetection() {\r\n this._isChangeDetectionPending = false;\r\n \r\n // Apply the content transform. The transform can't be set via an Angular binding because\r\n // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\r\n // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\r\n // the `Number` function first to coerce it to a numeric value.\r\n this._contentWrapper.nativeElement.style.top = this._renderedContentTransform;\r\n // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\r\n // from the root, since the repeated items are content projected in. Calling `detectChanges`\r\n // instead does not properly check the projected content.\r\n this.ngZone.run(() => this._changeDetectorRef.markForCheck());\r\n \r\n const runAfterChangeDetection = this._runAfterChangeDetection;\r\n this._runAfterChangeDetection = [];\r\n for (const fn of runAfterChangeDetection) {\r\n fn();\r\n }\r\n }\r\n \r\n /** Calculates the `style.width` and `style.height` for the spacer element. */\r\n private _calculateSpacerSize() {\r\n this._totalContentHeight = `${this._totalContentSize}px`;\r\n this._totalContentWidth = \"\";\r\n }\r\n }\r\n ","<!--\r\n Wrap the rendered content in an element that will be used to offset it based on the scroll\r\n position.\r\n-->\r\n<div #contentWrapper class=\"anna-table-virtual-scroll-content-wrapper\">\r\n\t<ng-content></ng-content>\r\n</div>\r\n<!--\r\n Spacer used to force the scrolling container to the correct size for the *total* number of items\r\n so that the scrollbar captures the size of the entire data set.\r\n-->\r\n<div class=\"app-table-virtual-scroll-spacer\" [style.width]=\"_totalContentWidth\" [style.height]=\"_totalContentHeight\">\r\n</div>","import { coerceNumberProperty, NumberInput } from \"@angular/cdk/coercion\";\r\nimport {\r\n CdkVirtualScrollViewport,\r\n VirtualScrollStrategy,\r\n VIRTUAL_SCROLL_STRATEGY\r\n} from \"@angular/cdk/scrolling\";\r\nimport { AfterContentInit, ContentChildren, Directive, forwardRef, Input, QueryList, SimpleChanges } from \"@angular/core\";\r\nimport { MatHeaderRowDef } from \"@angular/material/table\";\r\nimport { Subject } from \"rxjs\";\r\nimport { distinctUntilChanged } from \"rxjs/operators\";\r\nimport { AnnaFilterService } from '../../../anna-core-shared-lib/services/anna-filter.service';\r\n\r\n\r\n/**\r\n * A custom scroll strategy that accepts a static row height, static header height,\r\n * and a buffer size. The strategy \r\n */\r\nexport class AnnaFixedRowSizeTableVirtualScrollStrategy\r\n implements VirtualScrollStrategy {\r\n \r\n viewport: CdkVirtualScrollViewport | null;\r\n\r\n private buffer: number;\r\n\r\n private headerHeight: number;\r\n\r\n private rowHeight: number;\r\n\r\n constructor(rowHeight: number, buffer: number, headerHeight: number) {\r\n this.updateRowHeightAndBuffer(rowHeight, buffer, headerHeight);\r\n }\r\n\r\n private _scrolledIndexChange = new Subject<number>();\r\n\r\n scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\r\n\r\n /**\r\n * Attaches this scroll strategy to a viewport.\r\n * @param viewport The viewport to attach this strategy to.\r\n */\r\n attach(viewport: CdkVirtualScrollViewport): void {\r\n this.viewport = viewport;\r\n this.updateTotalContentSize();\r\n this.updateRenderedRange();\r\n }\r\n\r\n /**\r\n * Detaches this scroll strategy from the currently attached viewport.\r\n */\r\n detach(): void {\r\n this._scrolledIndexChange.complete();\r\n this.viewport = null;\r\n }\r\n\r\n onContentScrolled(): void {\r\n this.updateRenderedRange();\r\n }\r\n\r\n onDataLengthChanged(): void {\r\n this.updateTotalContentSize();\r\n this.updateRenderedRange();\r\n }\r\n\r\n onContentRendered(): void {\r\n // This method is useful for virtual scroll strategies that measure the rendered\r\n // content to determine its height. This scroll strategy assumes that rows have\r\n // a static height, so there's no need to implement this method.\r\n }\r\n\r\n onRenderedOffsetChanged(): void {\r\n // Similar to onContentRendered, this method is useful for virtual scroll strategies\r\n // that need to track the offset as it changes. This scroll strategy is always able\r\n // to calculate the correct offset from other values, so there's no need to implement\r\n // this method.\r\n }\r\n\r\n scrollToIndex(index: number, behavior: ScrollBehavior): void {\r\n this.viewport?.scrollToOffset(index * this.rowHeight, behavior);\r\n }\r\n\r\n /**\r\n * Update the item size and buffer size.\r\n * @param rowHeight The height of a row in the virtually scrolling table.\r\n * @param buffer The number of rows to buffer outside the viewport.\r\n * @param headerHeight The total height of the table header, including all header rows.\r\n */\r\n updateRowHeightAndBuffer(rowHeight: number, buffer: number, headerHeight: number) {\r\n this.rowHeight = rowHeight;\r\n this.buffer = buffer;\r\n this.headerHeight = headerHeight;\r\n this.updateTotalContentSize();\r\n this.updateRenderedRange();\r\n }\r\n\r\n protected updateRenderedRange() {\r\n if (!this.viewport) {\r\n return;\r\n }\r\n\r\n const viewportSize = this.viewport.getViewportSize();\r\n const dataLength = this.viewport.getDataLength();\r\n const scrollOffset = this.viewport.measureScrollOffset();\r\n\r\n // the index of the first item that would be at least partially visible in the viewport\r\n let firstVisibleIndex = Math.floor((scrollOffset + this.headerHeight) / this.rowHeight);\r\n \r\n // if the buffer size is 10 but the first visible item is at, say, index 7\r\n // then the buffered items must be 7, because we don't have 10 items available to buffer.\r\n const bufferedItems = Math.min(AnnaFilterService.bufferSize, firstVisibleIndex);\r\n\r\n const itemsInViewport = Math.ceil(viewportSize / this.rowHeight);\r\n const itemsToRender = itemsInViewport + this.buffer;\r\n\r\n // Clamp the new range between 0 and dataLength\r\n const newStart = Math.max(0, firstVisibleIndex - bufferedItems);\r\n const newEnd = Math.min(dataLength, firstVisibleIndex + itemsToRender);\r\n\r\n const newRange = {\r\n start: newStart,\r\n end: newEnd\r\n };\r\n\r\n const newOffset = this.rowHeight * (firstVisibleIndex - bufferedItems);\r\n this.viewport.setRenderedContentOffset(newOffset);\r\n this.viewport.setRenderedRange(newRange);\r\n this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\r\n }\r\n\r\n protected updateTotalContentSize() {\r\n this.viewport?.setTotalContentSize(this.viewport.getDataLength() * this.rowHeight);\r\n }\r\n}\r\n\r\n/**\r\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\r\n * `FixedSizeVirtualScrollStrategy` from the given directive.\r\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\r\n * `FixedSizeVirtualScrollStrategy` from.\r\n */\r\nexport function fixedSizeVirtualScrollStrategyFactory(\r\n fixedSizeDir: AnnaFixedRowSizeTableVirtualScrollStrategyDirective\r\n) {\r\n return fixedSizeDir.scrollStrategy;\r\n}\r\n\r\n@Directive({\r\n selector: \"cdk-virtual-scroll-viewport[rowHeight], anna-table-virtual-scroll-viewport[rowHeight]\",\r\n providers: [\r\n {\r\n provide: VIRTUAL_SCROLL_STRATEGY,\r\n useFactory: fixedSizeVirtualScrollStrategyFactory,\r\n deps: [forwardRef(() => AnnaFixedRowSizeTableVirtualScrollStrategyDirective)]\r\n }\r\n ]\r\n})\r\nexport class AnnaFixedRowSizeTableVirtualScrollStrategyDirective implements AfterContentInit {\r\n /** The height of rows in the table (in pixels). Defaults to 30. */\r\n @Input()\r\n set rowHeight(value: number) { this._rowHeight = coerceNumberProperty(value); }\r\n get rowHeight(): number { return this._rowHeight; }\r\n private _rowHeight = 30;\r\n\r\n /**\r\n * The height of header rows in the table (in pixels). Defaults to 30.\r\n */\r\n @Input()\r\n set headerRowHeight(value: number) { this._headerRowHeight = coerceNumberProperty(value); }\r\n get headerRowHeight(): number { return this._headerRowHeight; }\r\n private _headerRowHeight: number = 30;\r\n\r\n /**\r\n * The number of buffered rows rendered beyond the viewport.\r\n * If the number of buffered rows dips below this number, more rows will be rendered. Defaults to 20.\r\n */\r\n @Input()\r\n set buffer(value: number) { \r\n this._buffer = coerceNumberProperty(value);}\r\n get buffer(): number { return this._buffer; }\r\n private _buffer = 20;\r\n\r\n @Input()\r\n set headerRows(value: number | null | undefined) { this._headerRows = coerceNumberProperty(value, undefined); }\r\n get headerRows(): number | null | undefined { return this._headerRows; }\r\n private _headerRows: number | null | undefined = null;\r\n\r\n /**\r\n * Using ContentChildren here fails to pick up row defs that are added programmatically,\r\n * but we don't really have a way of handling that without accessing private methods of \r\n * the CdkTable. Adding header row defs programmatically is uncommon, so ContentChildren\r\n * is usually sufficient. The explicit `headerRows` input above allows the number of rows\r\n * to be set by the developer to override the QueryList-driven behavior.\r\n */\r\n @ContentChildren(MatHeaderRowDef) headerRowsQuery: QueryList<MatHeaderRowDef>;\r\n\r\n private headerRowCount: number = 1;\r\n\r\n /** The scroll strategy used by this directive. */\r\n scrollStrategy = new AnnaFixedRowSizeTableVirtualScrollStrategy(\r\n this.rowHeight,\r\n this.buffer,\r\n this.headerRowHeight * this.headerRowCount\r\n );\r\n\r\n ngOnChanges(change: SimpleChanges) {\r\n if (this.headerRows != undefined || this.headerRowsQuery) {\r\n this.handleChange();\r\n }\r\n if(change['buffer']?.previousValue != change['buffer']?.currentValue){\r\n AnnaFilterService.bufferSize = this.buffer;\r\n this.scrollStrategy = new AnnaFixedRowSizeTableVirtualScrollStrategy(\r\n this.rowHeight,\r\n this.buffer,\r\n this.headerRowHeight * this.headerRowCount\r\n ); \r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.headerRowsQuery.changes.subscribe(() => {\r\n this.handleChange();\r\n });\r\n }\r\n\r\n private handleChange(): void {\r\n this.scrollStrategy.updateRowHeightAndBuffer(\r\n this.rowHeight,\r\n this.buffer,\r\n // Use the explicit headerRows input value if set.\r\n // Otherwise, fall back to the QueryList length.\r\n this.headerRowHeight * (this._headerRows ?? this.headerRowsQuery.length)\r\n );\r\n }\r\n\r\n static ngAcceptInputType_rowHeight: NumberInput;\r\n static ngAcceptInputType_buffer: NumberInput;\r\n static ngAcceptInputType_headerRowHeight: NumberInput;\r\n}\r\n","import { ArrayDataSource, CollectionViewer, isDataSource, ListRange } from \"@angular/cdk/collections\";\r\nimport { CdkVirtualScrollRepeater, CdkVirtualScrollViewport } from \"@angular/cdk/scrolling\";\r\nimport { CdkHeaderRowDef, CdkTable, DataSource, STICKY_POSITIONING_LISTENER, _CoalescedStyleScheduler, _COALESCED_STYLE_SCHEDULER } from \"@angular/cdk/table\";\r\nimport { ContentChildren, Directive, ElementRef, Inject, Input, NgIterable, NgZone, QueryList } from \"@angular/core\";\r\nimport { isObservable, Observable, of, Subject } from \"rxjs\";\r\nimport { map, pairwise, shareReplay, startWith, switchMap, takeUntil } from \"rxjs/operators\";\r\nimport { AnnaTableVirtualScrollViewportComponent } from '../../components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component';\r\n\r\n/**\r\n * Directive that wraps a given data source in a \"virtual\" data source that emits\r\n * the slice of the original data source that matches the range that should be rendered\r\n * in the containing virtual scroll viewport.\r\n */\r\n@Directive({\r\n selector: '[mat-table][appVirtualDataSource], mat-table[appVirtualDataSource]',\r\n providers: [{ provide: STICKY_POSITIONING_LISTENER, useExisting: AnnaVirtualTableDirective }]\r\n})\r\nexport class AnnaVirtualTableDirective<T> implements CdkVirtualScrollRepeater<T>, CollectionViewer {\r\n @Input('appVirtualDataSource')\r\n set dataSource(value: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined) {\r\n this._dataSource = value;\r\n if (isDataSource(value)) {\r\n this.dataSourceChanges.next(value);\r\n } else {\r\n this.dataSourceChanges.next(new ArrayDataSource<T>(isObservable(value) ? value : Array.from(value || [])));\r\n }\r\n }\r\n get dataSource(): DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined {\r\n return this._dataSource;\r\n }\r\n private _dataSource: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined;\r\n\r\n @ContentChildren(CdkHeaderRowDef) headerRowDefs: QueryList<CdkHeaderRowDef>;\r\n\r\n private virtualizedDataStream = new Subject<T[] | ReadonlyArray<T>>();\r\n\r\n private dataSourceChanges = new Subject<DataSource<T>>();\r\n\r\n /** The raw, unvirtualized data stream. Emits whenever the data in the current DataSource changes. */\r\n dataStream: Observable<T[] | ReadonlyArray<T>> = this.dataSourceChanges\r\n .pipe(\r\n // Start off with null data source.\r\n startWith(null),\r\n // Bundle up the previous and current data sources so we can work with both.\r\n pairwise(),\r\n // Use `changeDataSource` to disconnect from the previous data source and connect to the\r\n // new one, passing back a stream of data changes which we run through `switchMap` to give\r\n // us a data stream that emits the latest data from whatever the current data source is.\r\n switchMap(([prev, cur]) => this.changeDataSource(prev, cur)),\r\n // Replay the last emitted data when someone subscribes.\r\n shareReplay(1));\r\n\r\n viewChange = new Subject<ListRange>();\r\n\r\n private data: T[] | readonly T[];\r\n\r\n private destroyed$ = new Subject<void>();\r\n\r\n private renderedItems: T[] | ReadonlyArray<T>;\r\n\r\n private renderedRange: ListRange = { start: 0, end: 0 };\r\n\r\n private isNativeHtmlTable: boolean = false;\r\n\r\n constructor(\r\n elementRef: ElementRef<HTMLElement>,\r\n private viewport: CdkVirtualScrollViewport,\r\n private table: CdkTable<T>,\r\n ngZone: NgZone,\r\n @Inject(_COALESCED_STYLE_SCHEDULER) private _coalescedStyleScheduler: _CoalescedStyleScheduler,\r\n ) {\r\n table.dataSource = this.virtualizedDataStream;\r\n this.isNativeHtmlTable = elementRef.nativeElement.tagName === 'TABLE';\r\n this.dataStream.subscribe(data => {\r\n this.data = data;\r\n this.onRenderedDataChange();\r\n });\r\n viewport.renderedRangeStream.pipe(takeUntil(this.destroyed$)).subscribe((range: ListRange) => {\r\n this.renderedRange = range;\r\n ngZone.run(() => this.viewChange.next(range));\r\n this.onRenderedDataChange();\r\n });\r\n viewport.attach(this);\r\n }\r\n\r\n ngOnInit(): void {\r\n // This is just a proof of concept, but the AnnaTableVirtualScrollViewportComponent uses `position: absolute` and `top: #px` instead of `transform: translateY(#px)` to position the viewport.\r\n // This removes the need to account for the translation in the `top` of the sticky header rows.\r\n if (this.viewport instanceof AnnaTableVirtualScrollViewportComponent) {\r\n return;\r\n }\r\n\r\n this.viewport.scrolledIndexChange\r\n .pipe(\r\n map(() => this.viewport.getOffsetToRenderedContentStart()),\r\n takeUntil(this.destroyed$)\r\n )\r\n .subscribe((offset) => {\r\n // We need to set the `style.top` property of the sticky header rows\r\n // to the negative value of the virtual scroll viewport's offset, so\r\n // make the offset negative.\r\n offset = -offset;\r\n\r\n const stickyStates: boolean[] = this.headerRowDefs.map(rowDef => rowDef.sticky);\r\n\r\n // This logic is exactly the same as what's in the StickyStyler (literally copy + paste).\r\n // The only difference is that the `stickyOffset` variable starts at the virtual scroll\r\n // viewport container's offset instead of starting at zero.\r\n const rows = this.table._getRenderedRows(this.table._headerRowOutlet);\r\n const stickyOffsets: number[] = [];\r\n const stickyCellHeights: (number|undefined)[] = [];\r\n const elementsToStick: HTMLElement[][] = [];\r\n for (let rowIndex = 0, stickyOffset = offset; rowIndex < rows.length; rowIndex++) {\r\n stickyOffsets[rowIndex] = stickyOffset;\r\n\r\n if (!stickyStates[rowIndex]) {\r\n continue;\r\n }\r\n\r\n const row = rows[rowIndex];\r\n elementsToStick[rowIndex] = this.isNativeHtmlTable ? Array.from(row.children) as HTMLElement[] : [row];\r\n\r\n const height = row.getBoundingClientRect().height;\r\n stickyOffset += height;\r\n stickyCellHeights[rowIndex] = height;\r\n }\r\n\r\n // Using the CoalescedStyleScheduler here is optional. It'll work without it,\r\n // and CoalescedStyleScheduler is not public (yet?), so feel free to remove it.\r\n this._coalescedStyleScheduler.schedule(() => {\r\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\r\n if (!stickyStates[rowIndex]) {\r\n continue;\r\n }\r\n\r\n for (const element of elementsToStick[rowIndex]) {\r\n element.style.top = `${stickyOffsets[rowIndex]}px`;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyed$.next();\r\n this.dataSourceChanges.complete();\r\n this.virtualizedDataStream.complete();\r\n }\r\n\r\n /** React to scroll state changes in the viewport. */\r\n private onRenderedDataChange() {\r\n if (!this.renderedRange) {\r\n return;\r\n }\r\n this.renderedItems = this.data.slice(this.renderedRange.start, this.renderedRange.end + 1);\r\n // delegate rendering to the table by emitting from the virtualizedDataStream\r\n this.virtualizedDataStream.next(this.renderedItems);\r\n }\r\n\r\n /** Swap out one data source for another. */\r\n private changeDataSource(oldDataSource: DataSource<T> | null, newDs: DataSource<T> | null):\r\n Observable<T[] | ReadonlyArray<T>> {\r\n\r\n oldDataSource?.disconnect(this);\r\n return newDs ? newDs.connect(this) : of();\r\n }\r\n\r\n /**\r\n * This method is only used by the experimental AutoSizeVirtualScrollStrategy.\r\n * We're not using that strategy, but I've implemented it just to show how it oculd be done.\r\n * I'm not actually sure if this works.\r\n */\r\n measureRangeSize(range: ListRange, orientation: 'horizontal' | 'vertical'): number {\r\n if (orientation === 'horizontal' || range.end < range.start) {\r\n // virtual scrolling columns are not supported by this directive\r\n return 0;\r\n }\r\n\r\n const renderedBodyRows = this.table._getRenderedRows(this.table._rowOutlet);\r\n\r\n const firstRow: HTMLElement | undefined = renderedBodyRows[range.start];\r\n const lastRow: HTMLElement | undefined = renderedBodyRows[range.end];\r\n\r\n if (!firstRow || !lastRow) {\r\n return 0;\r\n }\r\n\r\n // We need to include all header and footer rows in the sum, since they're always rendered\r\n const renderedHeaderRows = this.table._getRenderedRows(this.table._headerRowOutlet);\r\n const renderedFooterRows = this.table._getRenderedRows(this.table._footerRowOutlet);\r\n\r\n // TODO (performance): Can we just measure the offset of the first and last items and do some math to avoid having to measure each row individually?\r\n const headerHeight = renderedHeaderRows.reduce((sum: number, row: HTMLElement) => {\r\n return sum += row.getBoundingClientRect().height;\r\n }, 0);\r\n const footerHeight = renderedFooterRows.reduce((sum: number, row: HTMLElement) => {\r\n return sum += row.getBoundingClientRect().height;\r\n }, 0);\r\n\r\n const bodyHeight = lastRow.getBoundingClientRect().bottom - firstRow.getBoundingClientRect().top;\r\n\r\n return headerHeight + footerHeight + bodyHeight;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'AnnatypeofData'\r\n})\r\nexport class AnnaTypeofDataPipe implements PipeTransform {\r\n\r\n transform(value: any): any {\r\n return typeof value;\r\n }\r\n\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { memoize } from \"lodash-es\";\r\n\r\n@Pipe({\r\n name: \"annaReplaceChar\",\r\n})\r\nexport class AnnaReplaceCharPipe implements PipeTransform {\r\n converter = memoize(this.replace, (...args) => this.replace(args[0], args[1], args[2]));\r\n\r\n transform(value: string, charToBeReplaced: string, replaceBy: string): string {\r\n if (value !== undefined || value != null) {\r\n return this.converter(value, charToBeReplaced, replaceBy);\r\n }\r\n }\r\n\r\n replace(value: string, from: string, to: string): string {\r\n return value.replace(new RegExp(from, \"g\"), to);\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n } from '@angular/core';\r\n \r\n @Directive({\r\n selector: '[digitOnly]',\r\n })\r\n export class DigitOnlyDirective implements OnChanges {\r\n private hasDecimalPoint = false;\r\n private hasNegativeSign = false;\r\n private navigationKeys = [\r\n 'Backspace',\r\n 'Delete',\r\n 'Tab',\r\n 'Escape',\r\n 'Enter',\r\n 'Home',\r\n 'End',\r\n 'ArrowLeft',\r\n 'ArrowRight',\r\n 'Clear',\r\n 'Copy',\r\n 'Paste',\r\n ];\r\n \r\n @Input() decimal = false;\r\n @Input() decimalSeparator = '.';\r\n @Input() allowNegatives = false;\r\n @Input() allowPaste = true;\r\n @Input() negativeSign = '-';\r\n @Input() min = -Infinity;\r\n @Input() max = Infinity;\r\n @Input() pattern?: string | RegExp;\r\n private regex: RegExp | null = null;\r\n inputElement: HTMLInputElement;\r\n \r\n constructor(public el: ElementRef) {\r\n this.inputElement = el.nativeElement;\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['pattern']) {\r\n this.regex = this.pattern ? RegExp(this.pattern) : null;\r\n }\r\n \r\n if (changes['min']) {\r\n const maybeMin = Number(this.min);\r\n this.min = isNaN(maybeMin) ? -Infinity : maybeMin;\r\n }\r\n \r\n if (changes['max']) {\r\n const maybeMax = Number(this.max);\r\n this.max = isNaN(maybeMax) ? Infinity : maybeMax;\r\n }\r\n }\r\n \r\n @HostListener('beforeinput', ['$event'])\r\n onBeforeInput(e: InputEvent): any {\r\n if (isNaN(Number(e.data))) {\r\n if (\r\n e.data === this.decimalSeparator ||\r\n (e.data === this.negativeSign && this.allowNegatives)\r\n ) {\r\n return; // go on\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n \r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(e: KeyboardEvent): any {\r\n if (\r\n this.navigationKeys.indexOf(e.key) > -1 || // Allow: navigation keys: backspace, delete, arrows etc.\r\n ((e.key === 'a' || e.code === 'KeyA') && e.ctrlKey === true) || // Allow: Ctrl+A\r\n ((e.key === 'c' || e.code === 'KeyC') && e.ctrlKey === true) || // Allow: Ctrl+C\r\n ((e.key === 'v' || e.code === 'KeyV') && e.ctrlKey === true) || // Allow: Ctrl+V\r\n ((e.key === 'x' || e.code === 'KeyX') && e.ctrlKey === true) || // Allow: Ctrl+X\r\n ((e.key === 'a' || e.code === 'KeyA') && e.metaKey === true) || // Allow: Cmd+A (Mac)\r\n ((e.key === 'c' || e.code === 'KeyC') && e.metaKey === true) || // Allow: Cmd+C (Mac)\r\n ((e.key === 'v' || e.code === 'KeyV') && e.metaKey === true) || // Allow: Cmd+V (Mac)\r\n ((e.key === 'x' || e.code === 'KeyX') && e.metaKey === true) // Allow: Cmd+X (Mac)\r\n ) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n \r\n let newValue = '';\r\n \r\n if (this.decimal && e.key === this.decimalSeparator) {\r\n newValue = this.forecastValue(e.key);\r\n if (newValue.split(this.decimalSeparator).length > 2) {\r\n // has two or more decimal points\r\n e.preventDefault();\r\n return;\r\n } else {\r\n this.hasDecimalPoint = newValue.indexOf(this.decimalSeparator) > -1;\r\n return; // Allow: only one decimal point\r\n }\r\n }\r\n \r\n if (e.key === this.negativeSign && this.allowNegatives) {\r\n newValue = this.forecastValue(e.key);\r\n if (\r\n newValue.charAt(0) !== this.negativeSign ||\r\n newValue.split(this.negativeSign).length > 2\r\n ) {\r\n e.preventDefault();\r\n return;\r\n } else {\r\n this.hasNegativeSign = newValue.split(this.negativeSign).length > -1;\r\n return;\r\n }\r\n }\r\n \r\n // Ensure that it is a number and stop the keypress\r\n if (e.key === ' ' || isNaN(Number(e.key))) {\r\n e.preventDefault();\r\n return;\r\n }\r\n \r\n newValue = newValue || this.forecastValue(e.key);\r\n // check the input pattern RegExp\r\n if (this.regex) {\r\n if (!this.regex.test(newValue)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n \r\n const newNumber = Number(newValue);\r\n if (newNumber > this.max || newNumber < this.min) {\r\n e.preventDefault();\r\n }\r\n }\r\n \r\n @HostListener('paste', ['$event'])\r\n onPaste(event: any): void {\r\n if (this.allowPaste === true) {\r\n let pastedInput: string = '';\r\n if ((window as { [key: string]: any })['clipboardData']) {\r\n // Browser is IE\r\n pastedInput = (window as { [key: string]: any })[\r\n 'clipboardData'\r\n ].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(\r\n sanitizedContent,\r\n start ?? 0,\r\n end ?? 0,\r\n 'end'\r\n );\r\n // Angular's Reactive Form relies on \"input\" event, but on Firefox, the setRangeText method doesn't trigger it\r\n // so we have to trigger it ourself.\r\n if (\r\n typeof (window as { [key: string]: any })['InstallTrigger'] !==\r\n 'undefined'\r\n ) {\r\n this.inputElement.dispatchEvent(\r\n new Event('input', { cancelable: true })\r\n );\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 =\r\n this.inputElement.value.indexOf(this.decimalSeparator) > -1;\r\n }\r\n this.hasNegativeSign =\r\n 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) +\r\n myValue +\r\n 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(\r\n `${this.getNegativeSignRegExp()}[^0-9${this.decimalSeparator}]`,\r\n 'g'\r\n );\r\n } else {\r\n regex = new RegExp(`${this.getNegativeSignRegExp()}[^0-9]`, 'g');\r\n }\r\n result = input.replace(regex, '');\r\n \r\n const maxLength = this.inputElement.maxLength;\r\n if (maxLength > 0) {\r\n // the input element has maxLength limit\r\n const allowedLength =\r\n maxLength -\r\n this.inputElement.value.length +\r\n (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 &&\r\n (!this.hasNegativeSign || this.getSelection().includes(this.negativeSign))\r\n ? `(?!^${this.negativeSign})`\r\n : '';\r\n }\r\n \r\n private isValidDecimal(string: string): boolean {\r\n if (!this.hasDecimalPoint) {\r\n return string.split(this.decimalSeparator).length <= 2;\r\n } else {\r\n // the input element already has a decimal separator\r\n const selectedText = this.getSelection();\r\n if (selectedText && selectedText.indexOf(this.decimalSeparator) > -1) {\r\n return string.split(this.decimalSeparator).length <= 2;\r\n } else {\r\n return string.indexOf(this.decimalSeparator) < 0;\r\n }\r\n }\r\n }\r\n \r\n private getSelection(): string {\r\n return this.inputElement.value.substring(\r\n this.inputElement.selectionStart ?? 0,\r\n this.inputElement.selectionEnd ?? 0\r\n );\r\n }\r\n \r\n private forecastValue(key: string): string {\r\n const selectionStart = this.inputElement.selectionStart;\r\n const selectionEnd = this.inputElement.selectionEnd;\r\n const oldValue = this.inputElement.value;\r\n\r\n if(selectionStart == null && selectionEnd == null){\r\n return (oldValue + key);\r\n }\r\n\r\n return (\r\n oldValue.substring(0, selectionStart) +\r\n key +\r\n oldValue.substring(selectionEnd)\r\n );\r\n }\r\n }","import {Pipe, PipeTransform} from '@angular/core';\r\nimport dayjs from 'dayjs';\r\nimport customParseFormat from \"dayjs/plugin/isSameOrAfter\";\r\n\r\n@Pipe({\r\n name: 'AnnaDateFormatter'\r\n})\r\nexport class AnnaDateFormatterPipe implements PipeTransform {\r\n\r\n constructor(){\r\n }\r\n\r\n transform(value: any, format: string): any {\r\n dayjs.extend(customParseFormat);\r\n let formattedTime = dayjs(value).format(format);\r\n return formattedTime;\r\n }\r\n\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { memoize } from \"lodash-es\";\r\n\r\n@Pipe({\r\n name: \"annaConvertArrayToCSV\",\r\n})\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}\r\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[fixedRowsInPopupTable]'\r\n})\r\nexport class FixedRowsPopupTableDirective {\r\n @Input() popupRowHeight: number = 37.5; \r\n @Input() popupHeaderHeight: number = 38;\r\n @Input() tableDataLength:number \r\n maxRowsRenderedWithoutScrollForPopup: number = 10;\r\n \r\n constructor(private el: ElementRef, private renderer: Renderer2) { }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize() {\r\n this.setPopUpTableHeight();\r\n }\r\n\r\n ngOnInit() {\r\n this.setPopUpTableHeight();\r\n }\r\n\r\n setPopUpTableHeight() {\r\n const viewportHeight = window.innerHeight;\r\n const maxNoOfRowsToDisplay = viewportHeight < 740 ? 5 : 10;\r\n this.maxRowsRenderedWithoutScrollForPopup = maxNoOfRowsToDisplay;\r\n let totalPopupTableHeight = this.maxRowsRenderedWithoutScrollForPopup * this.popupRowHeight + this.popupHeaderHeight;\r\n\r\n let tableHeightForPopup= (this.tableDataLength < this.maxRowsRenderedWithoutScrollForPopup) ? ((this.popupRowHeight)*(this.tableDataLength ?this.tableDataLength : 1) ) + this.popupHeaderHeight: totalPopupTableHeight\r\n\r\n this.renderer.setStyle(\r\n this.el.nativeElement,\r\n 'height',\r\n `calc(${tableHeightForPopup}px)`\r\n );\r\n }\r\n}\r\n","\r\n\r\n// Angular import statements\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatRadioModule } from \"@angular/material/radio\";\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\n\r\n// Third party import statements\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxSliderModule } from '@angular-slider/ngx-slider';\r\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\r\nimport { NgCircleProgressModule } from 'ng-circle-progress';\r\n\r\n//Anna-core User defined import statements\r\nimport { AnnaFilterSearchedTextPipe } from './anna-core-shared-lib/pipes/annaFilterSearchedText.pipe';\r\nimport { AnnaNoDataComponent } from './anna-core-shared-lib/components/anna-no-data/anna-no-data.component';\r\nimport { AnnaIconColumnComponent } from './anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component';\r\nimport { AnnaBuyerApprovalIconTemplateComponent } from './anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component';\r\nimport { AnnaLiveIconTemplateComponent } from './anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component';\r\nimport { AnnaNotifyIconTemplateComponent } from './anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component';\r\nimport { AnnaPayForPerformanceIconTemplateComponent } from './anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component';\r\nimport { AnnaRejectedIconTemplateComponent } from './anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component';\r\nimport { showEllipsisTextOnHoverDirective } from './anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive';\r\nimport { AnnaConvertZeroOrNullOrUndefinedPipe } from './anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe';\r\n\r\n//Anna-dropdown-lib User defined import statements \r\nimport { AnnaWeekCalendarComponent } from './anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component';\r\nimport { AnnaCalendarFilterComponent } from './anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component';\r\n\r\n\r\n//Anna-generic-table User defined import statements\r\nimport { AnnaNonEditableGenericTableComponent } from './anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component';\r\nimport { AnnaSortComponent } from './anna-generic-table-lib/components/anna-sort/anna-sort.component';\r\nimport { AnnaTableVirtualScrollViewportComponent } from './anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component';\r\nimport { AnnaFixedRowSizeTableVirtualScrollStrategyDirective } from './anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy';\r\nimport { AnnaVirtualTableDirective } from './anna-generic-table-lib/directives/anna-virtual-table';\r\nimport { AnnaTypeofDataPipe } from './anna-core-shared-lib/pipes/annaTypeOfData.pipe';\r\nimport { AnnaReplaceCharPipe } from './anna-core-shared-lib/pipes/annaReplaceChar.pipe';\r\nimport { DigitOnlyDirective } from './anna-core-shared-lib/directives/digits-only/digits-only.directive';\r\nimport { AnnaColumnDateRangeFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component';\r\nimport { AnnaColumnCheckboxFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component';\r\nimport { AnnaColumnTimeFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component';\r\nimport { AnnaDeletedOrderIconTemplateComponent } from './anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component';\r\nimport { AnnaColumnSliderFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component';\r\nimport { AnnaDateFormatterPipe } from './anna-core-shared-lib/pipes/annaDateFormatter.pipe';\r\nimport { AnnaConvertArrayToCommaSeperatedValue } from './anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe';\r\nimport { FixedRowsPopupTableDirective } from './anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive';\r\nimport { AnnaEstIconTemplateComponent } from './anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AnnaNoDataComponent,\r\n AnnaFilterSearchedTextPipe,\r\n AnnaConvertZeroOrNullOrUndefinedPipe,\r\n AnnaTypeofDataPipe,\r\n AnnaFilterSearchedTextPipe,\r\n AnnaReplaceCharPipe,\r\n AnnaBuyerApprovalIconTemplateComponent,\r\n AnnaLiveIconTemplateComponent,\r\n AnnaNotifyIconTemplateComponent,\r\n AnnaPayForPerformanceIconTemplateComponent,\r\n AnnaRejectedIconTemplateComponent,\r\n showEllipsisTextOnHoverDirective,\r\n AnnaIconColumnComponent,\r\n AnnaWeekCalendarComponent,\r\n AnnaCalendarFilterComponent,\r\n AnnaSortComponent,\r\n AnnaVirtualTableDirective,\r\n AnnaNonEditableGenericTableComponent,\r\n AnnaTableVirtualScrollViewportComponent,\r\n AnnaFixedRowSizeTableVirtualScrollStrategyDirective,\r\n DigitOnlyDirective,\r\n AnnaColumnDateRangeFilterComponent,\r\n AnnaColumnTimeFilterComponent,\r\n AnnaColumnCheckboxFilterComponent,\r\n AnnaDeletedOrderIconTemplateComponent,\r\n AnnaColumnSliderFilterComponent,\r\n AnnaDateFormatterPipe,\r\n AnnaConvertArrayToCommaSeperatedValue,\r\n FixedRowsPopupTableDirective,\r\n AnnaEstIconTemplateComponent\r\n ],\r\n 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 ],\r\n exports : [\r\n AnnaNoDataComponent,\r\n AnnaFilterSearchedTextPipe,\r\n AnnaConvertZeroOrNullOrUndefinedPipe,\r\n AnnaTypeofDataPipe,\r\n AnnaReplaceCharPipe,\r\n AnnaFilterSearchedTextPipe,\r\n AnnaBuyerApprovalIconTemplateComponent,\r\n AnnaLiveIconTemplateComponent,\r\n AnnaNotifyIconTemplateComponent,\r\n AnnaPayForPerformanceIconTemplateComponent,\r\n AnnaRejectedIconTemplateComponent,\r\n showEllipsisTextOnHoverDirective,\r\n AnnaIconColumnComponent,\r\n AnnaWeekCalendarComponent,\r\n AnnaCalendarFilterComponent,\r\n AnnaSortComponent,\r\n AnnaVirtualTableDirective,\r\n AnnaNonEditableGenericTableComponent,\r\n AnnaTableVirtualScrollViewportComponent,\r\n AnnaColumnDateRangeFilterComponent,\r\n AnnaColumnTimeFilterComponent,\r\n AnnaColumnCheckboxFilterComponent,\r\n AnnaFixedRowSizeTableVirtualScrollStrategyDirective,\r\n DigitOnlyDirective,\r\n AnnaDeletedOrderIconTemplateComponent,\r\n AnnaColumnSliderFilterComponent,\r\n AnnaDateFormatterPipe,\r\n AnnaConvertArrayToCommaSeperatedValue,\r\n FixedRowsPopupTableDirective\r\n ]\r\n})\r\nexport class AnnaCoreModule { }\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaNumberFormatService {\r\n\r\npublic static GetRoundedValueWithUnits(inputValue: number, digitsToRoundDecimalPoint = 2)\r\n {\r\n let [value,unit] = AnnaNumberFormatService.GetValueInUnits(Math.abs(inputValue));\r\n value = +((+value).toFixed(digitsToRoundDecimalPoint));\r\n if(inputValue < 0){\r\n value = value * -1;\r\n }\r\n return value.toString() + unit;\r\n // return (Math.Round(value, digitsToRoundDecimalPoint, MidpointRounding.AwayFromZero) + unit);\r\n }\r\n\r\n public static GetRoundedImpressionsWithUnits(inputValue: number, digitsToRoundDecimalPoint: number = 0)\r\n {\r\n let [value,unit] = this.GetValueInUnits(Math.abs(inputValue));\r\n value = +value;\r\n if(inputValue < 0){\r\n value = value * -1;\r\n }\r\n if(digitsToRoundDecimalPoint == 0 && (unit == \"M\" || unit == \"B\" || unit == \"K\"))\r\n {\r\n digitsToRoundDecimalPoint = 2;\r\n }\r\n return Number.isInteger(value) ? value.toString() + unit : value.toFixed(digitsToRoundDecimalPoint) + unit;\r\n // return (Math.round(value, digitsToRoundDecimalPoint, MidpointRounding.AwayFromZero) + unit);\r\n }\r\n\r\n public static GetValueInUnits(inputValue: number){\r\n let unit = \"\";\r\n let thousand = 1000;\r\n let million = 1000000;\r\n let billion = 1000000000;\r\n\r\n if (inputValue >= thousand && inputValue < million)\r\n {\r\n inputValue = inputValue / thousand;\r\n unit = \"K\";\r\n }\r\n else if (inputValue >= million && inputValue < billion)\r\n {\r\n inputValue = inputValue / million;\r\n unit = \"M\";\r\n }\r\n else if (inputValue >= billion)\r\n {\r\n inputValue = inputValue / billion;\r\n unit = \"B\";\r\n }\r\n\r\n return [inputValue,unit];\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 \r\n constructor() { }\r\n\r\n storeKeyValueInLocalStorage(val: any, isFilterKey = true){\r\n let filterOrdering: any[];\r\n \r\n if(!localStorage.getItem(\"filterOrdering\")){\r\n filterOrdering = [];\r\n }\r\n else{\r\n filterOrdering = JSON.parse(localStorage.getItem(\"filterOrdering\"));\r\n }\r\n\r\n let filterOrderingSet = new Set(filterOrdering);\r\n let hashCode = null;\r\n let key = null;\r\n \r\n try{\r\n hashCode = hash(val);\r\n key = isFilterKey ? \"filter_\" + hashCode : hashCode;\r\n localStorage.setItem(key, JSON.stringify(val));\r\n \r\n if(isFilterKey){\r\n\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 catch (e) {\r\n let halfArrayLength = filterOrdering.length / 2;\r\n\r\n for(let i = 0 ; i < halfArrayLength; i++){\r\n localStorage.removeItem(filterOrdering[i]);\r\n }\r\n\r\n filterOrdering.splice(0, (filterOrdering.length / 2));\r\n\r\n hashCode = hash(val);\r\n let key = isFilterKey ? \"filter_\" + hashCode : hashCode;\r\n localStorage.setItem(key, JSON.stringify(val));\r\n \r\n if(isFilterKey){\r\n\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\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\r\n .keys(paramsObject)\r\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(paramsObject[key])}`)\r\n .join('&');\r\n }\r\n}\r\n","import { IWeekCalendar } from \"./anna-global-dropdown-config.model\";\r\n\r\nexport interface IGtTableHeader {\r\n headerInfo: IHeaderInfo[];\r\n visible: boolean;\r\n width: string;\r\n}\r\n\r\nexport interface IHeaderInfo {\r\n name: string;\r\n objectKey: string;\r\n actionKey?: string;\r\n tooltipKey?: string;\r\n isDisabledKey?: string;\r\n typeOfHeaderData: DATATYPE;\r\n typeOfBodyData: DATATYPE;\r\n filter?: FILTERTYPE;\r\n filterSortObjectKeys?: string[];\r\n isSortRequired?: boolean[];\r\n isFilterRequired?: boolean[];\r\n showTooltipIcon: boolean;\r\n disableTooltipIcon?: boolean;\r\n tooltip?: ITooltip;\r\n joinedFilterSortObjectKeys?: string;\r\n}\r\n\r\ntype DATATYPE = \"CHECKBOX\" | \"ICON\" | \"STRING\" | \"RADIO\" | \"\" | \"SVG_ICON\" | \"TEXT_ACTIONS\" | \"CLICKABLE_DATA\" | \"STRING__TEXT_ACTION\"\r\n | \"STRING__ICON_ACTION\" | \"STRING___ICON_OR_TEXT_ACTION\" | \"HTML\" | \"HTML_STRING\" | \"ICON_CELL\" | \"STRING_OR_INPUT\" | \"SINGLE_RADIO\" | 'STRING_WITH_TOOLTIP';\r\ntype FILTERTYPE = \"CHECKBOX\" | \"SLIDER\" | \"DATE\" | \"TIME\" | \"WEEK\";\r\ntype TOOLTIPOSITION = \"left\" | \"right\";\r\n\r\nexport interface ITotalRowInfo {\r\n colspan: number;\r\n data: string;\r\n lowerData?: string;\r\n colName: string;\r\n class?: string;\r\n tooltipMessage?: string;\r\n isActionColumn?: boolean;\r\n actionData?: ClickableItem[];\r\n isIconColumn?: boolean;\r\n iconData?: { class: string; disabled?: boolean };\r\n tooltipIconClass?: string;\r\n}\r\n\r\nexport interface IGtHeaderConfig {\r\n iconColumn: boolean;\r\n checkboxColumn: boolean;\r\n lastColumnKeys: string[];\r\n}\r\n\r\nexport interface IGtGeneralConfig extends ISpotTableConfig {\r\n component: COMPONENTNAME;\r\n totalRow: boolean;\r\n isHeaderChecked?: boolean;\r\n disableHeaderCheckbox?: boolean;\r\n multiWeekPickerConfig?: IWeekCalendar;\r\n verticalScrollOffsetForFilterTooltip?: number;\r\n tableContainerName?: string;\r\n tableOuterContainerName?: string;\r\n showAllColumnFilter: boolean;\r\n bufferSize: number;\r\n page: string;\r\n}\r\n\r\ntype COMPONENTNAME = \"SPOTDETAILS\" | \"EXCLUDEINVENTORYPOPUP\" | \"EXCLUDEINVENTORY\" | \"DRRLISTING\" | \"DRR\" | \"\" | \"RATING\" | \"ORDER_LISTING_INFLIGHT\" | \"ORDER_LISTING_COMPLETED\" | \"ORDER_LISTING_BLANK\" | \"LUR_VIOLATIONS\" | \"ACTIVITYLOG\" | \"NOTIFICATIONS\" | \"DP_RESTRICTIONS\";\r\ninterface ISpotTableConfig {\r\n isGrouped: boolean;\r\n}\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}\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\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(typeOfActionLinkForGt: any, name: string, className: string, showTooltip: boolean, tooltipData: { key: string, value: string }) {\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 interface IActionItemTypeSTRING__ICON_OR_TEXT_ACTION {\r\n id: any;\r\n data: 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 typeOfData: 'STRING' | 'ICON_TEXT_ACTION';\r\n additionalTextBeforeLink: string;\r\n enableTooltipForAdditionalText: boolean;\r\n}\r\n\r\nexport type IconToShow = \"LIVE\" | \"PAY_FOR_PERFORMANCE_ACTIVE\" | \"PAY_FOR_PERFORMANCE\" | \"REJECTED\" | \"NOTIFY\" | \"AWAITING_APPROVAL\" | \"DELETED_ORDER\" | \"NEED_SELLER_CONFIRMATION\" | \"NEED_BUYER_CONFIRMATION\";\r\n","export class Constants {\r\n static readonly SUCCESS_STRING = \"success\";\r\n static readonly BACKEND_SERVER_URL = \"/server/public/index.php/api\";\r\n static readonly ERROR_MSG = \"Error occurred please try again.\";\r\n static readonly NO_DATA_MSG = \"No Data to display\";\r\n static readonly SERVER_ERROR = \"Server error. Please try Again\";\r\n static readonly USER_ORIGIN = \"ANNA\";\r\n static readonly ACTIVE_USER_STATUS = \"active\";\r\n static readonly DELETED_USER_STATUS = \"deleted\";\r\n static readonly INACTIVE_USER_STATUS = \"inactive\";\r\n static readonly OGAdminRole = \"Ownership Group Admin\";\r\n static readonly ASARole = \"Anna Station Admin\";\r\n static readonly dollars = \"$\";\r\n}\r\n\r\nexport class ErrorCodes {\r\n static readonly BAD_REQUEST = 400;\r\n static readonly SERVER_ERROR = 500;\r\n static readonly SUCCESS_CODE = 200;\r\n static readonly SUCCESS_CODE_GET = 200;\r\n static readonly SUCCESS_CODE_POST = 201;\r\n static readonly SUCCESS_CODE_PATCH = 204;\r\n static readonly NO_CONTENT = 204;\r\n static readonly under_review = 409;\r\n}\r\n\r\nexport enum Days {\r\n M = 1,\r\n Tu = 2,\r\n We = 3,\r\n Th = 4,\r\n F = 5,\r\n Sa = 6,\r\n Su = 7,\r\n}\r\n\r\nexport class OrderSources{ \r\n static readonly Medialine = \"Medialine\";\r\n static readonly Non_electronic = \"Non electronic\";\r\n static readonly Others = \"Others\";\r\n static readonly WOC_unlinked = \"WOC Unlinked\";\r\n static readonly WOC_linked = \"WOC Linked\";\r\n static readonly WOZ = \"WOZ\";\r\n}","/*\r\n * Public API Surface of anna-core\r\n */\r\n\r\nexport * from \"./lib/anna-core.module\";\r\n\r\n//ANNA-CORE \r\n//components \r\nexport * from \"./lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component\";\r\n\r\n//services\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-date-time-format.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-global-config.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-filter.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-sort.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-generic-table.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-number-format.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-persisting-filter.service\";\r\n\r\n//models\r\nexport * from \"./lib/anna-core-shared-lib/models/anna-generic-data-type.model\";\r\nexport * from \"./lib/anna-core-shared-lib/models/anna-global-dropdown-config.model\";\r\nexport * from \"./lib/anna-core-shared-lib/models/anna-non-editable-gt-models\";\r\nexport * from \"./lib/anna-core-shared-lib/models/anna-tooltip.model\";\r\nexport * from \"./lib/anna-core-shared-lib/models/anna-sort.model\";\r\n\r\n\r\n//constants\r\nexport * from \"./lib/anna-core-shared-lib/constants/shared.constant\";\r\n\r\n//pipes\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe\";\r\n\r\n//directives\r\nexport * from \"./lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive\";\r\nexport * from './lib/anna-core-shared-lib/directives/digits-only/digits-only.directive';\r\nexport * from './lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive';\r\n\r\n\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\r\n//ANNA-GENERIC-TABLE-LIB\r\n//Modules\r\n\r\n//Components\r\nexport * from \"./lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component\";\r\nexport * from \"./lib/anna-generic-table-lib/components/anna-sort/anna-sort.component\";\r\nexport * from \"./lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component\";\r\nexport * from \"./lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component\";\r\nexport * from \"./lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component\";\r\nexport * from \"./lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component\";\r\nexport * from \"./lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component\";\r\n\r\n//Directives\r\nexport * from \"./lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy\";\r\nexport * from \"./lib/anna-generic-table-lib/directives/anna-virtual-table\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.AnnaBuyerApprovalIconTemplateComponent","i3.AnnaLiveIconTemplateComponent","i4.AnnaNotifyIconTemplateComponent","i5.AnnaPayForPerformanceIconTemplateComponent","i6.AnnaRejectedIconTemplateComponent","i7.AnnaDeletedOrderIconTemplateComponent","i2.AnnaDateTimeFormatService","i3.AnnaGlobalConfigService","i5","i1.AnnaDateTimeFormatService","i2","i3","i4","CustomParseFormat","i2.AnnaSortService","i1.AnnaSortService","i3.AnnaFilterService","i5.AnnaCalendarFilterComponent","i6.AnnaSortComponent","i7.AnnaSortComponent","i2.AnnaFilterService","i1.AnnaFilterService","i6","i11.AnnaNoDataComponent","i12.showEllipsisTextOnHoverDirective","i13.AnnaIconColumnComponent","i14.AnnaColumnDateRangeFilterComponent","i15.AnnaColumnTimeFilterComponent","i16.AnnaColumnCheckboxFilterComponent","i17.AnnaColumnSliderFilterComponent","i18.AnnaEstIconTemplateComponent","i3.AnnaSortService","i3.AnnaGtHelperService","map","customParseFormat"],"mappings":"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"}
1
+ {"version":3,"file":"annalib-anna-core.mjs","sources":["../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-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-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-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-icon-column/anna-icon-column.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-global-config.service.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.html","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-tooltip.model.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-sort.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-sort.model.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-filter.service.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-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-time-filter/anna-column-time-filter.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-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-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-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-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-generic-table.service.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.ts","../../../projects/anna-core/src/lib/anna-core.module.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-number-format.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-persisting-filter.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/constants/shared.constant.ts","../../../projects/anna-core/src/public-api.ts","../../../projects/anna-core/src/annalib-anna-core.ts"],"sourcesContent":["import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { memoize } from \"lodash-es\";\r\n\r\n@Pipe({\r\n name: \"AnnafilterSearchedText\",\r\n})\r\nexport class AnnaFilterSearchedTextPipe implements PipeTransform {\r\n callFilter = memoize(this.filter, (...args) => this.filter(args[0], args[1], args[2]));\r\n\r\n transform(items: any[], searchText: any, keyName?: any): any[] {\r\n return this.callFilter(items, searchText, keyName);\r\n }\r\n\r\n filter(items: any[], searchText: string, keyName?: any): any[] {\r\n if (!items) return [];\r\n if (!searchText) return items;\r\n searchText = searchText.toString().toLowerCase();\r\n\r\n\r\n // if keyName is an array then loop through all the keynames\r\n if(keyName && typeof(keyName) == 'object'){\r\n let isFoundAtleastOnce = false;\r\n let isFound:any[];\r\n\r\n for(const key of keyName){\r\n isFound = items.filter((item) => item[key].toString().toLowerCase().includes(searchText));\r\n if(isFound.length){\r\n isFoundAtleastOnce = true;\r\n break;\r\n }\r\n }\r\n return isFoundAtleastOnce ? isFound : [];\r\n }\r\n else {\r\n //if keyName is undefined every key will be considered for filtering.\r\n let searchResult = [];\r\n if (!keyName)\r\n searchResult = items.filter(\r\n (item) => Object.values(item).filter((n) => n ? n.toString().toLowerCase().includes(searchText) : false).length > 0\r\n );\r\n else if(keyName == 'NoKey'){\r\n searchResult = items.filter((item)=> item.toString().toLowerCase().includes(searchText)); \r\n }\r\n else {\r\n searchResult = items.filter((item) => item[keyName] ? item[keyName].toString().toLowerCase().includes(searchText) : false);\r\n }\r\n return searchResult;\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from \"@angular/core\";\r\n@Component({\r\n selector: \"anna-core-no-data-lib\",\r\n templateUrl: \"./anna-no-data.component.html\",\r\n styleUrls: [\"./anna-no-data.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\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 [style.marginRight]=\"width\" [style.marginTop]=\"marginTop\" class=\"no-data\">\r\n <label>{{ message }}</label>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-buyer-approval-icon-template',\r\n templateUrl: './anna-buyer-approval-icon-template.component.html',\r\n styleUrls: ['./anna-buyer-approval-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaBuyerApprovalIconTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"buyerApprovalIcon\"></ng-container>\r\n\r\n<ng-template #buyerApprovalIcon>\r\n <svg width=\"15px\" height=\"15px\" viewBox=\"0 0 20 20\">\r\n <g id=\"Awaiting-Buyer-Approval-icon\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"time-left\" transform=\"translate(3.000000, 2.000000)\" fill=\"#4A4A4A\" fill-rule=\"nonzero\">\r\n <path\r\n d=\"M6.23157622,14.1696467 C5.70535057,14.0721422 5.2005579,13.9061054 4.72188769,13.6745242 C4.71622258,13.6714711 4.71115545,13.6679958 4.70520709,13.6652025 C4.59240848,13.6104091 4.47979871,13.551718 4.37065094,13.4903961 C4.37027327,13.4899414 4.36958087,13.4896491 4.36898288,13.4893893 C4.16872129,13.37558 3.97327504,13.2496557 3.78339947,13.1117139 C1.01467199,11.0989392 0.348958764,7.13679055 2.29945571,4.27950803 C2.72358352,3.65842885 3.23684237,3.14027823 3.80904983,2.72960334 C3.81609974,2.72453649 3.82314965,2.71950212 3.83013662,2.71440279 C5.84650619,1.28061347 8.58442178,1.183986 10.7254867,2.65733574 L10.2656372,3.34301728 C10.1377946,3.53386873 10.2164452,3.67294733 10.4402485,3.65216024 L12.4377343,3.46760989 C12.6618209,3.4468228 12.7958322,3.24677957 12.7355617,3.0234483 L12.1991703,1.02899228 C12.1391202,0.805401178 11.9853754,0.778637804 11.8574069,0.969456765 L11.3964873,1.6567623 C9.82523796,0.568265989 7.94067659,0.153206329 6.0701521,0.487943386 C5.88175576,0.521592483 5.69600314,0.562776899 5.51279981,0.610717118 C5.51138354,0.610976957 5.51025052,0.611139356 5.50911749,0.611399194 C5.50203611,0.613185585 5.4948603,0.615556612 5.48796775,0.617537881 C3.8749854,1.04500483 2.46767797,2.01585923 1.46347449,3.40105873 C1.4550083,3.41141979 1.44629033,3.4215535 1.43829623,3.432824 C1.40490356,3.47923766 1.37176268,3.52672316 1.33931419,3.57420867 C1.28625101,3.65203032 1.23394317,3.73180077 1.18390138,3.81157121 C1.17763828,3.82118524 1.17285441,3.83096167 1.16737814,3.84067314 C0.338698623,5.1658824 -0.0610062726,6.69795566 0.00754154337,8.25770173 C0.00769890751,8.26283354 0.00741565207,8.26799784 0.00754154337,8.27325957 C0.0141823097,8.42562242 0.0258902012,8.58009646 0.0417839785,8.73216699 C0.0426337448,8.7419759 0.0447424242,8.75126512 0.0463475384,8.76107403 C0.0627763537,8.91398904 0.0833910551,9.06726132 0.109230246,9.22050113 C0.371839509,10.7840149 1.08652445,12.1909434 2.15745032,13.2856758 C2.15993667,13.2882417 2.16251744,13.291035 2.16503527,13.2936983 C2.16591651,13.2947052 2.16689216,13.2952249 2.16774193,13.2961668 C2.45546651,13.5890373 2.7684323,13.8599191 3.10541185,14.1048494 C3.98728044,14.7461311 4.9692641,15.1700252 6.02385557,15.3653264 C6.3438398,15.424667 6.64950389,15.2048436 6.70691032,14.8747836 C6.76428528,14.5444963 6.55146603,14.2287924 6.23157622,14.1696467 Z\"\r\n id=\"Path\"\r\n ></path>\r\n <path\r\n d=\"M9.22237925,14.6588011 C9.29073073,14.9263505 9.1292489,15.198652 8.86169949,15.2670034 C8.51639563,15.355219 8.1641424,15.4188128 7.8069689,15.4570516 C7.53239558,15.4864472 7.28598003,15.2876915 7.25658436,15.0131182 C7.22718869,14.7385449 7.42594445,14.4921293 7.70051776,14.4627336 C8.01004537,14.4295958 8.31515603,14.3745129 8.61417689,14.2981213 C8.8817263,14.2297698 9.15402777,14.3912517 9.22237925,14.6588011 Z M12.5552524,12.2886551 C12.7611952,12.4726175 12.7790139,12.7886982 12.5950515,12.994641 C12.3569806,13.2611574 12.1001968,13.5104915 11.8267859,13.7406023 C11.6155121,13.9184167 11.3000937,13.8912925 11.1222793,13.6800187 C10.9444648,13.4687448 10.9715891,13.1533264 11.1828629,12.975512 C11.4200152,12.7759175 11.6427598,12.5596351 11.8492666,12.3284542 C12.033229,12.1225114 12.3493096,12.1046927 12.5552524,12.2886551 Z M13.9945063,8.57622811 C14.2674538,8.61811209 14.4547678,8.87333344 14.4128838,9.14628095 C14.3584322,9.50112883 14.2787427,9.85020038 14.1746496,10.1914009 C14.0940709,10.4555252 13.8146338,10.6043183 13.5505094,10.5237395 C13.2863851,10.4431608 13.137592,10.1637237 13.2181708,9.89959931 C13.3082912,9.6041989 13.3772907,9.30195366 13.4244534,8.99460564 C13.4663374,8.72165813 13.7215588,8.53434413 13.9945063,8.57622811 Z M13.8741743,4.99628976 C14.0173723,5.32357494 14.1370467,5.66111195 14.2320931,6.00667963 C14.305325,6.27293459 14.1488489,6.54814305 13.8825939,6.62137492 C13.6163389,6.6946068 13.3411305,6.53813067 13.2678986,6.27187571 C13.1856167,5.97271686 13.0820133,5.68050756 12.958028,5.39713383 C12.847338,5.14414702 12.9626923,4.84932868 13.2156791,4.73863865 C13.4686659,4.62794862 13.7634843,4.74330295 13.8741743,4.99628976 Z\"\r\n id=\"Combined-Shape\"\r\n ></path>\r\n <path\r\n d=\"M6.49684035,4 C6.22234237,4 6,4.21290493 6,4.47514225 L6,9.20888548 L10.5252942,11.4469308 C10.5981282,11.4830116 10.6761155,11.5 10.7528554,11.5 C10.9325937,11.5 11.106194,11.4063595 11.1944548,11.2429754 C11.3203307,11.0097848 11.2250786,10.7233052 10.9813357,10.6028789 L6.9931227,8.63027395 L6.9931227,4.47514225 C6.99308988,4.21290493 6.77101009,4 6.49684035,4 Z\"\r\n id=\"Path\"\r\n ></path>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-live-icon-template',\r\n templateUrl: './anna-live-icon-template.component.html',\r\n styleUrls: ['./anna-live-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaLiveIconTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"liveIcon\"></ng-container>\r\n<ng-template #liveIcon>\r\n <svg width=\"15px\" height=\"15px\" viewBox=\"0 0 20 20\">\r\n <g id=\"Live-Icon\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"next\" transform=\"translate(2.000000, 2.000000)\" fill-rule=\"nonzero\">\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 id=\"Oval\" fill=\"#8BAC2A\" cx=\"8\" cy=\"8\" r=\"4\"></circle>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-notify-icon-template',\r\n templateUrl: './anna-notify-icon-template.component.html',\r\n styleUrls: ['./anna-notify-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaNotifyIconTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<i class=\"mdi mdi-bell\"></i>","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-pay-for-performance-icon-template',\r\n templateUrl: './anna-pay-for-performance-icon-template.component.html',\r\n styleUrls: ['./anna-pay-for-performance-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AnnaPayForPerformanceIconTemplateComponent implements OnInit {\r\n\r\n @Input() isTitle: boolean;\r\n @Input() color: string;\r\n @Input() width: string;\r\n @Input() height: string;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"PayForPerformanceIcon\"\r\n [ngTemplateOutletContext]=\"{ color: color,width: width,height:height}\"> \r\n</ng-container>\r\n\r\n<ng-template #PayForPerformanceIcon let-color=\"color\" let-width=\"width\" let-height=\"height\">\r\n <svg [attr.width]=\"width\" [attr.height]=\"height\" viewBox=\"0 0 20 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"02.-PAY-FOR-PERFORMANCE-MARKED\" transform=\"translate(-100.000000, -537.000000)\" [attr.fill]=\"color\" fill-rule=\"nonzero\">\r\n <g id=\"PFP\" transform=\"translate(100.000000, 537.000000)\">\r\n <path 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\" id=\"Shape-Copy-9\"></path>\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-rejected-icon-template',\r\n templateUrl: './anna-rejected-icon-template.component.html',\r\n styleUrls: ['./anna-rejected-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaRejectedIconTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"rejectedIcon\"></ng-container>\r\n\r\n<ng-template #rejectedIcon>\r\n <svg width=\"15px\" height=\"15px\" viewBox=\"0 0 20 20\">\r\n <g id=\"Buyer-rejected-icon\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M15.7822266,4.21777344 C14.3671875,2.80276367 12.4951465,2 10.5,2 C6.37918945,2 3,5.37253906 3,9.5 C3,13.6296289 6.37133789,17 10.5,17 C14.6105273,17 18,13.6429004 18,9.5 C18,7.50485352 17.1972656,5.6327832 15.7822266,4.21777344 Z M10.5,15.2128906 C7.34220703,15.2128906 4.78710938,12.664502 4.78710938,9.5 C4.78710938,8.26950195 5.17382812,7.10055664 5.88574219,6.13375977 L13.8662402,14.1054395 C12.8993848,14.8261719 11.730498,15.2128906 10.5,15.2128906 Z M15.1054688,12.8661816 L7.13375977,4.88574219 C8.10061523,4.17382813 9.26950195,3.78710938 10.5,3.78710938 C13.6578809,3.78710938 16.2128906,6.33549805 16.2128906,9.5 C16.2128906,10.7304395 15.8261719,11.8993848 15.1054688,12.8661816 Z\"\r\n id=\"Shape\"\r\n fill=\"#4A4A4A\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-deleted-order-icon-template',\r\n templateUrl: './anna-deleted-order-icon-template.component.html',\r\n styleUrls: ['./anna-deleted-order-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaDeletedOrderIconTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<i class=\"mdi mdi-file-remove-outline\"></i>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { GtColumnIconEmittedData } from '../../models/anna-generic-data-type.model';\r\nimport { IconToShow } from '../../models/anna-non-editable-gt-models';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-icon-column',\r\n templateUrl: './anna-icon-column.component.html',\r\n styleUrls: ['./anna-icon-column.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaIconColumnComponent implements OnInit {\r\n\r\n @Input() componentName: string;\r\n @Input() iconToShow: IconToShow;\r\n // @Input() objectKey: string;\r\n @Input() dataObject: any;\r\n PfpIconActiveColor = \"#9B1B93\"\r\n PfpIconDisableColor = \"rgba(189,189,189,0.5)\";\r\n @Output() onColumnIconClicked = new EventEmitter<GtColumnIconEmittedData>();\r\n \r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n svgIconClicked(rowData: any,key: string){\r\n this.onColumnIconClicked.emit({data: rowData,key: key});\r\n }\r\n\r\n}\r\n","<span\r\n *ngIf=\"iconToShow == 'PAY_FOR_PERFORMANCE_ACTIVE' \"\r\n class=\"cursor-not-allowed\"\r\n (click)=\"$event.stopPropagation()\"\r\n>\r\n <anna-pay-for-performance-icon-template\r\n [color]=\"PfpIconActiveColor\"\r\n [width]=\"'15px'\"\r\n [height]=\"'15px'\"\r\n >\r\n </anna-pay-for-performance-icon-template>\r\n</span>\r\n<span\r\n *ngIf=\"iconToShow == 'PAY_FOR_PERFORMANCE' \"\r\n (click)=\"svgIconClicked(dataObject,'payForPerformance')\"\r\n >\r\n <anna-pay-for-performance-icon-template\r\n [color]=\"PfpIconDisableColor\"\r\n [width]=\"'15px'\"\r\n [height]=\"'15px'\"\r\n >\r\n </anna-pay-for-performance-icon-template>\r\n</span>\r\n\r\n<anna-live-icon-template *ngIf=\"iconToShow == 'LIVE'\"></anna-live-icon-template>\r\n\r\n<anna-rejected-icon-template *ngIf=\"iconToShow == 'REJECTED'\"></anna-rejected-icon-template>\r\n<anna-notify-icon-template *ngIf=\"iconToShow == 'NOTIFY'\"></anna-notify-icon-template>\r\n<anna-buyer-approval-icon-template *ngIf=\"iconToShow == 'AWAITING_APPROVAL'\"></anna-buyer-approval-icon-template>\r\n<anna-deleted-order-icon-template *ngIf=\"iconToShow == 'DELETED_ORDER' \"></anna-deleted-order-icon-template>\r\n\r\n<i class=\"mdi mdi-alert\" *ngIf=\"iconToShow == 'NEED_SELLER_CONFIRMATION' \"></i>\r\n<i class=\"mdi mdi-alert\" *ngIf=\"iconToShow == 'NEED_BUYER_CONFIRMATION' \"></i>\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[showEllipsisTextOnHover]'\r\n})\r\n\r\nexport class showEllipsisTextOnHoverDirective {\r\n\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n let domElement = this.elementRef.nativeElement;\r\n if (domElement.offsetWidth < domElement.scrollWidth || this.checkPositionsInDecimals(domElement)) {\r\n domElement.title = (domElement.textContent == \"\") ? domElement.value : domElement.textContent;\r\n }\r\n else if (domElement.title) domElement.removeAttribute('title');\r\n }\r\n\r\n checkPositionsInDecimals(domElement: Element): boolean {\r\n // if we don't have any children element Then we can't calculate and compare anything so we are returning false from here\r\n if (!domElement.children || (domElement.children && domElement.children.length == 0)) return false;\r\n\r\n let elementRect = domElement.getBoundingClientRect();\r\n let childRect = domElement.children[0].getBoundingClientRect();\r\n\r\n let paddingOnRight = window.getComputedStyle(domElement).paddingRight;\r\n let padding = +(paddingOnRight.endsWith(\"px\") ? paddingOnRight.slice(0, -2) : paddingOnRight);\r\n\r\n // If overflow happens then Child element's right side position will be greater than container element's right side position.\r\n return (childRect.right + padding) > elementRect.right;\r\n }\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { memoize } from \"lodash-es\";\r\n\r\n@Pipe({\r\n name: \"AnnaConvertZeroOrNullOrUndefined\",\r\n})\r\nexport class AnnaConvertZeroOrNullOrUndefinedPipe implements PipeTransform {\r\n transformer = memoize(this.replace, (...args) => this.replace(args[0], args[1]));\r\n\r\n transform(value:any, convertTo:any): number | string {\r\n return this.transformer(value, convertTo);\r\n }\r\n\r\n replace(value:any, convertTo:any): number | string {\r\n if (value === \"undefined\" || value === null || value === \"\" || Number(value) === 0) {\r\n return convertTo;\r\n }\r\n return value;\r\n }\r\n}\r\n","// Angular import statements\r\nimport { Injectable } from '@angular/core';\r\nimport { NgbDate } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n// Third party import statements\r\nimport dayjs from \"dayjs\";\r\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\r\n\r\n// User defined import statements \r\nexport type NgbDateType = { year: number, month: number, day: number };\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AnnaDateTimeFormatService {\r\n\r\n constructor() {\r\n dayjs.extend(customParseFormat);\r\n }\r\n\r\n convertToNgbDateStandardFormat(date: any): NgbDateType | NgbDate {\r\n return {\r\n year: parseInt(dayjs(date, \"MM/DD/YYYY\").format(\"YYYY\")),\r\n month: parseInt(dayjs(date, \"MM/DD/YYYY\").format(\"M\")),\r\n day: parseInt(dayjs(date, \"MM/DD/YYYY\").format(\"D\")),\r\n };\r\n }\r\n\r\n convertToNgbDate(date: any, parseFormat: any): NgbDateType | NgbDate {\r\n return {\r\n year: parseInt(dayjs(date, parseFormat).format(\"YYYY\")),\r\n month: parseInt(dayjs(date, parseFormat).format(\"M\")),\r\n day: parseInt(dayjs(date, parseFormat).format(\"D\")),\r\n };\r\n }\r\n\r\n public static formatToTwelveHrs(time: any, callRemoveZero: boolean) {\r\n if (time.endsWith('A') || time.endsWith('P')) {\r\n time = time.substring(0, time.length - 1);\r\n }\r\n let tmp = time.split(\":\");\r\n let formattedTime = [];\r\n if (+tmp[0] > 12) {\r\n formattedTime[0] = (+tmp[0] - 12).toString();\r\n if (+tmp[0] == 24) formattedTime[2] = \"AM\";\r\n else formattedTime[2] = \"PM\";\r\n } else if (tmp[0] == \"12\") {\r\n formattedTime[0] = tmp[0];\r\n formattedTime[2] = \"PM\";\r\n } else if (tmp[0] == \"00\") {\r\n formattedTime[0] = \"12\"\r\n formattedTime[2] = \"AM\";\r\n } else {\r\n formattedTime[0] = tmp[0];\r\n formattedTime[2] = \"AM\";\r\n }\r\n formattedTime[1] = tmp[1];\r\n if (callRemoveZero) formattedTime = AnnaDateTimeFormatService.removeZero(formattedTime);\r\n return formattedTime;\r\n }\r\n\r\n convertTotwentyFourHrsFormat(time: any, callAddZero: any) {\r\n let tmp = time.split(/[ :]+/);\r\n let formattedTime = [];\r\n if (tmp[0] != \"12\" && tmp[2] == \"PM\") {\r\n formattedTime[0] = (+tmp[0] + 12).toString();\r\n } else if (tmp[0] == \"12\" && tmp[2] == \"AM\") {\r\n formattedTime[0] = \"00\";\r\n } else formattedTime[0] = tmp[0].toString();\r\n formattedTime[1] = tmp[1].toString();\r\n if (callAddZero) formattedTime = this.addZero(formattedTime);\r\n return formattedTime;\r\n }\r\n\r\n public static removeZero(time: any) {\r\n let removedZero;\r\n let formattedTime = time;\r\n if (\r\n time[0] == \"01\" ||\r\n time[0] == \"02\" ||\r\n time[0] == \"03\" ||\r\n time[0] == \"04\" ||\r\n time[0] == \"05\" ||\r\n time[0] == \"06\" ||\r\n time[0] == \"07\" ||\r\n time[0] == \"08\" ||\r\n time[0] == \"09\"\r\n ) {\r\n removedZero = time[0].toString();\r\n formattedTime[0] = removedZero.charAt(1);\r\n formattedTime[1] = time[1];\r\n formattedTime[2] = time[2];\r\n }\r\n return formattedTime;\r\n }\r\n\r\n addZero(time: any) {\r\n let addedZero;\r\n let formattedTime = time;\r\n if (time[1] == \"0\") time[1] = \"0\" + time[1];\r\n if (\r\n time[0] == \"0\" ||\r\n time[0] == \"1\" ||\r\n time[0] == \"2\" ||\r\n time[0] == \"3\" ||\r\n time[0] == \"4\" ||\r\n time[0] == \"5\" ||\r\n time[0] == \"6\" ||\r\n time[0] == \"7\" ||\r\n time[0] == \"8\" ||\r\n time[0] == \"9\"\r\n ) {\r\n addedZero = \"0\" + time[0];\r\n formattedTime[0] = addedZero;\r\n formattedTime[1] = time[1];\r\n }\r\n return formattedTime;\r\n }\r\n\r\n sortByTimeAscending(a: any, b: any) {\r\n let format = \"MM/DD/YYYY HH:mm:ss\";\r\n a = dayjs('01/01/2001 ' + a, format);\r\n b = dayjs('01/01/2001 ' + b, format);\r\n\r\n let results;\r\n\r\n results = a.get('hour') > b.get('hour') ? 1 : a.get('hour') < b.get('hour') ? -1 : 0;\r\n\r\n if (results === 0) results = a.get('minute') > b.get('minute') ? 1 : a.get('minute') < b.get('minute') ? -1 : 0;\r\n\r\n if (results === 0) results = a.get('second') > b.get('second') ? 1 : a.get('second') < b.get('second') ? -1 : 0;\r\n\r\n return results;\r\n }\r\n\r\n sortByTimeDescending(a: any, b: any) {\r\n let format = \"MM/DD/YYYY HH:mm:ss\";\r\n a = dayjs('01/01/2001 ' + a, format);\r\n b = dayjs('01/01/2001 ' + b, format);\r\n\r\n let results;\r\n\r\n results = a.get('hour') < b.get('hour') ? 1 : a.get('hour') > b.get('hour') ? -1 : 0;\r\n\r\n if (results === 0) results = a.get('minute') < b.get('minute') ? 1 : a.get('minute') > b.get('minute') ? -1 : 0;\r\n\r\n if (results === 0) results = a.get('second') < b.get('second') ? 1 : a.get('second') > b.get('second') ? -1 : 0;\r\n\r\n return results;\r\n }\r\n\r\n convertNgbDateToMoment(ngbDate: NgbDate | NgbDateType): string {\r\n let formatType = \"MM/DD/YYYY\";\r\n let converted = null;\r\n if (ngbDate && ngbDate.month && ngbDate.day && ngbDate.year) {\r\n converted = ngbDate.month + \"/\" + ngbDate.day + \"/\" + ngbDate.year;\r\n converted = dayjs(converted).format(formatType);\r\n }\r\n return converted;\r\n }\r\n\r\n compareDate(a: string, b: string, isAsc: boolean) {\r\n return isAsc ? dayjs(a).diff(b) : dayjs(b).diff(a);\r\n }\r\n\r\n public static formatTwentyFourHourTimeToHHMMAFormat(value: any, date?: string): string {\r\n value = dayjs(date ? date : '01/01/2000 ' + value).format(\"MM/DD/YYYY HH:mm:ss\");\r\n return value[14] == \"0\" && value[15] == \"0\"\r\n ? dayjs(value, [\"MM/DD/YYYY HH:mm:ss\"]).format(\"hA\").slice(0, -1)\r\n : dayjs(value, [\"MM/DD/YYYY HH:mm:ss\"]).format(\"h:mmA\").slice(0, -1);\r\n }\r\n\r\n public static formatTwelveHourTimeToHHMMAFormat(timeValue: any, date?: string): string {\r\n timeValue = dayjs(date ? date : '01/01/2000 ' + timeValue).format(\"MM/DD/YYYY HH:mm:ss\");\r\n // check if min==00\r\n return timeValue[14] == \"0\" && timeValue[15] == \"0\"\r\n ? dayjs(timeValue, [\"MM/DD/YYYY HH:mm:ss\"]).format(\"hA\").slice(0, -1)\r\n : dayjs(timeValue, [\"MM/DD/YYYY HH:mm:ss\"]).format(\"h:mmA\").slice(0, -1);\r\n }\r\n\r\n formatDateAndHHMMATimeToStandardFormat(dateAndTime: any) {\r\n let standardFormat, date, time;\r\n if (dateAndTime.includes(\"|\")) {\r\n date = dateAndTime.slice(0, dateAndTime.indexOf(\"|\"));\r\n time = dateAndTime.slice(dateAndTime.indexOf('|') + 1, dateAndTime.length).trim();\r\n\r\n time = time.slice(0, 2) + \":\" + time.slice(2, 4) + \" \" + time.slice(4, 5);\r\n time = time + \"M\";\r\n standardFormat = date + time;\r\n }\r\n else {\r\n standardFormat = dateAndTime + \" 00:00 AM\"\r\n }\r\n return dayjs(standardFormat).format(\"MM/DD/YYYY hh:mm A\");\r\n }\r\n\r\n compare(a: number | string, b: number | string, isAsc: boolean) {\r\n if (typeof a == 'string' && typeof b == 'string') {\r\n a = a == \"-\" ? \"0\" : a.toLowerCase();\r\n b = b == \"-\" ? \"0\" : b.toLowerCase();\r\n }\r\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\r\n }\r\n\r\n sortDataByBroadcastTimeAsc(firstParamTime: string, secondParamTime: string, broadcastTime: string) {\r\n let format = \"HH:mm:ss\";\r\n\r\n let a = dayjs(firstParamTime, format);\r\n let b = dayjs(secondParamTime, format);\r\n\r\n let broadcastdayjsDateTime = dayjs(broadcastTime, \"HH:mm:ss\");\r\n\r\n a = a.isBefore(broadcastdayjsDateTime) ? a.add(1, \"d\") : a;\r\n b = b.isBefore(broadcastdayjsDateTime) ? b.add(1, \"d\") : b;\r\n\r\n let result = a.isBefore(b) ? -1 : a.isAfter(b) ? 1 : 0;\r\n return result;\r\n }\r\n\r\n convertNgbDateToMomentInSpecificFormat(ngbDate: NgbDateType, format: string){\r\n let converted = null;\r\n \r\n if (ngbDate && ngbDate.month && ngbDate.day && ngbDate.year) {\r\n converted = ngbDate.month + \"/\" + ngbDate.day + \"/\" + ngbDate.year;\r\n converted = dayjs(converted).format(format);\r\n }\r\n \r\n return converted;\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport {\r\n IAngular2MultiSelectSettings,\r\n INgxAsideSettings,\r\n INgbDatePickerSettings,\r\n INgSelectSettings,\r\n INgxInfiniteScrollSettings,\r\n INgxSkeletonLoaderSettings,\r\n IRadioButtonComponentConfig,\r\n IConfirmationPopupConfig,\r\n IWeekCalendar,\r\n ICustomSingleSelect,\r\n ICustomMultiSelect,\r\n} from \"../models/anna-global-dropdown-config.model\";\r\nimport {\r\n IGtHeaderConfig,\r\n IGtGeneralConfig\r\n} from \"../models/anna-non-editable-gt-models\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaGlobalConfigService {\r\n readonly defaultAngular2MultiSelectSettings: IAngular2MultiSelectSettings;\r\n readonly defaultNgxAsideSettings: INgxAsideSettings;\r\n readonly defaultNgbDatePickerSettings: INgbDatePickerSettings;\r\n readonly defaultNgSelectSettings: INgSelectSettings;\r\n readonly defaultNgxInfiniteScrollSettings: INgxInfiniteScrollSettings;\r\n readonly defaultNgxSkeletonLoaderSettings: INgxSkeletonLoaderSettings;\r\n readonly defaultRadioButtonsComponentConfig: IRadioButtonComponentConfig;\r\n readonly defaultConfirmationPopupConfig: IConfirmationPopupConfig;\r\n readonly defaultWeekCalendarConfig: IWeekCalendar;\r\n readonly defaultGtHeaderConfig: IGtHeaderConfig;\r\n readonly defaultGtGeneralConfig: IGtGeneralConfig;\r\n readonly defaultSingleSelectConfig: ICustomSingleSelect;\r\n readonly defaultMultiSelectConfig: ICustomMultiSelect;\r\n\r\n /*\r\n Initializing all default settings\r\n */\r\n constructor() {\r\n this.defaultAngular2MultiSelectSettings = {\r\n text: \"Select option\",\r\n selectAllText: \"Select All\",\r\n unSelectAllText: \"UnSelect All\",\r\n badgeShowLimit: 1,\r\n singleSelection: false,\r\n classes: \"filter-dropdowns\",\r\n enableSearchFilter: true,\r\n enableCheckAll: true,\r\n autoPosition: false,\r\n disabled: false,\r\n position: \"bottom\",\r\n lazyLoading: false,\r\n showCheckbox: true,\r\n maxHeight: 300,\r\n enableFilterSelectAll: true,\r\n };\r\n\r\n this.defaultNgxAsideSettings = {\r\n title: '\"Filters\"',\r\n cancelButtonTitle: '\"Cancel\"',\r\n submitButtonTitle: '\"Apply\"',\r\n closeOnEscape: false,\r\n showOverlay: false,\r\n showDefaultFooter: false,\r\n showDefaultHeader: false,\r\n };\r\n\r\n this.defaultNgbDatePickerSettings = {\r\n autoClose: false,\r\n placeholder: \"mm-dd-yyyy\",\r\n displayMonths: 1,\r\n firstDayOfWeek: 1,\r\n showWeekNumbers: false,\r\n readonly: true,\r\n };\r\n\r\n this.defaultNgSelectSettings = {\r\n allowClear: false,\r\n placeholder: \"Select\",\r\n };\r\n\r\n this.defaultNgxInfiniteScrollSettings = {\r\n infiniteScrollDistance: 1,\r\n infiniteScrollUpDistance: 2,\r\n infiniteScrollThrottle: 300,\r\n scrollWindow: false,\r\n };\r\n\r\n this.defaultNgxSkeletonLoaderSettings = {\r\n numberOfSkeletonRows: Array(6).fill(0),\r\n };\r\n\r\n this.defaultRadioButtonsComponentConfig = {\r\n heading: \"Select Option\",\r\n radioButtons: [\r\n {\r\n value: \"Yes\",\r\n isDisabled: false,\r\n label: \"Yes\",\r\n class: \"\",\r\n },\r\n {\r\n value: \"No\",\r\n isDisabled: false,\r\n label: \"No\",\r\n class: \"\",\r\n },\r\n ],\r\n };\r\n\r\n this.defaultConfirmationPopupConfig = {\r\n showCancelButton: true,\r\n title: \"Are you sure ?\",\r\n showConfirmButton: true,\r\n cancelButtonLabel: \"No\",\r\n confirmButtonLabel: \"Yes\",\r\n showCloseIcon: true,\r\n backdrop: \"static\",\r\n windowClass: \"\",\r\n size: \"sm\",\r\n keyboard: false,\r\n };\r\n\r\n this.defaultWeekCalendarConfig = {\r\n firstDayOfWeek: 1,\r\n showWeekNumbers: true,\r\n dateFormatToDisplay: \"d MMM y\",\r\n dateFormatForRequest: \"y-MM-dd\",\r\n maxWeeksToShowWithRemainingCount: 2,\r\n numberOfMonthsToEnableInPast: 1,\r\n selectMultipleWeeks: false,\r\n customClass: \"\",\r\n emitMultipleWeekObjects: true,\r\n maxWeeksToSelect: 0,\r\n showAsDropdown: true,\r\n selectCurrentWeek: true,\r\n };\r\n\r\n this.defaultGtHeaderConfig = {\r\n iconColumn: false,\r\n checkboxColumn: false,\r\n lastColumnKeys: []\r\n };\r\n\r\n this.defaultGtGeneralConfig = {\r\n component: \"\",\r\n totalRow: false,\r\n isHeaderChecked: false,\r\n disableHeaderCheckbox: false,\r\n verticalScrollOffsetForFilterTooltip: 0,\r\n isGrouped: false,\r\n showAllColumnFilter: true,\r\n bufferSize: 20,\r\n page: \"\"\r\n };\r\n\r\n this.defaultSingleSelectConfig = {\r\n showSearchBar: false,\r\n placeholder: \"Select\",\r\n classes: \"\",\r\n position: \"BOTTOM\",\r\n maxHeightOfList: 200\r\n }\r\n\r\n this.defaultMultiSelectConfig = {...this.defaultSingleSelectConfig, ...{showErrorWhenNoOptionSelected: true}};\r\n }\r\n}\r\n","// Angular import statements\r\nimport { DatePipe } from \"@angular/common\";\r\nimport { AfterViewInit, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from \"@angular/core\";\r\n\r\n// Third party import statements\r\nimport { NgbCalendar, NgbDate, NgbDatepickerConfig, NgbDateStruct, NgbInputDatepicker } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\nimport { WeekObject } from '../../../anna-core-shared-lib/models/anna-generic-data-type.model';\r\nimport { IWeekCalendar } from '../../../anna-core-shared-lib/models/anna-global-dropdown-config.model';\r\nimport { AnnaDateTimeFormatService } from '../../../anna-core-shared-lib/services/anna-date-time-format.service';\r\nimport { AnnaGlobalConfigService } from '../../../anna-core-shared-lib/services/anna-global-config.service';\r\n\r\n// User defined import statements\r\n\r\n\r\n\r\n@Component({\r\n selector: \"anna-core-week-calendar-filter-lib\",\r\n templateUrl: \"./anna-week-calendar-filter.component.html\",\r\n styleUrls: [\"./anna-week-calendar-filter.component.scss\"],\r\n})\r\nexport class AnnaWeekCalendarComponent implements OnInit, OnChanges, AfterViewInit {\r\n fromDate: NgbDate | null;\r\n hoveredDate: NgbDate | null = null;\r\n toDate: NgbDate | null = null;\r\n today: NgbDate;\r\n\r\n model: NgbDateStruct;\r\n\r\n weekNumbers: string[] = [];\r\n pipe: DatePipe;\r\n dateToDisplay: string = \"\";\r\n weekObjects: WeekObject[];\r\n multiSelectDropdownOpen: boolean = false;\r\n datepicker: NgbInputDatepicker;\r\n private formatter: any;\r\n public formattedStartDate: string;\r\n public formattedEndDate: string;\r\n private calendarMap = new Map();\r\n private flag1: boolean;\r\n private flag2: boolean;\r\n @Input(\"from-date\") selectedFromDate: NgbDateStruct;\r\n @Input(\"to-date\") selectedEndDate: NgbDateStruct;\r\n @Input(\"disabled-dates\") disabledDates: NgbDate[] = [];\r\n @Input() maxDate: any;\r\n @Input() minDate: any;\r\n\r\n disabledFunc: any;\r\n state: any;\r\n\r\n //Setting the default values;\r\n private _defaultValues: IWeekCalendar;\r\n\r\n @Input(\"week-calendar-config\") config: IWeekCalendar;\r\n @Output(\"apply\") applyWeekCalendarChanges = new EventEmitter();\r\n @Output(\"toggle-calendar\") calendarToggled = new EventEmitter();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n //if some values are not sent, setting the default values\r\n this._defaultValues = this.globalConfigService.defaultWeekCalendarConfig;\r\n this.config = { ...this._defaultValues, ...this.config };\r\n\r\n if (this.config.selectCurrentWeek) {\r\n this.initializeWeekData();\r\n this.fromDate && this.selectWeek(this.fromDate);\r\n }\r\n\r\n this.formatter = this.formattedDates();\r\n\r\n if (this.selectedFromDate && this.selectedEndDate && this.config) {\r\n // this.selectWeek(this.fromDate);\r\n this.fromDate = NgbDate.from(this.selectedFromDate);\r\n this.toDate = NgbDate.from(this.selectedEndDate);\r\n this.weekNumberGenerator();\r\n this.displayToUI();\r\n this.setCalendarMap();\r\n }\r\n\r\n if (this.disabledDates.length > 0) {\r\n this.disabledFunc = (date: NgbDate, current: { month: number }) => {\r\n return this.checkIfDateIsDisabled(date);\r\n };\r\n }\r\n }\r\n\r\n constructor(\r\n private calendar: NgbCalendar,\r\n private datePickerConfig: NgbDatepickerConfig,\r\n private annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n private globalConfigService: AnnaGlobalConfigService\r\n ) { }\r\n\r\n\r\n getWeekNumber(week: any, firstDayOfWeek: any) {\r\n const weekStartDate = dayjs(convertNgbDateToMoment(week[0]), \"MM/DD/YYYY\");\r\n const weekYear = weekStartDate.year();\r\n const yearStartDate = dayjs(`01/01/${weekYear}`, \"MM/DD/YYYY\");\r\n const weekDay = yearStartDate.day();\r\n\r\n const noOfDays = weekStartDate.diff(yearStartDate, \"d\") + 1;\r\n\r\n function convertNgbDateToMoment(ngbDate: NgbDate): string {\r\n let formatType = \"MM/DD/YYYY\";\r\n let converted = null;\r\n if(ngbDate && ngbDate.month && ngbDate.day && ngbDate.year){\r\n converted = ngbDate.month+ \"/\" + ngbDate.day + \"/\" + ngbDate.year;\r\n converted = dayjs(converted).format(formatType);\r\n }\r\n return converted;\r\n }\r\n\r\n function checkIfYearIsBroadcastLeapYear() {\r\n let isLeapYear = (weekYear % 4 == 0 && weekYear % 100 != 0) || weekYear % 400 == 0;\r\n return (isLeapYear && (weekDay == 0 || weekDay == 6)) || (!isLeapYear && weekDay == 0);\r\n }\r\n\r\n const isLeapYear = checkIfYearIsBroadcastLeapYear();\r\n const divider = isLeapYear ? 53 : 52;\r\n const adder = isLeapYear ? 2 : 1;\r\n\r\n let broadcastNumberOfDays = weekDay + noOfDays;\r\n let broadcastWeekNumber = broadcastNumberOfDays % 7 > 0 ? broadcastNumberOfDays / 7 + adder : broadcastNumberOfDays / 7;\r\n\r\n if (Math.floor(broadcastWeekNumber % divider) === 0) {\r\n return divider;\r\n }\r\n return Math.floor(broadcastWeekNumber % divider);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // CHANGES@ANNALIB Changed this.\r\n // this.calendar[\"__proto__\"].getWeekNumber = this.getWeekNumber;\r\n Object.setPrototypeOf(this.calendar, {getWeekNumber: this.getWeekNumber})\r\n }\r\n\r\n ngOnInit(): void {\r\n // this.selectWeek(this.fromDate);\r\n this.setCalendarMap();\r\n }\r\n\r\n initializeWeekData() {\r\n this.weekObjects = [];\r\n\r\n this.fromDate = this.calendar.getToday();\r\n this.today = this.calendar.getToday();\r\n\r\n let backDatedPeriod = JSON.parse(localStorage.getItem(\"userDetails\") || '{}').locking_period_days;\r\n if (backDatedPeriod < 0) {\r\n let date: NgbDate = this.calendar.getPrev(this.calendar.getToday(), \"d\", Math.abs(backDatedPeriod));\r\n this.today = NgbDate.from(date);\r\n this.fromDate = NgbDate.from(date);\r\n }\r\n\r\n // Disable months before numberOfMonthsToEnable\r\n this.datePickerConfig.markDisabled = (date: NgbDateStruct) => {\r\n let previousMonth = this.calendar.getPrev(this.today, \"m\", this.config.numberOfMonthsToEnableInPast);\r\n let previousDay = this.calendar.getPrev(previousMonth, \"d\", 1);\r\n return !NgbDate.from(previousDay).before(date);\r\n };\r\n this.formatter = this.formattedDates();\r\n this.flag1 = false;\r\n this.flag2 = false;\r\n }\r\n\r\n selectWeek(date: NgbDate): void {\r\n const dateObject = new Date(date.year, date.month - 1, date.day);\r\n let constructDate = this.buildDate(dateObject);\r\n\r\n if (!this.config.selectMultipleWeeks) {\r\n //Single week selection\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n this.weekNumberGenerator();\r\n } else {\r\n if (date.before(this.fromDate)) {\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n if (this.flag1) {\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n }\r\n this.flag1 = !this.flag1;\r\n } else if (date.after(this.toDate)) {\r\n if (this.flag2) {\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n //this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n }\r\n this.flag2 = !this.flag2;\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n } else {\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n }\r\n\r\n if (this.disabledDates.length > 0) {\r\n let dayjsStartDate = dayjs(this.annaDateTimeFormatService.convertNgbDateToMoment(this.fromDate), \"MM/DD/YYYY\");\r\n let dayjsEndDate = dayjs(this.annaDateTimeFormatService.convertNgbDateToMoment(this.toDate), \"MM/DD/YYYY\");\r\n let ngbDate;\r\n while (!dayjsStartDate.isSame(dayjsEndDate)) {\r\n ngbDate = this.annaDateTimeFormatService.convertToNgbDate(dayjsStartDate, \"MM/DD/YYYY\");\r\n if (this.checkIfDateIsDisabled(ngbDate)) {\r\n break;\r\n }\r\n dayjsStartDate.add(1, \"d\");\r\n }\r\n let newDateObject = new Date(ngbDate.year, ngbDate.month - 1, ngbDate.day - 1);\r\n let constructDate = this.buildDate(newDateObject);\r\n this.toDate = this.constructEndDate(newDateObject)(constructDate);\r\n }\r\n\r\n this.weekNumberGenerator();\r\n }\r\n\r\n if (!this.config.showAsDropdown) {\r\n this.applyChanges();\r\n }\r\n }\r\n\r\n weekNumberGenerator(): void {\r\n let dates = [];\r\n let week = [];\r\n\r\n let startDate = NgbDate.from(this.fromDate);\r\n let endDate = NgbDate.from(this.toDate);\r\n\r\n week.push(startDate);\r\n while (endDate != null && !startDate.equals(endDate)) {\r\n let date = this.calendar.getNext(startDate, \"d\", 1);\r\n startDate = date;\r\n week.push(date);\r\n\r\n // Collect all days in week to calculate the week number\r\n if (week.length == 7) {\r\n dates.push(week);\r\n week = [];\r\n }\r\n }\r\n if (((this.config.maxWeeksToSelect ?? 0) > 0 && dates.length > (this.config.maxWeeksToSelect ?? 0))) {\r\n dates.splice((this.config.maxWeeksToSelect ?? 0), dates.length - (this.config.maxWeeksToSelect ?? 0));\r\n }\r\n this.selectedDates(dates);\r\n\r\n this.weekNumbers = [];\r\n this.weekObjects = [];\r\n if (dates.length > 0) {\r\n for (let date of dates) {\r\n this.weekNumbers.push(\" Week \" + this.calendar.getWeekNumber(date, this.config.firstDayOfWeek));\r\n let dates = this.formatter(date[0], date[6]);\r\n let dateObjects = { startDate: dates.formattedStartDate, endDate: dates.formattedEndDate };\r\n this.weekObjects.push(dateObjects);\r\n }\r\n }\r\n this.displayToUI();\r\n }\r\n\r\n selectedDates(dates: any) {\r\n this.fromDate = dates[0][0];\r\n this.toDate = dates[dates.length - 1][6];\r\n }\r\n\r\n formattedDates() {\r\n let pipe = new DatePipe(\"en-US\");\r\n let thisObj = this;\r\n return function (fromDate: NgbDate, toDate: NgbDate) {\r\n let fromDateObject = new Date(fromDate.year, fromDate.month - 1, fromDate.day);\r\n let toDateObject = new Date(toDate.year, toDate.month - 1, toDate.day);\r\n thisObj.formattedStartDate = pipe.transform(fromDateObject, thisObj.config.dateFormatForRequest);\r\n thisObj.formattedEndDate = pipe.transform(toDateObject, thisObj.config.dateFormatForRequest);\r\n\r\n thisObj.dateToDisplay =\r\n pipe.transform(fromDateObject, thisObj.config.dateFormatToDisplay) +\r\n \" to \" +\r\n pipe.transform(toDateObject, thisObj.config.dateFormatToDisplay);\r\n return thisObj;\r\n };\r\n }\r\n\r\n displayToUI() {\r\n if (!this.config.selectMultipleWeeks && this.fromDate && this.toDate) {\r\n // Display for only Single Week\r\n this.formatter(this.fromDate, this.toDate);\r\n } else {\r\n // Display for Multiple Weeks\r\n if (this.weekNumbers.length > (this.config.maxWeeksToShowWithRemainingCount ?? 0)) {\r\n let weekDisplay = [];\r\n for (let i = 0; i < (this.config.maxWeeksToShowWithRemainingCount ?? 0); i++) {\r\n weekDisplay.push(this.weekNumbers.shift());\r\n }\r\n let remainingWeeks = this.weekNumbers.length;\r\n this.weekNumbers = [];\r\n this.weekNumbers.push(weekDisplay + \" +\" + remainingWeeks);\r\n }\r\n }\r\n }\r\n\r\n constructStartDate(date: Date) {\r\n let firstDayOfWeek = this.config.firstDayOfWeek;\r\n return function (constructDate: any) {\r\n let startDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) - date.getDay() : -6;\r\n return constructDate(startDay);\r\n };\r\n }\r\n\r\n constructEndDate(date: Date) {\r\n let firstDayOfWeek = this.config.firstDayOfWeek;\r\n return function (constructDate: any) {\r\n let endDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) + 6 - date.getDay() : 0;\r\n return constructDate(endDay);\r\n };\r\n }\r\n\r\n buildDate(date: Date) {\r\n return function (number: number): NgbDate | null {\r\n let day = date.getDate() + number;\r\n const dateObject = new Date(date.getFullYear(), date.getMonth(), day);\r\n\r\n let ngbDateObject = {} as NgbDate;\r\n ngbDateObject.day = day;\r\n\r\n if (ngbDateObject.day > 31 || ngbDateObject.day < 1) {\r\n ngbDateObject.day = dateObject.getDate();\r\n }\r\n\r\n ngbDateObject.month = dateObject.getMonth() + 1;\r\n ngbDateObject.year = dateObject.getFullYear();\r\n return NgbDate.from(ngbDateObject);\r\n };\r\n }\r\n\r\n isHovered(date: NgbDate): boolean | null {\r\n return this.fromDate && !this.toDate && this.hoveredDate && date.after(this.fromDate) && date.before(this.hoveredDate);\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) || (this.toDate && date.equals(this.toDate)) || this.isInside(date) || this.isHovered(date)\r\n );\r\n }\r\n\r\n previousWeek(): void {\r\n if (this.fromDate) {\r\n this.toDate = this.calendar.getPrev(this.fromDate, \"d\", 1);\r\n this.fromDate = this.calendar.getPrev(this.fromDate, \"d\", this.calendar.getDaysPerWeek());\r\n }\r\n this.weekNumberGenerator();\r\n this.applyChanges();\r\n }\r\n\r\n nextWeek(): void {\r\n if (this.fromDate) {\r\n this.fromDate = this.calendar.getNext(this.fromDate, \"d\", this.calendar.getDaysPerWeek());\r\n this.toDate = this.calendar.getNext(this.fromDate, \"d\", this.calendar.getDaysPerWeek() - 1);\r\n }\r\n this.weekNumberGenerator();\r\n this.applyChanges();\r\n }\r\n\r\n setCalendarMap() {\r\n let dateObj = { fromDate: this.fromDate, toDate: this.toDate };\r\n this.calendarMap.set(\"oldDates\", dateObj);\r\n }\r\n\r\n applyChanges() {\r\n this.multiSelectDropdownOpen = false;\r\n if (!this.config.emitMultipleWeekObjects) {\r\n let dates = {} as WeekObject;\r\n let formattedDates = this.formatter(this.fromDate, this.toDate);\r\n dates.startDate = formattedDates.formattedStartDate;\r\n dates.endDate = formattedDates.formattedEndDate;\r\n this.applyWeekCalendarChanges.emit(dates);\r\n } else {\r\n this.applyWeekCalendarChanges.emit(this.weekObjects);\r\n }\r\n this.setCalendarMap();\r\n }\r\n\r\n isFocused(value: any) {\r\n this.calendarToggled.emit(value);\r\n }\r\n\r\n isDropdownOpenedForCalendar(datepicker: NgbInputDatepicker) {\r\n this.datepicker = datepicker;\r\n if (this.datepicker.isOpen()) {\r\n this.revertDates();\r\n this.datepicker.close();\r\n this.multiSelectDropdownOpen = false;\r\n } else {\r\n this.datepicker.open();\r\n this.multiSelectDropdownOpen = true;\r\n }\r\n }\r\n\r\n revertDates() {\r\n this.multiSelectDropdownOpen = false;\r\n if (this.calendarMap.get(\"oldDates\")) {\r\n let dateObj = this.calendarMap.get(\"oldDates\");\r\n this.fromDate = dateObj.fromDate;\r\n this.toDate = dateObj.toDate;\r\n this.weekNumberGenerator();\r\n this.displayToUI();\r\n }\r\n }\r\n\r\n checkIfDateIsDisabled(date: any): boolean {\r\n const validatorFunc = (ngbDate: NgbDate) => 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 class=\"form-inline\" *ngIf=\"config.showAsDropdown\">\r\n <div class=\"form-group hidden\">\r\n <div class=\"input-group\">\r\n <input\r\n name=\"datepicker\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"false\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n (closed)=\"isFocused(false)\"\r\n [displayMonths]=\"1\"\r\n [dayTemplate]=\"t\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n tabindex=\"-1\"\r\n style=\"display: none\"\r\n [footerTemplate]=\"footerTemplate\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!--Single week select-->\r\n <div *ngIf=\"!config.selectMultipleWeeks\">\r\n <span style=\"position: relative; left: 30px; font-size: 12px\"> &nbsp;{{ 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 class=\"material-icons next-round-btn\" (click)=\"previousWeek()\"> navigate_next </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 class=\"mdi mdi-menu-down\" *ngIf='!datepicker.isOpen()' (click)=\"datepicker.open()\"></i>\r\n <i class='mdi mdi-menu-up' *ngIf=\"datepicker.isOpen()\" (click)=\"isDropdownOpenedForCalendar(datepicker)\"></i>\r\n <div class=\"right\">\r\n <span class=\"material-icons round-btn\" (click)=\"nextWeek()\"> navigate_next </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 class=\"form-group\" *ngIf=\"config.selectMultipleWeeks\">\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 *ngIf=\"!multiSelectDropdownOpen\" class=\"mdi mdi-menu-down multiselect-input-arrow\"></i>\r\n <i *ngIf=\"multiSelectDropdownOpen\" class=\"mdi mdi-menu-up multiselect-input-arrow\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ngb-datepicker\r\n #weekPicker\r\n *ngIf=\"!config.showAsDropdown\"\r\n [displayMonths]=\"1\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n [dayTemplate]=\"t\"\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n [markDisabled]=\"disabledFunc\"\r\n>\r\n</ngb-datepicker>\r\n\r\n<ng-template #footerTemplate>\r\n <hr class=\"my-0\" />\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"applyChanges(); closeDatepicker(datepicker)\"\r\n style=\"background-color: #268bff; color: #ffffff\"\r\n >\r\n Apply\r\n </button>\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"revertDates(); closeDatepicker(datepicker)\"\r\n style=\"background-color: rgba(38, 139, 255, 0.12); color: #268bff\"\r\n >\r\n Cancel\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #t let-date let-focused=\"focused\" let-disabled=\"disabled\">\r\n <span\r\n class=\"custom-day\"\r\n [class.focused]=\"focused\"\r\n [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\"\r\n [class.disabled]=\"disabled\"\r\n (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\"\r\n >\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n<!--\r\n\r\n<hr>\r\n\r\n<pre>From: {{ fromDate | json }} </pre>\r\n<pre>To: {{ toDate | json }} </pre>\r\n<pre>weekNumbers: {{ weekNumbers | json }} </pre>\r\n\r\n-->\r\n","// Angular import statements\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from \"@angular/core\";\r\n\r\n//Third party import statements\r\nimport { NgbDate, NgbDateStruct } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AnnaDateTimeFormatService } from '../../../anna-core-shared-lib/services/anna-date-time-format.service';\r\nimport dayjs from \"dayjs\";\r\nimport { Placement } from \"@ng-bootstrap/ng-bootstrap/util/positioning\";\r\n\r\n@Component({\r\n selector: \"anna-core-calendar-filter-lib\",\r\n templateUrl: \"./anna-calendar-filter.component.html\",\r\n styleUrls: [\"./anna-calendar-filter.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AnnaCalendarFilterComponent implements OnInit,OnChanges {\r\n \r\n @Input() maxDate: any;\r\n @Input() autoClose: \"inside\" | \"outside\" | boolean = \"outside\";\r\n @Input() label: string;\r\n @Input() minDate: any;\r\n @Input() showLabel: boolean = true;\r\n @Input() dateFormat: string = \"MM/DD/YYYY\";\r\n @Input() placeholder: string = \"MM/DD/YYYY\";\r\n @Input() disabled: boolean = false;\r\n @Output() selectedDate = new EventEmitter();\r\n @Input() selectedFromDate: any;\r\n @Input() selectedToDate: any;\r\n @Input() disableFunction: any;\r\n @Input() showFooterTemplate: boolean = false;\r\n @Input() placement: Placement[] = ['top-start', 'left', 'bottom-start', 'auto'];\r\n\r\n @Output() apply = new EventEmitter();\r\n @Output() cancel = new EventEmitter();\r\n fromDate: any;\r\n toDate: any;\r\n hoveredDate: any;\r\n disableApplyBtn: boolean = false;\r\n dateToBeShownInInput: string = \"\";\r\n \r\n constructor(private annaTimeService: AnnaDateTimeFormatService) { \r\n this.disableFunction = (date: NgbDateStruct) => {\r\n return false;\r\n };\r\n }\r\n \r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.setStartAndEndDate();\r\n this.setInputText();\r\n }\r\n\r\n setStartAndEndDate(){\r\n this.fromDate = this.selectedFromDate;\r\n this.toDate = this.selectedToDate;\r\n }\r\n\r\n ngOnInit() {\r\n this.disableApplyBtn = true;\r\n // this.fromDate = this.selectedFromDate;\r\n // this.toDate = this.selectedToDate;\r\n // this.setInputText();\r\n }\r\n\r\n onDateSelection(date: NgbDate) {\r\n if (!this.fromDate && !this.toDate) {\r\n this.fromDate = date;\r\n } else if (this.fromDate && !this.toDate && (date.after(this.fromDate) || date.equals(this.fromDate))) {\r\n let isDisabledDatePresent = this.checkIfDisabledDateSelectedInRange(date);\r\n this.toDate = isDisabledDatePresent ? null : date;\r\n } else {\r\n this.toDate = null;\r\n this.fromDate = date;\r\n }\r\n this.selectedDate.emit({ fromDate: this.fromDate, toDate: this.toDate });\r\n this.disableCalendarApplyBtn();\r\n this.setInputText();\r\n }\r\n\r\n checkIfDisabledDateSelectedInRange(date: NgbDate){\r\n let dayJsStartDate = dayjs(this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.fromDate, this.dateFormat), this.dateFormat);\r\n let dayJsEndDate = dayjs(this.annaTimeService.convertNgbDateToMomentInSpecificFormat(date, this.dateFormat),this.dateFormat);\r\n\r\n while(!dayJsStartDate.isSame(dayJsEndDate)){\r\n if(this.disableFunction(this.annaTimeService.convertToNgbDate(dayJsStartDate.format(this.dateFormat), this.dateFormat))){\r\n return true;\r\n }\r\n else{\r\n dayJsStartDate = dayJsStartDate.add(1,\"day\");\r\n }\r\n }\r\n \r\n }\r\n\r\n isHovered(date: NgbDate) {\r\n return this.fromDate && !this.toDate && this.hoveredDate && date.after(this.fromDate) && date.before(this.hoveredDate);\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) || (this.toDate && date.equals(this.toDate)) || this.isInside(date) || this.isHovered(date)\r\n );\r\n }\r\n\r\n cancelSelection() {\r\n this.cancel.emit();\r\n }\r\n\r\n applySelection() {\r\n if (this.fromDate && this.toDate) {\r\n let dateObj = { fromDate: this.fromDate, toDate: this.toDate };\r\n this.apply.emit(dateObj);\r\n }\r\n }\r\n\r\n disableCalendarApplyBtn() {\r\n this.disableApplyBtn = !(this.fromDate && this.toDate);\r\n }\r\n\r\n setInputText(){\r\n\r\n if(this.fromDate && this.toDate){\r\n this.dateToBeShownInInput = `${this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.fromDate, this.dateFormat)} - ${this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.toDate, this.dateFormat)}`;\r\n }\r\n else if(this.fromDate){\r\n this.dateToBeShownInInput = `${this.annaTimeService.convertNgbDateToMomentInSpecificFormat(this.fromDate, this.dateFormat)}`;\r\n }\r\n else{\r\n this.dateToBeShownInInput = null;\r\n }\r\n\r\n }\r\n\r\n datepickerClosed(){\r\n //Required for Pending ec order\r\n if(this.showFooterTemplate){\r\n this.selectedFromDate = this.fromDate = null;\r\n this.selectedToDate = this.toDate = null;\r\n this.setInputText();\r\n this.disableApplyBtn = true;\r\n }\r\n }\r\n \r\n}\r\n","<!-- container=\"body\"\r\ndatepickerClass = \"calendar-filter\" -->\r\n \r\n<p class=\"calendar-label\" *ngIf=\"showLabel\">{{label | titlecase }}</p>\r\n<form>\r\n <div class=\"padding-class\" style=\"padding: 0 12px;\">\r\n <div class=\"dp-hidden position-absolute\">\r\n <div class=\"input-group\">\r\n <input 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 #t let-date let-focused=\"focused\">\r\n <span 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 {{ date.day }}\r\n </span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"input-group\">\r\n <input #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 class=\"icon-container\" (click)=\"datepicker.toggle()\" type=\"button\" [disabled]=\"disabled\">\r\n <i class=\"mdi mdi-calendar-range\" *ngIf=\"!datepicker.isOpen()\"></i>\r\n <i class=\"mdi mdi-check\" *ngIf=\"datepicker.isOpen()\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #footerTemplate>\r\n\t<div class=\"buttons-container\" *ngIf=\"showFooterTemplate\">\r\n <button class=\"button\" (click)=\"cancelSelection(); datepicker.close()\">Cancel</button> \r\n <button class=\"button\" [ngClass]=\"{ disabled: disableApplyBtn }\" [disabled]=\"disableApplyBtn\" (click)=\"applySelection(); datepicker.close()\">Apply</button>\r\n </div>\r\n</ng-template>","export class TooltipModel {\r\n isSelected: boolean;\r\n label: string;\r\n id: number;\r\n value: string;\r\n\r\n constructor(obj: string,id: number) {\r\n this.label = obj != null ? obj.toString() : \"-\";\r\n this.value = obj;\r\n this.isSelected = false;\r\n this.id = id;\r\n }\r\n}\r\n\r\nexport class tooltipModelForColumnLevelFiltering {\r\n isHidden;\r\n isSelected: boolean;\r\n data: string;\r\n constructor(data: string) {\r\n this.data = data;\r\n this.isSelected = true;\r\n this.isHidden = false;\r\n }\r\n}\r\n\r\nexport class radioButtonModel {\r\n key: string;\r\n label: string;\r\n isSortRequired: boolean;\r\n isFilterRequired: boolean;\r\n\r\n constructor(key: string, value: string,sort: boolean, filter: boolean) {\r\n this.key = key;\r\n this.label = value;\r\n this.isSortRequired = sort;\r\n this.isFilterRequired = filter;\r\n }\r\n}\r\n\r\nexport enum AllSelectedStatus {\r\n none = 0,\r\n allSelected = 1,\r\n fewSelected = 2,\r\n}\r\n","// Angular import statements\r\nimport { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { SortType } from '../models/anna-sort.model';\r\nimport { AnnaDateTimeFormatService } from './anna-date-time-format.service';\r\nimport { cloneDeep } from 'lodash-es';\r\n\r\n// Third party import statements\r\n\r\n// User defined import statements\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AnnaSortService {\r\n columnSortState: Map<string, SortType>;\r\n noSortingAppliedData: any[];\r\n updateSortTypeSubject: Subject<string> = new Subject();\r\n\r\n dateSet = new Set([\r\n 'endDate',\r\n 'startDate',\r\n 'end_date',\r\n 'start_date',\r\n 'flightStartDate',\r\n 'flightEndDate',\r\n \"date\",\r\n \"GeneratedOn\"\r\n ]);\r\n\r\n constructor(private annaDateTimeFormatService: AnnaDateTimeFormatService) {\r\n }\r\n\r\n sortDataForComponentOtherThanLurAndCsrPage(\r\n isAsc: boolean,\r\n data: any[],\r\n key: string\r\n ) {\r\n let param1: string | number;\r\n let param2: string | number;\r\n\r\n if (this.dateSet.has(key)) {\r\n data.sort((a, b) => {\r\n return this.annaDateTimeFormatService.compareDate(\r\n a[key],\r\n b[key],\r\n isAsc\r\n );\r\n });\r\n } else if (key === 'AirDateAndTime' || key === 'Date') {\r\n data.sort((a, b) => {\r\n let first, second;\r\n if (a[key] == '-') {\r\n return 1;\r\n }\r\n\r\n if (b[key] == '-') {\r\n return -1;\r\n } else {\r\n first =\r\n this.annaDateTimeFormatService.formatDateAndHHMMATimeToStandardFormat(\r\n a[key]\r\n );\r\n second =\r\n this.annaDateTimeFormatService.formatDateAndHHMMATimeToStandardFormat(\r\n b[key]\r\n );\r\n let compareDate = this.annaDateTimeFormatService.compareDate(\r\n first,\r\n second,\r\n isAsc\r\n );\r\n return compareDate;\r\n }\r\n });\r\n } else if (key == 'startEndTime' || key == 'TimeBand') {\r\n data.sort((a, b) => {\r\n if (isAsc) {\r\n param1 = a[key][1];\r\n param2 = b[key][1];\r\n } else {\r\n param1 = a[key][2];\r\n param2 = b[key][2];\r\n }\r\n let val = isAsc\r\n ? this.annaDateTimeFormatService.sortByTimeAscending(param1, param2)\r\n : this.annaDateTimeFormatService.sortByTimeDescending(param1, param2);\r\n return val;\r\n });\r\n } else {\r\n let dataWithoutEmptyOrHyphenValues = data.filter(n => n[key] != \"-\");\r\n let rowsWithHyphenOrZeroValues = data.filter(n => n[key] == \"-\");\r\n\r\n dataWithoutEmptyOrHyphenValues.sort((a, b) => {\r\n param1 = a[key];\r\n param2 = b[key];\r\n\r\n if (param1 !== param2) {\r\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n data = isAsc ? [...rowsWithHyphenOrZeroValues, ...dataWithoutEmptyOrHyphenValues] :\r\n [...dataWithoutEmptyOrHyphenValues, ...rowsWithHyphenOrZeroValues];\r\n }\r\n\r\n return data;\r\n }\r\n\r\n sortEnterEditLurAndCsrPage(isAsc: boolean, data: any[], key: any) {\r\n let param1: string | number;\r\n let param2: string | number;\r\n\r\n if (key.includes('_')) {\r\n let keys = key.split('_');\r\n let weekNumber = keys[0];\r\n let sortKey = keys[1];\r\n\r\n if (keys.length > 2) {\r\n sortKey =\r\n keys[2] == true\r\n ? 'BookedAurIncludingNoChargeSpots'\r\n : 'BookedAurExcludingNoChargeSpots';\r\n }\r\n\r\n data.sort((a, b) => {\r\n let aInventoryCodeWeekWiseKey = Object.keys(\r\n a.WeekWiseInventoryCodeData\r\n ).filter((key) => key.split('_')[1] == weekNumber);\r\n let bInventoryCodeWeekWiseKey = Object.keys(\r\n b.WeekWiseInventoryCodeData\r\n ).filter((key) => key.split('_')[1] == weekNumber);\r\n\r\n param1 = null;\r\n param2 = null;\r\n if (aInventoryCodeWeekWiseKey.length > 0) {\r\n param1 =\r\n a.WeekWiseInventoryCodeData[aInventoryCodeWeekWiseKey[0]][\r\n sortKey\r\n ][1];\r\n }\r\n\r\n if (bInventoryCodeWeekWiseKey.length > 0) {\r\n param2 =\r\n b.WeekWiseInventoryCodeData[bInventoryCodeWeekWiseKey[0]][\r\n sortKey\r\n ][1];\r\n }\r\n\r\n if (param1 !== param2) {\r\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\r\n }\r\n\r\n return 0;\r\n });\r\n } else if (key == 'TimeBand') {\r\n data.sort((a, b) => {\r\n if (isAsc) {\r\n param1 = a[key][1];\r\n param2 = b[key][1];\r\n } else {\r\n param1 = a[key][2];\r\n param2 = b[key][2];\r\n }\r\n let val = isAsc\r\n ? this.annaDateTimeFormatService.sortByTimeAscending(param1, param2)\r\n : this.annaDateTimeFormatService.sortByTimeDescending(param1, param2);\r\n return val;\r\n });\r\n } else {\r\n data.sort((a, b) => {\r\n param1 = a[key];\r\n param2 = b[key];\r\n\r\n if (param1 !== param2) {\r\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\r\n }\r\n\r\n return 0;\r\n });\r\n }\r\n\r\n return data;\r\n }\r\n\r\n checkIfSortingIsApplied(tableData: any[], isLurAndCsrComponent: boolean){\r\n for(let [key,value] of this.columnSortState.entries()){\r\n if(value == \"ASC\"){\r\n tableData = cloneDeep(isLurAndCsrComponent ? this.sortEnterEditLurAndCsrPage(true, tableData, key) : this.sortDataForComponentOtherThanLurAndCsrPage(true, tableData,key) );\r\n }\r\n else if(value == \"DESC\"){\r\n tableData = cloneDeep(isLurAndCsrComponent ? this.sortEnterEditLurAndCsrPage(false, tableData, key) : this.sortDataForComponentOtherThanLurAndCsrPage(false, tableData,key));\r\n }\r\n }\r\n\r\n return tableData;\r\n }\r\n\r\n applySorting(key: string, tempSortOrder: SortType, tableData: any[], isLurAndCsrComponent: boolean){\r\n if(tempSortOrder == \"ASC\"){\r\n tableData = cloneDeep(isLurAndCsrComponent ? this.sortEnterEditLurAndCsrPage(true, tableData, key) : this.sortDataForComponentOtherThanLurAndCsrPage(true, tableData,key));\r\n }\r\n else if(tempSortOrder == \"DESC\"){\r\n tableData = cloneDeep(isLurAndCsrComponent ? this.sortEnterEditLurAndCsrPage(false, tableData, key) : this.sortDataForComponentOtherThanLurAndCsrPage(false, tableData,key));\r\n }\r\n else if(tempSortOrder == \"DEFAULT\"){\r\n tableData = cloneDeep(this.noSortingAppliedData);\r\n }\r\n\r\n return tableData;\r\n }\r\n\r\n\r\n}\r\n","export type SortType = \"DEFAULT\" | \"ASC\" | \"DESC\";\r\n\r\nexport interface SortOption{\r\n sortType: SortType,\r\n isOptionActive: boolean,\r\n text: string\r\n}\r\n\r\nexport enum SortTypeEnum {\r\n DEFAULT = \"DEFAULT\",\r\n ASC = \"ASC\",\r\n DESC = \"DESC\"\r\n}","// Angular import statements\r\nimport { Options } from '@angular-slider/ngx-slider';\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Third party import statements\r\nimport { min, max, map, sortBy, uniq, cloneDeep, isEqual } from \"lodash-es\";\r\nimport dayjs from \"dayjs\";\r\nimport CustomParseFormat from \"dayjs/plugin/customParseFormat\";\r\nimport minMax from \"dayjs/plugin/minMax\";\r\nimport isBetween from \"dayjs/plugin/isBetween\";\r\nimport { SortType, SortTypeEnum } from '../models/anna-sort.model';\r\n\r\n// User defined import statements \r\nimport { AnnaDateTimeFormatService, NgbDateType } from './anna-date-time-format.service';\r\nimport { AnnaSortService } from './anna-sort.service';\r\nimport { TooltipModel } from '../models/anna-tooltip.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AnnaFilterService {\r\n\r\n tooltipMap = new Map();\r\n tooltipSelectedMap = new Map();\r\n initialValueMap: Map<string, any>;\r\n translateFunc: string;\r\n selectedRadio: string;\r\n subRadioButton: string;\r\n\r\n calendarSet: Set<string>;\r\n sliderSet: Set<string>;\r\n timeSet: Set<string>;\r\n\r\n includeMultiTime: boolean;\r\n includeZeroTime: boolean;\r\n includeTimeRange: boolean;\r\n\r\n appliedFiltersArray: string[] = [];\r\n flightDateRange: { minSelectedDate: any, maxSelectedDate: any };\r\n sliderData: { min: any, max: any };\r\n ngxSliderObj: Options;\r\n sliderCurrencySet = new Set([\r\n 'booked',\r\n 'cpp',\r\n 'cpm',\r\n 'rcvPreempt',\r\n 'osPreempt',\r\n 'postedAdu',\r\n 'scheduledAdu',\r\n 'audienceDeficit',\r\n 'Rate',\r\n 'userADUs',\r\n 'buyerChanges',\r\n 'userChanges',\r\n 'userMG',\r\n \"udValue\",\r\n \"odValue\"\r\n ]);\r\n\r\n public static bufferSize = 20;\r\n isFilterSortActive: any = {};\r\n resetFilterSortActiveStatus: boolean = true;\r\n\r\n constructor(private dateTimeFormatService: AnnaDateTimeFormatService, private annaSortService: AnnaSortService) {\r\n dayjs.extend(minMax);\r\n dayjs.extend(isBetween);\r\n dayjs.extend(CustomParseFormat);\r\n const sliderArr = [\r\n \"rcvPreempt\",\r\n \"osPreempt\",\r\n \"rcvUnderDly\",\r\n \"postedAudPercent\",\r\n \"booked\",\r\n \"spots\",\r\n \"grp\",\r\n \"cpp\",\r\n \"imps\",\r\n \"cpm\",\r\n \"osUnderDly\",\r\n \"totalWeeks\",\r\n \"WeekNumber\",\r\n \"Rate\",\r\n \"OrderedRatingsOrImpressions\",\r\n \"PostedRatingsOrImpressions\", ,\r\n \"postedAudPercent\",\r\n \"postedAdu\",\r\n \"scheduledAdu\",\r\n \"audienceDeficit\",\r\n \"offeredMGs\",\r\n \"outstandingPE\",\r\n \"offeredADUs\",\r\n \"udDeficitValue\",\r\n \"bookedValue\",\r\n \"bookedSpots\",\r\n \"userChanges\",\r\n \"UDGrp\",\r\n \"UDImps\",\r\n \"ODGrp\",\r\n \"ODImps\",\r\n \"udImpsPercent\",\r\n \"udGrpPercent\",\r\n \"odImpsPercent\",\r\n \"odGrpPercent\",\r\n \"userADUs\",\r\n \"buyerChanges\",\r\n \"userChanges\",\r\n \"userMG\",\r\n \"WeeklyAUR\",\r\n \"WeeklyAURatingOrImpressions\",\r\n \"MGsValue\",\r\n \"ADUsValue\",\r\n \"UserCreditedValue\",\r\n \"UserUnresolvedValue\",\r\n \"BuyerAddedValue\",\r\n \"BuyerDeletedValue\",\r\n \"BuyerChangesValue\",\r\n \"UserChangesValue\",\r\n \"BookedGRPOrIMPS\",\r\n \"BookedCPPOrCPM\",\r\n \"BookedValue\",\r\n \"BookedSpots\",\r\n \"BookedRate\",\r\n \"BookedRTG\",\r\n \"BookedIMPS\",\r\n \"AURTG\",\r\n \"AURTG\",\r\n \"PostedRating\",\r\n \"PostedImpressions\",\r\n \"NormalizedOrderedRating\",\r\n \"NormalizedOrderedImpressions\",\r\n \"NormalizedPostedRating\",\r\n \"NormalizedPostedImpressions\",\r\n \"BookedGRP\",\r\n \"BookedIMPSRevTab\",\r\n \"BookedCPP\",\r\n \"BookedCPM\",\r\n \"AUIMPS\",\r\n \"bookedAmountValue\",\r\n \"equivalizedBookedAmountValue\",\r\n \"IMPS\",\r\n \"udValue\",\r\n \"odValue\",\r\n \"ViolatedBookedValue\",\r\n \"ViolatedBookedEURValue\",\r\n \"ViolatingBookedEURValue\",\r\n \"ViolatingBookedValue\",\r\n \"Rebate\",\r\n \"OtherAvailableSpotsTableWeeklyAUR\",\r\n \"parentRowAnnaEstimatesRtg\",\r\n \"parentRowPostedRtg\",\r\n \"parentRowRollingAverageRtg\",\r\n \"parentRowStationEstimatesRtg\",\r\n \"parentRowAnnaEstimatesImps\",\r\n \"parentRowPostedImps\",\r\n \"parentRowRollingAverageImps\",\r\n \"parentRowStationEstimatesImps\",\r\n \"parentRowAnnaEstimatesShare\",\r\n \"parentRowPostedShare\",\r\n \"parentRowRollingAverageShare\",\r\n \"parentRowAnnaEstimatesPutPer\",\r\n \"parentRowPostedPutPer\",\r\n \"parentRowRollingAveragePutPer\",\r\n \"parentRowAnnaEstimatesPut\",\r\n \"parentRowPostedPut\",\r\n \"parentRowRollingAveragePut\",\r\n \"ProjectedImpressions\",\r\n \"ProjectedRtg\"\r\n ];\r\n const calendarArr = [\"period\", \"AirDate\", \"flightStartDate\", \"flightEndDate\", \"date\",\r\n \"startDate\", \"endDate\", \"revisionStartDate\", \"GeneratedOn\", \"Week\", \"timeoutDate\", \"ViolatingSpotDate\", \"ViolatedSpotDate\"];\r\n const timeArr = [\"StartTimeForFilter\", \"EndTimeForFilter\", \"time\", \"startTimeForFilter\", \"endTimeForFilter\",\r\n \"start_time_for_filter\", \"end_time_for_filter\", \"startEndTimeMulti\", \"startEndTime\", \"timeoutTime\", \"OtherAvailableSpotsTableStartTime\",\r\n \"OtherAvailableSpotsTableEndTime\"];\r\n this.sliderSet = new Set(sliderArr);\r\n this.calendarSet = new Set(calendarArr);\r\n this.timeSet = new Set(timeArr);\r\n }\r\n\r\n returnMaxAndMinValue(data: any[], key: string, isMin: boolean) {\r\n data = data.filter((obj) => ![\"\", \"-\", null].includes(obj[key]));\r\n const values = data.map((x) => x[key]);\r\n let valueToReturn = isMin ? min(values) : max(values);\r\n return valueToReturn;\r\n }\r\n\r\n returnMinAndMaxDate(data: any[], key: string) {\r\n data = data.filter((obj) => ![\"\", \"-\", null].includes(obj[key]));\r\n let DateArr = data.map((obj) => dayjs(obj[key]));\r\n let minDate = dayjs.min(DateArr);\r\n let maxDate = dayjs.max(DateArr);\r\n\r\n\r\n return [minDate, maxDate];\r\n }\r\n\r\n isTooltipActive(header: string[], sortMap: Map<string, SortType>): boolean {\r\n let set: Set<string> = new Set(this.appliedFiltersArray);\r\n let isSortMapForHeader0Active = sortMap.has(header[0]) && (sortMap.get(header[0]) != SortTypeEnum.DEFAULT);\r\n let isSortMapForHeader1Active = sortMap.has(header[1]) && (sortMap.get(header[1]) != SortTypeEnum.DEFAULT);\r\n\r\n if (header.length == 1) {\r\n return ((sortMap.size > 0 && isSortMapForHeader0Active) || set.has(header[0]));\r\n }\r\n\r\n return ((sortMap.size > 0 && sortMap.has(header[0]) && isSortMapForHeader0Active) || (sortMap.size > 0 && sortMap.has(header[1]) && isSortMapForHeader1Active) || set.has(header[0]) || set.has(header[1]));\r\n\r\n }\r\n\r\n clearColumnFilter() {\r\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n this.tooltipSelectedMap.delete(this.selectedRadio);\r\n let appliedFilterSet: Set<string> = new Set(this.appliedFiltersArray);\r\n appliedFilterSet.delete(this.selectedRadio);\r\n this.appliedFiltersArray = [...appliedFilterSet];\r\n }\r\n\r\n if (this.annaSortService.columnSortState.has(this.selectedRadio)) {\r\n this.annaSortService.columnSortState.delete(this.selectedRadio);\r\n }\r\n\r\n }\r\n\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\r\n if (Math.abs(data) >= 1000) {\r\n let isNegVal = data < 0;\r\n const val = (Math.abs(data) / 1000).toFixed(1) + \"k%\";\r\n return isNegVal ? \"-\" + val : val;\r\n\r\n } else {\r\n let isNegVal = data < 0;\r\n let isWholeNum = parseInt(data.toString()) == data;\r\n let val = isWholeNum ? Math.abs(data).toString() : Math.abs(data).toFixed(1);\r\n return isNegVal ? \"-\" + val + \"%\" : val + \"%\";\r\n }\r\n\r\n };\r\n\r\n currencyTranslateFunction = (data: number): string => {\r\n if (Math.abs(data) >= 1000) {\r\n let isNegVal = data < 0;\r\n const val = \"$\" + (Math.abs(data) / 1000).toFixed(1) + \"k\";\r\n return isNegVal ? \"-\" + val : val;\r\n\r\n } else {\r\n let isNegVal = data < 0;\r\n let isWholeNum = parseInt(data.toString()) == data;\r\n let val = isWholeNum ? Math.abs(data).toString() : Math.abs(data).toFixed(1);\r\n return isNegVal ? \"-$\" + val : \"$\" + val;\r\n }\r\n };\r\n\r\n normalTranslateFunction = (data: number): string => {\r\n if (data >= 1000) {\r\n const val = (data / 1000).toFixed(1) + \"k\";\r\n return val;\r\n } else if (data != Math.floor(data)) {\r\n return data.toFixed(1).toString();\r\n }\r\n return data.toString();\r\n };\r\n\r\n findUniqueDatesWithData(data: any[]) {\r\n let uniqueDates = uniq(data.map((u) => u[\"date\"]));\r\n let uniqueDatesInNgbDateFormat: NgbDateType[] = [];\r\n uniqueDates.forEach((date: any) => {\r\n uniqueDatesInNgbDateFormat.push(\r\n this.dateTimeFormatService.convertToNgbDateStandardFormat(dayjs(date, \"MM/DD/YY\").format(\"MM/DD/YYYY\"))\r\n );\r\n });\r\n return uniqueDatesInNgbDateFormat;\r\n }\r\n\r\n reOrderAppliedFiltersArray(isHierarchialUserFiltered: boolean, date?: any) {\r\n let isFiltered = true;\r\n isFiltered = this.checkIfDataIsFiltered(isFiltered, isHierarchialUserFiltered, date);\r\n this.removeOrChangeLatestFilterIndex(isFiltered);\r\n }\r\n\r\n checkIfDataIsFiltered(isFiltered: boolean, isHierarchialUserFiltered: boolean, date?: any) {\r\n if (this.selectedRadio == \"user\" && !this.tooltipMap.has(\"user\")) {\r\n isFiltered = cloneDeep(isHierarchialUserFiltered);\r\n } else if (this.selectedRadio == \"StartTimeForFilter\" || this.selectedRadio == \"EndTimeForFilter\" ||\r\n this.selectedRadio == \"startTimeForFilter\" || this.selectedRadio == \"endTimeForFilter\" ||\r\n this.selectedRadio == \"time\" || this.selectedRadio == \"timeoutTime\" || this.selectedRadio == \"OtherAvailableSpotsTableStartTime\"\r\n || this.selectedRadio == \"OtherAvailableSpotsTableEndTime\"\r\n || this.selectedRadio == \"start_time_for_filter\" || this.selectedRadio == \"end_time_for_filter\" || this.selectedRadio == \"startEndTimeMulti\") {\r\n isFiltered = !isEqual(\r\n this.initialValueMap.get(this.selectedRadio),\r\n this.tooltipSelectedMap.get(this.selectedRadio)\r\n ) || !this.includeZeroTime || !this.includeMultiTime;\r\n }\r\n else if (this.selectedRadio == \"startEndTime\" || this.selectedRadio == \"TimeBand\") {\r\n isFiltered = !isEqual(this.initialValueMap.get(this.selectedRadio), this.tooltipSelectedMap.get(this.selectedRadio)) || !this.includeZeroTime || !this.includeMultiTime;\r\n }\r\n else if (this.sliderSet.has(this.selectedRadio)) {\r\n isFiltered = !isEqual(this.initialValueMap.get(this.selectedRadio), this.tooltipSelectedMap.get(this.selectedRadio)) && !isEqual(this.tooltipSelectedMap.get(this.selectedRadio), this.sliderData);\r\n if (this.selectedRadio == \"postedAdu\" && this.subRadioButton == \"notRequired\") {\r\n isFiltered = true;\r\n }\r\n if (!isFiltered && this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n this.tooltipSelectedMap.delete(this.selectedRadio);\r\n }\r\n } else if (\r\n this.selectedRadio == \"startDate\" ||\r\n this.selectedRadio == \"endDate\" ||\r\n this.selectedRadio == \"period\" ||\r\n this.selectedRadio == \"AirDate\" ||\r\n this.selectedRadio == \"timeoutDate\" ||\r\n this.selectedRadio === \"flightStartDate\" ||\r\n this.selectedRadio === \"flightEndDate\" ||\r\n this.selectedRadio == \"date\" ||\r\n this.selectedRadio == \"revisionStartDate\" ||\r\n this.selectedRadio == \"GeneratedOn\" ||\r\n this.selectedRadio == \"Week\"\r\n ) {\r\n isFiltered =\r\n !isEqual(this.initialValueMap.get(this.selectedRadio), this.tooltipSelectedMap.get(this.selectedRadio)) &&\r\n !isEqual(this.tooltipSelectedMap.get(this.selectedRadio), this.flightDateRange);\r\n if (!isFiltered && this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n this.tooltipSelectedMap.delete(this.selectedRadio);\r\n }\r\n } else {\r\n let totalOptionsCount = this.tooltipMap.get(this.selectedRadio).filter((x: any) => !x.isHidden).length;\r\n let selectedOptionsCount = this.tooltipMap.get(this.selectedRadio).filter((x: any) => !x.isHidden && x.isSelected).length;\r\n isFiltered = selectedOptionsCount > 0 && selectedOptionsCount != totalOptionsCount ? true : false;\r\n }\r\n return isFiltered;\r\n }\r\n\r\n removeOrChangeLatestFilterIndex(isFiltered: boolean) {\r\n let set = new Set(this.appliedFiltersArray);\r\n\r\n if (isFiltered && !set.has(this.selectedRadio)) {\r\n set.add(this.selectedRadio);\r\n } else if (isFiltered && set.has(this.selectedRadio)) {\r\n set.delete(this.selectedRadio);\r\n set.add(this.selectedRadio);\r\n } else {\r\n set.delete(this.selectedRadio);\r\n }\r\n this.appliedFiltersArray = [...set];\r\n }\r\n\r\n checkIfSortingIsAppliedThenSortTheData(originalData: any[]) {\r\n if (!this.annaSortService?.columnSortState) return originalData;\r\n for (let [key, value] of this.annaSortService.columnSortState.entries()) {\r\n if (value == \"ASC\") {\r\n originalData = cloneDeep(this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(true, originalData, key));\r\n }\r\n else if (value == \"DESC\") {\r\n originalData = cloneDeep(this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(false, originalData, key));\r\n }\r\n }\r\n return originalData;\r\n }\r\n\r\n filterData(originalData: any[], keyToSkip: string, isLurCsrPage: boolean = false) {\r\n let filteredData = [...originalData];\r\n if (!isLurCsrPage) {\r\n filteredData = this.checkIfSortingIsAppliedThenSortTheData(originalData);\r\n }\r\n this.tooltipSelectedMap.forEach((value, key) => {\r\n if (key != keyToSkip && originalData.length > 0 && Object.keys(originalData[0]).includes(key)) {\r\n if (this.sliderSet.has(key)) {\r\n filteredData = filteredData.filter((obj) => obj[key] >= value.min && obj[key] <= value.max);\r\n }\r\n else if (key === \"startDate\" || key === \"endDate\" || key === \"AirDate\" || key === \"timeoutDate\" || key === \"flightStartDate\" || key === \"flightEndDate\" || key == \"date\" || key == \"Date\" || key == \"revisionStartDate\" || key == \"GeneratedOn\" || key === \"Week\" || key === \"ViolatedSpotDate\" || key === \"ViolatingSpotDate\") {\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 }\r\n else if (key === \"StartTimeForFilter\" || key === \"EndTimeForFilter\" || key == \"timeoutTime\" ||\r\n key === \"startTimeForFilter\" || key === \"endTimeForFilter\" || key === \"OtherAvailableSpotsTableStartTime\"\r\n || key == \"OtherAvailableSpotsTableEndTime\"\r\n || key === \"start_time_for_filter\" || key === \"end_time_for_filter\" || key == \"time\") {\r\n filteredData = filteredData.filter((obj) => this.returnDataForFromAndToTimeRange(obj, value, key));\r\n }\r\n else if (key === \"startEndTimeMulti\" || key == \"startEndTime\" || key === \"TimeBand\") {\r\n filteredData = filteredData.filter((obj) => this.returnDataForStartAndEndTimeRange(obj, value, key));\r\n }\r\n else if (value.length > 0) {\r\n filteredData = filteredData.filter((u) => value.includes(u[key]));\r\n }\r\n }\r\n });\r\n return filteredData;\r\n }\r\n\r\n returnOrdersInTheRange(order: any, range: any, key: any) {\r\n let isDateBetweenTheSelectedRange = dayjs(order[key]).isBetween(range.minSelectedDate, range.maxSelectedDate);\r\n let isDateSameAsTheMinSelectedDate = dayjs(order[key]).isSame(range.minSelectedDate);\r\n let isDateSameAsTheMaxSelectedDate = dayjs(order[key]).isSame(range.maxSelectedDate);\r\n return isDateBetweenTheSelectedRange || isDateSameAsTheMinSelectedDate || isDateSameAsTheMaxSelectedDate;\r\n }\r\n\r\n returnDataForTimeRange(obj: any, selectedData: any) {\r\n let format = \"HH:mm:ss\";\r\n let selectedStartDate = dayjs(selectedData.startTime, format);\r\n let selectedEndDate = dayjs(selectedData.endTime, format);\r\n let startTime = dayjs(obj.startTime, format);\r\n let endTime = dayjs(obj.endTime, format);\r\n\r\n let isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedStartDate);\r\n let isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedStartDate, selectedEndDate);\r\n let isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedEndDate);\r\n let isEndTimeBetweenSelectedStartAndEndTime = endTime.isBetween(selectedStartDate, selectedEndDate);\r\n\r\n return (\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeSameAsSelectedEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeSameAsSelectedEndTime)\r\n );\r\n }\r\n\r\n returnDataForFromAndToTimeRange(obj: any, selectedData: any, key: any) {\r\n let format = \"MM/DD/YYYY HH:mm:ss\";\r\n let selectedFromTime = dayjs('01/01/2001 ' + selectedData.fromTime, format);\r\n let selectedToTime = dayjs('01/01/2001 ' + selectedData.toTime, format);\r\n let objTime = obj[key];\r\n\r\n if ([\"\", \"-\", null].includes(objTime)) {\r\n return false;\r\n }\r\n if (selectedData.includeMulti && obj[key] == \"<multi>\") {\r\n return true;\r\n }\r\n if (!selectedData.includeMulti && obj[key] == \"<multi>\") {\r\n return false;\r\n }\r\n if (selectedData.includeZero && obj[key] == \"0\") {\r\n return true;\r\n }\r\n if (!selectedData.includeZero && obj[key] == \"0\") {\r\n return false;\r\n }\r\n if (!selectedData.includeTimeRange) {\r\n return false;\r\n }\r\n\r\n\r\n let dayjsTime = dayjs('01/01/2001 ' + objTime, format);\r\n\r\n let isObjTimeSameAsSelectedFromTime = dayjsTime.isSame(selectedFromTime);\r\n let isObjTimeSameAsSelectedToTime = dayjsTime.isSame(selectedToTime);\r\n let isObjTimeBetweenSelectedFromTimeAndToTime = dayjsTime.isBetween(selectedFromTime, selectedToTime);\r\n\r\n return (\r\n isObjTimeSameAsSelectedFromTime ||\r\n isObjTimeSameAsSelectedToTime ||\r\n isObjTimeBetweenSelectedFromTimeAndToTime\r\n );\r\n }\r\n\r\n returnDataForStartAndEndTimeRange(obj: any, selectedData: any, key: string) {\r\n let format = \"MM/DD/YYYY HH:mm:ss\";\r\n let selectedFromTime = dayjs('01/01/2001 ' + selectedData.fromTime, format);\r\n let selectedToTime = dayjs('01/01/2001 ' + selectedData.toTime, format);\r\n\r\n if (selectedData.includeMulti && obj[key][0] == \"<multi>\") {\r\n return true;\r\n }\r\n\r\n if (!selectedData.includeMulti && obj[key][0] == \"<multi>\") {\r\n return false;\r\n }\r\n\r\n if (selectedData.includeZero && obj[key][0] == \"0\") {\r\n return true;\r\n }\r\n\r\n if (!selectedData.includeZero && obj[key][0] == \"0\") {\r\n return false;\r\n }\r\n\r\n if (!selectedData.includeTimeRange) {\r\n return false;\r\n }\r\n\r\n let startTime = dayjs('01/01/2001 ' + obj[key][1], format);\r\n let endTime = dayjs('01/01/2001 ' + obj[key][2], format);\r\n\r\n let isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedFromTime);\r\n let isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedFromTime, selectedToTime);\r\n let isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedToTime);\r\n let isEndTimeBetweenSelectedStartAndEndTime = endTime.isBetween(selectedFromTime, selectedToTime);\r\n\r\n return (\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeSameAsSelectedEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeSameAsSelectedEndTime)\r\n );\r\n\r\n }\r\n\r\n getDataInTheDateRange(obj: any, value: any, key: any) {\r\n let parsingFormat: string;\r\n if (key === \"period\") {\r\n parsingFormat = \"YYYY-MM-DD\";\r\n\r\n let dayjsStartDate = dayjs(obj.startDate);\r\n let dayjsEndDate = dayjs(obj.endDate);\r\n\r\n let startDateIsBetweenSelDate = dayjsStartDate.isBetween(\r\n value.fromDate,\r\n value.toDate\r\n );\r\n let endDateIsBetweenSelDate = dayjsEndDate.isBetween(\r\n value.fromDate,\r\n value.toDate\r\n );\r\n\r\n\r\n let startDateIsSameAsSelStartDate = value.fromDate.isSame(dayjsStartDate);\r\n let endDateIsSameAsSelEndDate = value.toDate.isSame(dayjsEndDate);\r\n\r\n return (\r\n (startDateIsBetweenSelDate || startDateIsSameAsSelStartDate) &&\r\n (endDateIsBetweenSelDate || endDateIsSameAsSelEndDate)\r\n );\r\n } else if (key === \"AirDate\" || key === \"flightStartDate\" || key === \"flightEndDate\" || key === \"Week\" || key === \"timeoutDate\") {\r\n parsingFormat = \"MM/DD/YYYY\";\r\n let dateIsBetweenSelDate = dayjs(obj[key], parsingFormat).isBetween(value.minSelectedDate, value.maxSelectedDate);\r\n\r\n let dateIsSameAsSelStartDate = dayjs(obj[key], parsingFormat).isSame(value.minSelectedDate);\r\n let dateIsSameAsSelEndDate = dayjs(obj[key], parsingFormat).isSame(value.maxSelectedDate);\r\n\r\n return dateIsBetweenSelDate || dateIsSameAsSelStartDate || dateIsSameAsSelEndDate;\r\n }\r\n }\r\n\r\n\r\n public initializeTimeFilterData(clonedData: any[], key = \"startEndTime\") {\r\n let startTimeArr = map(clonedData, \"startTime\");\r\n let endTimeArr = map(clonedData, \"endTime\");\r\n\r\n startTimeArr.sort((a: any, b: any) => {\r\n return this.dateTimeFormatService.sortByTimeAscending(a, b);\r\n });\r\n\r\n endTimeArr.sort((a: any, b: any) => {\r\n return this.dateTimeFormatService.sortByTimeDescending(a, b);\r\n });\r\n\r\n let initialStartEndTime = {\r\n startTime: startTimeArr[0],\r\n endTime: endTimeArr[0],\r\n };\r\n this.initialValueMap.set(key, initialStartEndTime);\r\n }\r\n\r\n returnColumnFilterStatus(data: any[], headerName: string | number) {\r\n\r\n if (headerName == \"startEndTime\") {\r\n let time = data.map(u => u[headerName][0]);\r\n let uniqTime = uniq(time);\r\n return uniqTime.length == 0;\r\n }\r\n\r\n return uniq(data.map((u) => u[headerName])).length > 1 ? false : true;\r\n }\r\n\r\n getFilterOptionsData(data: any[], clonedData: any[], key?: string) {\r\n let appliedFilterSet = new Set(this.appliedFiltersArray);\r\n key = key ? key : this.selectedRadio;\r\n if (appliedFilterSet.has(key)) {\r\n return this.filterData(clonedData, key);\r\n }\r\n else {\r\n return data;\r\n }\r\n }\r\n\r\n reOrderAppliedFiltersState(clonedData: any[], value: any) {\r\n let isFiltered = true;\r\n isFiltered = this.checkIfFilterIsApplied(clonedData, value);\r\n this.removeOrChangeLatestFilterIndex(isFiltered);\r\n return isFiltered;\r\n }\r\n\r\n checkIfFilterIsApplied(clonedData: any[], value: any) {\r\n let initialValueOfColumn = sortBy(clonedData.map(item => item[this.selectedRadio]));\r\n let currentValueOfColumn = sortBy(this.applyFilter(clonedData, value).map(item => item[this.selectedRadio]));\r\n return !isEqual(initialValueOfColumn, currentValueOfColumn);\r\n }\r\n\r\n applyFilter(data: any[], value: any) {\r\n let filteredData = data;\r\n let key = this.selectedRadio;\r\n if (this.sliderSet.has(key)) {\r\n filteredData = filteredData.filter((obj) => obj[key] >= value.min && obj[key] <= value.max);\r\n }\r\n else if (key === \"startDate\" || key === \"endDate\" || key === \"AirDate\" || key === \"timeoutDate\"\r\n || key === \"flightStartDate\" || key === \"flightEndDate\" || key == \"date\" || key == \"Date\" || key == \"revisionStartDate\" || key == \"GeneratedOn\" || key === \"Week\" || key === \"ViolatedSpotDate\" || key === \"ViolatingSpotDate\") {\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 }\r\n else if (key === \"StartTimeForFilter\" || key === \"EndTimeForFilter\" || key == \"timeoutTime\" || key === \"startTimeForFilter\" || key === \"endTimeForFilter\"\r\n || key === \"start_time_for_filter\" || key === \"end_time_for_filter\" || key == \"time\" || key == \"OtherAvailableSpotsTableStartTime\"\r\n || key == \"OtherAvailableSpotsTableEndTime\") {\r\n filteredData = filteredData.filter((obj) => this.returnDataForFromAndToTimeRange(obj, value, key));\r\n }\r\n else if (key === \"startEndTimeMulti\" || key == \"startEndTime\" || key === \"TimeBand\") {\r\n filteredData = filteredData.filter((obj) => this.returnDataForStartAndEndTimeRange(obj, value, key));\r\n }\r\n else if (value.length > 0) {\r\n filteredData = filteredData.filter((u) => value.includes(u[key]));\r\n }\r\n return filteredData;\r\n }\r\n\r\n isObjectInTheRange(obj: any, value: any, key: string) {\r\n let objVal = obj[key];\r\n let dayjsDate = dayjs(objVal);\r\n if (typeof value.fromDate === \"string\" && typeof value.toDate === \"string\") {\r\n value.fromDate = dayjs(this.dateTimeFormatService.convertNgbDateToMoment(this.dateTimeFormatService.convertToNgbDate(value.fromDate, \"DD/MM/YYYY\")));\r\n value.toDate = dayjs(this.dateTimeFormatService.convertNgbDateToMoment(this.dateTimeFormatService.convertToNgbDate(value.toDate, \"DD/MM/YYYY\")));\r\n }\r\n let isDateSameAsStartOfTheRange = value.fromDate.isSame(objVal);\r\n let isDateSameAsEndOfTheRange = value.toDate.isSame(objVal);\r\n let isDateBetweenTheStartAndEndOfRange = dayjsDate.isBetween(value.fromDate, value.toDate);\r\n return isDateSameAsStartOfTheRange || isDateSameAsEndOfTheRange || isDateBetweenTheStartAndEndOfRange;\r\n }\r\n\r\n updateStateOfTheCurrentFilterTab(sortMap: Map<string, SortType>) {\r\n let activeKey = this.selectedRadio;\r\n let keyArr: string[] = [];\r\n Object.keys(this.isFilterSortActive).forEach(key => {\r\n if (key.includes(activeKey)) {\r\n keyArr = key.split(\",\");\r\n this.isFilterSortActive[key] = this.isTooltipActive(keyArr, sortMap);\r\n }\r\n });\r\n\r\n }\r\n\r\n updateStateOfAllTheKeys(sortMap: Map<string, SortType>) {\r\n Object.keys(this.isFilterSortActive).forEach(key => {\r\n let keyArr = key.split(\",\");\r\n this.isFilterSortActive[key] = this.isTooltipActive(keyArr, sortMap);\r\n })\r\n }\r\n\r\n incrementHour(value: any) {\r\n if (value == \"\") {\r\n value = 1;\r\n } else if (parseInt(value) < 12) {\r\n value = parseInt(value) + 1;\r\n } else {\r\n value = 1;\r\n }\r\n return value;\r\n }\r\n\r\n decrementHour(value: any) {\r\n if (value == \"\") {\r\n value = 12;\r\n } else if (parseInt(value) > 1) {\r\n value = parseInt(value) - 1;\r\n } else {\r\n value = 12;\r\n }\r\n return value;\r\n }\r\n\r\n incrementMinute(value: any) {\r\n // increment to nearest proper interval(15,30,45)\r\n let min = parseInt(value)\r\n if (min <= 14) {\r\n value = \"15\";\r\n } else if (min >= 15 && min <= 29) {\r\n value = \"30\";\r\n } else if (min >= 30 && min <= 44) {\r\n value = \"45\";\r\n } else if (min >= 45) {\r\n value = \"00\";\r\n }\r\n return value;\r\n }\r\n\r\n decrementMinute(value: any) {\r\n let min = parseInt(value);\r\n if (min > 0 && min <= 15) {\r\n value = \"00\";\r\n } else if (min >= 16 && min <= 30) {\r\n value = \"15\";\r\n } else if (min >= 31 && min <= 45) {\r\n value = \"30\";\r\n } else if (min > 45 || min == 0) {\r\n value = \"45\";\r\n }\r\n return value;\r\n }\r\n\r\n //========================================Checkbox method=============================================================//\r\n\r\n disableActiveFilterClearButton() {\r\n let selectedFilterSet = new Set(this.appliedFiltersArray);\r\n\r\n let currentColumnSortFilter = this.getColumnSortStateForSelectedRadio();\r\n let isSortPresent = (this.annaSortService.columnSortState && this.annaSortService.columnSortState.size > 0 && 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 = this.annaSortService.columnSortState && this.annaSortService.columnSortState.has(this.selectedRadio) &&\r\n this.annaSortService.columnSortState.get(this.selectedRadio);\r\n currentColumnSortFilter = currentColumnSortFilter ? currentColumnSortFilter : SortTypeEnum.DEFAULT;\r\n return currentColumnSortFilter;\r\n }\r\n\r\n\r\n createListForCheckboxFilter(header: string, optionData: any[]) {\r\n let tooltipOptions = this.getTooltipModelFromOptionData(optionData, header);\r\n\r\n this.selectUnselectListCheckbox(tooltipOptions, header);\r\n this.formatNullOptionToSpecifiedString(tooltipOptions, \"-\");\r\n\r\n return tooltipOptions;\r\n }\r\n\r\n getTooltipModelFromOptionData(optionData: any[], header: string) {\r\n let uniqOptionData = uniq(optionData.map(item => item[header]));\r\n return uniqOptionData.map((item, index) => new TooltipModel(item, index + 1));\r\n }\r\n\r\n selectUnselectListCheckbox(tooltipOptions: TooltipModel[], header: string) {\r\n\r\n if (this.tooltipSelectedMap.has(header)) {\r\n let selectedValueSet = new Set(this.tooltipSelectedMap.get(header));\r\n tooltipOptions.forEach(item => item.isSelected = selectedValueSet.has(item.value) ? true : false);\r\n }\r\n else {\r\n tooltipOptions.forEach(item => item.isSelected = true);\r\n }\r\n\r\n }\r\n\r\n formatNullOptionToSpecifiedString(tooltipOptions: TooltipModel[], formattedString: string) {\r\n let index = tooltipOptions.findIndex(item => item.value == null);\r\n\r\n if (index != -1) {\r\n tooltipOptions[index].label = formattedString;\r\n }\r\n }\r\n\r\n getClonedTooltipAndTooltipOption(tooltipOptions: TooltipModel[], sortByString: string) {\r\n let [selectedItems, unselectedItems] = this.getSelectedAndUnselectedItems(tooltipOptions);\r\n let sortedSelectedItems = sortBy(selectedItems, sortByString);\r\n let sortedUnselectedItems = sortBy(unselectedItems, sortByString);\r\n\r\n let clonedTooltipOptions = [...sortedSelectedItems, ...sortedUnselectedItems];\r\n let updatedTooltipOptions = cloneDeep(clonedTooltipOptions);\r\n\r\n return [clonedTooltipOptions, updatedTooltipOptions, selectedItems, unselectedItems];\r\n }\r\n\r\n getHeightOfCheckboxTooltipFilter(dataLength: number, margin: number) {\r\n return dataLength > 6 ? 200 : ((26.03 * dataLength) + (margin * dataLength) + margin);\r\n }\r\n\r\n unCheckAllCheckbox(tooltipOptions: TooltipModel[], clonedTooltipOptions: TooltipModel[]) {\r\n\r\n tooltipOptions.forEach(item => {\r\n item.isSelected = false;\r\n let index = clonedTooltipOptions.findIndex(opt => opt.id == item.id);\r\n clonedTooltipOptions[index].isSelected = false;\r\n });\r\n\r\n }\r\n\r\n selectAllCheckbox(tooltipOptions: TooltipModel[], clonedTooltipOptions: TooltipModel[]) {\r\n\r\n tooltipOptions.forEach(item => {\r\n item.isSelected = true;\r\n let index = clonedTooltipOptions.findIndex(opt => opt.id == item.id);\r\n clonedTooltipOptions[index].isSelected = true;\r\n });\r\n\r\n }\r\n\r\n selectUnselectCheckbox(data: TooltipModel, clonedTooltipOptions: TooltipModel[]) {\r\n data.isSelected = !data.isSelected;\r\n let index = clonedTooltipOptions.findIndex(item => item.id == data.id);\r\n clonedTooltipOptions[index].isSelected = data.isSelected;\r\n }\r\n\r\n getSelectedAndUnselectedItems(tooltipOptions: TooltipModel[]) {\r\n let selectedItems = tooltipOptions.filter(item => item.isSelected);\r\n let unselectedItems = tooltipOptions.filter(item => !item.isSelected);\r\n\r\n return [selectedItems, unselectedItems];\r\n }\r\n\r\n getCheckboxPreviousSelectedValue(clonedTableData: any[]) {\r\n let previousSelectedValue = [];\r\n\r\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n previousSelectedValue = this.tooltipSelectedMap.get(this.selectedRadio);\r\n\r\n if (!this.initialValueMap.has(this.selectedRadio)) {\r\n let initialValue = sortBy(uniq(clonedTableData.map(item => item[this.selectedRadio])));\r\n this.initialValueMap.set(this.selectedRadio, initialValue);\r\n }\r\n\r\n }\r\n else if (this.initialValueMap.has(this.selectedRadio)) {\r\n previousSelectedValue = this.initialValueMap.get(this.selectedRadio);\r\n }\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\r\n currentSelectedValue = sortBy(tooltipOptions.filter(item => item.isSelected).map(item => item.value));\r\n\r\n if (!searchedString && currentSelectedValue.length == tooltipOptions.length && this.initialValueMap.has(this.selectedRadio)) {\r\n currentSelectedValue = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n\r\n }\r\n\r\n let blankIndex = currentSelectedValue.findIndex((item: string) => item == null);\r\n if (blankIndex != -1) {\r\n currentSelectedValue = sortBy(currentSelectedValue);\r\n }\r\n\r\n return currentSelectedValue;\r\n }\r\n\r\n checkIfSortingChanged(tempSortOrder: SortType) {\r\n let currentColumnSortFilter = this.getColumnSortStateForSelectedRadio();\r\n\r\n let isSortChanged = tempSortOrder != null && tempSortOrder != currentColumnSortFilter;\r\n return isSortChanged;\r\n }\r\n\r\n getFilteredOptionAsBoldString(str: string, clonedTooltipOptions: TooltipModel[]) {\r\n let tooltipOptions = cloneDeep(clonedTooltipOptions.filter(item => item.label.toString().toLowerCase().includes(str.toLowerCase())))\r\n tooltipOptions.forEach(element => {\r\n element.label = this.boldString(element.label, str);\r\n });\r\n\r\n return tooltipOptions;\r\n }\r\n\r\n boldString(str: string, find: string) {\r\n let indexes = this.getIndicesOf(find, str, false);\r\n\r\n indexes.forEach((item, index) => {\r\n let startIndex = item + (index * 7); //Multiplying by 7 as there are 7char: <b></b>\r\n let endIndex = startIndex + find.length;\r\n let strToBeReplaced = str.substring(startIndex, endIndex);\r\n str = str.replace(strToBeReplaced, \"<b>\" + strToBeReplaced + \"</b>\");\r\n });\r\n return str;\r\n }\r\n\r\n getIndicesOf(searchStr: string, str: string, caseSensitive: boolean) {\r\n var searchStrLen = searchStr.length;\r\n if (searchStrLen == 0) {\r\n return [];\r\n }\r\n var startIndex = 0, index, indices = [];\r\n if (!caseSensitive) {\r\n str = str.toLowerCase();\r\n searchStr = searchStr.toLowerCase();\r\n }\r\n while ((index = str.indexOf(searchStr, startIndex)) > -1) {\r\n indices.push(index);\r\n startIndex = index + searchStrLen;\r\n }\r\n return indices;\r\n }\r\n\r\n disableAllBtnsWhenThereAreNoFilteredResults(): [number, boolean, boolean, boolean] {\r\n // [selectedCheckboxOptionsCount, disableCheckboxApply, disableClearAll, disableSelectAll];\r\n return [0, true, true, true];\r\n }\r\n\r\n //============================================================Calendar filter===========================================================//\r\n createRangeForTheDateFilter(optionData: any[]) {\r\n let minMaxDate;\r\n //When you want to use startDate and endDate combined as single column then use Period.\r\n if (this.selectedRadio == \"period\" || this.selectedRadio == \"buyerFlightDates\" || this.selectedRadio == \"trafficFlightDates\") {\r\n minMaxDate = this.createStartEndDateRange(optionData);\r\n }\r\n else {\r\n minMaxDate = this.returnMinAndMaxDate(optionData, this.selectedRadio);\r\n }\r\n\r\n return minMaxDate;\r\n }\r\n\r\n createStartEndDateRange(optionData: any[]) {\r\n let minStartDate = this.returnMinAndMaxDate(optionData, \"startDate\");\r\n let maxEndDate = this.returnMinAndMaxDate(optionData, \"endDate\");\r\n return [minStartDate[0], maxEndDate[1]];\r\n }\r\n\r\n getMinAndMaxDateRangeForCalendar(minMaxDate: any[], parsingFormat: string) {\r\n let calendarMinEnabledDate = this.dateTimeFormatService.convertToNgbDate(minMaxDate[0], parsingFormat);\r\n let calendarMaxEnabledDate = this.dateTimeFormatService.convertToNgbDate(minMaxDate[1], parsingFormat);\r\n return [calendarMinEnabledDate, calendarMaxEnabledDate];\r\n }\r\n\r\n getSelectedDateForCalendar(minMaxDate: any[], parsingFormat: string, minDate: NgbDateType, maxDate: NgbDateType) {\r\n let selectedMinDate;\r\n let selectedMaxDate;\r\n\r\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n let selectedDateObj = this.tooltipSelectedMap.get(this.selectedRadio);\r\n\r\n if (selectedDateObj.fromDate.isAfter(minMaxDate[0])) {\r\n selectedMinDate = this.dateTimeFormatService.convertToNgbDate(selectedDateObj.fromDate, parsingFormat);\r\n }\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 }\r\n else {\r\n selectedMaxDate = this.dateTimeFormatService.convertToNgbDate(selectedDateObj.toDate, parsingFormat);\r\n }\r\n\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\r\n }\r\n else if (this.initialValueMap.has(this.selectedRadio)) {\r\n previousSelectedDate = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n else {\r\n this.setInitialValueMapForDateFilter(optionData);\r\n previousSelectedDate = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n\r\n return previousSelectedDate;\r\n }\r\n\r\n setInitialValueMapForDateFilter(optionData: any[]) {\r\n let minMaxDate = this.createRangeForTheDateFilter(optionData);\r\n\r\n let selectedDate = { fromDate: minMaxDate[0], toDate: minMaxDate[1] };\r\n this.initialValueMap.set(this.selectedRadio, selectedDate);\r\n }\r\n\r\n getCurrentSelectedDatesForCalendar(currentSelectedDate: any, minDate: NgbDateType, maxDate: NgbDateType) {\r\n let fromDate = { year: currentSelectedDate.fromDate.year, month: currentSelectedDate.fromDate.month, day: currentSelectedDate.fromDate.day };\r\n let toDate = { year: currentSelectedDate.toDate.year, month: currentSelectedDate.toDate.month, day: currentSelectedDate.toDate.day };\r\n\r\n if (isEqual(minDate, fromDate) && isEqual(maxDate, toDate) && this.initialValueMap.has(this.selectedRadio)) {\r\n currentSelectedDate = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n else {\r\n currentSelectedDate.fromDate = dayjs(this.dateTimeFormatService.convertNgbDateToMoment(currentSelectedDate.fromDate));\r\n currentSelectedDate.toDate = dayjs(this.dateTimeFormatService.convertNgbDateToMoment(currentSelectedDate.toDate));\r\n }\r\n\r\n return currentSelectedDate;\r\n }\r\n\r\n //==================================================================SLIDER===========================================================//\r\n\r\n getSliderTranslateFuncVal(header: string, currencySet: Set<string>) {\r\n let translateFunc;\r\n\r\n if (currencySet.has(header)) {\r\n translateFunc = \"currency\";\r\n }\r\n else if (header == \"postedAudPercent\" || header == \"parentRowShares\" || header == \"parentRowPutPercent\") {\r\n translateFunc = \"percent\";\r\n }\r\n else {\r\n translateFunc = \"normal\";\r\n }\r\n\r\n return translateFunc;\r\n }\r\n\r\n getSliderOptions(optionsData: any[], translateFunc: string, header: string) {\r\n let minValue = this.returnMaxAndMinValue(optionsData, header, true);\r\n let maxValue = this.returnMaxAndMinValue(optionsData, header, false);\r\n\r\n let obj = this.setOptionValues(minValue, maxValue);\r\n\r\n if (translateFunc === \"normal\") {\r\n obj.translate = this.normalTranslateFunction;\r\n } else if (translateFunc === \"percent\") {\r\n obj.translate = this.percentTranslateFunction;\r\n } else if (translateFunc === \"currency\") {\r\n obj.translate = this.currencyTranslateFunction;\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n setSelectedRangeForSlider(header: string, options: Options) {\r\n let sliderMinValue;\r\n let sliderMaxValue;\r\n\r\n if (this.tooltipSelectedMap.has(header)) {\r\n let selectedObj = this.tooltipSelectedMap.get(header);\r\n sliderMinValue = selectedObj.min < options.floor ? options.floor : selectedObj.min;\r\n sliderMaxValue = selectedObj.max < options.ceil ? selectedObj.max : options.ceil;\r\n }\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 }\r\n else if (this.initialValueMap.has(this.selectedRadio)) {\r\n previousSliderData = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n else {\r\n this.setInitialValueMapForSliderFilter(clonedData);\r\n previousSliderData = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n\r\n return previousSliderData;\r\n }\r\n\r\n setInitialValueMapForSliderFilter(clonedData: any[]) {\r\n let minValue = this.returnMaxAndMinValue(clonedData, this.selectedRadio, true);\r\n let maxValue = this.returnMaxAndMinValue(clonedData, this.selectedRadio, false);\r\n let sliderData = { min: minValue, max: maxValue };\r\n this.initialValueMap.set(this.selectedRadio, sliderData);\r\n }\r\n\r\n getCurrentSelectedValueForSlider(minEnteredVal: number, maxEnteredVal: number, options: Options) {\r\n let currentSliderData: { min: any, max: any } = { min: null, max: null };\r\n currentSliderData.max = maxEnteredVal;\r\n currentSliderData.min = minEnteredVal;\r\n\r\n if (currentSliderData.min == options.floor && currentSliderData.max == options.ceil && this.initialValueMap.has(this.selectedRadio)) {\r\n currentSliderData = this.initialValueMap.get(this.selectedRadio);\r\n }\r\n\r\n return currentSliderData;\r\n\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 }\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 }\r\n else {\r\n this.setInitialValueForStartOrEndTimeRange(clonedData, key);\r\n }\r\n }\r\n\r\n //use for filter where we have start and end time range in one filter\r\n //startEndTime: [\"6 - 7A\", \"06: 00 : 00\" , \"07:00:00\"] \r\n setInitialValueForStartAndEndTimeRange(clonedData: any[], key: string) {\r\n let includeMulti = clonedData.findIndex((obj) => obj[key][0] == \"<multi>\") != -1;\r\n let includeZero = clonedData.findIndex((obj) => obj[key][0] == \"0\") != -1;\r\n let includeTimeRange = clonedData.findIndex((obj) => obj[key][0] != \"0\" && obj[key][0] != \"<multi>\") != -1;\r\n\r\n let filteredStartTime = clonedData.filter((obj) => ![\"\", \"-\", null, \"0\", \"<multi>\"].includes(obj[\"startTime\"]));\r\n let filteredEndTime = clonedData.filter((obj) => ![\"\", \"-\", null, \"0\", \"<multi>\"].includes(obj[\"endTime\"]));\r\n\r\n let startTimeArr = map(filteredStartTime, \"startTime\");\r\n let endTimeArr = map(filteredEndTime, \"endTime\");\r\n\r\n\r\n startTimeArr.sort((a, b) => {\r\n return this.dateTimeFormatService.sortByTimeAscending(a, b);\r\n });\r\n\r\n endTimeArr.sort((a, b) => {\r\n return this.dateTimeFormatService.sortByTimeDescending(a, b);\r\n });\r\n\r\n let obj = {\r\n fromTime: startTimeArr[0],\r\n toTime: endTimeArr[0],\r\n includeMulti: includeMulti,\r\n includeZero: includeZero,\r\n includeTimeRange: includeTimeRange,\r\n };\r\n\r\n this.initialValueMap.set(key, obj);\r\n\r\n }\r\n\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\r\n let includeMulti = clonedData.findIndex((obj) => obj[key] == \"<multi>\") != -1;\r\n let includeZero = clonedData.findIndex((obj) => obj[key] == \"0\") != -1;\r\n let includeTimeRange = clonedData.findIndex((obj) => obj[key] != \"0\" && obj[key] != \"<multi>\") != -1;\r\n\r\n let data = clonedData.filter((obj) => ![\"\", \"-\", null, \"0\", \"<multi>\"].includes(obj[key]));\r\n\r\n let timeArr = map(data, key);\r\n timeArr.sort((a, b) => {\r\n return this.dateTimeFormatService.sortByTimeAscending(a, b);\r\n });\r\n\r\n let obj = {\r\n fromTime: timeArr[0],\r\n toTime: timeArr[timeArr.length - 1],\r\n includeMulti: includeMulti,\r\n includeZero: includeZero,\r\n includeTimeRange: includeTimeRange,\r\n };\r\n\r\n this.initialValueMap.set(key, obj);\r\n\r\n }\r\n\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 }\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 }\r\n else {\r\n timeArr = optionsData.map(item => item[key]);\r\n }\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\r\n if (timeArr.findIndex(val => val == \"<multi>\") != -1) {\r\n showMultiTimeCheckbox = true;\r\n multiTimeCheckboxChecked = selectedTimeObj.includeMulti;\r\n }\r\n\r\n\r\n if (showZeroTimeCheckbox || showMultiTimeCheckbox) {\r\n showEnterTimeCheckbox = true;\r\n }\r\n\r\n if (timeArr.findIndex(val => val != \"<multi>\" && val != \"0\") != -1) {\r\n enterTimeCheckboxChecked = selectedTimeObj?.includeTimeRange;\r\n }\r\n\r\n return {\r\n showMultiTimeCheckbox: showMultiTimeCheckbox,\r\n showZeroTimeCheckbox: showZeroTimeCheckbox,\r\n showEnterTimeCheckbox: showEnterTimeCheckbox,\r\n multiTimeCheckboxChecked: multiTimeCheckboxChecked,\r\n zeroTimeCheckboxChecked: zeroTimeCheckboxChecked,\r\n enterTimeCheckboxChecked: enterTimeCheckboxChecked\r\n }\r\n\r\n }\r\n\r\n\r\n checkIfStartTimeIsAfterEndTime(startTime: string[], endTime: string[]) {\r\n let timeFormat = \"HH:mm:ss\";\r\n\r\n let startTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n startTime[0] + \":\" + startTime[1] + \" \" + startTime[2],\r\n true\r\n );\r\n let startTime24HrFormat = startTime24HrFormatArr[0] + \":\" + startTime24HrFormatArr[1] + \":00\";\r\n let endTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n endTime[0] + \":\" + endTime[1] + \" \" + endTime[2],\r\n true\r\n );\r\n let endTime24HrFormat = endTime24HrFormatArr[0] + \":\" + endTime24HrFormatArr[1] + \":00\";\r\n return dayjs(startTime24HrFormat, timeFormat).isAfter(dayjs(endTime24HrFormat, timeFormat));\r\n }\r\n\r\n getPreviousSelectedTimeFilter() {\r\n let previousSelectedTimeFilter;\r\n\r\n if (this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n previousSelectedTimeFilter = this.tooltipSelectedMap.get(this.selectedRadio);\r\n }\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(startTime: string[], endTime: string[], includeMulti: boolean, includeZero: boolean, includeTimeRange: boolean) {\r\n let currentSelectedTimeFilter;\r\n\r\n let fromTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n startTime[0] + \":\" + startTime[1] + \" \" + startTime[2],\r\n true\r\n );\r\n let fromTime24HrFormat = fromTime24HrFormatArr[0] + \":\" + fromTime24HrFormatArr[1] + \":00\";\r\n\r\n let toTime24HrFormatArr = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n endTime[0] + \":\" + endTime[1] + \" \" + endTime[2],\r\n true\r\n );\r\n let toTime24HrFormat = toTime24HrFormatArr[0] + \":\" + toTime24HrFormatArr[1] + \":00\";\r\n\r\n currentSelectedTimeFilter = {\r\n fromTime: fromTime24HrFormat, toTime: toTime24HrFormat, includeMulti: includeMulti,\r\n includeZero: includeZero, includeTimeRange: includeTimeRange\r\n };\r\n\r\n return currentSelectedTimeFilter;\r\n\r\n }\r\n\r\n incrementHourInput(arr: any[]) {\r\n if (arr[0] == \"\") {\r\n arr[0] = 1;\r\n } else if (parseInt(arr[0]) < 12) {\r\n arr[0] = parseInt(arr[0]) + 1;\r\n } else {\r\n arr[0] = 1;\r\n }\r\n }\r\n\r\n decrementHourInput(arr: any[]) {\r\n if (arr[0] == \"\") {\r\n arr[0] = 12;\r\n } else if (parseInt(arr[0]) > 1) {\r\n arr[0] = parseInt(arr[0]) - 1;\r\n } else {\r\n arr[0] = 12;\r\n }\r\n }\r\n\r\n incrementMinuteInput(arr: any[]) {\r\n // increment to nearest proper interval(15,30,45)\r\n let min = parseInt(arr[1])\r\n if (min <= 14) {\r\n arr[1] = \"15\";\r\n } else if (min >= 15 && min <= 29) {\r\n arr[1] = \"30\";\r\n } else if (min >= 30 && min <= 44) {\r\n arr[1] = \"45\";\r\n } else if (min >= 45) {\r\n arr[1] = \"00\";\r\n }\r\n }\r\n\r\n decrementMinuteInput(arr: any) {\r\n let min = parseInt(arr[1]);\r\n if (min > 0 && min <= 15) {\r\n arr[1] = \"00\";\r\n } else if (min >= 16 && min <= 30) {\r\n arr[1] = \"15\";\r\n } else if (min >= 31 && min <= 45) {\r\n arr[1] = \"30\";\r\n } else if (min > 45 || min == 0) {\r\n arr[1] = \"45\";\r\n }\r\n }\r\n\r\n incrementOrDecrementHour(increment: boolean, time: string[]) {\r\n if (increment) {\r\n this.incrementHourInput(time);\r\n } else {\r\n this.decrementHourInput(time);\r\n }\r\n }\r\n\r\n incrementOrDecrementMin(increment: boolean, time: string[]) {\r\n if (increment) {\r\n this.incrementMinuteInput(time);\r\n } else {\r\n this.decrementMinuteInput(time);\r\n }\r\n }\r\n\r\n isHourValueInvalid(hr: string) {\r\n return (hr.length == 0 || !+(hr) || 1 > parseInt(hr) || parseInt(hr) > 12 || hr.includes('.') );\r\n }\r\n\r\n isMinuteValueInvalid(min: string) {\r\n return (min.length != 2 || (!+(min) && min != \"00\") || 0 > parseInt(min) || parseInt(min) > 59 || min.includes('.'));\r\n }\r\n\r\n //=============================================================SORT======================================================================//\r\n updateSortMap(tempSortOrder: SortType, tableData: any[], isLurAndCsrComponent: boolean) {\r\n this.annaSortService.columnSortState = new Map();\r\n this.annaSortService.columnSortState.set(this.selectedRadio, tempSortOrder);\r\n let sortedTableData = this.annaSortService.applySorting(this.selectedRadio, tempSortOrder, tableData, isLurAndCsrComponent);\r\n return sortedTableData;\r\n }\r\n\r\n}\r\n","// Angular import statements\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { SortOption, SortType, SortTypeEnum } from '../../../anna-core-shared-lib/models/anna-sort.model';\r\nimport { AnnaSortService } from '../../../anna-core-shared-lib/services/anna-sort.service';\r\n\r\n//Add onChange push change detection\r\n@Component({\r\n selector: 'anna-core-sort-lib',\r\n templateUrl: './anna-sort.component.html',\r\n styleUrls: ['./anna-sort.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AnnaSortComponent implements OnChanges{\r\n \r\n @Input() sortObjectKey: string;\r\n @Output() sortOptionClicked = new EventEmitter<SortType>();\r\n\r\n sortOptions: SortOption[] = [\r\n {\r\n sortType: SortTypeEnum.ASC,\r\n isOptionActive: false,\r\n text: 'A to Z',\r\n },\r\n {\r\n sortType: SortTypeEnum.DESC,\r\n isOptionActive: false,\r\n text: 'Z to A',\r\n },\r\n {\r\n sortType: SortTypeEnum.DEFAULT,\r\n isOptionActive: false,\r\n text: 'Default',\r\n },\r\n ];\r\n\r\n constructor(private annaSortService: AnnaSortService) {}\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes[\"sortObjectKey\"] && changes[\"sortObjectKey\"].currentValue){\r\n let sortType = this.annaSortService.columnSortState.get(this.sortObjectKey);\r\n this.setSortType(sortType);\r\n }\r\n\r\n }\r\n\r\n sortOptionChanged(index: number, sortType: SortType) {\r\n this.sortOptions.forEach((item) => (item.isOptionActive = false));\r\n this.sortOptions[index].isOptionActive = true;\r\n this.sortOptionClicked.emit(sortType);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.annaSortService.updateSortTypeSubject.subscribe((item: string) => {\r\n this.setSortType(item);\r\n });\r\n }\r\n\r\n setSortType(option: string){\r\n option = option ? option :SortTypeEnum.DEFAULT;\r\n this.sortOptions.forEach(item => item.isOptionActive = false);\r\n let index = this.sortOptions.findIndex(item => item.sortType == option);\r\n this.sortOptions[index].isOptionActive = true;\r\n }\r\n}\r\n","<p class=\"sort-container\">\r\n <button\r\n class=\"sort-btn\"\r\n *ngFor=\"let option of sortOptions; let i = index\"\r\n (click)=\"sortOptionChanged(i, option.sortType)\"\r\n [ngClass]=\"{ active: option.isOptionActive }\"\r\n >\r\n {{option.text}}\r\n </button>\r\n</p>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\nimport dayjs from 'dayjs';\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\r\nimport { AnnaDateTimeFormatService, NgbDateType } from '../../../../anna-core-shared-lib/services/anna-date-time-format.service';\r\nimport { SortType, SortTypeEnum } from '../../../../anna-core-shared-lib/models/anna-sort.model';\r\nimport { radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-column-date-range-filter',\r\n templateUrl: './anna-column-date-range-filter.component.html',\r\n styleUrls: ['./anna-column-date-range-filter.component.scss']\r\n})\r\nexport class AnnaColumnDateRangeFilterComponent implements OnInit {\r\n @Input() tableData: any[];\r\n @Input() clonedTableData: any[];\r\n @Input() filterTabObjects: any[];\r\n @Input() isLurAndCsrComponent: boolean;\r\n @Input() showFilterHeaderTabs: boolean;\r\n \r\n @Output() filterAppliedToTable = new EventEmitter();\r\n @Output() sortingAppliedToTable = new EventEmitter();\r\n @Output() getSortType = new EventEmitter();\r\n @Output() closeTooltip = new EventEmitter();\r\n\r\n isFilterChanged: boolean;\r\n tempSortOrder: SortType = null;\r\n isSortChanged: boolean;\r\n showSortComponent: boolean = false;\r\n disableCalendarApplyBtn: boolean;\r\n selectedLabel: string;\r\n showFilterComponent: boolean = false;\r\n disableColumnClearAllBtn: boolean = true;\r\n\r\n calendarMinEnabledDate: NgbDateType;\r\n calendarMaxEnabledDate: NgbDateType;\r\n selectedMinDate: NgbDateType;\r\n selectedMaxDate: NgbDateType;\r\n calendarSelection: any = { fromDate: null, toDate: null };\r\n\r\n constructor(\r\n public annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n private annaSortService: AnnaSortService,\r\n public annaFilterService: AnnaFilterService) { }\r\n\r\n ngOnInit(): void {\r\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\r\n }\r\n\r\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\r\n let header = activeTab.key;\r\n this.selectedLabel = activeTab.label;\r\n \r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n \r\n this.tempSortOrder = null;\r\n this.isFilterChanged = false;\r\n this.isSortChanged = false;\r\n\r\n this.annaFilterService.selectedRadio = header;\r\n this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();\r\n \r\n if(reload){\r\n setTimeout(() => {\r\n this.createFilterTooltipData(activeTab, header);\r\n }, 100); \r\n }else{\r\n this.createFilterTooltipData(activeTab, header);\r\n }\r\n }\r\n\r\n createFilterTooltipData(activeTab: radioButtonModel, key: string) {\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n \r\n this.disableCalendarApplyBtn = true;\r\n \r\n if (this.showFilterComponent) {\r\n this.getCalendarData();\r\n }\r\n }\r\n\r\n getCalendarData() {\r\n const parsingFormat = \"MM/DD/YYYY\";\r\n let optionData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n let minMaxDate = this.annaFilterService.createRangeForTheDateFilter(optionData);\r\n this.selectRangeForTheDateFilter(minMaxDate, parsingFormat);\r\n }\r\n\r\n selectRangeForTheDateFilter(minMaxDate: any[], parsingFormat: string) {\r\n [this.calendarMinEnabledDate, this.calendarMaxEnabledDate] = this.annaFilterService.getMinAndMaxDateRangeForCalendar(minMaxDate, parsingFormat);\r\n \r\n [this.selectedMinDate, this.selectedMaxDate] = this.annaFilterService.getSelectedDateForCalendar(minMaxDate, parsingFormat, this.calendarMinEnabledDate, this.calendarMaxEnabledDate);\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(this.tempSortOrder, this.tableData, this.isLurAndCsrComponent);\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 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\r\n calendarDateChanged(event: any) {\r\n this.calendarSelection = event;\r\n this.disableCalendarApplyButton();\r\n }\r\n\r\n disableCalendarApplyButton() {\r\n if (this.showFilterComponent && this.showSortComponent) {\r\n let isFilterChanged = this.checkIfDateTooltipIsFiltered();\r\n let isSortChanged = this.checkIfSortingChanged();\r\n this.disableCalendarApplyBtn = !(this.calendarSelection.fromDate && this.calendarSelection.toDate) || (!isSortChanged && !isFilterChanged);\r\n } else if (this.showFilterComponent) {\r\n this.disableCalendarApplyBtn = !(this.calendarSelection.fromDate && this.calendarSelection.toDate) || !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\r\n let previousSelectedDate = this.annaFilterService.getPreviousSelectedDatesForCalendar(this.clonedTableData);\r\n let currentSelectedDate = cloneDeep(this.calendarSelection); \r\n \r\n if (currentSelectedDate.fromDate && currentSelectedDate.toDate) {\r\n currentSelectedDate = this.annaFilterService.getCurrentSelectedDatesForCalendar(cloneDeep(this.calendarSelection), this.calendarMinEnabledDate, this.calendarMaxEnabledDate);\r\n this.isFilterChanged = !isEqual(previousSelectedDate, currentSelectedDate);\r\n }\r\n\r\n return this.isFilterChanged;\r\n }\r\n\r\n applyDateFilterOnData() {\r\n if (this.showFilterComponent && this.isFilterChanged) {\r\n let currentSelectedDate = this.annaFilterService.getCurrentSelectedDatesForCalendar(cloneDeep(this.calendarSelection), this.calendarMinEnabledDate, this.calendarMaxEnabledDate);\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 class=\"radio-container\" *ngIf=\"showFilterHeaderTabs\">\r\n <div *ngFor=\"let data of filterTabObjects\">\r\n <p class=\"filter-tab\" [title]=\"data.label\" (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\" [ngClass]=\"{'active': annaFilterService.selectedRadio == data.key}\" *ngIf=\"filterTabObjects.length > 0\">{{ data.label }}</p>\r\n </div>\r\n</div>\r\n\r\n<anna-core-sort-lib *ngIf=\"showSortComponent\" [ngClass]=\"{'no-bottom-border': !showFilterComponent}\"\r\n(sortOptionClicked)=\"storeSortTypeInTempVariable($event)\" [sortObjectKey]=\"annaFilterService.selectedRadio\"></anna-core-sort-lib>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <div class=\"datepicker-container\">\r\n <button class=\"column-clear-all\" [disabled]=\"disableColumnClearAllBtn\" (click)=\"clearColumnFilter()\">\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 class=\"button\" (click)=\"cancelInDateFilter()\">Cancel</button>\r\n <button class=\"button\" (click)=\"applyDateFilter()\" [ngClass]=\"{ disabled: disableCalendarApplyBtn }\"\r\n [disabled]=\"disableCalendarApplyBtn\">Apply</button>\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { cloneDeep, isEqual, truncate } from \"lodash-es\";\r\n\r\nimport { radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\r\nimport { SortType } from '../../../../anna-core-shared-lib/models/anna-sort.model';\r\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\r\nimport { AnnaDateTimeFormatService } from '../../../../anna-core-shared-lib/services/anna-date-time-format.service';\r\nimport { IGtGeneralConfig } from '../../../../anna-core-shared-lib/models/anna-non-editable-gt-models';\r\n\r\n\r\n@Component({\r\n selector: 'anna-core-anna-column-time-filter',\r\n templateUrl: './anna-column-time-filter.component.html',\r\n styleUrls: ['./anna-column-time-filter.component.scss']\r\n})\r\nexport class AnnaColumnTimeFilterComponent implements OnInit {\r\n @Input() tableData: any[];\r\n @Input() clonedTableData: any[];\r\n @Input() filterTabObjects: any[];\r\n @Input() showFilterHeaderTabs: boolean;\r\n @Input() showAllTimeRangeCheckboxes: boolean; \r\n @Input() isLurAndCsrComponent: boolean; \r\n\r\n @Input() gtGeneralConfig: IGtGeneralConfig;\r\n @Input() showClearAllFilter:boolean =true;\r\n @Input() startFromText:string=\"From\";\r\n @Input() endToText:string =\"To\";\r\n @Input() isSortAndFilterAbsent:boolean=false;\r\n @Output() timeChanges= new EventEmitter();\r\n @Output() filterAppliedToTable = new EventEmitter();\r\n @Output() sortingAppliedToTable = new EventEmitter();\r\n @Output() getSortType = new EventEmitter();\r\n @Output() closeTooltip = new EventEmitter();\r\n\r\n isFilterChanged: boolean;\r\n tempSortOrder: SortType = null;\r\n isSortChanged: boolean;\r\n showSortComponent: boolean = false;\r\n showFilterComponent: boolean = false;\r\n disableColumnClearAllBtn: boolean = true;\r\n\r\n startTimeHourErr: boolean;\r\n startTimeMinErr: boolean;\r\n endTimeHourErr: boolean;\r\n endTimeMinErr: boolean;\r\n selectedFromTime: any[];\r\n selectedToTime: any[];\r\n clonedSelectedFromTime: any;\r\n clonedSelectedToTime: any;\r\n disableTimeFilterApplyBtn: boolean;\r\n tableColumns: string[] = [];\r\n totalRowColumns: string[] = null;\r\n showMultiTimeCheckbox: boolean;\r\n showZeroTimeCheckbox: boolean;\r\n showEnterTimeCheckbox: boolean;\r\n multiTimeCheckboxChecked: boolean;\r\n zeroTimeCheckboxChecked: boolean;\r\n enterTimeCheckboxChecked: boolean;\r\n bindValueFuncCalled: boolean;\r\n\r\n constructor(\r\n private annaSortService: AnnaSortService,\r\n public annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n public annaFilterService: AnnaFilterService) { }\r\n\r\n ngOnInit(): void {\r\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\r\n }\r\n\r\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\r\n let header = activeTab.key;\r\n \r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n \r\n this.tempSortOrder = null;\r\n this.isFilterChanged = false;\r\n this.isSortChanged = false;\r\n\r\n this.annaFilterService.selectedRadio = header;\r\n this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();\r\n\r\n if(reload){\r\n setTimeout(() => {\r\n this.createFilterTooltipData(activeTab, header);\r\n }, 100); \r\n }else{\r\n this.createFilterTooltipData(activeTab, header);\r\n }\r\n }\r\n\r\n createFilterTooltipData(activeTab: radioButtonModel, header: string) {\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n \r\n this.disableTimeFilterApplyBtn = true;\r\n \r\n if (this.showFilterComponent) {\r\n this.getTimeFilterData(header);\r\n }\r\n \r\n }\r\n\r\n getTimeFilterData(header: string): void {\r\n\r\n this.startTimeHourErr = this.startTimeMinErr = this.endTimeHourErr = this.endTimeMinErr = false;\r\n \r\n if(this.isSortAndFilterAbsent){\r\n this.selectedFromTime=this.clonedTableData[0].time\r\n this.selectedToTime=this.clonedTableData[1].time\r\n this.selectedFromTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedFromTime, true);\r\n this.selectedToTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedToTime, true);\r\n }\r\n else{\r\n [this.selectedFromTime, this.selectedToTime] = this.annaFilterService.getSelectedTimeRange(header, this.clonedTableData);\r\n }\r\n \r\n \r\n\r\n this.clonedSelectedFromTime = cloneDeep(this.selectedFromTime);\r\n this.clonedSelectedToTime = cloneDeep(this.selectedToTime);\r\n \r\n let optionsData = this.annaFilterService?.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n \r\n let checkedSelectedObj = this.annaFilterService?.selectUnselectTimeFilterCheckbox(header, optionsData);\r\n\r\n this.showMultiTimeCheckbox = checkedSelectedObj.showMultiTimeCheckbox;\r\n this.showZeroTimeCheckbox = checkedSelectedObj.showZeroTimeCheckbox;\r\n this.showEnterTimeCheckbox = checkedSelectedObj.showEnterTimeCheckbox;\r\n this.multiTimeCheckboxChecked = checkedSelectedObj.multiTimeCheckboxChecked;\r\n this.zeroTimeCheckboxChecked = checkedSelectedObj.zeroTimeCheckboxChecked;\r\n this.enterTimeCheckboxChecked = checkedSelectedObj.enterTimeCheckboxChecked; \r\n }\r\n \r\n selectOrUnselectMultiTimeCheckbox() {\r\n this.multiTimeCheckboxChecked = !this.multiTimeCheckboxChecked;\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n selectOrUnselectZeroTimeCheckbox() {\r\n this.zeroTimeCheckboxChecked = !this.zeroTimeCheckboxChecked;\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n selectOrUnselectEnterTimeCheckbox() {\r\n this.enterTimeCheckboxChecked = !this.enterTimeCheckboxChecked;\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n checkIfTimeTooltipIsFiltered() {\r\n let previousSelectedTimeFilter = this.annaFilterService.getPreviousSelectedTimeFilter();\r\n let currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(this.selectedFromTime, this.selectedToTime, this.multiTimeCheckboxChecked, this.zeroTimeCheckboxChecked, this.enterTimeCheckboxChecked);\r\n\r\n this.isFilterChanged = !isEqual(previousSelectedTimeFilter, currentSelectedTimeFilter);\r\n return this.isFilterChanged;\r\n }\r\ncheckIfInvalidTimeIsEntered(){\r\n if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) { \r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n}\r\n disableTimeFilterApplyButton() {\r\n \r\n if(this.isSortAndFilterAbsent){\r\n this.disableTimeFilterApplyBtn= this.checkIfInvalidTimeIsEntered() || !this.checkIfTimeTooltipIsFiltered() \r\n }\r\n else{\r\n if (this.showFilterComponent && this.showSortComponent) {\r\n let isFilterChanged = this.checkIfTimeTooltipIsFiltered();\r\n let isSortChanged = this.checkIfSortingChanged();\r\n this.disableTimeFilterApplyBtn = !this.validateTimeFilterInput() || (!isSortChanged && !isFilterChanged);\r\n }\r\n else if (this.showFilterComponent) {\r\n this.disableTimeFilterApplyBtn = !this.validateTimeFilterInput() || !this.checkIfTimeTooltipIsFiltered();\r\n }\r\n else if (this.showSortComponent) {\r\n this.disableTimeFilterApplyBtn = !this.checkIfSortingChanged();\r\n }\r\n }\r\n \r\n\r\n }\r\n\r\n checkIfSortingChanged(){\r\n this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);\r\n return this.isSortChanged;\r\n }\r\n\r\n validateTimeFilterInput() {\r\n if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) {\r\n \r\n return false;\r\n }\r\n\r\n if ((this.showMultiTimeCheckbox && !this.multiTimeCheckboxChecked) &&\r\n (this.showZeroTimeCheckbox && !this.zeroTimeCheckboxChecked) &&\r\n (this.showEnterTimeCheckbox && !this.enterTimeCheckboxChecked)) {\r\n return false;\r\n }\r\n \r\n \r\n return !this.annaFilterService.checkIfStartTimeIsAfterEndTime(this.selectedFromTime, this.selectedToTime);\r\n \r\n \r\n }\r\n\r\n\r\n\r\n applyTimeFilters() {\r\n if(this.isSortAndFilterAbsent){\r\n let timeSelected=[this.selectedFromTime,this.selectedToTime]\r\n this.timeChanges.emit(timeSelected)\r\n }\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(this.tempSortOrder, this.tableData, this.isLurAndCsrComponent);\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 else if(this.isFilterChanged){\r\n this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);\r\n }\r\n }\r\n\r\n applyTimeFilterOnData() {\r\n if (this.showFilterComponent && this.isFilterChanged) {\r\n let currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(this.selectedFromTime, this.selectedToTime, this.multiTimeCheckboxChecked, this.zeroTimeCheckboxChecked, this.enterTimeCheckboxChecked);\r\n \r\n let isFiltered = this.annaFilterService.reOrderAppliedFiltersState(this.clonedTableData, currentSelectedTimeFilter);\r\n this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, currentSelectedTimeFilter);\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\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}\r\n","<div class=\"radio-container\" *ngIf=\"showFilterHeaderTabs\">\r\n <div *ngFor=\"let data of filterTabObjects\">\r\n <p class=\"filter-tab\" [title]=\"data.label\" (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\" [ngClass]=\"{'active': annaFilterService.selectedRadio == data.key}\" *ngIf=\"filterTabObjects.length > 0\">{{ data.label }}</p>\r\n </div>\r\n</div>\r\n\r\n<anna-core-sort-lib *ngIf=\"showSortComponent\" [ngClass]=\"{'no-bottom-border': !showFilterComponent}\"\r\n(sortOptionClicked)=\"storeSortTypeInTempVariable($event)\" [sortObjectKey]=\"annaFilterService.selectedRadio\"></anna-core-sort-lib>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <button class=\"column-clear-all\" *ngIf=\"showClearAllFilter\" [disabled]=\"disableColumnClearAllBtn\" (click)=\"clearColumnFilter()\">Clear filter</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 class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showMultiTimeCheckbox\">\r\n <span\r\n *ngIf=\"multiTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!multiTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Include Multi</p>\r\n </div>\r\n <!-- Zero time option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showZeroTimeCheckbox\">\r\n <span\r\n *ngIf=\"zeroTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!zeroTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Include Zero</p>\r\n </div>\r\n <!-- Enter time range option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showEnterTimeCheckbox\">\r\n <span\r\n *ngIf=\"enterTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!enterTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Enter time range</p>\r\n </div>\r\n </div>\r\n <div class=\"time-label-container\">\r\n <label>{{startFromText}}</label>\r\n </div>\r\n <div class=\"time-container\">\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': startTimeHourErr}\" [(ngModel)]=\"selectedFromTime[0]\" type=\"text\" pattern=\"[1-12]*\" (ngModelChange)=\"startTimeHourChange($event)\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeStartTimeHour(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" (click)=\"changeStartTimeHour(false)\"></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': startTimeMinErr}\" [(ngModel)]=\"selectedFromTime[1]\" type=\"text\" pattern=\"[0-59]*\" (ngModelChange)=\"startTimeMinChange($event)\"/>\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeStartTimeMinute(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" style=\"position: relative;left: .25px;\" (click)=\"changeStartTimeMinute(false)\"></i>\r\n </div>\r\n <div>\r\n <mat-button-toggle-group [(ngModel)]=\"selectedFromTime[2]\" (ngModelChange)=\"disableTimeFilterApplyButton()\">\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 class=\"form-control numberInput\" [(ngModel)]=\"selectedToTime[0]\" [ngClass]=\"{'error-border': endTimeHourErr}\" (ngModelChange)=\"endTimeHourChange($event)\" type=\"text\"pattern=\"[1-12]*\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeEndTimeHour(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" (click)=\"changeEndTimeHour(false)\"></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': endTimeMinErr}\" [(ngModel)]=\"selectedToTime[1]\" (ngModelChange)=\"endTimeMinChange($event)\" type=\"text\"pattern=\"[0-59]*\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeEndTimeMinute(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" style=\"position: relative;left: .25px;\" (click)=\"changeEndTimeMinute(false)\"></i>\r\n </div>\r\n <div>\r\n <mat-button-toggle-group [(ngModel)]=\"selectedToTime[2]\" (ngModelChange)=\"disableTimeFilterApplyButton()\">\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 class=\"button\" (click)=\"closeTimeFilter()\">Cancel</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>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\nimport { SortType } from '../../../../anna-core-shared-lib/models/anna-sort.model';\r\nimport { TooltipModel, radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\r\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-column-checkbox-filter',\r\n templateUrl: './anna-column-checkbox-filter.component.html',\r\n styleUrls: ['./anna-column-checkbox-filter.component.scss']\r\n})\r\nexport class AnnaColumnCheckboxFilterComponent {\r\n \r\n @Input() showFilterHeaderTabs: boolean;\r\n @Input() isLurAndCsrComponent: boolean;\r\n @Input() tableData: any[];\r\n @Input() clonedTableData: any[];\r\n @Input() filterTabObjects: any[];\r\n\r\n @Output() filterAppliedToTable = new EventEmitter();\r\n @Output() sortingAppliedToTable = new EventEmitter();\r\n @Output() getSortType = new EventEmitter();\r\n @Output() closeTooltip = new EventEmitter();\r\n\r\n tooltipOptions: TooltipModel[];\r\n clonedTooltipOptions: TooltipModel[];\r\n heightOfCheckboxTooltipFilter: number;\r\n toolTipdata: any;\r\n tempTooltipData: any;\r\n selectedCheckboxOptionsCount: number;\r\n isFilterChanged: boolean;\r\n tempSortOrder: SortType = null;\r\n isSortChanged: boolean;\r\n disableSelectAll: boolean;\r\n disableClearAll: boolean;\r\n searchItem: string;\r\n showSortComponent: boolean = false;\r\n disableCheckboxApply: boolean;\r\n showFilterComponent: boolean = false;\r\n margin = 5;\r\n \r\n constructor(\r\n private annaSortService: AnnaSortService,\r\n public annaFilterService: AnnaFilterService) { }\r\n\r\n ngOnInit() {\r\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\r\n }\r\n\r\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\r\n let header = activeTab.key;\r\n this.searchItem = null;\r\n\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n this.tempSortOrder = null;\r\n this.isFilterChanged = false;\r\n this.isSortChanged = false;\r\n\r\n this.annaFilterService.selectedRadio = header;\r\n if(reload){\r\n setTimeout(() => {\r\n this.createFilterTooltipData(activeTab, header);\r\n }, 100); \r\n }else{\r\n this.createFilterTooltipData(activeTab, header);\r\n }\r\n \r\n }\r\n\r\n createFilterTooltipData(activeTab: radioButtonModel, key: string) {\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n \r\n this.disableCheckboxApply = true;\r\n\r\n if (this.showFilterComponent) {\r\n this.getCheckboxData(key);\r\n }\r\n }\r\n\r\n getCheckboxData(header: string) {\r\n let tooltipOptions = this.createListForCheckboxFilter(header);\r\n \r\n let [clonedTooltipOptions, updatedTooltipOptions, selectedItems, unselectedItems] = 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(this.tooltipOptions.length, this.margin);\r\n\r\n this.disableSelectAll = unselectedItems.length == 0;\r\n this.disableClearAll = selectedItems.length == 0;\r\n this.selectedCheckboxOptionsCount = selectedItems.length;\r\n }\r\n\r\n createListForCheckboxFilter(header: string) {\r\n let optionData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n let tooltipOptions = this.annaFilterService.createListForCheckboxFilter(header, optionData);\r\n\r\n return tooltipOptions;\r\n }\r\n\r\n selectUnselectListCheckbox(tooltipOptions: TooltipModel[], header: string) {\r\n if (this.annaFilterService.tooltipSelectedMap.has(header)) {\r\n let selectedValueSet = new Set(this.annaFilterService.tooltipSelectedMap.get(header));\r\n tooltipOptions.forEach(item => item.isSelected = selectedValueSet.has(item.value) ? true : false);\r\n } else {\r\n tooltipOptions.forEach(item => item.isSelected = true);\r\n }\r\n }\r\n\r\n unCheckAllCheckbox() {\r\n this.annaFilterService.unCheckAllCheckbox(this.tooltipOptions, this.clonedTooltipOptions);\r\n this.selectedCheckboxOptionsCount = 0;\r\n this.disableSelectAll = false;\r\n this.disableClearAll = true;\r\n this.disableCheckboxApply = true;\r\n }\r\n\r\n selectAllCheckbox() {\r\n this.annaFilterService.selectAllCheckbox(this.tooltipOptions, this.clonedTooltipOptions);\r\n this.selectedCheckboxOptionsCount = this.tooltipOptions.length;\r\n this.disableSelectAll = true;\r\n this.disableClearAll = false;\r\n this.disableCheckboxFilterApplyButton();\r\n }\r\n\r\n searchForTheItem(str: string) {\r\n if (str) {\r\n this.tooltipOptions = this.annaFilterService.getFilteredOptionAsBoldString(str, this.clonedTooltipOptions);\r\n this.calculateHeightForFilterTooltip();\r\n \r\n if (this.tooltipOptions.length > 0) {\r\n let [selectedItems, unselectedItems] = this.annaFilterService.getSelectedAndUnselectedItems(this.tooltipOptions);\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 }\r\n else {\r\n [this.selectedCheckboxOptionsCount, this.disableCheckboxApply, this.disableClearAll, this.disableSelectAll] = this.annaFilterService.disableAllBtnsWhenThereAreNoFilteredResults();\r\n }\r\n }\r\n else {\r\n this.tooltipOptions = cloneDeep(this.clonedTooltipOptions);\r\n this.calculateHeightForFilterTooltip();\r\n let [selectedItems, unselectedItems] = this.annaFilterService.getSelectedAndUnselectedItems(this.tooltipOptions);\r\n this.selectedCheckboxOptionsCount = selectedItems.length;\r\n this.disableSelectAll = unselectedItems.length == 0;\r\n this.disableClearAll = selectedItems.length == 0;\r\n this.disableCheckboxFilterApplyButton();\r\n }\r\n }\r\n\r\n calculateHeightForFilterTooltip(){\r\n let dataLength = this.tooltipOptions.length == 0 ? 1 : this.tooltipOptions.length;\r\n this.heightOfCheckboxTooltipFilter = this.annaFilterService.getHeightOfCheckboxTooltipFilter(dataLength, this.margin); \r\n }\r\n\r\n disableCheckboxFilterApplyButton() {\r\n let selectedItems = this.showFilterComponent ? this.tooltipOptions.filter(item => item.isSelected) : [];\r\n\r\n if (this.showFilterComponent && this.showSortComponent) {\r\n let isFilterChanged = this.checkIfCheckboxTooltipIsFiltered();\r\n let isSortChanged = this.checkIfSortingChanged();\r\n this.disableCheckboxApply = selectedItems.length == 0 || (!isSortChanged && !isFilterChanged);\r\n } else if (this.showFilterComponent) {\r\n this.disableCheckboxApply = selectedItems.length == 0 || !this.checkIfCheckboxTooltipIsFiltered();\r\n } else if (this.showSortComponent) {\r\n this.disableCheckboxApply = !this.checkIfSortingChanged();\r\n }\r\n }\r\n\r\n checkIfSortingChanged(){\r\n this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);\r\n return this.isSortChanged;\r\n }\r\n\r\n checkIfCheckboxTooltipIsFiltered() {\r\n let previousSelectedValue = this.annaFilterService.getCheckboxPreviousSelectedValue(this.clonedTableData);\r\n let currentSelectedValue = this.annaFilterService.getCheckboxCurrentSelectedValue(this.searchItem, this.tooltipOptions);\r\n this.isFilterChanged = !isEqual(currentSelectedValue, previousSelectedValue);\r\n return this.isFilterChanged;\r\n }\r\n\r\n applyFilters() {\r\n this.applyListFilters();\r\n this.applySortingOnFilteredData();\r\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n this.emitData();\r\n }\r\n\r\n applyListFilters() {\r\n if (this.showFilterComponent && this.isFilterChanged) {\r\n let currentSelectedValue = this.annaFilterService.getCheckboxCurrentSelectedValue(this.searchItem, this.tooltipOptions);\r\n this.annaFilterService.reOrderAppliedFiltersState(this.clonedTableData, currentSelectedValue);\r\n this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, currentSelectedValue);\r\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, \"\");\r\n this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);\r\n }\r\n }\r\n\r\n applySortingOnFilteredData(){\r\n if(this.showSortComponent){\r\n if(this.isSortChanged){\r\n this.tableData = this.annaFilterService.updateSortMap(this.tempSortOrder, this.tableData, this.isLurAndCsrComponent);\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 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 }\r\n else if (this.isFilterChanged) {\r\n this.filterAppliedToTable.emit(this.tableData);\r\n }\r\n else if (this.isSortChanged) {\r\n this.getSortType.emit(this.tempSortOrder);\r\n this.sortingAppliedToTable.emit(this.tableData);\r\n }\r\n }\r\n\r\n selectUnselectCheckbox(data: TooltipModel) {\r\n this.annaFilterService.selectUnselectCheckbox(data, this.clonedTooltipOptions);\r\n let [selectedItems, unselectedItems] = this.annaFilterService.getSelectedAndUnselectedItems(this.tooltipOptions);\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}\r\n","<div class=\"radio-container\" *ngIf=\"showFilterHeaderTabs\">\r\n <div [ngClass]=\"{'full-width': filterTabObjects.length == 1}\" *ngFor=\"let data of filterTabObjects\">\r\n <p class=\"filter-tab\" [title]=\"data.label\" (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\" [ngClass]=\"{'active': annaFilterService.selectedRadio == data.key}\" *ngIf=\"filterTabObjects.length > 0\">{{ data.label }}</p>\r\n </div>\r\n</div>\r\n\r\n<div class=\"checkbox-sort\" *ngIf=\"showSortComponent\">\r\n <anna-core-sort-lib [ngClass]=\"{'no-bottom-border': !showFilterComponent}\"\r\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\" [sortObjectKey]=\"annaFilterService.selectedRadio\"></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 class=\"filter-text-btn\" [disabled]=\"disableClearAll\" (click)=\"unCheckAllCheckbox()\">Clear all</button>\r\n <button class=\"filter-text-btn\" [disabled]=\"disableSelectAll\" (click)=\"selectAllCheckbox()\">Select all</button>\r\n </p>\r\n <p class=\"search-box\">\r\n <i class=\"mi mdi-search search-icon search-icon-position\"></i>\r\n <input\r\n type=\"text\"\r\n placeholder=\"Search\"\r\n class=\"search-input\"\r\n style=\"margin-left: 2px; border: none; padding: 0px\"\r\n [(ngModel)]=\"searchItem\"\r\n (ngModelChange)=\"searchForTheItem($event)\"\r\n />\r\n <i class=\"mdi mdi-close search-bar-close\" [ngClass]=\"{'disable-close-icon': (!searchItem || searchItem.length == 0) }\"\r\n (click)=\"clearSearchedItem()\"></i>\r\n\r\n </p>\r\n <div style=\"position:relative\">\r\n <!-- Track By func -->\r\n <cdk-virtual-scroll-viewport itemSize=\"18\" [style.height.px]=\"heightOfCheckboxTooltipFilter\" class=\"dropdown-data-container\">\r\n <p *cdkVirtualFor=\"let option of tooltipOptions\" class=\"input example-item\" (click)=\"selectUnselectCheckbox(option)\">\r\n <span *ngIf=\"option.isSelected\" role=\"button\" class=\"mi mdi-check-box check-box\"></span>\r\n <span *ngIf=\"!option.isSelected\" role=\"button\" class=\"mi mdi-check-box-outline-blank check-box unchecked\"></span>\r\n <span class=\"data\" title=\"{{ option.value }}\" [innerHTML]=\"option.label\"></span>\r\n\r\n\r\n </p>\r\n\r\n <p class = \"no-data-case\" *ngIf=\"tooltipOptions?.length == 0\" style=\"padding-left: .4375rem;\">No data found</p>\r\n\r\n\r\n\r\n </cdk-virtual-scroll-viewport>\r\n <div style=\"position: absolute; top:0; left:0; width:100%; height:100%; pointer-events:none\"></div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"buttons-container checkbox-filter-buttons-container\">\r\n <button class=\"button\" (click)=\"closeCheckboxFilter()\">Cancel</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\">{{ selectedCheckboxOptionsCount == tooltipOptions.length && tooltipOptions.length != 0 && !searchItem? 'All ('+ selectedCheckboxOptionsCount + ')': '(' + selectedCheckboxOptionsCount + ')' }}</span>\r\n </button>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { radioButtonModel } from '../../../../anna-core-shared-lib/models/anna-tooltip.model';\r\nimport { SortType } from '../../../../anna-core-shared-lib/models/anna-sort.model';\r\nimport { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';\r\nimport { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { Options } from '@angular-slider/ngx-slider';\r\nimport { isEqual, cloneDeep } from 'lodash-es';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-column-slider-filter',\r\n templateUrl: './anna-column-slider-filter.component.html',\r\n styleUrls: ['./anna-column-slider-filter.component.scss']\r\n})\r\nexport class AnnaColumnSliderFilterComponent {\r\n\r\n @Input() filterTabObjects: any[];\r\n @Input() isLurAndCsrComponent: boolean;\r\n @Input() tableData: any[];\r\n @Input() showFilterHeaderTabs: boolean;\r\n @Input() clonedTableData: any[];\r\n \r\n @Output() closeTooltip = new EventEmitter();\r\n @Output() filterAppliedToTable = new EventEmitter();\r\n @Output() getSortType = new EventEmitter();\r\n @Output() sortingAppliedToTable = new EventEmitter();\r\n \r\n showSortComponent: boolean;\r\n showFilterComponent: boolean;\r\n \r\n tempSortOrder: SortType = null;\r\n isFilterChanged: boolean = false;\r\n isSortChanged: boolean = false;\r\n showEmptySpaceForSlider: boolean = false;\r\n incorrectSliderInput: boolean;\r\n sliderEnteredMaxValue: number;\r\n sliderEnteredMinValue: number;\r\n showSliderMinValueError: boolean;\r\n showSliderMaxValueError: boolean;\r\n isMinTextBoxEmpty: boolean;\r\n isMaxTextBoxEmpty: boolean;\r\n options: Options;\r\n sliderFilterTextBoxStep: string;\r\n sliderMinValue: number;\r\n sliderMaxValue: number;\r\n disableSliderApplyButton: boolean;\r\n sliderValue: { min: number, max: number };\r\n disableColumnClearAllBtn: boolean = true;\r\n\r\n constructor(public annaFilterService: AnnaFilterService, public annaSortService: AnnaSortService){}\r\n\r\n ngOnInit() {\r\n this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);\r\n }\r\n\r\n populateTooltipDataBasedOnSelectedRadio(activeTab: radioButtonModel, reload: boolean) {\r\n let header = activeTab.key;\r\n \r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n \r\n this.tempSortOrder = null;\r\n this.isFilterChanged = false;\r\n this.isSortChanged = false;\r\n\r\n this.annaFilterService.selectedRadio = header;\r\n this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();\r\n if(reload){\r\n setTimeout(() => {\r\n this.createFilterTooltipData(activeTab, header);\r\n }, 100); \r\n }else{\r\n this.createFilterTooltipData(activeTab, header);\r\n }\r\n }\r\n\r\n createFilterTooltipData(activeTab: radioButtonModel, key: string){\r\n this.showSortComponent = activeTab.isSortRequired;\r\n this.showFilterComponent = activeTab.isFilterRequired;\r\n \r\n this.disableSliderApplyButton = true;\r\n \r\n if(this.showFilterComponent){\r\n this.getSliderData(key);\r\n } \r\n }\r\n\r\n getSliderData(key: string) {\r\n this.showEmptySpaceForSlider = true;\r\n\r\n this.createOptionsForSlider(key);\r\n this.setSelectedRangeForSlider(key);\r\n \r\n setTimeout(() => {\r\n this.showEmptySpaceForSlider = false;\r\n }, 0);\r\n }\r\n\r\n createOptionsForSlider(key: string){\r\n let translateFunc = this.annaFilterService.getSliderTranslateFuncVal(key, this.annaFilterService.sliderCurrencySet);\r\n this.incorrectSliderInput = false;\r\n this.sliderEnteredMaxValue = this.sliderEnteredMinValue = null;\r\n this.showSliderMinValueError = this.showSliderMaxValueError = this.isMinTextBoxEmpty = this.isMaxTextBoxEmpty = false;\r\n\r\n let optionsData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);\r\n this.options = this.annaFilterService.getSliderOptions(optionsData, translateFunc, key);\r\n\r\n this.options.step = 1;\r\n this.sliderFilterTextBoxStep = \"1\";\r\n if (key !== \"WeekNumber\") {\r\n this.options.step = 0.01;\r\n this.sliderFilterTextBoxStep = \"0.01\";\r\n }\r\n \r\n }\r\n\r\n setSelectedRangeForSlider(key: string){\r\n [this.sliderMinValue, this.sliderMaxValue] = this.annaFilterService.setSelectedRangeForSlider(key, this.options);\r\n this.sliderEnteredMinValue = this.sliderMinValue;\r\n this.sliderEnteredMaxValue = this.sliderMaxValue;\r\n }\r\n\r\n cancelSliderFilter() {\r\n this.sliderValue = null;\r\n this.closeTooltip.emit();\r\n }\r\n\r\n minValueChanged(val: string) {\r\n if (val || val == '0') {\r\n this.sliderEnteredMinValue = +val;\r\n this.isMinTextBoxEmpty = false;\r\n if (this.isMaxTextBoxEmpty) {\r\n if ( (this.sliderEnteredMinValue > this.options.ceil) || (this.sliderEnteredMinValue < this.options.floor)) {\r\n this.showSliderMinValueError = true;\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n } else {\r\n this.showSliderMinValueError = false;\r\n this.showSliderMaxValueError = false;\r\n this.disableSliderApplyButton = false;\r\n this.incorrectSliderInput = false;\r\n }\r\n } else if (this.sliderEnteredMinValue > this.sliderEnteredMaxValue) {\r\n if(this.annaFilterService.isValueInRange(this.options, this.sliderEnteredMaxValue)){\r\n this.showSliderMinValueError = true;\r\n this.showSliderMaxValueError = false;\r\n }\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 }\r\n else{\r\n this.showSliderMinValueError = true;\r\n }\r\n \r\n }\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n \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\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 }\r\n\r\n maxValueChanged(val: string) {\r\n if (val || val == \"0\") {\r\n this.sliderEnteredMaxValue = +val;\r\n this.isMaxTextBoxEmpty = false;\r\n if (this.isMinTextBoxEmpty) {\r\n if ( (this.sliderEnteredMaxValue < this.options.floor) || (this.sliderEnteredMaxValue > this.options.ceil)) {\r\n this.showSliderMaxValueError = true;\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n } else {\r\n this.showSliderMaxValueError = false;\r\n this.showSliderMinValueError = false;\r\n this.disableSliderApplyButton = false;\r\n this.incorrectSliderInput = false;\r\n }\r\n } else if (this.sliderEnteredMaxValue < this.sliderEnteredMinValue) {\r\n if(this.annaFilterService.isValueInRange(this.options, this.sliderEnteredMinValue)){\r\n this.showSliderMaxValueError = true;\r\n this.showSliderMinValueError = false;\r\n }\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 }\r\n else{\r\n this.showSliderMaxValueError = true;\r\n }\r\n }\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n // this.showMaxError = true;\r\n } else if (this.sliderEnteredMaxValue > this.options.ceil) {\r\n this.showSliderMaxValueError = true;\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n } else {\r\n this.showSliderMaxValueError = false;\r\n this.disableSliderApplyButton = false;\r\n this.incorrectSliderInput = false;\r\n }\r\n } else {\r\n this.sliderEnteredMaxValue = this.options.ceil;\r\n this.isMaxTextBoxEmpty = true;\r\n this.showSliderMaxValueError = false;\r\n }\r\n this.showErrorForMinAndMaxValue();\r\n }\r\n\r\n showErrorForMinAndMaxValue(){\r\n if(this.isMinTextBoxEmpty && this.isMaxTextBoxEmpty){\r\n this.showSliderMinValueError = true;\r\n this.showSliderMaxValueError = true;\r\n this.disableSliderApplyButton = true;\r\n this.incorrectSliderInput = true;\r\n }\r\n else if(this.showSliderMaxValueError || this.showSliderMinValueError){\r\n this.incorrectSliderInput = true;\r\n }\r\n else{\r\n this.incorrectSliderInput = false;\r\n }\r\n this.disableSliderApplyBtn();\r\n }\r\n\r\n disableSliderApplyBtn(){\r\n if(this.showFilterComponent && this.showSortComponent){\r\n let isFilterChanged = this.checkIfSliderTooltipIsFiltered();\r\n let isSortChanged = this.checkIfSortingChanged();\r\n \r\n this.disableSliderApplyButton = this.incorrectSliderInput || (!isSortChanged && !isFilterChanged );\r\n }\r\n else if(this.showFilterComponent){\r\n this.disableSliderApplyButton = this.incorrectSliderInput || !this.checkIfSliderTooltipIsFiltered();\r\n }\r\n else if(this.showSortComponent){\r\n this.disableSliderApplyButton = !this.checkIfSortingChanged();\r\n }\r\n }\r\n\r\n checkIfSortingChanged(){\r\n this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);\r\n return this.isSortChanged;\r\n }\r\n\r\n checkIfSliderTooltipIsFiltered(){\r\n let previousSelectedValue = this.annaFilterService.getPreviousSelectedValueForSlider(this.clonedTableData);\r\n let currentSelectedValue = this.annaFilterService.getCurrentSelectedValueForSlider(this.sliderEnteredMinValue, this.sliderEnteredMaxValue, this.options);\r\n\r\n this.isFilterChanged = !isEqual(previousSelectedValue, currentSelectedValue);\r\n return this.isFilterChanged;\r\n }\r\n\r\n storeSortTypeInTempVariable(event: SortType){\r\n this.tempSortOrder = event;\r\n this.disableSliderApplyBtn();\r\n }\r\n\r\n applyFilters() {\r\n this.applySliderFilter();\r\n this.applySortingOnFilteredData();\r\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n this.emitData();\r\n }\r\n\r\n applySliderFilter(){\r\n if(this.showFilterComponent && this.isFilterChanged){\r\n let currentSliderData = this.annaFilterService.getCurrentSelectedValueForSlider(this.sliderEnteredMinValue, this.sliderEnteredMaxValue, this.options);\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(this.tempSortOrder, this.tableData, this.isLurAndCsrComponent);\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 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 }\r\n else if(this.isFilterChanged){\r\n this.filterAppliedToTable.emit(this.tableData);\r\n }\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}\r\n","<div class=\"radio-container\" *ngIf=\"showFilterHeaderTabs\">\r\n <div *ngFor=\"let data of filterTabObjects\">\r\n <p\r\n class=\"filter-tab\"\r\n [title]=\"data.label\"\r\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\r\n [ngClass]=\"{ active: annaFilterService.selectedRadio == data.key }\"\r\n *ngIf=\"filterTabObjects.length > 0\"\r\n >\r\n {{ data.label }}\r\n </p>\r\n </div>\r\n</div>\r\n\r\n<anna-core-sort-lib\r\n *ngIf=\"showSortComponent\"\r\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\r\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\r\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\r\n></anna-core-sort-lib>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <button\r\n class=\"column-clear-all\"\r\n [disabled]=\"disableColumnClearAllBtn\"\r\n (click)=\"clearColumnFilter()\"\r\n >\r\n Clear filter\r\n </button>\r\n <section class=\"min-maxContainer\">\r\n <input\r\n type=\"number\"\r\n class=\"slider-text\"\r\n step=\"{{ sliderFilterTextBoxStep }}\"\r\n [(ngModel)]=\"sliderMinValue\"\r\n (ngModelChange)=\"minValueChanged($event)\"\r\n [ngClass]=\"{ 'red-border': showSliderMinValueError }\"\r\n placeholder=\"Min\"\r\n />\r\n <span>To</span>\r\n <input\r\n type=\"number\"\r\n class=\"slider-text\"\r\n step=\"{{ sliderFilterTextBoxStep }}\"\r\n [(ngModel)]=\"sliderMaxValue\"\r\n (ngModelChange)=\"maxValueChanged($event)\"\r\n [ngClass]=\"{ 'red-border': showSliderMaxValueError }\"\r\n placeholder=\"Max\"\r\n />\r\n </section>\r\n <div class=\"sidebar-slider\">\r\n <ngx-slider\r\n *ngIf=\"!showEmptySpaceForSlider\"\r\n [ngClass]=\"{\r\n 'show-min': sliderMinValue != options.floor,\r\n 'show-max': sliderMaxValue != options.ceil\r\n }\"\r\n class=\"filter-slider\"\r\n [value]=\"sliderEnteredMinValue\"\r\n [highValue]=\"sliderEnteredMaxValue\"\r\n [options]=\"options\"\r\n ></ngx-slider>\r\n <div *ngIf=\"showEmptySpaceForSlider\" class=\"slider-placeholder\"></div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"buttons-container\">\r\n <button class=\"button\" (click)=\"cancelSliderFilter()\">Cancel</button>\r\n <button\r\n class=\"button\"\r\n [ngClass]=\"{ disabled: disableSliderApplyButton }\"\r\n (click)=\"applyFilters()\"\r\n [disabled]=\"disableSliderApplyButton\"\r\n >\r\n Apply\r\n </button>\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-core-anna-est-icon-template',\r\n templateUrl: './anna-est-icon-template.component.html',\r\n styleUrls: ['./anna-est-icon-template.component.scss']\r\n})\r\nexport class AnnaEstIconTemplateComponent {\r\n\r\n}\r\n","<svg width=\"12\" height=\"12\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <path d=\"M0 0H14V14H0V0Z\" fill=\"url(#pattern0)\"/>\r\n <defs>\r\n <pattern id=\"pattern0\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\r\n <use xlink:href=\"#image0_866_172\" transform=\"scale(0.0430107 0.0434783)\"/>\r\n </pattern>\r\n <image id=\"image0_866_172\" width=\"93\" height=\"23\" xlink:href=\"data:image/png;base64,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\"/>\r\n </defs>\r\n</svg>\r\n ","\r\n// Angular import statements\r\nimport { Component, OnInit, Input, ViewChildren, QueryList, Output, EventEmitter, SimpleChanges, OnChanges, ChangeDetectorRef, ElementRef, AfterViewChecked, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n// Third party import statements\r\nimport { cloneDeep, isEqual, uniq } from \"lodash-es\";\r\n\r\n\r\n//sub-entries of anna lib import statement\r\nimport { IGtGeneralConfig, IGtTableHeader, IHeaderInfo, ITotalRowInfo } from '../../../anna-core-shared-lib/models/anna-non-editable-gt-models';\r\nimport { AnnaDateTimeFormatService } from '../../../anna-core-shared-lib/services/anna-date-time-format.service';\r\nimport { IWeekCalendar } from '../../../anna-core-shared-lib/models/anna-global-dropdown-config.model';\r\nimport { GtColumnIconEmittedData, RatingSellerGroupHierarchy, } from '../../../anna-core-shared-lib/models/anna-generic-data-type.model';\r\nimport { radioButtonModel } from '../../../anna-core-shared-lib/models/anna-tooltip.model';\r\nimport { AnnaSortService } from '../../../anna-core-shared-lib/services/anna-sort.service';\r\nimport { AnnaFilterService } from '../../../anna-core-shared-lib/services/anna-filter.service';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\ninterface keyValueTooltipType { key: string, value: string };\r\ninterface tableTooltipType { tooltipTableHeader: string[], tooltipTableBody: string[][], tableHeaderMsg: string[], tableFooterMsg: string[], innerHtml: string }\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})\r\nexport class AnnaNonEditableGenericTableComponent implements OnInit, OnChanges, AfterViewChecked {\r\n\r\n @Input() showSkeletonLoading: boolean;\r\n @Input() tableHeaders: IGtTableHeader[];\r\n @Input() tableData: any[];\r\n @Input() clonedTableData: any[];\r\n @Input() gtGeneralConfig: IGtGeneralConfig;\r\n @Input() totalRowInfo?: ITotalRowInfo[];\r\n @Input() gtDimension: { rowHeight: number, headerHeight: number, dataOnTopHeight: number, marginFromBottom: number, tableHeight?: string };\r\n @Input() tableClass: string;\r\n @Input() maximumRowsWhichCanBeRenderedWithoutScroll: number = 5;\r\n @Input() fixNumberOfRowsForPopup: boolean = false;\r\n @Input() limit: number = 30;\r\n @Input() includeBorderInTableHeight: boolean = true;\r\n @Input() downloadInProgress: boolean;\r\n @Input() percentDone: number;\r\n @Input() starredInProgress: boolean;\r\n @Input() clickableRow: boolean = false;\r\n @Input() setTableHeightWhenRowSizeIsFixed: boolean = true;\r\n @Input() tableBorderBottomClassRequired: boolean = true;\r\n @Input() hideSomeTds: boolean = false;\r\n @Input() tdsHaveRowSpan: boolean = false;\r\n @Input() multipleTablesPresent: boolean = false;\r\n\r\n @Output() toggleCheckbox = new EventEmitter();\r\n @Output() toggleRowCheckbox = new EventEmitter();\r\n @Output() toggleHeaderCheckbox = new EventEmitter();\r\n @Output() undoIconClicked = new EventEmitter();\r\n @Output() filterAppliedToTable = new EventEmitter();\r\n @Output() sortingAppliedToTable = new EventEmitter();\r\n @Output() rowClicked = new EventEmitter();\r\n @Output() radioButtonSelected = new EventEmitter();\r\n @Output() columnFilterOpened = new EventEmitter();\r\n @Output() columnFilterClosed = new EventEmitter();\r\n @Output() gtIconClicked = new EventEmitter();\r\n @Output() gtSVGIconClicked = new EventEmitter();\r\n @Output() gtTextActionClicked = new EventEmitter();\r\n @Output() gtViewDetailClicked = new EventEmitter();\r\n @Output() gtInnerHTMLClicked = new EventEmitter();\r\n @Output() downloadSpotDetails = new EventEmitter();\r\n @Output() clickableDataClicked = new EventEmitter();\r\n @Output() totalRowIconClicked = new EventEmitter();\r\n @Output() notificationIconHover = new EventEmitter();\r\n @Output() notificationIconHoverLeave = new EventEmitter();\r\n @Output() editableInputEdited = new EventEmitter();\r\n @Output() radioButtonMessageIconClicked = new EventEmitter();\r\n\r\n numberOfSkeletonRows: number[][] = Array(20).fill(0);\r\n tableDataWrapper: any[];\r\n rowChecked: boolean;\r\n isAllRowsChecked: boolean;\r\n noDataWidth: string = \"50%\";\r\n markedForCreditStatus: string;\r\n markedForMGStatus: string;\r\n filterAlignment: string = \"bottom auto\";\r\n\r\n //Sort and Filter\r\n tooltipRadioTextMap: Map<any, any>;\r\n filterTabObjects: any[];\r\n tooltip: any;\r\n disableColumnClearAllBtn: boolean = true;\r\n margin = 5;\r\n\r\n //Week Filter\r\n multiWeekPickerConfig: IWeekCalendar;\r\n\r\n tableColumns: string[] = [];\r\n totalRowColumns: string[] = null;\r\n bindValueFuncCalled: boolean;\r\n\r\n hierarchyTooltip: { open: () => void; close: () => void; };\r\n sellerGroupHierarchy: RatingSellerGroupHierarchy[];\r\n showFilterTooltipTabs: boolean; //Change the Name\r\n\r\n isScrolledLeft: boolean = false;\r\n rowBorderWidth: number = 2;\r\n\r\n sameTooltipClicked: boolean;\r\n marginTop: string = \"\";\r\n @ViewChildren('tableHeader') viewChildTableHeaders: QueryList<ElementRef>;\r\n\r\n isDifferenceLessThan25Percent: boolean;\r\n start: number = 0;\r\n end: number = this.limit + this.start;\r\n renderedData: any[];\r\n selectedInventoryIdForDownload: number;\r\n selectedDemographicForDownload: any;\r\n selectedRowTypeForDownload: string;\r\n heightOfCheckboxTooltipFilter: number;\r\n isNoDataToDisplaySubject$ = new BehaviorSubject<boolean>(false);\r\n selectedStarredOrderId: string;\r\n\r\n textActionTooltip: keyValueTooltipType[] = [];\r\n tooltipContainingTable: tableTooltipType = null;\r\n tableBottomBorderClass: string = null;\r\n showCheckboxesForTimeFilter: boolean = false;\r\n\r\n constructor(\r\n private cdRef: ChangeDetectorRef,\r\n private annaSortService: AnnaSortService,\r\n public annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n public annaFilterService: AnnaFilterService\r\n ) {\r\n this.setTooltipRadioNames();\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this.setMarginLeftForFilterIcon();\r\n }\r\n\r\n ngOnInit() {\r\n this.setFilterAlignmentBasedOnScreenResolution();\r\n }\r\n\r\n detectChanges() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes && changes[\"gtDimension\"] && changes[\"gtDimension\"].currentValue && this.setTableHeightWhenRowSizeIsFixed) {\r\n this.setTableHeight();\r\n this.setTableBottomBorder();\r\n }\r\n if (this.showSkeletonLoading) {\r\n this.tableData = this.numberOfSkeletonRows;\r\n this.renderedData = this.numberOfSkeletonRows;\r\n this.isNoDataToDisplaySubject$.next(false);\r\n this.annaFilterService.initialValueMap = new Map();\r\n this.setTableBottomBorder();\r\n }\r\n else if (changes[\"percentDone\"] || changes[\"downloadInProgress\"] || (changes[\"starredInProgress\"] && changes[\"starredInProgress\"].currentValue != undefined)) {\r\n //no task will be performed\r\n }\r\n else {\r\n this.setInitialRowsForTable();\r\n this.disableEnableEachColumnTooltipIcon();\r\n this.tableColumns = this.tableHeaders.filter(x => x.visible).map(x => x.headerInfo[0].objectKey);\r\n if ((this.tableData && this.tableData.length == 0) || (this.tableData.length == 2 && this.checkIfAllTheElementsAreZero())) {\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 }\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.setColumnSortStateMap();\r\n this.setActiveStateObject();\r\n }\r\n\r\n if (changes['totalRowInfo'] && changes['totalRowInfo'].currentValue) {\r\n this.totalRowColumns = this.totalRowInfo.map(x => x.colName);\r\n }\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n setFilterAlignmentBasedOnScreenResolution() {\r\n let viewportHeight = window.innerHeight;\r\n if (viewportHeight < 740) {\r\n this.filterAlignment = \"left right\";\r\n }\r\n else {\r\n this.filterAlignment = \"bottom left right\";\r\n }\r\n }\r\n\r\n setTableBottomBorder() {\r\n if (this.tableBorderBottomClassRequired && this.tableData && this.tableData.length && this.maximumRowsWhichCanBeRenderedWithoutScroll < this.tableData.length) {\r\n this.tableBottomBorderClass = 'bottom-border';\r\n }\r\n else {\r\n this.tableBottomBorderClass = null;\r\n }\r\n }\r\n\r\n checkIfAllTheElementsAreZero() {\r\n return !this.tableData.some(item => item != 0);\r\n }\r\n\r\n setTableHeight() {\r\n let viewportHeight = window.innerHeight;\r\n let rowHeight = this.gtDimension.rowHeight;\r\n let headerHeight = this.gtDimension.headerHeight;\r\n let dataOnTopHeight = this.gtDimension.dataOnTopHeight;\r\n let marginFromBottom = this.gtDimension.marginFromBottom;\r\n let actualTableHeight;\r\n\r\n if (this.fixNumberOfRowsForPopup) {\r\n let maxNoOfRowsToDisplay = viewportHeight < 740 ? 5 : 10;\r\n this.maximumRowsWhichCanBeRenderedWithoutScroll = maxNoOfRowsToDisplay;\r\n actualTableHeight = this.maximumRowsWhichCanBeRenderedWithoutScroll * rowHeight + headerHeight;\r\n }\r\n else {\r\n let minHeightForTable = headerHeight + 3 * rowHeight;\r\n viewportHeight = viewportHeight <= dataOnTopHeight ? dataOnTopHeight + minHeightForTable : viewportHeight;\r\n let heightLeftForTable = viewportHeight - dataOnTopHeight - marginFromBottom;\r\n this.maximumRowsWhichCanBeRenderedWithoutScroll =\r\n Math.ceil((heightLeftForTable - headerHeight - rowHeight) / rowHeight) + 1;\r\n actualTableHeight = viewportHeight - dataOnTopHeight - marginFromBottom;\r\n }\r\n\r\n // let actualTableHeight = heightLeftForTable - ((heightLeftForTable - headerHeight - rowHeight) % rowHeight);\r\n\r\n this.gtDimension.tableHeight = `${actualTableHeight}px`;\r\n\r\n\r\n this.numberOfSkeletonRows = this.maximumRowsWhichCanBeRenderedWithoutScroll ? Array(this.maximumRowsWhichCanBeRenderedWithoutScroll).fill(0) \r\n : Array(5).fill(0);\r\n }\r\n\r\n\r\n trackByFn(index: number) {\r\n return index;\r\n }\r\n\r\n setTooltipRadioNames() {\r\n this.tooltipRadioTextMap = new Map();\r\n this.tooltipRadioTextMap.set(\"StartTimeForFilter\", \"Start Time\");\r\n this.tooltipRadioTextMap.set(\"EndTimeForFilter\", \"End Time\");\r\n this.tooltipRadioTextMap.set(\"startTimeForFilter\", \"Start Time\");\r\n this.tooltipRadioTextMap.set(\"endTimeForFilter\", \"End Time\");\r\n this.tooltipRadioTextMap.set(\"start_time_for_filter\", \"Start Time\");\r\n this.tooltipRadioTextMap.set(\"end_time_for_filter\", \"End Time\");\r\n this.tooltipRadioTextMap.set(\"primaryAEName\", \"Primary AE\");\r\n this.tooltipRadioTextMap.set(\"region\", \"Region\");\r\n this.tooltipRadioTextMap.set(\"agencyName\", \"Agency\");\r\n this.tooltipRadioTextMap.set(\"location\", \"Location\");\r\n this.tooltipRadioTextMap.set(\"advertiserName\", \"Advertiser\");\r\n this.tooltipRadioTextMap.set(\"productCode\", \"Product Code\");\r\n this.tooltipRadioTextMap.set(\"flightStartDate\", \"Start Date\");\r\n this.tooltipRadioTextMap.set(\"flightEndDate\", \"End Date\");\r\n this.tooltipRadioTextMap.set(\"orderIdAndRevNumber\", \"STN Order#-Rev#\");\r\n this.tooltipRadioTextMap.set(\"alternateOrderId\", \"Alt/Rep Order #\");\r\n this.tooltipRadioTextMap.set(\"grp\", \"GRP\");\r\n this.tooltipRadioTextMap.set(\"cpp\", \"CPP\");\r\n this.tooltipRadioTextMap.set(\"imps\", \"IMPS\");\r\n this.tooltipRadioTextMap.set(\"cpm\", \"CPM\");\r\n this.tooltipRadioTextMap.set(\"offeredMGs\", \"Offered MG\");\r\n this.tooltipRadioTextMap.set(\"outstandingPE\", \"O/S PE\");\r\n this.tooltipRadioTextMap.set(\"offeredADUs\", \"Offered ADUs\");\r\n this.tooltipRadioTextMap.set(\"udDeficitValue\", \"O/S Aud Delta\");\r\n this.tooltipRadioTextMap.set(\"startEndTimeMulti\", \"Time\");\r\n this.tooltipRadioTextMap.set(\"bookedValue\", \"Booked\");\r\n this.tooltipRadioTextMap.set(\"bookedSpots\", \"Spots\");\r\n this.tooltipRadioTextMap.set(\"UserCreditedValue\", \"User Credited\");\r\n this.tooltipRadioTextMap.set(\"UserUnresolvedValue\", \"User Unresolved\");\r\n this.tooltipRadioTextMap.set(\"BuyerAddedValue\", \"Buyer Added\");\r\n this.tooltipRadioTextMap.set(\"BuyerDeletedValue\", \"Buyer Deleted\");\r\n this.tooltipRadioTextMap.set(\"userChanges\", \"User Changes\");\r\n this.tooltipRadioTextMap.set(\"buyerChanges\", \"Buyer Changes\");\r\n this.tooltipRadioTextMap.set(\"userMG\", \"User MG\");\r\n this.tooltipRadioTextMap.set(\"userADUs\", \"User ADUs\");\r\n this.tooltipRadioTextMap.set(\"inventoryCode\", \"Inventory Code\");\r\n this.tooltipRadioTextMap.set(\"program\", \"Program\");\r\n this.tooltipRadioTextMap.set(\"agency\", \"Agency\");\r\n this.tooltipRadioTextMap.set(\"advertiser\", \"Advertiser\");\r\n this.tooltipRadioTextMap.set(\"startDate\", \"Start Date\");\r\n this.tooltipRadioTextMap.set(\"endDate\", \"End Date\");\r\n this.tooltipRadioTextMap.set(\"date\", \"Date\");\r\n this.tooltipRadioTextMap.set(\"rcvPreempt\", \"$ Madegood PEs\");\r\n this.tooltipRadioTextMap.set(\"osPreempt\", \"$ O/S PEs\");\r\n this.tooltipRadioTextMap.set(\"rcvUnderDly\", \"Recovered UD\");\r\n this.tooltipRadioTextMap.set(\"osUnderDly\", \"O/s Under Dly\");\r\n this.tooltipRadioTextMap.set(\"primaryAe\", \"Primary AE\");\r\n this.tooltipRadioTextMap.set(\"region\", \"Region\");\r\n this.tooltipRadioTextMap.set(\"revCode1\", \"Rev code 1\");\r\n this.tooltipRadioTextMap.set(\"orderNoRevNo\", \"STN Order#-Rev#\");\r\n this.tooltipRadioTextMap.set(\"revCode2\", \"Rev code 2\");\r\n this.tooltipRadioTextMap.set(\"revCode3\", \"Rev code 3\");\r\n this.tooltipRadioTextMap.set(\"booked\", \"$ Booked\");\r\n this.tooltipRadioTextMap.set(\"spots\", \"Spots\");\r\n this.tooltipRadioTextMap.set(\"postedAudPercent\", \"Posted %\");\r\n this.tooltipRadioTextMap.set(\"revision\", \"Revision\");\r\n this.tooltipRadioTextMap.set(\"buyerOrderId\", \"ALT/REP Order#\");\r\n this.tooltipRadioTextMap.set(\"demo\", \"Demo\");\r\n this.tooltipRadioTextMap.set(\"postedAdu\", \"$ Posted ADUs\");\r\n this.tooltipRadioTextMap.set(\"scheduledAdu\", \"$ Scheduled ADUs\");\r\n this.tooltipRadioTextMap.set(\"audienceDeficit\", \"$ O/S Audience\");\r\n this.tooltipRadioTextMap.set(\"postedAudPercent\", \"Posted Audience %\");\r\n this.tooltipRadioTextMap.set(\"potentialUnitsValue\", \"POT Units\");\r\n this.tooltipRadioTextMap.set(\"bookedUnitsValue\", \"Booked Eq Units\");\r\n this.tooltipRadioTextMap.set(\"bookedAmountWithZeroRatingValue\", \"Total $ Booked\");\r\n this.tooltipRadioTextMap.set(\"bookedAmountPercentageWithZeroRatingValue\", \"% Against All Demos\");\r\n this.tooltipRadioTextMap.set(\"bookedAmountWithoutZeroRatingValue\", \"$Booked With Imps(’000)\");\r\n this.tooltipRadioTextMap.set(\"bookedAmountPercentageWithoutZeroRatingValue\", \"% Against All Demos\");\r\n\r\n this.tooltipRadioTextMap.set(\"totalBookedAmountValue\", \"Total $Booked\");\r\n this.tooltipRadioTextMap.set(\"averageUnitRateValue\", \" AUR\");\r\n this.tooltipRadioTextMap.set(\"totalBookedAmountWithRatingValue\", \"$Booked With Rating\");\r\n this.tooltipRadioTextMap.set(\"averageUnitRateWithRatingValue\", \"AUR With Rating\");\r\n\r\n this.tooltipRadioTextMap.set(\"totalBookedAmountWithImpressionValue\", \"$Booked With IMPS\");\r\n this.tooltipRadioTextMap.set(\"averageUnitRateWithImpressionValue\", \"AUR With IMPS\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedUnitsWithRatingValue\", \"Booked Units With Rating\");\r\n this.tooltipRadioTextMap.set(\"postedUnitsWithRatingValue\", \"Posted Units With Rating\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedUnitsWithImpressionValue\", \"Booked Units With IMPS\");\r\n this.tooltipRadioTextMap.set(\"postedUnitsWithImpressionValue\", \"Posted Units With IMPS\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedRatings\", \"Booked Rating\");\r\n this.tooltipRadioTextMap.set(\"postedRatings\", \"POSTED Rating\");\r\n this.tooltipRadioTextMap.set(\"PostedRating\", \"Posted RTG\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedImpressions\", \"Booked IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"postedImpressions\", \"Posted IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"PostedImpressions\", \"Posted IMP('000)\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedAverageRating\", \"Booked AU Rating\");\r\n this.tooltipRadioTextMap.set(\"postedAverageRating\", \"Posted AU Rating\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedAverageImpression\", \"Booked AU IMPS\");\r\n this.tooltipRadioTextMap.set(\"postedAverageImpression\", \"Posted AU IMPS\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedCppValue\", \"Booked CPP\");\r\n this.tooltipRadioTextMap.set(\"bookedEffectiveCppValue\", \"Effective CPP\");\r\n\r\n this.tooltipRadioTextMap.set(\"bookedCpmValue\", \"Booked CPM\");\r\n this.tooltipRadioTextMap.set(\"bookedEffectiveCpmValue\", \"Effective CPM\");\r\n\r\n this.tooltipRadioTextMap.set(\"orderSource\", \"Order Route\");\r\n this.tooltipRadioTextMap.set(\"orderCategory\", \"Rev Category\");\r\n this.tooltipRadioTextMap.set(\"cashOrTrade\", \"C/T\");\r\n this.tooltipRadioTextMap.set(\"revisionStartDate\", \"Revision Start Date\");\r\n this.tooltipRadioTextMap.set(\"name\", \"name\");\r\n this.tooltipRadioTextMap.set(\"role\", \"role\");\r\n this.tooltipRadioTextMap.set(\"stationCount\", \"stationCount\");\r\n this.tooltipRadioTextMap.set(\"stationList\", \"stationList\");\r\n this.tooltipRadioTextMap.set(\"approvedOn\", \"Approved On\");\r\n this.tooltipRadioTextMap.set(\"approvedBy\", \"Approved By\");\r\n this.tooltipRadioTextMap.set(\"ODImps\",\"Proj. OD IMPS\");\r\n this.tooltipRadioTextMap.set(\"UDImps\",\"Proj. UD IMPS\");\r\n this.tooltipRadioTextMap.set(\"ODGrp\",\"Proj. OD GRP\");\r\n this.tooltipRadioTextMap.set(\"UDGrp\",\"Proj. UD GRP\"); \r\n this.tooltipRadioTextMap.set(\"udImpsPercent\",\"Proj. UD %\");\r\n this.tooltipRadioTextMap.set(\"udGrpPercent\",\"Proj. UD GRP %\");\r\n this.tooltipRadioTextMap.set(\"odImpsPercent\",\"Proj. OD %\");\r\n this.tooltipRadioTextMap.set(\"odGrpPercent\",\"Proj. OD GRP %\");\r\n\r\n this.tooltipRadioTextMap.set(\"RevisionNumber\", \"Revision #\");\r\n this.tooltipRadioTextMap.set(\"RevisionType\", \"Revision Type\");\r\n this.tooltipRadioTextMap.set(\"GeneratedOn\", \"Generated On\");\r\n this.tooltipRadioTextMap.set(\"BookedValueForDisplay\", \"$ BOOKED\");\r\n this.tooltipRadioTextMap.set(\"BookedValue\", \"$ Booked\");\r\n this.tooltipRadioTextMap.set(\"BookedSpots\", \"Spots\");\r\n this.tooltipRadioTextMap.set(\"BookedGRP\", \"GRP\");\r\n this.tooltipRadioTextMap.set(\"BookedIMPSRevTab\", \"IMPS'(000)\");\r\n this.tooltipRadioTextMap.set(\"BookedCPP\", \"CPP\");\r\n this.tooltipRadioTextMap.set(\"BookedCPM\", \"CPM\");\r\n this.tooltipRadioTextMap.set(\"MGsValueForDisplay\", \"$ MGS\");\r\n this.tooltipRadioTextMap.set(\"MGsValue\", \"$ MGS\");\r\n this.tooltipRadioTextMap.set(\"ADUsValueForDisplay\", \"$ ADUS\");\r\n this.tooltipRadioTextMap.set(\"ADUsValue\", \"$ ADUS\");\r\n this.tooltipRadioTextMap.set(\"BuyerChangesValueForDisplay\", \"$ Buyer Change\");\r\n this.tooltipRadioTextMap.set(\"BuyerChangesValue\", \"$ Buyer Change\");\r\n this.tooltipRadioTextMap.set(\"UserChangesValueForDisplay\", \"$ Seller User Change\");\r\n this.tooltipRadioTextMap.set(\"UserChangesValue\", \"$ Seller User Change\");\r\n this.tooltipRadioTextMap.set(\"SellerLine\", \"Seller Line #\");\r\n this.tooltipRadioTextMap.set(\"BuyerLine\", \"Buy Line #\");\r\n this.tooltipRadioTextMap.set(\"SpotStatus\", \"Spot Status\");\r\n this.tooltipRadioTextMap.set(\"InventoryCode\", \"Inventory Code\");\r\n this.tooltipRadioTextMap.set(\"BuyerProgramName\", \"Buyer Program Name\");\r\n this.tooltipRadioTextMap.set(\"RevenueClass\", \"Revenue Class\");\r\n this.tooltipRadioTextMap.set(\"WeeklyAUR\", \"Booked Avg. Rate\");\r\n this.tooltipRadioTextMap.set(\"BookedRate\", \"Booked Rate\");\r\n this.tooltipRadioTextMap.set(\"BookedRTG\", \"Booked RTG\");\r\n this.tooltipRadioTextMap.set(\"BookedIMPS\", \"Booked IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"IMPS\", \"IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"AURTG\", \"Avg RTG\");\r\n this.tooltipRadioTextMap.set(\"AUIMPS\", \"Avg IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"PostedRatingsOrImpressions\", \"Posted RTG\");\r\n this.tooltipRadioTextMap.set(\"ScheduleFlightWeek\", \"Schedule Week\");\r\n this.tooltipRadioTextMap.set(\"ScheduledDay\", \"Scheduled Day\");\r\n this.tooltipRadioTextMap.set(\"AirStatus\", \"Air Status\");\r\n this.tooltipRadioTextMap.set(\"AirDateAndTime\", \"Air Date & Time\");\r\n this.tooltipRadioTextMap.set(\"AirDate\", \"Air Date\");\r\n this.tooltipRadioTextMap.set(\"NormalizedOrderedRating\", \"Normalized Booked RTG\");\r\n this.tooltipRadioTextMap.set(\"NormalizedOrderedImpressions\", \"Normalized Booked IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"NormalizedPostedRating\", \"Normalized Posted RTG\");\r\n this.tooltipRadioTextMap.set(\"NormalizedPostedImpressions\", \"Normalized Posted IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"AdId\", \"Ad-Id\");\r\n\r\n this.tooltipRadioTextMap.set(\"displayimps\", \"IMPS\");\r\n this.tooltipRadioTextMap.set(\"displayGrp\", \"GRP\");\r\n this.tooltipRadioTextMap.set(\"bookedSpotsForDisplay\", \"Spots\");\r\n this.tooltipRadioTextMap.set(\"displaySpots\", \"Spots\");\r\n\r\n this.tooltipRadioTextMap.set(\"estimateNo\", \"Estimate#\");\r\n this.tooltipRadioTextMap.set(\"primaryBuyer\", \"Primary Buyer\");\r\n this.tooltipRadioTextMap.set(\"primaryBuyerName\", \"Primary Buyer\");\r\n this.tooltipRadioTextMap.set(\"secondaryBuyerName\", \"Secondary Buyer\");\r\n this.tooltipRadioTextMap.set(\"secondaryBuyer\", \"Secondary Buyer\");\r\n this.tooltipRadioTextMap.set(\"timeoutDate\", \"Timeout Date\");\r\n this.tooltipRadioTextMap.set(\"DisplaytSpotStatusBI\", \"Spot Status\");\r\n this.tooltipRadioTextMap.set(\"LineSpot\", \"Line.Spot\");\r\n this.tooltipRadioTextMap.set(\"LurWindowName\", \"Political Window\");\r\n\r\n this.tooltipRadioTextMap.set(\"udValue\", \"Proj. $ UD\");\r\n this.tooltipRadioTextMap.set(\"odValue\", \"Proj. $ OD\");\r\n\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableInventoryCode\", \"Inventory Code\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableBuyerProgramName\", \"Buyer Program Name\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableStartTime\", \"Start Time\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableEndTime\", \"End Time\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableWeeklyAUR\", \"Booked Avg. Rate\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableDisplayRevenueClass\", \"Rev Class\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableActualWeekStartDate\", \"Week\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableWeekDay\", \"Day\");\r\n this.tooltipRadioTextMap.set(\"OtherAvailableSpotsTableDisplayLength\", \"Length\");\r\n\r\n this.tooltipRadioTextMap.set(\"ProjectedImpressions\", \"Projected IMP('000)\");\r\n this.tooltipRadioTextMap.set(\"ProjectedRtg\", \"Projected RTG\");\r\n }\r\n\r\n selectOrUnselectCheckbox(rowData: any, columnKeys: any, isCheckboxSelected: any) {\r\n rowData[columnKeys] = !rowData[columnKeys];\r\n this.toggleCheckbox.emit({ rowData, columnKeys, isCheckboxSelected });\r\n }\r\n\r\n selectOrUnselectRadiobox(rowData: any, columnKeys: any, isCheckboxSelected: boolean) {\r\n if (rowData[columnKeys] == isCheckboxSelected) return;\r\n rowData[columnKeys] = isCheckboxSelected;\r\n this.toggleCheckbox.emit({ rowData, columnKeys, isCheckboxSelected });\r\n }\r\n\r\n selectUnselectAllRows() {\r\n this.toggleHeaderCheckbox.emit();\r\n }\r\n\r\n selectUnselectRow(rowData: any) {\r\n this.toggleRowCheckbox.emit(rowData);\r\n }\r\n\r\n undoCreditedSpot(data: any) {\r\n this.undoIconClicked.emit({ data, mgOrCredit: \"Credit\" });\r\n }\r\n\r\n undoMgSpot(data: any) {\r\n this.undoIconClicked.emit({ data, mgOrCredit: \"MakeGood\" });\r\n }\r\n\r\n //Sort and Filter Logic begins!\r\n closeTooltip() {\r\n\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\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 }\r\n else {\r\n let enabledHeaders: any[] = [];\r\n this.checkIfUniqueValuePresentForTheHeader(header, enabledHeaders);\r\n this.openTooltip(tooltip, enabledHeaders, header);\r\n\r\n if (window.innerWidth < 1500 && window.innerHeight < 768 && !this.annaFilterService.sliderSet.has(header.filterSortObjectKeys[0])) {\r\n this.columnFilterOpened.emit();\r\n }\r\n\r\n this.showCheckboxesForTimeFilter = this.gtGeneralConfig.component == 'SPOTDETAILS' || this.gtGeneralConfig.component == 'EXCLUDEINVENTORYPOPUP' || this.gtGeneralConfig.component == 'RATING';\r\n this.showFilterTooltipTabs = header.filterSortObjectKeys.length > 1;\r\n this.bindValueFuncCalled = false;\r\n }\r\n }\r\n\r\n checkIfUniqueValuePresentForTheHeader(header: IHeaderInfo, enabledHeaders: any[]) {\r\n header.filterSortObjectKeys.forEach((item: string) => {\r\n let dataToCheck = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData, item);\r\n if (item == \"period\") {\r\n let uniqStartDate = uniq(dataToCheck.map((u: { [x: string]: any; }) => u[\"startDate\"]));\r\n let uniqEndDate = uniq(dataToCheck.map((u: { [x: string]: any; }) => u[\"endDate\"]));\r\n if (uniqStartDate.length > 1 || uniqEndDate.length > 1 || this.isTooltipActive([item])) {\r\n enabledHeaders.push(item);\r\n }\r\n }\r\n\r\n else {\r\n let values = dataToCheck.map((u: { [x: string]: any; }) => u[item]);\r\n // if last applied filter is this header, push it alos as enabledHeader\r\n let activeAndLastlyAppliedHeader = false;\r\n if (this.annaFilterService.appliedFiltersArray.length > 0 &&\r\n this.annaFilterService.appliedFiltersArray[this.annaFilterService.appliedFiltersArray.length - 1] == item) {\r\n activeAndLastlyAppliedHeader = true;\r\n }\r\n if (header.filter == \"CHECKBOX\" && (uniq(values).filter(n => n != null).length > 1 || activeAndLastlyAppliedHeader)) {\r\n enabledHeaders.push(item);\r\n }\r\n else if (header.filter != \"CHECKBOX\" && (uniq(values).filter(n => n != null && n != \"-\").length > 1 || activeAndLastlyAppliedHeader)) {\r\n enabledHeaders.push(item);\r\n }\r\n }\r\n });\r\n }\r\n\r\n openTooltip(tooltip: any, header: any, columnHeader: IHeaderInfo) {\r\n this.closeTooltip();\r\n this.tooltip = tooltip;\r\n this.tooltip.open();\r\n //convert key into the header\r\n this.filterTabObjects = header.map((key: string, index: number) => {\r\n let value = this.tooltipRadioTextMap.has(key)\r\n ? this.tooltipRadioTextMap.get(key)\r\n : key; //change to display name\r\n return new radioButtonModel(key, value, columnHeader.isSortRequired[index], columnHeader.isFilterRequired[index]);\r\n });\r\n }\r\n\r\n disableEnableEachColumnTooltipIcon() {\r\n this.tableHeaders.forEach(header => {\r\n\r\n header.headerInfo.forEach(item => {\r\n if (item.showTooltipIcon) {\r\n\r\n let values = [];\r\n item.disableTooltipIcon = true;\r\n\r\n item.filterSortObjectKeys.forEach(key => {\r\n\r\n let latestFilters = this.annaFilterService.appliedFiltersArray;\r\n\r\n if (latestFilters.length > 0 && item.disableTooltipIcon && latestFilters[latestFilters.length - 1] == key) {\r\n item.disableTooltipIcon = false;\r\n }\r\n\r\n if (item.disableTooltipIcon) {\r\n\r\n if (key == \"period\") {\r\n let uniqStartDate = uniq(this.tableData.map((u: { [x: string]: any; }) => u[\"startDate\"]));\r\n let uniqEndDate = uniq(this.tableData.map((u: { [x: string]: any; }) => u[\"endDate\"]));\r\n\r\n item.disableTooltipIcon = (uniqStartDate.length > 1 || uniqEndDate.length > 1) ? false : true;\r\n }\r\n else {\r\n values = this.tableData.map((u: { [x: string]: any; }) => u[key]);\r\n if ((item.filter == \"CHECKBOX\" && uniq(values).filter(n => n != null).length > 1) || (item.filter != \"CHECKBOX\" && 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 });\r\n\r\n\r\n }\r\n\r\n setMarginLeftForFilterIcon() {\r\n let elementArr = this.viewChildTableHeaders.toArray();\r\n elementArr.forEach((item) => {\r\n let childDivElements = item.nativeElement.children;\r\n\r\n if (childDivElements.length == 2) {\r\n let firstParagraphOffsetWidth: number = childDivElements[0]?.children[0]?.offsetWidth ? childDivElements[0]?.children[0]?.offsetWidth : 0;\r\n let secondParagraphOffsetWidth: number = childDivElements[1].children[0]?.offsetWidth ? childDivElements[1].children[0]?.offsetWidth : 0;\r\n\r\n if (firstParagraphOffsetWidth > secondParagraphOffsetWidth) {\r\n let diff = firstParagraphOffsetWidth - secondParagraphOffsetWidth;\r\n if (childDivElements[0].children.length == 2) {\r\n childDivElements[0].children[1].style.marginLeft = 4 + 'px';\r\n }\r\n\r\n if (childDivElements[1].children.length == 2) {\r\n\r\n childDivElements[1].children[1].style.marginLeft = diff + 4 + 'px';\r\n }\r\n }\r\n else {\r\n let diff = secondParagraphOffsetWidth - firstParagraphOffsetWidth;\r\n if (childDivElements[0].children.length == 2) {\r\n childDivElements[0].children[1].style.marginLeft = diff + 4 + 'px';\r\n }\r\n\r\n if (childDivElements[1].children.length == 2) {\r\n\r\n childDivElements[1].children[1].style.marginLeft = 4 + 'px';\r\n }\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n dataRowClicked(rowData: any) {\r\n this.rowClicked.emit(rowData);\r\n }\r\n\r\n radioButtonClicked(data: any, action: string, isDisabled: boolean) {\r\n if (!isDisabled) {\r\n this.radioButtonSelected.emit({ data, action });\r\n }\r\n }\r\n\r\n bindTheValueToSellerGroupTooltip(sellerGroupHierarchy: RatingSellerGroupHierarchy[], tooltip: any): void {\r\n if (this.hierarchyTooltip && this.hierarchyTooltip.open) {\r\n this.hierarchyTooltip.close();\r\n }\r\n this.sellerGroupHierarchy = sellerGroupHierarchy;\r\n this.hierarchyTooltip = tooltip;\r\n this.hierarchyTooltip.open();\r\n }\r\n\r\n iconClicked(rowData: any, iconClass: string) {\r\n\r\n if (\"orderId\" in rowData && iconClass.includes(\"mdi-star\")) {\r\n this.selectedStarredOrderId = rowData.orderId;\r\n }\r\n\r\n this.gtIconClicked.emit({ data: rowData, iconClass: iconClass });\r\n }\r\n\r\n svgIconClicked(data: GtColumnIconEmittedData) {\r\n this.gtSVGIconClicked.emit(data);\r\n }\r\n\r\n textActionClicked(rowData: any, id: any, columnHeader: IHeaderInfo) {\r\n this.gtTextActionClicked.emit({ data: rowData, id: id, columnHeader: columnHeader, isIconClicked: false });\r\n }\r\n\r\n iconClickedOnStringIconActionType(rowData: any, id: any, columnHeader: IHeaderInfo) {\r\n this.gtTextActionClicked.emit({ data: rowData, id: id, columnHeader: columnHeader, isIconClicked: true });\r\n }\r\n\r\n innerHTMLCellClicked(event: any, rowData: any) {\r\n this.gtInnerHTMLClicked.emit({ event, rowData });\r\n }\r\n\r\n viewDetailsClicked(rowData: any) {\r\n this.gtViewDetailClicked.emit({ data: rowData });\r\n }\r\n\r\n setActiveStateObject() {\r\n this.annaFilterService.isFilterSortActive = !this.annaFilterService.resetFilterSortActiveStatus || this.multipleTablesPresent\r\n ? this.annaFilterService.isFilterSortActive\r\n : {};\r\n this.tableHeaders.forEach(item => {\r\n item.headerInfo.forEach(header => {\r\n if (header.showTooltipIcon) {\r\n let key = header.filterSortObjectKeys.join(',');\r\n header.joinedFilterSortObjectKeys = key;\r\n // ANNA-4113 fix\r\n if (this.annaFilterService.resetFilterSortActiveStatus) {\r\n this.annaFilterService.isFilterSortActive[key] = false;\r\n }\r\n }\r\n })\r\n });\r\n this.annaFilterService.resetFilterSortActiveStatus = true;\r\n }\r\n\r\n setIsDifference(value: boolean) {\r\n this.isDifferenceLessThan25Percent = value;\r\n }\r\n\r\n resetIndex() {\r\n this.start = 0;\r\n this.end = this.limit + this.start;\r\n }\r\n\r\n onTableContainerScroll(e: any) {\r\n const tableViewHeight = e.target.offsetHeight; // viewport\r\n const tableScrollHeight = e.target.scrollHeight; // length of all table\r\n const scrollLocation = e.target.scrollTop; // how far user scrolled\r\n\r\n this.removeTooltipOnScroll();\r\n\r\n // If the user has scrolled within 150px of the bottom, add more data\r\n const buffer = 150;\r\n const limit = tableScrollHeight - tableViewHeight - buffer;\r\n if (scrollLocation > limit) {\r\n let data = this.getTableData(this.start, this.end);\r\n this.renderedData = this.renderedData.concat(data);\r\n this.updateIndex();\r\n }\r\n this.tableContainerScrolled(e);\r\n }\r\n\r\n getTableData(start: number, end: number) {\r\n return this.tableData.filter((value, index) => index >= start && index < end);\r\n }\r\n\r\n updateIndex() {\r\n this.start = this.end;\r\n this.end = this.limit + this.start;\r\n }\r\n\r\n setInitialRowsForTable() {\r\n this.resetIndex();\r\n this.renderedData = this.getTableData(this.start, this.end);\r\n this.updateIndex();\r\n }\r\n\r\n spotDetailsDownloadClicked(parentChildOrTotalRow: \"DATAROW\" | \"TOTALROW\", rowdata?: any) {\r\n if (rowdata) {\r\n this.selectedInventoryIdForDownload = rowdata.inventoryCodeId;\r\n this.selectedDemographicForDownload = rowdata.demographic;\r\n } else {\r\n this.selectedInventoryIdForDownload = null;\r\n this.selectedDemographicForDownload = null;\r\n }\r\n this.selectedRowTypeForDownload = parentChildOrTotalRow;\r\n this.downloadSpotDetails.emit({\r\n parentChildOrTotalRow: parentChildOrTotalRow,\r\n inventoryCodeId: this.selectedInventoryIdForDownload,\r\n demographic: this.selectedDemographicForDownload\r\n })\r\n }\r\n\r\n tableContainerScrolled(event: any) {\r\n this.isScrolledLeft = event.target.scrollLeft > 0;\r\n this.removeTooltipOnScroll();\r\n }\r\n\r\n mouseEnterOnStringTextActionType(rowData: any, tooltipKey: string) {\r\n this.textActionTooltip = rowData[tooltipKey];\r\n this.notificationIconHover.emit({ rowData: rowData, type: \"on-enter\" })\r\n }\r\n\r\n mouseEnterOnStringTextActionTypeContainingTable(rowData: any, tooltipKey: string) {\r\n this.tooltipContainingTable = rowData[tooltipKey];\r\n }\r\n\r\n mouseLeaveTextActionType(rowData: any) {\r\n this.notificationIconHoverLeave.emit({ rowData: rowData, type: \"on-leave\" })\r\n }\r\n\r\n mouseEnterOnTextActionType(rowData: any, tooltipKey: string) {\r\n this.textActionTooltip = rowData[tooltipKey];\r\n }\r\n\r\n onClickableDataClicked(Rowdata: any, id: number) {\r\n this.clickableDataClicked.emit({ data: Rowdata, id: id });\r\n }\r\n\r\n removeTooltipOnScroll() {\r\n const elements = document.getElementsByClassName(\"remarks-info-tooltip\");\r\n // const tooltipElements = document.getElementsByClassName(\"tooltip\");\r\n const gtTooltip = document.getElementsByClassName(\"remove-on-scroll-class\");\r\n const tooltipElements = document.getElementsByClassName(\"tooltip\");\r\n\r\n while (elements && elements.length > 0) {\r\n elements[0].remove();\r\n }\r\n while (tooltipElements && tooltipElements.length > 0) {\r\n tooltipElements[0].remove();\r\n this.tooltip = null;\r\n }\r\n while (gtTooltip && gtTooltip.length > 0) {\r\n gtTooltip[0].remove();\r\n }\r\n }\r\n\r\n iconClickedInTotalRow(colName: string) {\r\n this.totalRowIconClicked.emit(colName);\r\n }\r\n\r\n changesMadeInEditableInputBox(event: any, editedObject: any, pasteEvent: boolean) {\r\n let enteredValue = pasteEvent ? event.clipboardData.getData('text') : event.key;\r\n let dotIndex = editedObject.value.indexOf(\".\");\r\n\r\n if (event.keyCode != 8 && event.keyCode != 46 && !(event.keyCode >= 37 && event.keyCode <= 40) &&\r\n (!editedObject?.allowSpecialCharacters && !(/[`0-9.]/.test(enteredValue)) ||\r\n (editedObject.isDecimalPointCheckRequired && dotIndex >= 0\r\n && ((event?.target?.selectionStart > dotIndex) && (editedObject.value.length - ((dotIndex) + 1)) >= editedObject.maxDecimalPointsAllowed)))) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n editableInputValueChanged(value: any, row: any, keyEdited: string) {\r\n this.editableInputEdited.emit({ row: row, value: value, keyEdited: keyEdited });\r\n }\r\n\r\n radioButtonIconClicked(data: any) {\r\n this.radioButtonMessageIconClicked.emit(data)\r\n }\r\n\r\n filterApplied(tableData: any[]) {\r\n this.tableData = tableData;\r\n this.setInitialRowsForTable();\r\n this.disableEnableEachColumnTooltipIcon();\r\n this.filterAppliedToTable.emit(tableData);\r\n this.closeTooltip();\r\n }\r\n\r\n sortingApplied(tableData: any[]) {\r\n this.tableData = tableData;\r\n this.setInitialRowsForTable();\r\n this.disableEnableEachColumnTooltipIcon();\r\n this.sortingAppliedToTable.emit(tableData);\r\n this.closeTooltip();\r\n }\r\n}\r\n","<div id=\"generic-table-conatiner\" class=\"table-container {{gtGeneralConfig?.tableOuterContainerName}} {{tableBottomBorderClass}}\"\r\n [ngClass]=\"{ 'scroll-left-shadow-effect': isScrolledLeft, 'clickable-row': clickableRow, 'no-data-table': (isNoDataToDisplaySubject$ | async) }\"\r\n (scroll)=\"onTableContainerScroll($event)\">\r\n <div [class]=\"gtGeneralConfig.tableContainerName\" class=\"horizontal-scroll-for-table-container\" [ngStyle]=\"{\r\n height:\r\n tableData.length < maximumRowsWhichCanBeRenderedWithoutScroll\r\n ? 'calc(' +\r\n ((gtDimension.rowHeight) * tableData.length +\r\n (!tableData.length || !gtGeneralConfig.totalRow\r\n ? gtDimension.headerHeight\r\n : gtDimension.headerHeight + gtDimension.rowHeight)) +\r\n 'px)'\r\n : gtDimension.tableHeight\r\n }\">\r\n <table class=\"gt\" [ngClass]=\"tableClass\" mat-table [dataSource]=\"renderedData\">\r\n <tr class=\"header-row\" mat-header-row *matHeaderRowDef=\"tableColumns; sticky: true\"\r\n [style.height.px]=\"gtDimension.headerHeight\"></tr>\r\n <tr class=\"total-row\" mat-header-row [style.height.px]=\"gtDimension.rowHeight\"\r\n *matHeaderRowDef=\"totalRowColumns; sticky: true\" [class.hidden]=\"\r\n showSkeletonLoading ||\r\n (!showSkeletonLoading && !tableData.length ) ||\r\n (isNoDataToDisplaySubject$ | async) || \r\n (!showSkeletonLoading && !gtGeneralConfig.totalRow)\r\n \"></tr>\r\n <tr [class]=\"rowData.gtClass\" [ngClass]=\"{'no-border-tr': (isNoDataToDisplaySubject$ | async)}\" mat-row\r\n *matRowDef=\"let rowData; columns: tableColumns\" [style.height.px]=\"gtDimension.rowHeight\"\r\n (click)=\"dataRowClicked(rowData)\"></tr>\r\n\r\n <!-- TOTAL ROW -->\r\n <ng-container [matColumnDef]=\"column.colName\" *ngFor=\"let column of totalRowInfo; trackBy: trackByFn\">\r\n <td mat-header-cell *matHeaderCellDef [attr.colspan]=\"column.colspan\" class=\"{{column.class}}\">\r\n\r\n <ng-container *ngIf=\"column['isActionColumn']\">\r\n <a *ngFor=\"let data of column.actionData\" [class]=\"data.class\"\r\n (click)=\"onClickableDataClicked({}, data.id)\">\r\n {{ data.name }}\r\n </a>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"column['isIconColumn']\">\r\n <i class=\"{{column?.iconData?.class}}\" (click)=\"iconClickedInTotalRow(column?.colName)\">\r\n </i>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!column['isActionColumn']\">\r\n <strong class=\"upper-label\">{{ column.data }}</strong>\r\n <ng-container *ngIf=\"column.lowerData\">\r\n <br>\r\n <span *ngIf=\"column.colName == 'total-potential-booked-unit' && gtGeneralConfig.component == 'RATING';\r\n else columnLowerData\" class=\"clickable-data\"\r\n (click)=\"spotDetailsDownloadClicked('TOTALROW')\"\r\n [ngClass]=\"{ 'disabled-clickable-data': downloadInProgress }\">{{ column.lowerData }}\r\n <span class=\"material-icons spot-details-download-icons\">get_app</span>\r\n <ng-container *ngIf=\"downloadInProgress \r\n && 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 class=\"{{column.tooltipIconClass}}\" container=\"body\" [ngbTooltip]=\"column.tooltipMessage\"\r\n tooltipClass=\"gt-total-row-tooltip\" placement=\"bottom\"></i>\r\n </ng-container>\r\n <ng-container *ngIf=\"gtGeneralConfig.component == 'LUR_VIOLATIONS' && column.tooltipMessage\">\r\n <i class=\"mi mdi-info-outline info-label\" container=\"body\"\r\n [ngbTooltip]=\"lurViolationTotalRowToolTip\" tooltipClass=\"gt-total-row-tooltip\"\r\n placement=\"bottom\"></i>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <!-- MAIN ROW -->\r\n <ng-container [matColumnDef]=\"columnDef.headerInfo[0].objectKey\"\r\n *ngFor=\"let columnDef of tableHeaders; trackBy: trackByFn\">\r\n <th #tableHeader nowrap mat-header-cell *matHeaderCellDef [style.width]=\"columnDef.width\">\r\n <div class=\"row mx-0\" *ngFor=\"let header of columnDef.headerInfo; let j = index;\">\r\n <p *ngIf=\"header.typeOfHeaderData === 'STRING'\"\r\n [ngClass]=\"{ 'upper-label': j === 0, 'lower-label': j === 1 }\">\r\n <ngx-skeleton-loader *ngIf=\"header.name == null\" count=\"1\"\r\n [theme]=\"{ height: '10px', display: 'block', width: columnDef.width, 'max-width':'calc(100% - 20px)' }\">\r\n </ngx-skeleton-loader>\r\n <ng-container *ngIf=\"header.name\">\r\n {{ header.name }}\r\n </ng-container>\r\n\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'impsInfoTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"impsInfoTooltip\" container=\"body\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'spotsColumnEquivalizationMessageTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" container=\"body\" #t=\"ngbTooltip\"\r\n container=\"body\" [ngbTooltip]=\"spotsColumnEquivalizationMessageTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'underDeliveryTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" container=\"body\" #t=\"ngbTooltip\"\r\n container=\"body\" [ngbTooltip]=\"underDeliveryTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'overDeliveryTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" container=\"body\" #t=\"ngbTooltip\"\r\n container=\"body\" [ngbTooltip]=\"overDeliveryTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'ratingInfoTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"ratingInfoTooltip\" container=\"body\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'rateInfoTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"rateInfoTooltip\" container=\"body\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'ongoingRevBookedColumnTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"ongoingRevBookedColumnTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'completedRevBookedColumnTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"completedRevBookedColumnTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'avgBookedRate'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"avgBookedRate\" placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'avgBookedRtg'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"avgBookedRtg\" placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'avgBookedImps'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"avgBookedImps\" placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'automationTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"automationTooltip\" placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'rebateImpact'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"rebateImpact\" placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'projectedImpsRtg'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"projectedImpsRtg\" placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n </p>\r\n\r\n <ng-container *ngIf=\"header.typeOfHeaderData === 'CHECKBOX'\">\r\n <span *ngIf=\"gtGeneralConfig.isHeaderChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\" (click)=\"selectUnselectAllRows()\">\r\n check_box\r\n </span>\r\n <span *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 check_box_outline_blank\r\n </span>\r\n </ng-container>\r\n\r\n <div *ngIf=\"gtGeneralConfig.showAllColumnFilter\" class=\"sort-filter-container\">\r\n <ng-container *ngIf=\"header.showTooltipIcon\">\r\n <!-- Active tooltip Functionality -->\r\n <ng-container *ngIf=\"header.filter === 'CHECKBOX'\">\r\n\r\n <span class=\"mdi mdi-filter-variant\" [ngClass]=\"{\r\n active: annaFilterService.isFilterSortActive && annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys], \r\n disabled: header.disableTooltipIcon || showSkeletonLoading\r\n }\" [ngbTooltip]=\"filterTooltip\" placement=\"{{filterAlignment}}\"\r\n container=\"body\" tooltipClass=\"non-edit-checkbox-tooltip\"\r\n [autoClose]=\"'outside'\" triggers=\"manual\" #t=\"ngbTooltip\"\r\n (click)=\"bindTheValueToToolTip(t, header)\" (hidden)=\"closeTooltip()\">\r\n </span><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'SLIDER'\">\r\n <span class=\"mdi mdi-filter-variant\" [ngClass]=\"{\r\n active: annaFilterService.isFilterSortActive && annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\r\n disabled: header.disableTooltipIcon || showSkeletonLoading\r\n }\" [ngbTooltip]=\"sliderToolTip\" placement=\"bottom left-top\" container=\"body\"\r\n tooltipClass=\"non-edit-slider-tooltip\" [autoClose]=\"'outside'\" triggers=\"manual\"\r\n #t1=\"ngbTooltip\" (click)=\"bindTheValueToToolTip(t1, header)\"\r\n (hidden)=\"closeTooltip()\">\r\n </span><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'DATE'\">\r\n <span class=\"mdi mdi-filter-variant\" [ngClass]=\"{\r\n active: annaFilterService.isFilterSortActive && annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\r\n disabled: header.disableTooltipIcon || showSkeletonLoading\r\n }\" [ngbTooltip]=\"datePickerTooltip\" placement=\"bottom auto\" container=\"body\"\r\n tooltipClass=\"non-edit-datepicker-tooltip\" [autoClose]=\"'outside'\"\r\n triggers=\"manual\" #t2=\"ngbTooltip\" (click)=\"bindTheValueToToolTip(t2, header)\"\r\n (hidden)=\"closeTooltip()\">\r\n </span><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'WEEK'\">\r\n <span class=\"mdi mdi-filter-variant\" [ngClass]=\"{\r\n active: annaFilterService.isFilterSortActive && annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\r\n disabled: header.disableTooltipIcon || showSkeletonLoading\r\n }\" [ngbTooltip]=\"weekPickerToolTip\" placement=\"bottom left-top\"\r\n container=\"body\" [autoClose]=\"'outside'\" triggers=\"manual\" #t3=\"ngbTooltip\"\r\n (click)=\"bindTheValueToToolTip(t3, header)\" (hidden)=\"closeTooltip()\">\r\n </span><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'TIME'\">\r\n <span class=\"mdi mdi-filter-variant\" [ngClass]=\"{\r\n active: annaFilterService.isFilterSortActive && annaFilterService.isFilterSortActive[header.joinedFilterSortObjectKeys],\r\n disabled: header.disableTooltipIcon || showSkeletonLoading\r\n }\" [ngbTooltip]=\"timeFilterToolTip\" placement=\"bottom left-top auto\"\r\n container=\"body\" tooltipClass=\"non-edit-time-tooltip\" [autoClose]=\"'outside'\"\r\n triggers=\"manual\" #t4=\"ngbTooltip\" (click)=\"bindTheValueToToolTip(t4, header)\"\r\n (hidden)=\"closeTooltip()\">\r\n </span><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 *ngIf=\"header.tooltip && header.tooltip.name == 'lurViolationInfoTooltip'\"\r\n class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\" #t=\"ngbTooltip\" container=\"body\"\r\n [ngbTooltip]=\"lurViolationInfoTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\">\r\n </i>\r\n\r\n </div>\r\n </div>\r\n </th>\r\n\r\n <ng-container *matCellDef=\"let ROW_DATA\">\r\n <td mat-cell [style.background]=\"ROW_DATA.backgroundColor\" \r\n [style.border]=\"ROW_DATA.border\"\r\n class=\"{{ROW_DATA.rowClass}}\"\r\n [ngClass]=\"ROW_DATA[columnDef.headerInfo[0].objectKey + 'TdClass']\"\r\n [attr.rowspan]=\"ROW_DATA[columnDef.headerInfo[0].objectKey + 'Rowspan']\"\r\n *ngIf=\"!hideSomeTds ||( hideSomeTds && !ROW_DATA['hide' + columnDef.headerInfo[0].objectKey + 'Td'])\"\r\n >\r\n <ngx-skeleton-loader *ngIf=\"showSkeletonLoading\" count=\"1\" [theme]=\"{ height: '10px', display: 'block' }\">\r\n </ngx-skeleton-loader>\r\n\r\n <ng-container *ngIf=\"!showSkeletonLoading\">\r\n <ng-container *ngIf=\"tableData.length > 0 && !(isNoDataToDisplaySubject$ | async)\">\r\n <ng-container\r\n *ngFor=\"let subline of columnDef.headerInfo; let subLineIndex = index; trackBy: trackByFn\">\r\n <div showEllipsisTextOnHover>\r\n <ng-container [ngSwitch]=\"columnDef.headerInfo[subLineIndex].typeOfBodyData\">\r\n <ng-container *ngSwitchCase=\"'ICON'\">\r\n <i *ngIf=\"!(starredInProgress && ROW_DATA.orderId == selectedStarredOrderId)\"\r\n [class]=\"ROW_DATA.iconClass\"\r\n (click)=\"iconClicked(ROW_DATA,ROW_DATA.iconClass)\"\r\n ngbTooltip=\"{{ ROW_DATA.iconTitleText }}\" placement=\"bottom\"\r\n container=\"body\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"></i>\r\n <ng-container\r\n *ngIf=\"starredInProgress && ROW_DATA.orderId == selectedStarredOrderId\">\r\n <div class=\"spinner-for-button-directive\"></div>\r\n </ng-container>\r\n\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'ICON_CELL'\">\r\n <ng-container\r\n *ngFor=\"let action of ROW_DATA[columnDef.headerInfo[subLineIndex].actionKey]\">\r\n\r\n <i *ngIf=\"action.showIcon\" [class]=\"action.iconClass\"\r\n (mouseenter)=\"mouseEnterOnStringTextActionType(ROW_DATA, columnDef.headerInfo[subLineIndex].tooltipKey)\"\r\n placement=\"bottom auto\" container=\"body\" [autoClose]=\"true\"\r\n tooltipClass=\"team-user-tooltip remove-on-scroll-class\"\r\n [ngbTooltip]=\"action.showTooltip ? userLoggedInDetails : null\"\r\n (click)=\"textActionClicked(ROW_DATA, action.id, columnDef.headerInfo[subLineIndex])\"\r\n [disableTooltip]=\"!action.showTooltip\">\r\n </i>\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 </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'HTML_STRING'\">\r\n <p [innerHTML]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n (click)=\"innerHTMLCellClicked($event,ROW_DATA)\"></p>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'SVG_ICON'\">\r\n <anna-core-anna-icon-column [componentName]=\"gtGeneralConfig.component\"\r\n [dataObject]=\"ROW_DATA\"\r\n [iconToShow]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey] \"\r\n (onColumnIconClicked)=\"svgIconClicked($event)\"></anna-core-anna-icon-column>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'TEXT_ACTIONS'\">\r\n <ng-container\r\n *ngFor=\"let text of ROW_DATA[columnDef.headerInfo[subLineIndex].actionKey]\">\r\n <button *ngIf=\"text.showTooltip\"\r\n (click)=\"textActionClicked(ROW_DATA,text.id, columnDef.headerInfo[subLineIndex])\"\r\n [disabled]=\"text.isDisabled\" class=\"{{text.class}}\"\r\n (mouseenter)=\"mouseEnterOnTextActionType(ROW_DATA, columnDef.headerInfo[subLineIndex].tooltipKey)\"\r\n [ngbTooltip]=\"textActionTooltipTemplate\" placement=\"auto\"\r\n container=\"body\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\">\r\n {{ text.name}}\r\n </button>\r\n\r\n <button *ngIf=\"!text.showTooltip\"\r\n (click)=\"textActionClicked(ROW_DATA,text.id, columnDef.headerInfo[subLineIndex])\"\r\n [disabled]=\"text.isDisabled\" class=\"{{text.class}}\">\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 *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n [ngClass]=\"{\r\n 'disable-checkbox': ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\r\n }\" class=\"material-icons custom-column-checkbox-checked\" (click)=\"\r\n selectOrUnselectCheckbox(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].objectKey,\r\n false\r\n )\r\n \">\r\n check_box\r\n </span>\r\n <span *ngIf=\"!ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n class=\"material-icons custom-column-checkbox-unchecked\" [ngClass]=\"{\r\n 'disable-checkbox': ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\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 check_box_outline_blank\r\n </span>\r\n\r\n <ng-container\r\n *ngFor=\"let action of ROW_DATA[columnDef.headerInfo[subLineIndex].actionKey]\">\r\n <i *ngIf=\"action.showIcon\" [class]=\"action.iconClass\"\r\n [ngClass]=\"{'disabled': action.disabledIcon}\"\r\n (mouseenter)=\"mouseEnterOnStringTextActionTypeContainingTable(ROW_DATA, columnDef.headerInfo[subLineIndex].tooltipKey)\"\r\n placement=\"bottom auto\" container=\"body\" [autoClose]=\"true\"\r\n tooltipClass=\"tooltip-containing-table remove-on-scroll-class\"\r\n [ngbTooltip]=\"tooltipContainingTableTemplate\">\r\n </i>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'CLICKABLE_DATA'\">\r\n <a *ngFor=\"let text of ROW_DATA[columnDef.headerInfo[subLineIndex].actionKey]\"\r\n [class]=\"text.class\"\r\n (click)=\"onClickableDataClicked(ROW_DATA, text.id)\">\r\n {{ text.name }}\r\n </a>\r\n <span\r\n *ngIf=\"subline.objectKey == 'displayBookedUnits' && gtGeneralConfig.component == 'RATING'\"\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\r\n class=\"material-icons spot-details-download-icons\">get_app</span>\r\n <ng-container *ngIf=\"downloadInProgress \r\n && ROW_DATA.inventoryCodeId == selectedInventoryIdForDownload \r\n && ROW_DATA.demographic == selectedDemographicForDownload \">\r\n <ng-container\r\n [ngTemplateOutlet]=\"circularProgressBar\"></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=\"let action of ROW_DATA[columnDef.headerInfo[subLineIndex].actionKey]\">\r\n <span [class]=\"action.additionalTextBeforeLinkClass\"\r\n [innerHtml]=\"action.additionalTextBeforeLink\"\r\n ngbTooltip=\"{{ action.additionalTextBeforeLink }}\"\r\n placement=\"bottom\" container=\"body\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\r\n [disableTooltip]=\"!action.enableTooltipForAdditionalText\"></span>\r\n\r\n <ng-container *ngIf=\"action && action.typeOfData== 'STRING'\">\r\n {{ action.data }}\r\n </ng-container>\r\n\r\n <a [id]=\"action.id\" *ngIf=\"action.showLink\"\r\n (click)=\"textActionClicked(ROW_DATA, action.id, columnDef.headerInfo[subLineIndex])\"\r\n [class]=\"action.linkClass\"\r\n [ngClass]=\"{'disabled': action.disabledLink}\">{{action.data}}</a>\r\n <span ngbTooltip=\"{{ action.additionalTextAfterLink }}\"\r\n placement=\"bottom\" 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 {{ action.additionalTextAfterLink }}\r\n </span>\r\n\r\n <ng-container *ngIf=\"action.showTooltip\">\r\n <ng-container *ngIf=\"action.tooltipData.innerHtml\">\r\n\r\n <i *ngIf=\"action.showIcon\" [class]=\"action.iconClass\"\r\n [ngClass]=\"{'disabled': action.disabledIcon}\"\r\n (mouseenter)=\"mouseEnterOnStringTextActionTypeContainingTable(ROW_DATA, columnDef.headerInfo[subLineIndex].tooltipKey)\"\r\n placement=\"bottom auto\" container=\"body\"\r\n [autoClose]=\"true\"\r\n tooltipClass=\"tooltip-containing-table remove-on-scroll-class\"\r\n [ngbTooltip]=\"tooltipContainingTableTemplate\">\r\n </i>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!action.tooltipData.tooltipTableBody\">\r\n <i *ngIf=\"action.showIcon\" [class]=\"action.iconClass\"\r\n [ngClass]=\"{'disabled': action.disabledIcon}\"\r\n (click)=\"iconClickedOnStringIconActionType(ROW_DATA, action.id, columnDef.headerInfo[subLineIndex])\"\r\n (mouseleave)=\"mouseLeaveTextActionType(ROW_DATA)\"\r\n (mouseenter)=\"mouseEnterOnStringTextActionType(ROW_DATA, columnDef.headerInfo[subLineIndex].tooltipKey)\"\r\n [placement]=\"action.tooltipPlacement ? action.tooltipPlacement : 'bottom auto'\"\r\n container=\"body\" [autoClose]=\"true\"\r\n tooltipClass=\"team-user-tooltip remove-on-scroll-class {{ action.tooltipClass }}\"\r\n [ngbTooltip]=\"userLoggedInDetails\">\r\n </i>\r\n <ng-container *ngIf=\"action['showSvgIcon']\">\r\n <anna-core-anna-est-icon-template\r\n class=\"float-right\" \r\n *ngIf=\"action['svgIconName'] == 'anna-icon'\"\r\n (mouseleave)=\"mouseLeaveTextActionType(ROW_DATA)\"\r\n (mouseenter)=\"mouseEnterOnStringTextActionType(ROW_DATA, columnDef.headerInfo[subLineIndex].tooltipKey)\"\r\n [placement]=\"action.tooltipPlacement ? action.tooltipPlacement : 'bottom auto'\"\r\n tooltipClass=\"team-user-tooltip remove-on-scroll-class {{ action['tooltipClass'] }}\"\r\n [ngbTooltip]=\"userLoggedInDetails\"\r\n container=\"body\" [autoClose]=\"true\">\r\n </anna-core-anna-est-icon-template>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!action.showTooltip\">\r\n <i *ngIf=\"action.showIcon\" [class]=\"action.iconClass\"\r\n [ngClass]=\"{'disabled': action.disabledIcon}\"\r\n (click)=\"iconClickedOnStringIconActionType(ROW_DATA, action.id, columnDef.headerInfo[subLineIndex])\">\r\n </i>\r\n </ng-container>\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'STRING_OR_INPUT'\">\r\n <ng-container *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]?.type == 'STRING';\r\n else inputBox\">\r\n <span\r\n [innerHtml]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]?.value\"></span>\r\n </ng-container>\r\n <ng-template #inputBox>\r\n <input\r\n placeholder=\"{{ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]?.placeholder}}\"\r\n showEllipsisTextOnHover\r\n class=\"{{ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].className}}\"\r\n (keydown)=\"changesMadeInEditableInputBox($event,ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey], false)\"\r\n (paste)=\"changesMadeInEditableInputBox($event, ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey], true)\"\r\n (ngModelChange)=\"editableInputValueChanged($event, ROW_DATA, columnDef.headerInfo[subLineIndex].objectKey)\"\r\n [ngModel]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].value\"\r\n [disabled]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].disabled\"\r\n [ngClass]=\"{'red-border': ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].hasError }\">\r\n\r\n <i *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].showIcon\"\r\n container=\"body\"\r\n [ngbTooltip]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].iconTooltip\"\r\n tooltipClass=\"gt-total-row-tooltip\" placement=\"bottom\"\r\n class=\"{{ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].iconClass}}\">\r\n </i>\r\n <ng-container *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]['showSvgIcon']\">\r\n <anna-core-anna-est-icon-template\r\n class=\"float-right\" \r\n *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]['svgIconName'] == 'anna-icon'\"\r\n [placement]=\"'bottom auto'\"\r\n tooltipClass=\"gt-total-row-tooltip\"\r\n [ngbTooltip]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey].iconTooltip\"\r\n container=\"body\">\r\n </anna-core-anna-est-icon-template>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'HTML'\">\r\n <span\r\n [innerHtml]=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"></span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'SINGLE_RADIO'\">\r\n <span *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n [ngClass]=\"{\r\n 'disable-checkbox': ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\r\n }\"\r\n class=\"mdi mdi-radiobox-marked\" (click)=\"\r\n null\r\n \">\r\n\r\n </span>\r\n <span *ngIf=\"!ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n class=\"mdi mdi-radiobox-blank\" [ngClass]=\"{\r\n 'disable-checkbox': ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\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 *ngIf=\"ROW_DATA['RadioButtonConfig']\"\r\n [ngModel]=\"ROW_DATA[subline.objectKey]\"\r\n [disabled]=\"ROW_DATA['RadioButtonConfig'][0].isDisabled\">\r\n <ng-container\r\n *ngFor=\"let radioButton of ROW_DATA['RadioButtonConfig']; let last = last\">\r\n <mat-radio-button value=\"{{ radioButton.value }}\"\r\n class=\"{{ radioButton.class }}\" (click)=\"\r\n radioButtonClicked(\r\n ROW_DATA,\r\n radioButton.value,\r\n ROW_DATA['RadioButtonConfig'][0].isDisabled\r\n )\r\n \">{{ radioButton.label }}\r\n </mat-radio-button>\r\n <i class=\" {{radioButton.iconClass}}\"\r\n (click)=\"radioButtonIconClicked(ROW_DATA)\"></i>\r\n <br *ngIf=\"!last\" />\r\n </ng-container>\r\n </mat-radio-group>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'STRING_WITH_TOOLTIP'\">\r\n <ng-container\r\n *ngFor=\"let action of ROW_DATA[columnDef.headerInfo[subLineIndex].actionKey]\">\r\n <span> {{ action?.dataToDisplay }}</span>\r\n <span *ngIf=\"action?.showTooltip\"\r\n [ngbTooltip]=\"textActionTooltipTemplate\"\r\n (mouseenter)=\"mouseEnterOnStringTextActionType(ROW_DATA, columnDef.headerInfo[subLineIndex].tooltipKey)\"\r\n [placement]=\"action?.tooltipPosition\" container=\"body\"\r\n [class]=\"action?.tooltipIconClass\"\r\n tooltipClass=\"gt-icon-column-tooltip remove-on-scroll-class\"\r\n [disableTooltip]=\"action?.disableTooltip\">\r\n </span>\r\n <span> {{ action?.dataToDisplayAfterTooltip }}</span>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"subline.objectKey != 'description'\">\r\n <span>{{ ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\r\n }}</span>\r\n <i *ngIf=\"subline.objectKey == 'inventoryCode' && ROW_DATA['isSellerGroup'] && gtGeneralConfig.component == 'RATING' \"\r\n class=\"mi mdi-info-outline seller-tooltip\"\r\n [ngbTooltip]=\"sellerHierarchyTooltip\" placement=\"bottom auto\"\r\n container=\"body\" [autoClose]=\"true\" triggers=\"manual\"\r\n (hidden)=\"closeTooltip()\" #info=\"ngbTooltip\"\r\n tooltipClass=\"hierarchy-tooltip remove-on-scroll-class\"\r\n (mouseenter)=\"bindTheValueToSellerGroupTooltip(ROW_DATA.sellerGroupHierarchy, info)\">\r\n </i>\r\n\r\n <i *ngIf=\"subline.objectKey == 'displayBookedAverageRating' && gtGeneralConfig.component == 'RATING' && ROW_DATA['showRatingAverageIcon'] \"\r\n class=\"mi mdi-info-outline seller-tooltip\"\r\n placement=\"bottom auto\" container=\"body\" [autoClose]=\"true\"\r\n (mouseenter)=\"setIsDifference(ROW_DATA.isDifferenceLessThan25Percent)\"\r\n tooltipClass=\"posted-avg-tooltip remove-on-scroll-class\"\r\n [ngbTooltip]=\"postedRatingDifference\">\r\n </i>\r\n\r\n <i *ngIf=\"subline.objectKey == 'displayBookedAverageImpression' && gtGeneralConfig.component == 'RATING' && ROW_DATA['showImpressionAverageIcon'] \"\r\n class=\"mi mdi-info-outline seller-tooltip\"\r\n placement=\"bottom auto\" container=\"body\" [autoClose]=\"true\"\r\n (mouseenter)=\"setIsDifference(ROW_DATA.isDifferenceLessThan25Percent)\"\r\n tooltipClass=\"posted-avg-tooltip remove-on-scroll-class\"\r\n [ngbTooltip]=\"postedImpDifference\">\r\n </i>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"subline.objectKey == 'description'\">\r\n <p\r\n *ngIf=\"ROW_DATA.descriptionMessage || ROW_DATA.descriptionEmailReferenceNum\">\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=\"ROW_DATA.descriptionEmailReferenceNum != '-' && ROW_DATA.descriptionEmailReferenceNum != ''\">\r\n Email Ref: {{ ROW_DATA.descriptionEmailReferenceNum }}\r\n <br />\r\n </ng-container>\r\n </p>\r\n <a href=\"{{ ROW_DATA.descriptionDetailsUrl }}\" target=\"_blank\"\r\n *ngIf=\"ROW_DATA.descriptionDetailsUrlType === 'PDF' || ROW_DATA.descriptionDetailsUrlType === 'EXCEL'\">\r\n <button class=\"btn viewDetailsAndEmailBtn\">Download</button>\r\n </a>\r\n <ng-container\r\n *ngIf=\"ROW_DATA.activityname.toLowerCase() == 'order onboarded'\">\r\n <a *ngIf=\"ROW_DATA.descriptionDetailsUrlType === 'LINK'\"\r\n (click)=\"viewDetailsClicked(ROW_DATA)\">\r\n <button\r\n class=\"btn viewDetailsAndEmailBtn order-onboarded\">View\r\n details</button>\r\n </a>\r\n </ng-container>\r\n\r\n <a href=\"{{ ROW_DATA.descriptionEmailUrl }}\" target=\"_blank\"\r\n *ngIf=\"ROW_DATA.descriptionEmailUrl != '-' && ROW_DATA.descriptionEmailUrl != ''\">\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\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 [width]=\"noDataWidth\" [marginTop]=\"marginTop\" *ngIf=\"(isNoDataToDisplaySubject$ | async)\">\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 [tableData]=\"tableData\" [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\r\n [isLurAndCsrComponent]=\"false\" [clonedTableData]=\"clonedTableData\" [filterTabObjects]=\"filterTabObjects\"\r\n (filterAppliedToTable)=\"filterApplied($event)\" (sortingAppliedToTable)=\"sortingApplied($event)\"\r\n (closeTooltip)=\"closeTooltip()\">\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 [tableData]=\"tableData\" [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\r\n [isLurAndCsrComponent]=\"false\" [clonedTableData]=\"clonedTableData\" [filterTabObjects]=\"filterTabObjects\"\r\n (filterAppliedToTable)=\"filterApplied($event)\" (sortingAppliedToTable)=\"sortingApplied($event)\"\r\n (closeTooltip)=\"closeTooltip()\">\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 [tableData]=\"tableData\" [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\r\n [isLurAndCsrComponent]=\"false\" [clonedTableData]=\"clonedTableData\" [filterTabObjects]=\"filterTabObjects\"\r\n (filterAppliedToTable)=\"filterApplied($event)\" (sortingAppliedToTable)=\"sortingApplied($event)\"\r\n (closeTooltip)=\"closeTooltip()\">\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 [tableData]=\"tableData\" [showFilterHeaderTabs]=\"showFilterTooltipTabs\"\r\n [isLurAndCsrComponent]=\"false\" [showAllTimeRangeCheckboxes]=\"showCheckboxesForTimeFilter\"\r\n [clonedTableData]=\"clonedTableData\" [filterTabObjects]=\"filterTabObjects\"\r\n (filterAppliedToTable)=\"filterApplied($event)\" (sortingAppliedToTable)=\"sortingApplied($event)\"\r\n (closeTooltip)=\"closeTooltip()\">\r\n </anna-core-anna-column-time-filter>\r\n</ng-template>\r\n\r\n<ng-template #columnInfoTooltip>\r\n <p style=\"color: black;white-space: nowrap;\">This preemption is rejected and not marked for credit.</p>\r\n</ng-template>\r\n\r\n<ng-template #ratingInfoTooltip>\r\n <p class=\"first-row\">Shows 'Booked Rating' for Preemptions & MakeGood Offered spot(s).</p>\r\n <p class=\"second-row\">Shows 'Projected Rating' for ADU Offered spot(s).</p>\r\n</ng-template>\r\n\r\n<ng-template #impsInfoTooltip>\r\n <p class=\"first-row\">Shows 'Booked IMPS' for Preemptions & MakeGood Offered spot(s).</p>\r\n <p class=\"second-row\">Shows 'Projected IMPS' for ADU Offered spot(s).</p>\r\n</ng-template>\r\n\r\n<ng-template #spotsColumnEquivalizationMessageTooltip>\r\n <p class=\"spot-column-tooltip-message\">This consists of equivalized spots and un-equivalized Paid Programs &\r\n un-equivalized Non-spots.</p>\r\n</ng-template>\r\n\r\n<ng-template #underDeliveryTooltip>\r\n <p class=\"spot-column-tooltip-message\">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\">Indicates the Over-delivery percentage based on booked and posted RTG/IMPS.\r\n </p>\r\n</ng-template>\r\n\r\n<ng-template #rateInfoTooltip>\r\n <p class=\"first-row\">Shows 'Booked Rate' for Preemptions & MakeGood Offered spot(s).</p>\r\n <p class=\"second-row\">Shows 'Projected $ Value' for ADU Offered spot(s).</p>\r\n</ng-template>\r\n\r\n<ng-template #sellerHierarchyTooltip>\r\n <ng-container *ngIf=\"sellerGroupHierarchy.length > 0\">\r\n <section class=\"hierarchy-table-container\">\r\n <table class=\"seller-hierarchy-table\">\r\n <thead>\r\n <tr>\r\n <th>#</th>\r\n <th>Inventory Codes</th>\r\n <th>Program/Description</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of sellerGroupHierarchy; let tooltipIndex = index\">\r\n <td>{{ tooltipIndex + 1 }}</td>\r\n <td>\r\n <span showEllipsisTextOnHover>{{ data.InventoryCode }}</span>\r\n </td>\r\n <td>\r\n <span showEllipsisTextOnHover>{{ data.Program }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </section>\r\n </ng-container>\r\n <ng-container *ngIf=\"sellerGroupHierarchy.length == 0\">\r\n <span style=\"color: #000\">Seller group not available for this inventory code</span>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #lurViolationInfoTooltip>\r\n <p class=\"first-row\">The values are for the entire week.</p>\r\n</ng-template>\r\n\r\n<ng-template #postedRatingDifference>\r\n <p class=\"difference-text\">The difference between posted and booked average rating is\r\n {{isDifferenceLessThan25Percent ? 'less' : 'more'}} than 25%.</p>\r\n</ng-template>\r\n\r\n<ng-template #postedImpDifference>\r\n <p class=\"difference-text\">The difference between posted and booked average impression is\r\n {{isDifferenceLessThan25Percent ? 'less' : 'more'}} than 25%.</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>All projections are derived from the sum of actual posted information until the last posted date and estimates for the remaining selected period.</p>\r\n</ng-template>\r\n\r\n<ng-template #automationTooltip>\r\n <p>Please get the order business rules approved to activate the order for automation. Only for the\r\n automation-activated orders, any approved MGs, ADUs, or credited spots on ANNA will be fed into the traffic\r\n system i.e. ANNA revisions. \r\n <!-- removed below line as part of enhancmennt in 14.0 releas -->\r\n <!-- Additionally, ANNA will only enter buyer revisions into traffic for the selected\r\n Medialine/WOC orders. -->\r\n </p>\r\n</ng-template>\r\n\r\n<ng-template #rebateImpact>\r\n <p>\r\n Rebate impact value is for the originally ordered spot length and is not equivalized.\r\n </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\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\r\n</ng-template>\r\n\r\n<ng-template #circularProgressBar>\r\n <circle-progress [percent]=\"percentDone\" [radius]=\"5\" [showTitle]=\"false\" [showUnits]=\"false\" [showSubtitle]=\"false\"\r\n [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"'#268bff'\"\r\n [innerStrokeColor]=\"'#d5d5d5'\" [animationDuration]=\"10\"></circle-progress>\r\n</ng-template>\r\n\r\n\r\n<ng-template #userLoggedInDetails>\r\n <div class=\"tooltip-div-container\">\r\n <ng-container *ngFor=\"let data of textActionTooltip\">\r\n <span *ngIf=\"data.key != 'read'\">\r\n {{ data.key }} <b> {{data.value}}</b>\r\n </span>\r\n <span *ngIf=\"data.key == 'read'\">\r\n {{data.value}}\r\n </span>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #markAsReadTip>\r\n <div class=\"notification-tooltip-div-container\">\r\n <ng-container *ngFor=\"let data of textActionTooltip\">\r\n {{data.value}}\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #textActionTooltipTemplate>\r\n <ng-container *ngFor=\"let data of textActionTooltip\">\r\n {{ data.key }} <b> {{data.value}}</b>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #tooltipContainingTableTemplate>\r\n <div *ngIf=\"tooltipContainingTable\" [innerHTML]=\"tooltipContainingTable.innerHtml\" class=\"notification-tooltip-div-container\">\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\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> -->","// Angular import statements\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\n\r\n// Third party import statements\r\nimport { Subject } from \"rxjs\";\r\nimport { cloneDeep } from \"lodash-es\";\r\n\r\n//sub-entries of anna lib import statement\r\nimport { AnnaFilterService } from \"./anna-filter.service\";\r\nimport { AnnaSortService } from \"./anna-sort.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaGtHelperService {\r\n\r\n virtualScrollSubject = new Subject();\r\n constructor(\r\n private annaFilterService: AnnaFilterService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private annaSortService: AnnaSortService) {\r\n }\r\n\r\n calculateNumberOfSkeletonColumnsForTable(tableHeaders: any[]): number[][] {\r\n let numberOfSkeletonColumns: any[][] = [];\r\n var headersInEachColumn = 0;\r\n tableHeaders.forEach((column) => {\r\n if (column.visible) {\r\n headersInEachColumn = 0;\r\n column.headerInfo.forEach(() => {\r\n headersInEachColumn++;\r\n })\r\n numberOfSkeletonColumns.push(Array(headersInEachColumn).fill(0));\r\n }\r\n })\r\n return numberOfSkeletonColumns;\r\n }\r\n\r\n initColumnFilterAndSorting() {\r\n this.annaFilterService.tooltipSelectedMap = new Map();\r\n this.annaFilterService.selectedRadio = null;\r\n this.annaFilterService.appliedFiltersArray = [];\r\n this.annaFilterService.initialValueMap = new Map();\r\n this.annaSortService.columnSortState = new Map();\r\n this.annaSortService.noSortingAppliedData = [];\r\n }\r\n\r\n\r\n enableOrDisableClearAllBtn(): boolean {\r\n let isFilterApplied = this.annaFilterService.appliedFiltersArray.length > 0;\r\n let isSortApplied = this.isSortingAppliedToTable();\r\n\r\n return isFilterApplied || isSortApplied ? false : true;\r\n }\r\n\r\n updateFiltersInURL() {\r\n let latestQueryParams = this.prepareQueryParamsOnFilter();\r\n\r\n if(Object.keys(latestQueryParams).length > 0){\r\n this.router.navigate([],{\r\n queryParams: { filters: JSON.stringify(latestQueryParams) },\r\n relativeTo: this.route.parent,\r\n queryParamsHandling: 'merge'\r\n });\r\n }\r\n else{\r\n this.router.navigate([],{\r\n relativeTo: this.route.parent,\r\n });\r\n }\r\n\r\n }\r\n\r\n prepareQueryParamsOnFilter() {\r\n\r\n let query:any = {};\r\n\r\n if(this.annaFilterService.appliedFiltersArray.length > 0){\r\n query[\"appliedFilters\"] = this.annaFilterService.appliedFiltersArray;\r\n query[\"selectedFilterData\"] = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\r\n }\r\n\r\n if(this.checkIfSortingIsApplied()){\r\n query[\"sortState\"] = JSON.stringify(Array.from(this.annaSortService.columnSortState));\r\n }\r\n\r\n return query;\r\n }\r\n\r\n checkIfSortingIsApplied(){\r\n let isSortingApplied = false;\r\n for(let val of this.annaSortService.columnSortState.values()){\r\n if(val == \"ASC\" || val == \"DESC\"){\r\n isSortingApplied = true;\r\n }\r\n }\r\n\r\n return isSortingApplied;\r\n }\r\n\r\n initTableFilters(clonedTableData: any) {\r\n this.annaFilterService.tooltipSelectedMap = new Map();\r\n this.annaFilterService.selectedRadio = null;\r\n this.annaFilterService.appliedFiltersArray = [];\r\n\r\n this.annaSortService.columnSortState = new Map();\r\n\r\n this.annaSortService.noSortingAppliedData = cloneDeep(clonedTableData);\r\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n }\r\n\r\n initFilters() {\r\n this.annaFilterService.tooltipSelectedMap = new Map();\r\n this.annaFilterService.appliedFiltersArray = [];\r\n }\r\n\r\n setDataAsPerPersistingFilter(isPersistingFilter: boolean, clonedTable: any, filters: any): any {\r\n let usersTable;\r\n if (isPersistingFilter) {\r\n usersTable = this.annaFilterService.filterData(clonedTable, \"\");\r\n this.annaSortService.noSortingAppliedData = cloneDeep(usersTable);\r\n }\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 {\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\r\n callSort(usersTable: any): any {\r\n for (let [key, value] of this.annaSortService.columnSortState) {\r\n if (value == \"ASC\") {\r\n usersTable = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(true, usersTable, key);\r\n }\r\n else if (value == \"DESC\") {\r\n usersTable = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(false, usersTable, key);\r\n }\r\n }\r\n return usersTable;\r\n }\r\n\r\n isSortingAppliedToTable() {\r\n let isSortingApplied = false;\r\n for (let val of this.annaSortService.columnSortState?.values()) {\r\n if (val == \"ASC\" || val == \"DESC\") {\r\n isSortingApplied = true;\r\n }\r\n }\r\n\r\n return isSortingApplied;\r\n }\r\n\r\n updateQueryParamsFilter(key: string, value: any, operation: \"ADD\" | \"DELETE\", queryParamObj: any) {\r\n if (operation == \"ADD\") {\r\n queryParamObj[key] = value;\r\n } else if (operation == \"DELETE\") {\r\n delete queryParamObj[key];\r\n }\r\n return queryParamObj;\r\n }\r\n\r\n\r\n\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n\r\n import { Directionality } from \"@angular/cdk/bidi\";\r\n import { ListRange } from \"@angular/cdk/collections\";\r\n import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Inject,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n } from \"@angular/core\";\r\n import {\r\n animationFrameScheduler,\r\n asapScheduler,\r\n Observable,\r\n Subject,\r\n Observer,\r\n Subscription\r\n } from \"rxjs\";\r\n import { auditTime, startWith, takeUntil } from \"rxjs/operators\";\r\n import {\r\n CdkVirtualScrollViewport,\r\n CdkScrollable,\r\n CdkVirtualScrollRepeater,\r\n VIRTUAL_SCROLL_STRATEGY,\r\n VirtualScrollStrategy,\r\n ScrollDispatcher,\r\n ViewportRuler,\r\n ExtendedScrollToOptions\r\n } from \"@angular/cdk/scrolling\";\r\nimport { AnnaGtHelperService } from '../../../anna-core-shared-lib/services/anna-generic-table.service';\r\n \r\n /** Checks if the given ranges are equal. */\r\n function rangesEqual(r1: ListRange, r2: ListRange): boolean {\r\n return r1.start == r2.start && r1.end == r2.end;\r\n }\r\n \r\n /**\r\n * Scheduler to be used for scroll events. Needs to fall back to\r\n * something that doesn't rely on requestAnimationFrame on environments\r\n * that don't support it (e.g. server-side rendering).\r\n */\r\n const SCROLL_SCHEDULER =\r\n typeof requestAnimationFrame !== \"undefined\"\r\n ? animationFrameScheduler\r\n : asapScheduler;\r\n \r\n /**\r\n * A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`.\r\n * Uses `top: #px` instead of `transform: translateY(#px)` like the cdk virtual scroll viewport does\r\n * which avoids flickering of elements in the transformed container with `position: sticky`.\r\n */\r\n @Component({\r\n selector: \"anna-table-virtual-scroll-viewport\",\r\n templateUrl: \"anna-table-virtual-scroll-viewport.component.html\",\r\n styleUrls: [\"anna-table-virtual-scroll-viewport.component.scss\"],\r\n host: {\r\n class: \"anna-table-virtual-scroll-viewport\",\r\n \"[class.anna-table-virtual-scroll-orientation-horizontal]\":\r\n 'orientation === \"horizontal\"',\r\n \"[class.anna-table-virtual-scroll-orientation-vertical]\":\r\n 'orientation !== \"horizontal\"'\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: CdkScrollable,\r\n useExisting: AnnaTableVirtualScrollViewportComponent\r\n },\r\n {\r\n provide: CdkVirtualScrollViewport,\r\n useExisting: AnnaTableVirtualScrollViewportComponent\r\n }\r\n ]\r\n })\r\n export class AnnaTableVirtualScrollViewportComponent extends CdkScrollable\r\n implements OnInit, OnDestroy {\r\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\r\n private _detachedSubject = new Subject<void>();\r\n \r\n /** Emits when the rendered range changes. */\r\n private _renderedRangeSubject = new Subject<ListRange>();\r\n \r\n /** The direction the viewport scrolls. */\r\n @Input()\r\n get orientation() {\r\n return this._orientation;\r\n }\r\n set orientation(orientation: \"horizontal\" | \"vertical\") {\r\n if (this._orientation !== orientation) {\r\n this._orientation = orientation;\r\n this._calculateSpacerSize();\r\n }\r\n }\r\n private _orientation: \"horizontal\" | \"vertical\" = \"vertical\";\r\n \r\n // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\r\n // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\r\n // depending on how the strategy calculates the scrolled index, it may come at a cost to\r\n // performance.\r\n /** Emits when the index of the first element visible in the viewport changes. */\r\n @Output() scrolledIndexChange: Observable<number> = new Observable(\r\n (observer: Observer<number>) =>\r\n this._scrollStrategy.scrolledIndexChange.subscribe(index =>\r\n Promise.resolve().then(() =>\r\n this.ngZone.run(() => observer.next(index))\r\n )\r\n )\r\n );\r\n \r\n /** The element that wraps the rendered content. */\r\n @ViewChild(\"contentWrapper\", { static: true }) _contentWrapper: ElementRef<\r\n HTMLElement\r\n >;\r\n \r\n /** A stream that emits whenever the rendered range changes. */\r\n renderedRangeStream: Observable<ListRange> = this._renderedRangeSubject;\r\n \r\n /**\r\n * The total size of all content (in pixels), including content that is not currently rendered.\r\n */\r\n private _totalContentSize = 0;\r\n \r\n /** A string representing the `style.width` property value to be used for the spacer element. */\r\n _totalContentWidth = \"\";\r\n \r\n /** A string representing the `style.height` property value to be used for the spacer element. */\r\n _totalContentHeight = \"\";\r\n \r\n /**\r\n * The CSS transform applied to the rendered subset of items so that they appear within the bounds\r\n * of the visible viewport.\r\n */\r\n private _renderedContentTransform: string;\r\n \r\n /** The currently rendered range of indices. */\r\n private _renderedRange: ListRange = { start: 0, end: 0 };\r\n \r\n /** The length of the data bound to this viewport (in number of items). */\r\n private _dataLength = 0;\r\n \r\n /** The size of the viewport (in pixels). */\r\n private _viewportSize = 0;\r\n \r\n /** the currently attached CdkVirtualScrollRepeater. */\r\n private _forOf: CdkVirtualScrollRepeater<any> | null;\r\n \r\n /** The last rendered content offset that was set. */\r\n private _renderedContentOffset = 0;\r\n \r\n /**\r\n * Whether the last rendered content offset was to the end of the content (and therefore needs to\r\n * be rewritten as an offset to the start of the content).\r\n */\r\n private _renderedContentOffsetNeedsRewrite = false;\r\n \r\n /** Whether there is a pending change detection cycle. */\r\n private _isChangeDetectionPending = false;\r\n \r\n /** A list of functions to run after the next change detection cycle. */\r\n private _runAfterChangeDetection: Function[] = [];\r\n \r\n /** Subscription to changes in the viewport size. */\r\n private _viewportChanges = Subscription.EMPTY;\r\n \r\n constructor(\r\n public override elementRef: ElementRef<HTMLElement>,\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n ngZone: NgZone,\r\n @Optional()\r\n @Inject(VIRTUAL_SCROLL_STRATEGY)\r\n private _scrollStrategy: VirtualScrollStrategy,\r\n @Optional() dir: Directionality,\r\n scrollDispatcher: ScrollDispatcher,\r\n viewportRuler: ViewportRuler,\r\n private annaGtService: AnnaGtHelperService\r\n ) {\r\n super(elementRef, scrollDispatcher, ngZone, dir);\r\n \r\n if (!_scrollStrategy) {\r\n throw Error(\r\n 'Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.'\r\n );\r\n }\r\n \r\n this._viewportChanges = viewportRuler.change().subscribe(() => {\r\n this.checkViewportSize();\r\n });\r\n }\r\n \r\n override ngOnInit() {\r\n super.ngOnInit();\r\n \r\n // It's still too early to measure the viewport at this point. Deferring with a promise allows\r\n // the Viewport to be rendered with the correct size before we measure. We run this outside the\r\n // zone to avoid causing more change detection cycles. We handle the change detection loop\r\n // ourselves instead.\r\n this.ngZone.runOutsideAngular(() =>\r\n Promise.resolve().then(() => {\r\n this._measureViewportSize();\r\n this._scrollStrategy.attach(this as any);\r\n \r\n this.elementScrolled()\r\n .pipe(\r\n // Start off with a fake scroll event so we properly detect our initial position.\r\n startWith(null),\r\n // Collect multiple events into one until the next animation frame. This way if\r\n // there are multiple scroll events in the same frame we only need to recheck\r\n // our layout once.\r\n auditTime(0, SCROLL_SCHEDULER)\r\n )\r\n .subscribe(() => { this._scrollStrategy.onContentScrolled(); this.annaGtService.virtualScrollSubject.next(true);});\r\n \r\n this._markChangeDetectionNeeded();\r\n })\r\n );\r\n }\r\n \r\n override ngOnDestroy() {\r\n this.detach();\r\n this._scrollStrategy.detach();\r\n \r\n // Complete all subjects\r\n this._renderedRangeSubject.complete();\r\n this._detachedSubject.complete();\r\n this._viewportChanges.unsubscribe();\r\n \r\n super.ngOnDestroy();\r\n }\r\n \r\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\r\n attach(forOf: CdkVirtualScrollRepeater<any>) {\r\n if (this._forOf) {\r\n throw Error(\"CdkVirtualScrollViewport is already attached.\");\r\n }\r\n \r\n // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\r\n // changes. Run outside the zone to avoid triggering change detection, since we're managing the\r\n // change detection loop ourselves.\r\n this.ngZone.runOutsideAngular(() => {\r\n this._forOf = forOf;\r\n this._forOf.dataStream\r\n .pipe(takeUntil(this._detachedSubject))\r\n .subscribe(data => {\r\n const newLength = data.length;\r\n if (newLength !== this._dataLength) {\r\n this._dataLength = newLength;\r\n this._scrollStrategy.onDataLengthChanged();\r\n }\r\n this._doChangeDetection();\r\n });\r\n });\r\n }\r\n \r\n /** Detaches the current `CdkVirtualForOf`. */\r\n detach() {\r\n this._forOf = null;\r\n this._detachedSubject.next();\r\n }\r\n \r\n /** Gets the length of the data bound to this viewport (in number of items). */\r\n getDataLength(): number {\r\n return this._dataLength;\r\n }\r\n \r\n /** Gets the size of the viewport (in pixels). */\r\n getViewportSize(): number {\r\n return this._viewportSize;\r\n }\r\n \r\n // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\r\n // cycle happens. I'm being careful to only call it after the render cycle is complete and before\r\n // setting it to something else, but its error prone and should probably be split into\r\n // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\r\n \r\n /** Get the current rendered range of items. */\r\n getRenderedRange(): ListRange {\r\n return this._renderedRange;\r\n }\r\n \r\n /**\r\n * Sets the total size of all content (in pixels), including content that is not currently\r\n * rendered.\r\n */\r\n setTotalContentSize(size: number) {\r\n if (this._totalContentSize !== size) {\r\n this._totalContentSize = size;\r\n this._calculateSpacerSize();\r\n this._markChangeDetectionNeeded();\r\n }\r\n }\r\n \r\n /** Sets the currently rendered range of indices. */\r\n setRenderedRange(range: ListRange) {\r\n if (!rangesEqual(this._renderedRange, range)) {\r\n this._renderedRangeSubject.next((this._renderedRange = range));\r\n this._markChangeDetectionNeeded(() =>\r\n this._scrollStrategy.onContentRendered()\r\n );\r\n }\r\n }\r\n \r\n /**\r\n * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\r\n */\r\n getOffsetToRenderedContentStart(): number | null {\r\n return this._renderedContentOffsetNeedsRewrite\r\n ? null\r\n : this._renderedContentOffset;\r\n }\r\n \r\n /**\r\n * Sets the offset from the start of the viewport to either the start or end of the rendered data\r\n * (in pixels).\r\n */\r\n setRenderedContentOffset(offset: number) {\r\n let top = `${Number(offset)}px`;\r\n this._renderedContentOffset = offset;\r\n if (this._renderedContentTransform != top) {\r\n // We know this value is safe because we parse `offset` with `Number()` before passing it\r\n // into the string.\r\n this._renderedContentTransform = top;\r\n this._markChangeDetectionNeeded(() => {\r\n if (this._renderedContentOffsetNeedsRewrite) {\r\n this._renderedContentOffset -= this.measureRenderedContentSize();\r\n this._renderedContentOffsetNeedsRewrite = false;\r\n this.setRenderedContentOffset(this._renderedContentOffset);\r\n } else {\r\n this._scrollStrategy.onRenderedOffsetChanged();\r\n }\r\n });\r\n }\r\n }\r\n \r\n /**\r\n * Scrolls to the given offset from the start of the viewport. Please note that this is not always\r\n * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\r\n * direction, this would be the equivalent of setting a fictional `scrollRight` property.\r\n * @param offset The offset to scroll to.\r\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\r\n */\r\n scrollToOffset(offset: number, behavior: ScrollBehavior = \"auto\") {\r\n const options: ExtendedScrollToOptions = { behavior, top: offset };\r\n this.scrollTo(options);\r\n }\r\n \r\n /**\r\n * Scrolls to the offset for the given index.\r\n * @param index The index of the element to scroll to.\r\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\r\n */\r\n scrollToIndex(index: number, behavior: ScrollBehavior = \"auto\") {\r\n this._scrollStrategy.scrollToIndex(index, behavior);\r\n }\r\n \r\n /**\r\n * Gets the current scroll offset from the start of the viewport (in pixels).\r\n * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\r\n * in horizontal mode.\r\n */\r\n // CHANGES@ANNALIB added override to functions\r\n override measureScrollOffset(\r\n from?: \"top\" | \"left\" | \"right\" | \"bottom\" | \"start\" | \"end\"\r\n ): number {\r\n return from\r\n ? super.measureScrollOffset(from)\r\n : super.measureScrollOffset(\"top\");\r\n }\r\n \r\n /** Measure the combined size of all of the rendered items. */\r\n measureRenderedContentSize(): number {\r\n const contentEl = this._contentWrapper.nativeElement;\r\n return contentEl.offsetHeight;\r\n }\r\n \r\n /**\r\n * Measure the total combined size of the given range. Throws if the range includes items that are\r\n * not rendered.\r\n */\r\n measureRangeSize(range: ListRange): number {\r\n if (!this._forOf) {\r\n return 0;\r\n }\r\n return this._forOf.measureRangeSize(range, this.orientation);\r\n }\r\n \r\n /** Update the viewport dimensions and re-render. */\r\n checkViewportSize() {\r\n // TODO: Cleanup later when add logic for handling content resize\r\n this._measureViewportSize();\r\n this._scrollStrategy.onDataLengthChanged();\r\n }\r\n \r\n /** Measure the viewport size. */\r\n private _measureViewportSize() {\r\n const viewportEl = this.elementRef.nativeElement;\r\n this._viewportSize = viewportEl.clientHeight;\r\n }\r\n \r\n /** Queue up change detection to run. */\r\n private _markChangeDetectionNeeded(runAfter?: Function) {\r\n if (runAfter) {\r\n this._runAfterChangeDetection.push(runAfter);\r\n }\r\n \r\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\r\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\r\n if (!this._isChangeDetectionPending) {\r\n this._isChangeDetectionPending = true;\r\n this.ngZone.runOutsideAngular(() =>\r\n Promise.resolve().then(() => {\r\n this._doChangeDetection();\r\n })\r\n );\r\n }\r\n }\r\n \r\n /** Run change detection. */\r\n private _doChangeDetection() {\r\n this._isChangeDetectionPending = false;\r\n \r\n // Apply the content transform. The transform can't be set via an Angular binding because\r\n // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\r\n // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\r\n // the `Number` function first to coerce it to a numeric value.\r\n this._contentWrapper.nativeElement.style.top = this._renderedContentTransform;\r\n // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\r\n // from the root, since the repeated items are content projected in. Calling `detectChanges`\r\n // instead does not properly check the projected content.\r\n this.ngZone.run(() => this._changeDetectorRef.markForCheck());\r\n \r\n const runAfterChangeDetection = this._runAfterChangeDetection;\r\n this._runAfterChangeDetection = [];\r\n for (const fn of runAfterChangeDetection) {\r\n fn();\r\n }\r\n }\r\n \r\n /** Calculates the `style.width` and `style.height` for the spacer element. */\r\n private _calculateSpacerSize() {\r\n this._totalContentHeight = `${this._totalContentSize}px`;\r\n this._totalContentWidth = \"\";\r\n }\r\n }\r\n ","<!--\r\n Wrap the rendered content in an element that will be used to offset it based on the scroll\r\n position.\r\n-->\r\n<div #contentWrapper class=\"anna-table-virtual-scroll-content-wrapper\">\r\n\t<ng-content></ng-content>\r\n</div>\r\n<!--\r\n Spacer used to force the scrolling container to the correct size for the *total* number of items\r\n so that the scrollbar captures the size of the entire data set.\r\n-->\r\n<div class=\"app-table-virtual-scroll-spacer\" [style.width]=\"_totalContentWidth\" [style.height]=\"_totalContentHeight\">\r\n</div>","import { coerceNumberProperty, NumberInput } from \"@angular/cdk/coercion\";\r\nimport {\r\n CdkVirtualScrollViewport,\r\n VirtualScrollStrategy,\r\n VIRTUAL_SCROLL_STRATEGY\r\n} from \"@angular/cdk/scrolling\";\r\nimport { AfterContentInit, ContentChildren, Directive, forwardRef, Input, QueryList, SimpleChanges } from \"@angular/core\";\r\nimport { MatHeaderRowDef } from \"@angular/material/table\";\r\nimport { Subject } from \"rxjs\";\r\nimport { distinctUntilChanged } from \"rxjs/operators\";\r\nimport { AnnaFilterService } from '../../../anna-core-shared-lib/services/anna-filter.service';\r\n\r\n\r\n/**\r\n * A custom scroll strategy that accepts a static row height, static header height,\r\n * and a buffer size. The strategy \r\n */\r\nexport class AnnaFixedRowSizeTableVirtualScrollStrategy\r\n implements VirtualScrollStrategy {\r\n \r\n viewport: CdkVirtualScrollViewport | null;\r\n\r\n private buffer: number;\r\n\r\n private headerHeight: number;\r\n\r\n private rowHeight: number;\r\n\r\n constructor(rowHeight: number, buffer: number, headerHeight: number) {\r\n this.updateRowHeightAndBuffer(rowHeight, buffer, headerHeight);\r\n }\r\n\r\n private _scrolledIndexChange = new Subject<number>();\r\n\r\n scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\r\n\r\n /**\r\n * Attaches this scroll strategy to a viewport.\r\n * @param viewport The viewport to attach this strategy to.\r\n */\r\n attach(viewport: CdkVirtualScrollViewport): void {\r\n this.viewport = viewport;\r\n this.updateTotalContentSize();\r\n this.updateRenderedRange();\r\n }\r\n\r\n /**\r\n * Detaches this scroll strategy from the currently attached viewport.\r\n */\r\n detach(): void {\r\n this._scrolledIndexChange.complete();\r\n this.viewport = null;\r\n }\r\n\r\n onContentScrolled(): void {\r\n this.updateRenderedRange();\r\n }\r\n\r\n onDataLengthChanged(): void {\r\n this.updateTotalContentSize();\r\n this.updateRenderedRange();\r\n }\r\n\r\n onContentRendered(): void {\r\n // This method is useful for virtual scroll strategies that measure the rendered\r\n // content to determine its height. This scroll strategy assumes that rows have\r\n // a static height, so there's no need to implement this method.\r\n }\r\n\r\n onRenderedOffsetChanged(): void {\r\n // Similar to onContentRendered, this method is useful for virtual scroll strategies\r\n // that need to track the offset as it changes. This scroll strategy is always able\r\n // to calculate the correct offset from other values, so there's no need to implement\r\n // this method.\r\n }\r\n\r\n scrollToIndex(index: number, behavior: ScrollBehavior): void {\r\n this.viewport?.scrollToOffset(index * this.rowHeight, behavior);\r\n }\r\n\r\n /**\r\n * Update the item size and buffer size.\r\n * @param rowHeight The height of a row in the virtually scrolling table.\r\n * @param buffer The number of rows to buffer outside the viewport.\r\n * @param headerHeight The total height of the table header, including all header rows.\r\n */\r\n updateRowHeightAndBuffer(rowHeight: number, buffer: number, headerHeight: number) {\r\n this.rowHeight = rowHeight;\r\n this.buffer = buffer;\r\n this.headerHeight = headerHeight;\r\n this.updateTotalContentSize();\r\n this.updateRenderedRange();\r\n }\r\n\r\n protected updateRenderedRange() {\r\n if (!this.viewport) {\r\n return;\r\n }\r\n\r\n const viewportSize = this.viewport.getViewportSize();\r\n const dataLength = this.viewport.getDataLength();\r\n const scrollOffset = this.viewport.measureScrollOffset();\r\n\r\n // the index of the first item that would be at least partially visible in the viewport\r\n let firstVisibleIndex = Math.floor((scrollOffset + this.headerHeight) / this.rowHeight);\r\n \r\n // if the buffer size is 10 but the first visible item is at, say, index 7\r\n // then the buffered items must be 7, because we don't have 10 items available to buffer.\r\n const bufferedItems = Math.min(AnnaFilterService.bufferSize, firstVisibleIndex);\r\n\r\n const itemsInViewport = Math.ceil(viewportSize / this.rowHeight);\r\n const itemsToRender = itemsInViewport + this.buffer;\r\n\r\n // Clamp the new range between 0 and dataLength\r\n const newStart = Math.max(0, firstVisibleIndex - bufferedItems);\r\n const newEnd = Math.min(dataLength, firstVisibleIndex + itemsToRender);\r\n\r\n const newRange = {\r\n start: newStart,\r\n end: newEnd\r\n };\r\n\r\n const newOffset = this.rowHeight * (firstVisibleIndex - bufferedItems);\r\n this.viewport.setRenderedContentOffset(newOffset);\r\n this.viewport.setRenderedRange(newRange);\r\n this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\r\n }\r\n\r\n protected updateTotalContentSize() {\r\n this.viewport?.setTotalContentSize(this.viewport.getDataLength() * this.rowHeight);\r\n }\r\n}\r\n\r\n/**\r\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\r\n * `FixedSizeVirtualScrollStrategy` from the given directive.\r\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\r\n * `FixedSizeVirtualScrollStrategy` from.\r\n */\r\nexport function fixedSizeVirtualScrollStrategyFactory(\r\n fixedSizeDir: AnnaFixedRowSizeTableVirtualScrollStrategyDirective\r\n) {\r\n return fixedSizeDir.scrollStrategy;\r\n}\r\n\r\n@Directive({\r\n selector: \"cdk-virtual-scroll-viewport[rowHeight], anna-table-virtual-scroll-viewport[rowHeight]\",\r\n providers: [\r\n {\r\n provide: VIRTUAL_SCROLL_STRATEGY,\r\n useFactory: fixedSizeVirtualScrollStrategyFactory,\r\n deps: [forwardRef(() => AnnaFixedRowSizeTableVirtualScrollStrategyDirective)]\r\n }\r\n ]\r\n})\r\nexport class AnnaFixedRowSizeTableVirtualScrollStrategyDirective implements AfterContentInit {\r\n /** The height of rows in the table (in pixels). Defaults to 30. */\r\n @Input()\r\n set rowHeight(value: number) { this._rowHeight = coerceNumberProperty(value); }\r\n get rowHeight(): number { return this._rowHeight; }\r\n private _rowHeight = 30;\r\n\r\n /**\r\n * The height of header rows in the table (in pixels). Defaults to 30.\r\n */\r\n @Input()\r\n set headerRowHeight(value: number) { this._headerRowHeight = coerceNumberProperty(value); }\r\n get headerRowHeight(): number { return this._headerRowHeight; }\r\n private _headerRowHeight: number = 30;\r\n\r\n /**\r\n * The number of buffered rows rendered beyond the viewport.\r\n * If the number of buffered rows dips below this number, more rows will be rendered. Defaults to 20.\r\n */\r\n @Input()\r\n set buffer(value: number) { \r\n this._buffer = coerceNumberProperty(value);}\r\n get buffer(): number { return this._buffer; }\r\n private _buffer = 20;\r\n\r\n @Input()\r\n set headerRows(value: number | null | undefined) { this._headerRows = coerceNumberProperty(value, undefined); }\r\n get headerRows(): number | null | undefined { return this._headerRows; }\r\n private _headerRows: number | null | undefined = null;\r\n\r\n /**\r\n * Using ContentChildren here fails to pick up row defs that are added programmatically,\r\n * but we don't really have a way of handling that without accessing private methods of \r\n * the CdkTable. Adding header row defs programmatically is uncommon, so ContentChildren\r\n * is usually sufficient. The explicit `headerRows` input above allows the number of rows\r\n * to be set by the developer to override the QueryList-driven behavior.\r\n */\r\n @ContentChildren(MatHeaderRowDef) headerRowsQuery: QueryList<MatHeaderRowDef>;\r\n\r\n private headerRowCount: number = 1;\r\n\r\n /** The scroll strategy used by this directive. */\r\n scrollStrategy = new AnnaFixedRowSizeTableVirtualScrollStrategy(\r\n this.rowHeight,\r\n this.buffer,\r\n this.headerRowHeight * this.headerRowCount\r\n );\r\n\r\n ngOnChanges(change: SimpleChanges) {\r\n if (this.headerRows != undefined || this.headerRowsQuery) {\r\n this.handleChange();\r\n }\r\n if(change['buffer']?.previousValue != change['buffer']?.currentValue){\r\n AnnaFilterService.bufferSize = this.buffer;\r\n this.scrollStrategy = new AnnaFixedRowSizeTableVirtualScrollStrategy(\r\n this.rowHeight,\r\n this.buffer,\r\n this.headerRowHeight * this.headerRowCount\r\n ); \r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.headerRowsQuery.changes.subscribe(() => {\r\n this.handleChange();\r\n });\r\n }\r\n\r\n private handleChange(): void {\r\n this.scrollStrategy.updateRowHeightAndBuffer(\r\n this.rowHeight,\r\n this.buffer,\r\n // Use the explicit headerRows input value if set.\r\n // Otherwise, fall back to the QueryList length.\r\n this.headerRowHeight * (this._headerRows ?? this.headerRowsQuery.length)\r\n );\r\n }\r\n\r\n static ngAcceptInputType_rowHeight: NumberInput;\r\n static ngAcceptInputType_buffer: NumberInput;\r\n static ngAcceptInputType_headerRowHeight: NumberInput;\r\n}\r\n","import { ArrayDataSource, CollectionViewer, isDataSource, ListRange } from \"@angular/cdk/collections\";\r\nimport { CdkVirtualScrollRepeater, CdkVirtualScrollViewport } from \"@angular/cdk/scrolling\";\r\nimport { CdkHeaderRowDef, CdkTable, DataSource, STICKY_POSITIONING_LISTENER, _CoalescedStyleScheduler, _COALESCED_STYLE_SCHEDULER } from \"@angular/cdk/table\";\r\nimport { ContentChildren, Directive, ElementRef, Inject, Input, NgIterable, NgZone, QueryList } from \"@angular/core\";\r\nimport { isObservable, Observable, of, Subject } from \"rxjs\";\r\nimport { map, pairwise, shareReplay, startWith, switchMap, takeUntil } from \"rxjs/operators\";\r\nimport { AnnaTableVirtualScrollViewportComponent } from '../../components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component';\r\n\r\n/**\r\n * Directive that wraps a given data source in a \"virtual\" data source that emits\r\n * the slice of the original data source that matches the range that should be rendered\r\n * in the containing virtual scroll viewport.\r\n */\r\n@Directive({\r\n selector: '[mat-table][appVirtualDataSource], mat-table[appVirtualDataSource]',\r\n providers: [{ provide: STICKY_POSITIONING_LISTENER, useExisting: AnnaVirtualTableDirective }]\r\n})\r\nexport class AnnaVirtualTableDirective<T> implements CdkVirtualScrollRepeater<T>, CollectionViewer {\r\n @Input('appVirtualDataSource')\r\n set dataSource(value: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined) {\r\n this._dataSource = value;\r\n if (isDataSource(value)) {\r\n this.dataSourceChanges.next(value);\r\n } else {\r\n this.dataSourceChanges.next(new ArrayDataSource<T>(isObservable(value) ? value : Array.from(value || [])));\r\n }\r\n }\r\n get dataSource(): DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined {\r\n return this._dataSource;\r\n }\r\n private _dataSource: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined;\r\n\r\n @ContentChildren(CdkHeaderRowDef) headerRowDefs: QueryList<CdkHeaderRowDef>;\r\n\r\n private virtualizedDataStream = new Subject<T[] | ReadonlyArray<T>>();\r\n\r\n private dataSourceChanges = new Subject<DataSource<T>>();\r\n\r\n /** The raw, unvirtualized data stream. Emits whenever the data in the current DataSource changes. */\r\n dataStream: Observable<T[] | ReadonlyArray<T>> = this.dataSourceChanges\r\n .pipe(\r\n // Start off with null data source.\r\n startWith(null),\r\n // Bundle up the previous and current data sources so we can work with both.\r\n pairwise(),\r\n // Use `changeDataSource` to disconnect from the previous data source and connect to the\r\n // new one, passing back a stream of data changes which we run through `switchMap` to give\r\n // us a data stream that emits the latest data from whatever the current data source is.\r\n switchMap(([prev, cur]) => this.changeDataSource(prev, cur)),\r\n // Replay the last emitted data when someone subscribes.\r\n shareReplay(1));\r\n\r\n viewChange = new Subject<ListRange>();\r\n\r\n private data: T[] | readonly T[];\r\n\r\n private destroyed$ = new Subject<void>();\r\n\r\n private renderedItems: T[] | ReadonlyArray<T>;\r\n\r\n private renderedRange: ListRange = { start: 0, end: 0 };\r\n\r\n private isNativeHtmlTable: boolean = false;\r\n\r\n constructor(\r\n elementRef: ElementRef<HTMLElement>,\r\n private viewport: CdkVirtualScrollViewport,\r\n private table: CdkTable<T>,\r\n ngZone: NgZone,\r\n @Inject(_COALESCED_STYLE_SCHEDULER) private _coalescedStyleScheduler: _CoalescedStyleScheduler,\r\n ) {\r\n table.dataSource = this.virtualizedDataStream;\r\n this.isNativeHtmlTable = elementRef.nativeElement.tagName === 'TABLE';\r\n this.dataStream.subscribe(data => {\r\n this.data = data;\r\n this.onRenderedDataChange();\r\n });\r\n viewport.renderedRangeStream.pipe(takeUntil(this.destroyed$)).subscribe((range: ListRange) => {\r\n this.renderedRange = range;\r\n ngZone.run(() => this.viewChange.next(range));\r\n this.onRenderedDataChange();\r\n });\r\n viewport.attach(this);\r\n }\r\n\r\n ngOnInit(): void {\r\n // This is just a proof of concept, but the AnnaTableVirtualScrollViewportComponent uses `position: absolute` and `top: #px` instead of `transform: translateY(#px)` to position the viewport.\r\n // This removes the need to account for the translation in the `top` of the sticky header rows.\r\n if (this.viewport instanceof AnnaTableVirtualScrollViewportComponent) {\r\n return;\r\n }\r\n\r\n this.viewport.scrolledIndexChange\r\n .pipe(\r\n map(() => this.viewport.getOffsetToRenderedContentStart()),\r\n takeUntil(this.destroyed$)\r\n )\r\n .subscribe((offset) => {\r\n // We need to set the `style.top` property of the sticky header rows\r\n // to the negative value of the virtual scroll viewport's offset, so\r\n // make the offset negative.\r\n offset = -offset;\r\n\r\n const stickyStates: boolean[] = this.headerRowDefs.map(rowDef => rowDef.sticky);\r\n\r\n // This logic is exactly the same as what's in the StickyStyler (literally copy + paste).\r\n // The only difference is that the `stickyOffset` variable starts at the virtual scroll\r\n // viewport container's offset instead of starting at zero.\r\n const rows = this.table._getRenderedRows(this.table._headerRowOutlet);\r\n const stickyOffsets: number[] = [];\r\n const stickyCellHeights: (number|undefined)[] = [];\r\n const elementsToStick: HTMLElement[][] = [];\r\n for (let rowIndex = 0, stickyOffset = offset; rowIndex < rows.length; rowIndex++) {\r\n stickyOffsets[rowIndex] = stickyOffset;\r\n\r\n if (!stickyStates[rowIndex]) {\r\n continue;\r\n }\r\n\r\n const row = rows[rowIndex];\r\n elementsToStick[rowIndex] = this.isNativeHtmlTable ? Array.from(row.children) as HTMLElement[] : [row];\r\n\r\n const height = row.getBoundingClientRect().height;\r\n stickyOffset += height;\r\n stickyCellHeights[rowIndex] = height;\r\n }\r\n\r\n // Using the CoalescedStyleScheduler here is optional. It'll work without it,\r\n // and CoalescedStyleScheduler is not public (yet?), so feel free to remove it.\r\n this._coalescedStyleScheduler.schedule(() => {\r\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\r\n if (!stickyStates[rowIndex]) {\r\n continue;\r\n }\r\n\r\n for (const element of elementsToStick[rowIndex]) {\r\n element.style.top = `${stickyOffsets[rowIndex]}px`;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyed$.next();\r\n this.dataSourceChanges.complete();\r\n this.virtualizedDataStream.complete();\r\n }\r\n\r\n /** React to scroll state changes in the viewport. */\r\n private onRenderedDataChange() {\r\n if (!this.renderedRange) {\r\n return;\r\n }\r\n this.renderedItems = this.data.slice(this.renderedRange.start, this.renderedRange.end + 1);\r\n // delegate rendering to the table by emitting from the virtualizedDataStream\r\n this.virtualizedDataStream.next(this.renderedItems);\r\n }\r\n\r\n /** Swap out one data source for another. */\r\n private changeDataSource(oldDataSource: DataSource<T> | null, newDs: DataSource<T> | null):\r\n Observable<T[] | ReadonlyArray<T>> {\r\n\r\n oldDataSource?.disconnect(this);\r\n return newDs ? newDs.connect(this) : of();\r\n }\r\n\r\n /**\r\n * This method is only used by the experimental AutoSizeVirtualScrollStrategy.\r\n * We're not using that strategy, but I've implemented it just to show how it oculd be done.\r\n * I'm not actually sure if this works.\r\n */\r\n measureRangeSize(range: ListRange, orientation: 'horizontal' | 'vertical'): number {\r\n if (orientation === 'horizontal' || range.end < range.start) {\r\n // virtual scrolling columns are not supported by this directive\r\n return 0;\r\n }\r\n\r\n const renderedBodyRows = this.table._getRenderedRows(this.table._rowOutlet);\r\n\r\n const firstRow: HTMLElement | undefined = renderedBodyRows[range.start];\r\n const lastRow: HTMLElement | undefined = renderedBodyRows[range.end];\r\n\r\n if (!firstRow || !lastRow) {\r\n return 0;\r\n }\r\n\r\n // We need to include all header and footer rows in the sum, since they're always rendered\r\n const renderedHeaderRows = this.table._getRenderedRows(this.table._headerRowOutlet);\r\n const renderedFooterRows = this.table._getRenderedRows(this.table._footerRowOutlet);\r\n\r\n // TODO (performance): Can we just measure the offset of the first and last items and do some math to avoid having to measure each row individually?\r\n const headerHeight = renderedHeaderRows.reduce((sum: number, row: HTMLElement) => {\r\n return sum += row.getBoundingClientRect().height;\r\n }, 0);\r\n const footerHeight = renderedFooterRows.reduce((sum: number, row: HTMLElement) => {\r\n return sum += row.getBoundingClientRect().height;\r\n }, 0);\r\n\r\n const bodyHeight = lastRow.getBoundingClientRect().bottom - firstRow.getBoundingClientRect().top;\r\n\r\n return headerHeight + footerHeight + bodyHeight;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'AnnatypeofData'\r\n})\r\nexport class AnnaTypeofDataPipe implements PipeTransform {\r\n\r\n transform(value: any): any {\r\n return typeof value;\r\n }\r\n\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { memoize } from \"lodash-es\";\r\n\r\n@Pipe({\r\n name: \"annaReplaceChar\",\r\n})\r\nexport class AnnaReplaceCharPipe implements PipeTransform {\r\n converter = memoize(this.replace, (...args) => this.replace(args[0], args[1], args[2]));\r\n\r\n transform(value: string, charToBeReplaced: string, replaceBy: string): string {\r\n if (value !== undefined || value != null) {\r\n return this.converter(value, charToBeReplaced, replaceBy);\r\n }\r\n }\r\n\r\n replace(value: string, from: string, to: string): string {\r\n return value.replace(new RegExp(from, \"g\"), to);\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n } from '@angular/core';\r\n \r\n @Directive({\r\n selector: '[digitOnly]',\r\n })\r\n export class DigitOnlyDirective implements OnChanges {\r\n private hasDecimalPoint = false;\r\n private hasNegativeSign = false;\r\n private navigationKeys = [\r\n 'Backspace',\r\n 'Delete',\r\n 'Tab',\r\n 'Escape',\r\n 'Enter',\r\n 'Home',\r\n 'End',\r\n 'ArrowLeft',\r\n 'ArrowRight',\r\n 'Clear',\r\n 'Copy',\r\n 'Paste',\r\n ];\r\n \r\n @Input() decimal = false;\r\n @Input() decimalSeparator = '.';\r\n @Input() allowNegatives = false;\r\n @Input() allowPaste = true;\r\n @Input() negativeSign = '-';\r\n @Input() min = -Infinity;\r\n @Input() max = Infinity;\r\n @Input() pattern?: string | RegExp;\r\n private regex: RegExp | null = null;\r\n inputElement: HTMLInputElement;\r\n \r\n constructor(public el: ElementRef) {\r\n this.inputElement = el.nativeElement;\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['pattern']) {\r\n this.regex = this.pattern ? RegExp(this.pattern) : null;\r\n }\r\n \r\n if (changes['min']) {\r\n const maybeMin = Number(this.min);\r\n this.min = isNaN(maybeMin) ? -Infinity : maybeMin;\r\n }\r\n \r\n if (changes['max']) {\r\n const maybeMax = Number(this.max);\r\n this.max = isNaN(maybeMax) ? Infinity : maybeMax;\r\n }\r\n }\r\n \r\n @HostListener('beforeinput', ['$event'])\r\n onBeforeInput(e: InputEvent): any {\r\n if (isNaN(Number(e.data))) {\r\n if (\r\n e.data === this.decimalSeparator ||\r\n (e.data === this.negativeSign && this.allowNegatives)\r\n ) {\r\n return; // go on\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n \r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(e: KeyboardEvent): any {\r\n if (\r\n this.navigationKeys.indexOf(e.key) > -1 || // Allow: navigation keys: backspace, delete, arrows etc.\r\n ((e.key === 'a' || e.code === 'KeyA') && e.ctrlKey === true) || // Allow: Ctrl+A\r\n ((e.key === 'c' || e.code === 'KeyC') && e.ctrlKey === true) || // Allow: Ctrl+C\r\n ((e.key === 'v' || e.code === 'KeyV') && e.ctrlKey === true) || // Allow: Ctrl+V\r\n ((e.key === 'x' || e.code === 'KeyX') && e.ctrlKey === true) || // Allow: Ctrl+X\r\n ((e.key === 'a' || e.code === 'KeyA') && e.metaKey === true) || // Allow: Cmd+A (Mac)\r\n ((e.key === 'c' || e.code === 'KeyC') && e.metaKey === true) || // Allow: Cmd+C (Mac)\r\n ((e.key === 'v' || e.code === 'KeyV') && e.metaKey === true) || // Allow: Cmd+V (Mac)\r\n ((e.key === 'x' || e.code === 'KeyX') && e.metaKey === true) // Allow: Cmd+X (Mac)\r\n ) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n \r\n let newValue = '';\r\n \r\n if (this.decimal && e.key === this.decimalSeparator) {\r\n newValue = this.forecastValue(e.key);\r\n if (newValue.split(this.decimalSeparator).length > 2) {\r\n // has two or more decimal points\r\n e.preventDefault();\r\n return;\r\n } else {\r\n this.hasDecimalPoint = newValue.indexOf(this.decimalSeparator) > -1;\r\n return; // Allow: only one decimal point\r\n }\r\n }\r\n \r\n if (e.key === this.negativeSign && this.allowNegatives) {\r\n newValue = this.forecastValue(e.key);\r\n if (\r\n newValue.charAt(0) !== this.negativeSign ||\r\n newValue.split(this.negativeSign).length > 2\r\n ) {\r\n e.preventDefault();\r\n return;\r\n } else {\r\n this.hasNegativeSign = newValue.split(this.negativeSign).length > -1;\r\n return;\r\n }\r\n }\r\n \r\n // Ensure that it is a number and stop the keypress\r\n if (e.key === ' ' || isNaN(Number(e.key))) {\r\n e.preventDefault();\r\n return;\r\n }\r\n \r\n newValue = newValue || this.forecastValue(e.key);\r\n // check the input pattern RegExp\r\n if (this.regex) {\r\n if (!this.regex.test(newValue)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n \r\n const newNumber = Number(newValue);\r\n if (newNumber > this.max || newNumber < this.min) {\r\n e.preventDefault();\r\n }\r\n }\r\n \r\n @HostListener('paste', ['$event'])\r\n onPaste(event: any): void {\r\n if (this.allowPaste === true) {\r\n let pastedInput: string = '';\r\n if ((window as { [key: string]: any })['clipboardData']) {\r\n // Browser is IE\r\n pastedInput = (window as { [key: string]: any })[\r\n 'clipboardData'\r\n ].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(\r\n sanitizedContent,\r\n start ?? 0,\r\n end ?? 0,\r\n 'end'\r\n );\r\n // Angular's Reactive Form relies on \"input\" event, but on Firefox, the setRangeText method doesn't trigger it\r\n // so we have to trigger it ourself.\r\n if (\r\n typeof (window as { [key: string]: any })['InstallTrigger'] !==\r\n 'undefined'\r\n ) {\r\n this.inputElement.dispatchEvent(\r\n new Event('input', { cancelable: true })\r\n );\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 =\r\n this.inputElement.value.indexOf(this.decimalSeparator) > -1;\r\n }\r\n this.hasNegativeSign =\r\n 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) +\r\n myValue +\r\n 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(\r\n `${this.getNegativeSignRegExp()}[^0-9${this.decimalSeparator}]`,\r\n 'g'\r\n );\r\n } else {\r\n regex = new RegExp(`${this.getNegativeSignRegExp()}[^0-9]`, 'g');\r\n }\r\n result = input.replace(regex, '');\r\n \r\n const maxLength = this.inputElement.maxLength;\r\n if (maxLength > 0) {\r\n // the input element has maxLength limit\r\n const allowedLength =\r\n maxLength -\r\n this.inputElement.value.length +\r\n (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 &&\r\n (!this.hasNegativeSign || this.getSelection().includes(this.negativeSign))\r\n ? `(?!^${this.negativeSign})`\r\n : '';\r\n }\r\n \r\n private isValidDecimal(string: string): boolean {\r\n if (!this.hasDecimalPoint) {\r\n return string.split(this.decimalSeparator).length <= 2;\r\n } else {\r\n // the input element already has a decimal separator\r\n const selectedText = this.getSelection();\r\n if (selectedText && selectedText.indexOf(this.decimalSeparator) > -1) {\r\n return string.split(this.decimalSeparator).length <= 2;\r\n } else {\r\n return string.indexOf(this.decimalSeparator) < 0;\r\n }\r\n }\r\n }\r\n \r\n private getSelection(): string {\r\n return this.inputElement.value.substring(\r\n this.inputElement.selectionStart ?? 0,\r\n this.inputElement.selectionEnd ?? 0\r\n );\r\n }\r\n \r\n private forecastValue(key: string): string {\r\n const selectionStart = this.inputElement.selectionStart;\r\n const selectionEnd = this.inputElement.selectionEnd;\r\n const oldValue = this.inputElement.value;\r\n\r\n if(selectionStart == null && selectionEnd == null){\r\n return (oldValue + key);\r\n }\r\n\r\n return (\r\n oldValue.substring(0, selectionStart) +\r\n key +\r\n oldValue.substring(selectionEnd)\r\n );\r\n }\r\n }","import {Pipe, PipeTransform} from '@angular/core';\r\nimport dayjs from 'dayjs';\r\nimport customParseFormat from \"dayjs/plugin/isSameOrAfter\";\r\n\r\n@Pipe({\r\n name: 'AnnaDateFormatter'\r\n})\r\nexport class AnnaDateFormatterPipe implements PipeTransform {\r\n\r\n constructor(){\r\n }\r\n\r\n transform(value: any, format: string): any {\r\n dayjs.extend(customParseFormat);\r\n let formattedTime = dayjs(value).format(format);\r\n return formattedTime;\r\n }\r\n\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { memoize } from \"lodash-es\";\r\n\r\n@Pipe({\r\n name: \"annaConvertArrayToCSV\",\r\n})\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}\r\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[fixedRowsInPopupTable]'\r\n})\r\nexport class FixedRowsPopupTableDirective {\r\n @Input() popupRowHeight: number = 37.5; \r\n @Input() popupHeaderHeight: number = 38;\r\n @Input() tableDataLength:number \r\n maxRowsRenderedWithoutScrollForPopup: number = 10;\r\n \r\n constructor(private el: ElementRef, private renderer: Renderer2) { }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize() {\r\n this.setPopUpTableHeight();\r\n }\r\n\r\n ngOnInit() {\r\n this.setPopUpTableHeight();\r\n }\r\n\r\n setPopUpTableHeight() {\r\n const viewportHeight = window.innerHeight;\r\n const maxNoOfRowsToDisplay = viewportHeight < 740 ? 5 : 10;\r\n this.maxRowsRenderedWithoutScrollForPopup = maxNoOfRowsToDisplay;\r\n let totalPopupTableHeight = this.maxRowsRenderedWithoutScrollForPopup * this.popupRowHeight + this.popupHeaderHeight;\r\n\r\n let tableHeightForPopup= (this.tableDataLength < this.maxRowsRenderedWithoutScrollForPopup) ? ((this.popupRowHeight)*(this.tableDataLength ?this.tableDataLength : 1) ) + this.popupHeaderHeight: totalPopupTableHeight\r\n\r\n this.renderer.setStyle(\r\n this.el.nativeElement,\r\n 'height',\r\n `calc(${tableHeightForPopup}px)`\r\n );\r\n }\r\n}\r\n","\r\n\r\n// Angular import statements\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatRadioModule } from \"@angular/material/radio\";\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\n\r\n// Third party import statements\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxSliderModule } from '@angular-slider/ngx-slider';\r\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\r\nimport { NgCircleProgressModule } from 'ng-circle-progress';\r\n\r\n//Anna-core User defined import statements\r\nimport { AnnaFilterSearchedTextPipe } from './anna-core-shared-lib/pipes/annaFilterSearchedText.pipe';\r\nimport { AnnaNoDataComponent } from './anna-core-shared-lib/components/anna-no-data/anna-no-data.component';\r\nimport { AnnaIconColumnComponent } from './anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component';\r\nimport { AnnaBuyerApprovalIconTemplateComponent } from './anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component';\r\nimport { AnnaLiveIconTemplateComponent } from './anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component';\r\nimport { AnnaNotifyIconTemplateComponent } from './anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component';\r\nimport { AnnaPayForPerformanceIconTemplateComponent } from './anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component';\r\nimport { AnnaRejectedIconTemplateComponent } from './anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component';\r\nimport { showEllipsisTextOnHoverDirective } from './anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive';\r\nimport { AnnaConvertZeroOrNullOrUndefinedPipe } from './anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe';\r\n\r\n//Anna-dropdown-lib User defined import statements \r\nimport { AnnaWeekCalendarComponent } from './anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component';\r\nimport { AnnaCalendarFilterComponent } from './anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component';\r\n\r\n\r\n//Anna-generic-table User defined import statements\r\nimport { AnnaNonEditableGenericTableComponent } from './anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component';\r\nimport { AnnaSortComponent } from './anna-generic-table-lib/components/anna-sort/anna-sort.component';\r\nimport { AnnaTableVirtualScrollViewportComponent } from './anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component';\r\nimport { AnnaFixedRowSizeTableVirtualScrollStrategyDirective } from './anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy';\r\nimport { AnnaVirtualTableDirective } from './anna-generic-table-lib/directives/anna-virtual-table';\r\nimport { AnnaTypeofDataPipe } from './anna-core-shared-lib/pipes/annaTypeOfData.pipe';\r\nimport { AnnaReplaceCharPipe } from './anna-core-shared-lib/pipes/annaReplaceChar.pipe';\r\nimport { DigitOnlyDirective } from './anna-core-shared-lib/directives/digits-only/digits-only.directive';\r\nimport { AnnaColumnDateRangeFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component';\r\nimport { AnnaColumnCheckboxFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component';\r\nimport { AnnaColumnTimeFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component';\r\nimport { AnnaDeletedOrderIconTemplateComponent } from './anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component';\r\nimport { AnnaColumnSliderFilterComponent } from './anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component';\r\nimport { AnnaDateFormatterPipe } from './anna-core-shared-lib/pipes/annaDateFormatter.pipe';\r\nimport { AnnaConvertArrayToCommaSeperatedValue } from './anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe';\r\nimport { FixedRowsPopupTableDirective } from './anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive';\r\nimport { AnnaEstIconTemplateComponent } from './anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AnnaNoDataComponent,\r\n AnnaFilterSearchedTextPipe,\r\n AnnaConvertZeroOrNullOrUndefinedPipe,\r\n AnnaTypeofDataPipe,\r\n AnnaFilterSearchedTextPipe,\r\n AnnaReplaceCharPipe,\r\n AnnaBuyerApprovalIconTemplateComponent,\r\n AnnaLiveIconTemplateComponent,\r\n AnnaNotifyIconTemplateComponent,\r\n AnnaPayForPerformanceIconTemplateComponent,\r\n AnnaRejectedIconTemplateComponent,\r\n showEllipsisTextOnHoverDirective,\r\n AnnaIconColumnComponent,\r\n AnnaWeekCalendarComponent,\r\n AnnaCalendarFilterComponent,\r\n AnnaSortComponent,\r\n AnnaVirtualTableDirective,\r\n AnnaNonEditableGenericTableComponent,\r\n AnnaTableVirtualScrollViewportComponent,\r\n AnnaFixedRowSizeTableVirtualScrollStrategyDirective,\r\n DigitOnlyDirective,\r\n AnnaColumnDateRangeFilterComponent,\r\n AnnaColumnTimeFilterComponent,\r\n AnnaColumnCheckboxFilterComponent,\r\n AnnaDeletedOrderIconTemplateComponent,\r\n AnnaColumnSliderFilterComponent,\r\n AnnaDateFormatterPipe,\r\n AnnaConvertArrayToCommaSeperatedValue,\r\n FixedRowsPopupTableDirective,\r\n AnnaEstIconTemplateComponent\r\n ],\r\n 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 ],\r\n exports : [\r\n AnnaNoDataComponent,\r\n AnnaFilterSearchedTextPipe,\r\n AnnaConvertZeroOrNullOrUndefinedPipe,\r\n AnnaTypeofDataPipe,\r\n AnnaReplaceCharPipe,\r\n AnnaFilterSearchedTextPipe,\r\n AnnaBuyerApprovalIconTemplateComponent,\r\n AnnaLiveIconTemplateComponent,\r\n AnnaNotifyIconTemplateComponent,\r\n AnnaPayForPerformanceIconTemplateComponent,\r\n AnnaRejectedIconTemplateComponent,\r\n showEllipsisTextOnHoverDirective,\r\n AnnaIconColumnComponent,\r\n AnnaWeekCalendarComponent,\r\n AnnaCalendarFilterComponent,\r\n AnnaSortComponent,\r\n AnnaVirtualTableDirective,\r\n AnnaNonEditableGenericTableComponent,\r\n AnnaTableVirtualScrollViewportComponent,\r\n AnnaColumnDateRangeFilterComponent,\r\n AnnaColumnTimeFilterComponent,\r\n AnnaColumnCheckboxFilterComponent,\r\n AnnaFixedRowSizeTableVirtualScrollStrategyDirective,\r\n DigitOnlyDirective,\r\n AnnaDeletedOrderIconTemplateComponent,\r\n AnnaColumnSliderFilterComponent,\r\n AnnaDateFormatterPipe,\r\n AnnaConvertArrayToCommaSeperatedValue,\r\n FixedRowsPopupTableDirective\r\n ]\r\n})\r\nexport class AnnaCoreModule { }\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaNumberFormatService {\r\n\r\npublic static GetRoundedValueWithUnits(inputValue: number, digitsToRoundDecimalPoint = 2)\r\n {\r\n let [value,unit] = AnnaNumberFormatService.GetValueInUnits(Math.abs(inputValue));\r\n value = +((+value).toFixed(digitsToRoundDecimalPoint));\r\n if(inputValue < 0){\r\n value = value * -1;\r\n }\r\n return value.toString() + unit;\r\n // return (Math.Round(value, digitsToRoundDecimalPoint, MidpointRounding.AwayFromZero) + unit);\r\n }\r\n\r\n public static GetRoundedImpressionsWithUnits(inputValue: number, digitsToRoundDecimalPoint: number = 0)\r\n {\r\n let [value,unit] = this.GetValueInUnits(Math.abs(inputValue));\r\n value = +value;\r\n if(inputValue < 0){\r\n value = value * -1;\r\n }\r\n if(digitsToRoundDecimalPoint == 0 && (unit == \"M\" || unit == \"B\" || unit == \"K\"))\r\n {\r\n digitsToRoundDecimalPoint = 2;\r\n }\r\n return Number.isInteger(value) ? value.toString() + unit : value.toFixed(digitsToRoundDecimalPoint) + unit;\r\n // return (Math.round(value, digitsToRoundDecimalPoint, MidpointRounding.AwayFromZero) + unit);\r\n }\r\n\r\n public static GetValueInUnits(inputValue: number){\r\n let unit = \"\";\r\n let thousand = 1000;\r\n let million = 1000000;\r\n let billion = 1000000000;\r\n\r\n if (inputValue >= thousand && inputValue < million)\r\n {\r\n inputValue = inputValue / thousand;\r\n unit = \"K\";\r\n }\r\n else if (inputValue >= million && inputValue < billion)\r\n {\r\n inputValue = inputValue / million;\r\n unit = \"M\";\r\n }\r\n else if (inputValue >= billion)\r\n {\r\n inputValue = inputValue / billion;\r\n unit = \"B\";\r\n }\r\n\r\n return [inputValue,unit];\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 \r\n constructor() { }\r\n\r\n storeKeyValueInLocalStorage(val: any, isFilterKey = true){\r\n let filterOrdering: any[];\r\n \r\n if(!localStorage.getItem(\"filterOrdering\")){\r\n filterOrdering = [];\r\n }\r\n else{\r\n filterOrdering = JSON.parse(localStorage.getItem(\"filterOrdering\"));\r\n }\r\n\r\n let filterOrderingSet = new Set(filterOrdering);\r\n let hashCode = null;\r\n let key = null;\r\n \r\n try{\r\n hashCode = hash(val);\r\n key = isFilterKey ? \"filter_\" + hashCode : hashCode;\r\n localStorage.setItem(key, JSON.stringify(val));\r\n \r\n if(isFilterKey){\r\n\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 catch (e) {\r\n let halfArrayLength = filterOrdering.length / 2;\r\n\r\n for(let i = 0 ; i < halfArrayLength; i++){\r\n localStorage.removeItem(filterOrdering[i]);\r\n }\r\n\r\n filterOrdering.splice(0, (filterOrdering.length / 2));\r\n\r\n hashCode = hash(val);\r\n let key = isFilterKey ? \"filter_\" + hashCode : hashCode;\r\n localStorage.setItem(key, JSON.stringify(val));\r\n \r\n if(isFilterKey){\r\n\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\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\r\n .keys(paramsObject)\r\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(paramsObject[key])}`)\r\n .join('&');\r\n }\r\n}\r\n","import { IWeekCalendar } from \"./anna-global-dropdown-config.model\";\r\n\r\nexport interface IGtTableHeader {\r\n headerInfo: IHeaderInfo[];\r\n visible: boolean;\r\n width: string;\r\n}\r\n\r\nexport interface IHeaderInfo {\r\n name: string;\r\n objectKey: string;\r\n actionKey?: string;\r\n tooltipKey?: string;\r\n isDisabledKey?: string;\r\n typeOfHeaderData: DATATYPE;\r\n typeOfBodyData: DATATYPE;\r\n filter?: FILTERTYPE;\r\n filterSortObjectKeys?: string[];\r\n isSortRequired?: boolean[];\r\n isFilterRequired?: boolean[];\r\n showTooltipIcon: boolean;\r\n disableTooltipIcon?: boolean;\r\n tooltip?: ITooltip;\r\n joinedFilterSortObjectKeys?: string;\r\n}\r\n\r\ntype DATATYPE = \"CHECKBOX\" | \"ICON\" | \"STRING\" | \"RADIO\" | \"\" | \"SVG_ICON\" | \"TEXT_ACTIONS\" | \"CLICKABLE_DATA\" | \"STRING__TEXT_ACTION\"\r\n | \"STRING__ICON_ACTION\" | \"STRING___ICON_OR_TEXT_ACTION\" | \"HTML\" | \"HTML_STRING\" | \"ICON_CELL\" | \"STRING_OR_INPUT\" | \"SINGLE_RADIO\" | 'STRING_WITH_TOOLTIP';\r\ntype FILTERTYPE = \"CHECKBOX\" | \"SLIDER\" | \"DATE\" | \"TIME\" | \"WEEK\";\r\ntype TOOLTIPOSITION = \"left\" | \"right\";\r\n\r\nexport interface ITotalRowInfo {\r\n colspan: number;\r\n data: string;\r\n lowerData?: string;\r\n colName: string;\r\n class?: string;\r\n tooltipMessage?: string;\r\n isActionColumn?: boolean;\r\n actionData?: ClickableItem[];\r\n isIconColumn?: boolean;\r\n iconData?: { class: string; disabled?: boolean };\r\n tooltipIconClass?: string;\r\n}\r\n\r\nexport interface IGtHeaderConfig {\r\n iconColumn: boolean;\r\n checkboxColumn: boolean;\r\n lastColumnKeys: string[];\r\n}\r\n\r\nexport interface IGtGeneralConfig extends ISpotTableConfig {\r\n component: COMPONENTNAME;\r\n totalRow: boolean;\r\n isHeaderChecked?: boolean;\r\n disableHeaderCheckbox?: boolean;\r\n multiWeekPickerConfig?: IWeekCalendar;\r\n verticalScrollOffsetForFilterTooltip?: number;\r\n tableContainerName?: string;\r\n tableOuterContainerName?: string;\r\n showAllColumnFilter: boolean;\r\n bufferSize: number;\r\n page: string;\r\n}\r\n\r\ntype COMPONENTNAME = \"SPOTDETAILS\" | \"EXCLUDEINVENTORYPOPUP\" | \"EXCLUDEINVENTORY\" | \"DRRLISTING\" | \"DRR\" | \"\" | \"RATING\" | \"ORDER_LISTING_INFLIGHT\" | \"ORDER_LISTING_COMPLETED\" | \"ORDER_LISTING_BLANK\" | \"LUR_VIOLATIONS\" | \"ACTIVITYLOG\" | \"NOTIFICATIONS\" | \"DP_RESTRICTIONS\";\r\ninterface ISpotTableConfig {\r\n isGrouped: boolean;\r\n}\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}\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\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(typeOfActionLinkForGt: any, name: string, className: string, showTooltip: boolean, tooltipData: { key: string, value: string }) {\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 interface IActionItemTypeSTRING__ICON_OR_TEXT_ACTION {\r\n id: any;\r\n data: 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 typeOfData: 'STRING' | 'ICON_TEXT_ACTION';\r\n additionalTextBeforeLink: string;\r\n enableTooltipForAdditionalText: boolean;\r\n}\r\n\r\nexport type IconToShow = \"LIVE\" | \"PAY_FOR_PERFORMANCE_ACTIVE\" | \"PAY_FOR_PERFORMANCE\" | \"REJECTED\" | \"NOTIFY\" | \"AWAITING_APPROVAL\" | \"DELETED_ORDER\" | \"NEED_SELLER_CONFIRMATION\" | \"NEED_BUYER_CONFIRMATION\";\r\n","export class Constants {\r\n static readonly SUCCESS_STRING = \"success\";\r\n static readonly BACKEND_SERVER_URL = \"/server/public/index.php/api\";\r\n static readonly ERROR_MSG = \"Error occurred please try again.\";\r\n static readonly NO_DATA_MSG = \"No Data to display\";\r\n static readonly SERVER_ERROR = \"Server error. Please try Again\";\r\n static readonly USER_ORIGIN = \"ANNA\";\r\n static readonly ACTIVE_USER_STATUS = \"active\";\r\n static readonly DELETED_USER_STATUS = \"deleted\";\r\n static readonly INACTIVE_USER_STATUS = \"inactive\";\r\n static readonly OGAdminRole = \"Ownership Group Admin\";\r\n static readonly ASARole = \"Anna Station Admin\";\r\n static readonly dollars = \"$\";\r\n}\r\n\r\nexport class ErrorCodes {\r\n static readonly BAD_REQUEST = 400;\r\n static readonly SERVER_ERROR = 500;\r\n static readonly SUCCESS_CODE = 200;\r\n static readonly SUCCESS_CODE_GET = 200;\r\n static readonly SUCCESS_CODE_POST = 201;\r\n static readonly SUCCESS_CODE_PATCH = 204;\r\n static readonly NO_CONTENT = 204;\r\n static readonly under_review = 409;\r\n}\r\n\r\nexport enum Days {\r\n M = 1,\r\n Tu = 2,\r\n We = 3,\r\n Th = 4,\r\n F = 5,\r\n Sa = 6,\r\n Su = 7,\r\n}\r\n\r\nexport class OrderSources{ \r\n static readonly Medialine = \"Medialine\";\r\n static readonly Non_electronic = \"Non electronic\";\r\n static readonly Others = \"Others\";\r\n static readonly WOC_unlinked = \"WOC Unlinked\";\r\n static readonly WOC_linked = \"WOC Linked\";\r\n static readonly WOZ = \"WOZ\";\r\n static readonly Darwin = \"Darwin\";\r\n}","/*\r\n * Public API Surface of anna-core\r\n */\r\n\r\nexport * from \"./lib/anna-core.module\";\r\n\r\n//ANNA-CORE \r\n//components \r\nexport * from \"./lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component\";\r\nexport * from \"./lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component\";\r\n\r\n//services\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-date-time-format.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-global-config.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-filter.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-sort.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-generic-table.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-number-format.service\";\r\nexport * from \"./lib/anna-core-shared-lib/services/anna-persisting-filter.service\";\r\n\r\n//models\r\nexport * from \"./lib/anna-core-shared-lib/models/anna-generic-data-type.model\";\r\nexport * from \"./lib/anna-core-shared-lib/models/anna-global-dropdown-config.model\";\r\nexport * from \"./lib/anna-core-shared-lib/models/anna-non-editable-gt-models\";\r\nexport * from \"./lib/anna-core-shared-lib/models/anna-tooltip.model\";\r\nexport * from \"./lib/anna-core-shared-lib/models/anna-sort.model\";\r\n\r\n\r\n//constants\r\nexport * from \"./lib/anna-core-shared-lib/constants/shared.constant\";\r\n\r\n//pipes\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe\";\r\nexport * from \"./lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe\";\r\n\r\n//directives\r\nexport * from \"./lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive\";\r\nexport * from './lib/anna-core-shared-lib/directives/digits-only/digits-only.directive';\r\nexport * from './lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive';\r\n\r\n\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\r\n//ANNA-GENERIC-TABLE-LIB\r\n//Modules\r\n\r\n//Components\r\nexport * from \"./lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component\";\r\nexport * from \"./lib/anna-generic-table-lib/components/anna-sort/anna-sort.component\";\r\nexport * from \"./lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component\";\r\nexport * from \"./lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component\";\r\nexport * from \"./lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component\";\r\nexport * from \"./lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component\";\r\nexport * from \"./lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component\";\r\n\r\n//Directives\r\nexport * from \"./lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy\";\r\nexport * from \"./lib/anna-generic-table-lib/directives/anna-virtual-table\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.AnnaBuyerApprovalIconTemplateComponent","i3.AnnaLiveIconTemplateComponent","i4.AnnaNotifyIconTemplateComponent","i5.AnnaPayForPerformanceIconTemplateComponent","i6.AnnaRejectedIconTemplateComponent","i7.AnnaDeletedOrderIconTemplateComponent","i2.AnnaDateTimeFormatService","i3.AnnaGlobalConfigService","i5","i1.AnnaDateTimeFormatService","i2","i3","i4","CustomParseFormat","i2.AnnaSortService","i1.AnnaSortService","i3.AnnaFilterService","i5.AnnaCalendarFilterComponent","i6.AnnaSortComponent","i7.AnnaSortComponent","i2.AnnaFilterService","i1.AnnaFilterService","i6","i11.AnnaNoDataComponent","i12.showEllipsisTextOnHoverDirective","i13.AnnaIconColumnComponent","i14.AnnaColumnDateRangeFilterComponent","i15.AnnaColumnTimeFilterComponent","i16.AnnaColumnCheckboxFilterComponent","i17.AnnaColumnSliderFilterComponent","i18.AnnaEstIconTemplateComponent","i3.AnnaSortService","i3.AnnaGtHelperService","map","customParseFormat"],"mappings":"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"}