@annalib/anna-core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/annalib-anna-core.d.ts +5 -0
- package/esm2020/annalib-anna-core.mjs +5 -0
- package/esm2020/lib/anna-core-shared-lib/anna-core-shared-lib.module.mjs +59 -0
- package/esm2020/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +15 -0
- package/esm2020/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +15 -0
- package/esm2020/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +22 -0
- package/esm2020/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +15 -0
- package/esm2020/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +21 -0
- package/esm2020/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +15 -0
- package/esm2020/lib/anna-core-shared-lib/constants/shared.constant.mjs +34 -0
- package/esm2020/lib/anna-core-shared-lib/index.mjs +2 -0
- package/esm2020/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +2 -0
- package/esm2020/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +2 -0
- package/esm2020/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +3 -0
- package/esm2020/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +26 -0
- package/esm2020/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +31 -0
- package/esm2020/lib/anna-core-shared-lib/public-api.mjs +25 -0
- package/esm2020/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +180 -0
- package/esm2020/lib/anna-core-shared-lib/services/anna-filter.service.mjs +537 -0
- package/esm2020/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +52 -0
- package/esm2020/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +133 -0
- package/esm2020/lib/anna-core-shared-lib/services/anna-sort.service.mjs +185 -0
- package/esm2020/lib/anna-dropdown-lib/anna-dropdown-lib.module.mjs +43 -0
- package/esm2020/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +76 -0
- package/esm2020/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +360 -0
- package/esm2020/lib/anna-dropdown-lib/index.mjs +2 -0
- package/esm2020/lib/anna-dropdown-lib/public-api.mjs +6 -0
- package/esm2020/lib/anna-generic-table-lib/anna-generic-table-lib.module.mjs +86 -0
- package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +991 -0
- package/esm2020/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +125 -0
- package/esm2020/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +357 -0
- package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.mjs +189 -0
- package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +2 -0
- package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +178 -0
- package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +2 -0
- package/esm2020/lib/anna-generic-table-lib/index.mjs +2 -0
- package/esm2020/lib/anna-generic-table-lib/public-api.mjs +10 -0
- package/esm2020/public-api.mjs +7 -0
- package/esm2020/src/lib/anna-core-shared-lib/anna-core-shared-lib.module.mjs +59 -0
- package/esm2020/src/lib/anna-core-shared-lib/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +5 -0
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +15 -0
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +15 -0
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +22 -0
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +15 -0
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +21 -0
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +15 -0
- package/esm2020/src/lib/anna-core-shared-lib/constants/shared.constant.mjs +34 -0
- package/esm2020/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +2 -0
- package/esm2020/src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +2 -0
- package/esm2020/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +3 -0
- package/esm2020/src/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +26 -0
- package/esm2020/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +31 -0
- package/esm2020/src/lib/anna-core-shared-lib/public-api.mjs +25 -0
- package/esm2020/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +180 -0
- package/esm2020/src/lib/anna-core-shared-lib/services/anna-filter.service.mjs +537 -0
- package/esm2020/src/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +52 -0
- package/esm2020/src/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +133 -0
- package/esm2020/src/lib/anna-core-shared-lib/services/anna-sort.service.mjs +185 -0
- package/esm2020/src/lib/anna-dropdown-lib/anna-dropdown-lib.module.mjs +43 -0
- package/esm2020/src/lib/anna-dropdown-lib/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +5 -0
- package/esm2020/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +76 -0
- package/esm2020/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +360 -0
- package/esm2020/src/lib/anna-dropdown-lib/public-api.mjs +6 -0
- package/esm2020/src/lib/anna-generic-table-lib/anna-generic-table-lib.module.mjs +86 -0
- package/esm2020/src/lib/anna-generic-table-lib/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +5 -0
- package/esm2020/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +991 -0
- package/esm2020/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +125 -0
- package/esm2020/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +357 -0
- package/esm2020/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.mjs +189 -0
- package/esm2020/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +2 -0
- package/esm2020/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +178 -0
- package/esm2020/src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +2 -0
- package/esm2020/src/lib/anna-generic-table-lib/public-api.mjs +10 -0
- package/fesm2015/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +1295 -0
- package/fesm2015/annalib-anna-core-src-lib-anna-core-shared-lib.mjs.map +1 -0
- package/fesm2015/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +474 -0
- package/fesm2015/annalib-anna-core-src-lib-anna-dropdown-lib.mjs.map +1 -0
- package/fesm2015/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +1887 -0
- package/fesm2015/annalib-anna-core-src-lib-anna-generic-table-lib.mjs.map +1 -0
- package/fesm2015/annalib-anna-core.mjs +3630 -0
- package/fesm2015/annalib-anna-core.mjs.map +1 -0
- package/fesm2020/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +1295 -0
- package/fesm2020/annalib-anna-core-src-lib-anna-core-shared-lib.mjs.map +1 -0
- package/fesm2020/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +472 -0
- package/fesm2020/annalib-anna-core-src-lib-anna-dropdown-lib.mjs.map +1 -0
- package/fesm2020/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +1886 -0
- package/fesm2020/annalib-anna-core-src-lib-anna-generic-table-lib.mjs.map +1 -0
- package/fesm2020/annalib-anna-core.mjs +3627 -0
- package/fesm2020/annalib-anna-core.mjs.map +1 -0
- package/lib/anna-core-shared-lib/anna-core-shared-lib.module.d.ts +14 -0
- package/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +8 -0
- package/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +8 -0
- package/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +11 -0
- package/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +8 -0
- package/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +11 -0
- package/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +8 -0
- package/lib/anna-core-shared-lib/constants/shared.constant.d.ts +32 -0
- package/lib/anna-core-shared-lib/index.d.ts +1 -0
- package/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +8 -0
- package/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +95 -0
- package/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +70 -0
- package/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +21 -0
- package/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +9 -0
- package/lib/anna-core-shared-lib/public-api.d.ts +18 -0
- package/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +25 -0
- package/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +68 -0
- package/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +14 -0
- package/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +21 -0
- package/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +23 -0
- package/lib/anna-dropdown-lib/anna-dropdown-lib.module.d.ts +11 -0
- package/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +29 -0
- package/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +67 -0
- package/lib/anna-dropdown-lib/index.d.ts +1 -0
- package/lib/anna-dropdown-lib/public-api.d.ts +3 -0
- package/lib/anna-generic-table-lib/anna-generic-table-lib.module.d.ts +21 -0
- package/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +171 -0
- package/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +27 -0
- package/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +141 -0
- package/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.d.ts +89 -0
- package/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts +1 -0
- package/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +45 -0
- package/lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts +1 -0
- package/lib/anna-generic-table-lib/index.d.ts +1 -0
- package/lib/anna-generic-table-lib/public-api.d.ts +6 -0
- package/package.json +61 -0
- package/public-api.d.ts +3 -0
- package/src/lib/anna-core-shared-lib/anna-core-shared-lib.module.d.ts +14 -0
- package/src/lib/anna-core-shared-lib/annalib-anna-core-src-lib-anna-core-shared-lib.d.ts +5 -0
- package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +8 -0
- package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +8 -0
- package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +11 -0
- package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +8 -0
- package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +11 -0
- package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +8 -0
- package/src/lib/anna-core-shared-lib/constants/shared.constant.d.ts +32 -0
- package/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +8 -0
- package/src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +95 -0
- package/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +70 -0
- package/src/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +21 -0
- package/src/lib/anna-core-shared-lib/package.json +10 -0
- package/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +9 -0
- package/src/lib/anna-core-shared-lib/public-api.d.ts +18 -0
- package/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +25 -0
- package/src/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +68 -0
- package/src/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +14 -0
- package/src/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +21 -0
- package/src/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +23 -0
- package/src/lib/anna-dropdown-lib/anna-dropdown-lib.module.d.ts +11 -0
- package/src/lib/anna-dropdown-lib/annalib-anna-core-src-lib-anna-dropdown-lib.d.ts +5 -0
- package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +29 -0
- package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +67 -0
- package/src/lib/anna-dropdown-lib/package.json +10 -0
- package/src/lib/anna-dropdown-lib/public-api.d.ts +3 -0
- package/src/lib/anna-generic-table-lib/anna-generic-table-lib.module.d.ts +21 -0
- package/src/lib/anna-generic-table-lib/annalib-anna-core-src-lib-anna-generic-table-lib.d.ts +5 -0
- package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +171 -0
- package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +27 -0
- package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +141 -0
- package/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.d.ts +89 -0
- package/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts +1 -0
- package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +45 -0
- package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts +1 -0
- package/src/lib/anna-generic-table-lib/package.json +10 -0
- package/src/lib/anna-generic-table-lib/public-api.d.ts +6 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annalib-anna-core-src-lib-anna-generic-table-lib.mjs","sources":["../../../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-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-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-generic-table-lib/anna-generic-table-lib.module.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/public-api.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/annalib-anna-core-src-lib-anna-generic-table-lib.ts"],"sourcesContent":["// Angular import statements\r\nimport { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\r\n\r\n// Third party import statements\r\nimport { cloneDeep } from \"lodash-es\";\r\n\r\n// User defined import statements\r\n\r\n//sub-entries of anna lib import statement\r\nimport { AnnaSortService } from \"@annalib/anna-core/src/lib/anna-core-shared-lib\";;\r\n\r\n\r\n\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})\r\nexport class AnnaSortComponent {\r\n @Input() data: any;\r\n @Input() sortBy: string;\r\n @Input() disableSort: boolean;\r\n @Input(\"placement\") placement: string;\r\n selectedRadio: string;\r\n clonedData: any[];\r\n firstSortApplied: boolean = false;\r\n @Output(\"sort\") sortedData = new EventEmitter();\r\n\r\n constructor(public annaSortService: AnnaSortService) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(!this.firstSortApplied && changes['data'] && changes['data'].currentValue){\r\n this.clonedData = cloneDeep(this.data);\r\n }\r\n }\r\n\r\n isFirstTimeSorting(){\r\n this.firstSortApplied = true;\r\n this.clonedData = cloneDeep(this.data);\r\n }\r\n\r\n sortByAscending() {\r\n if (!this.firstSortApplied) {\r\n this.isFirstTimeSorting();\r\n }\r\n\r\n const isAsc = true;\r\n\r\n if (this.sortBy === \"dates\") {\r\n this.sortBy = \"startDate\";\r\n }\r\n this.setAscState();\r\n this.setDescState();\r\n this.annaSortService.sortByAsc.set(this.sortBy, true);\r\n this.annaSortService.isAsc = true;\r\n this.annaSortService.keySorted = this.sortBy;\r\n this.sortedData.emit(this.annaSortService.sort(isAsc, this.data, this.sortBy));\r\n this.closeTooltip();\r\n }\r\n\r\n sortByDescending() {\r\n if (!this.firstSortApplied) {\r\n this.isFirstTimeSorting();\r\n }\r\n const isAsc = false;\r\n if (this.sortBy === \"dates\") {\r\n this.sortBy = \"endDate\";\r\n }\r\n\r\n this.setDescState();\r\n this.setAscState();\r\n this.annaSortService.sortByDesc.set(this.sortBy, true);\r\n this.annaSortService.isAsc = false;\r\n this.annaSortService.keySorted = this.sortBy;\r\n this.sortedData.emit(this.annaSortService.sort(isAsc, this.data, this.sortBy));\r\n this.closeTooltip();\r\n }\r\n\r\n setAscState() {\r\n this.annaSortService.sortByAsc.forEach((value, key) => {\r\n this.annaSortService.sortByAsc.set(key, false);\r\n });\r\n }\r\n\r\n setDescState() {\r\n this.annaSortService.sortByDesc.forEach((value, key) => {\r\n this.annaSortService.sortByDesc.set(key, false);\r\n });\r\n }\r\n\r\n removeSorting() {\r\n this.firstSortApplied = false;\r\n this.annaSortService.sortByAsc = new Map();\r\n this.annaSortService.sortByDesc = new Map();\r\n this.sortedData.emit({ data: this.clonedData, type: \"none\" });\r\n this.closeTooltip();\r\n }\r\n\r\n bindTheValueToToolTip(tooltip: any) {\r\n if (this.annaSortService.tooltip == tooltip) {\r\n this.closeTooltip();\r\n } else {\r\n this.closeTooltip();\r\n this.annaSortService.tooltip = tooltip;\r\n this.annaSortService.tooltip.open();\r\n this.selectRadioButton();\r\n }\r\n }\r\n\r\n selectRadioButton() {\r\n if (this.annaSortService.sortByAsc.has(this.sortBy) && this.annaSortService.sortByAsc.get(this.sortBy)) {\r\n this.selectedRadio = \"ascending\";\r\n } else if (this.annaSortService.sortByDesc.has(this.sortBy) && this.annaSortService.sortByDesc.get(this.sortBy)) {\r\n this.selectedRadio = \"descending\";\r\n } else {\r\n this.selectedRadio = \"none\";\r\n }\r\n }\r\n\r\n closeTooltip() {\r\n if (this.annaSortService.tooltip && this.annaSortService.tooltip.isOpen()) {\r\n this.annaSortService.tooltip.close();\r\n }\r\n this.annaSortService.tooltip = null;\r\n }\r\n}\r\n","<p class=\"sort\">\r\n <i\r\n class=\"mdi mdi-sort\"\r\n [ngClass]=\"{\r\n active: this.annaSortService.sortByDesc.get(this.sortBy) || this.annaSortService.sortByAsc.get(this.sortBy),\r\n disable: disableSort\r\n }\"\r\n [ngbTooltip]=\"sortTooltip\"\r\n placement=\"{{ placement != undefined ? 'auto' : 'bottom' }}\"\r\n container=\"body\"\r\n [autoClose]=\"true\"\r\n triggers=\"manual\"\r\n #sort=\"ngbTooltip\"\r\n (click)=\"bindTheValueToToolTip(sort)\"\r\n ></i>\r\n</p>\r\n\r\n<ng-template #sortTooltip>\r\n <section class=\"sort-container\">\r\n <div>\r\n <input\r\n type=\"radio\"\r\n id=\"ascending\"\r\n [ngModel]=\"selectedRadio\"\r\n name=\"sortToolTip\"\r\n value=\"ascending\"\r\n (click)=\"sortByAscending()\"\r\n />\r\n <label for=\"ascending\">Ascending</label>\r\n </div>\r\n <div>\r\n <input\r\n type=\"radio\"\r\n id=\"descending\"\r\n [ngModel]=\"selectedRadio\"\r\n name=\"sortToolTip\"\r\n value=\"descending\"\r\n (click)=\"sortByDescending()\"\r\n />\r\n <label for=\"descending\">Descending</label>\r\n </div>\r\n <div>\r\n <input type=\"radio\" id=\"none\" [ngModel]=\"selectedRadio\" name=\"sortToolTip\" value=\"none\" (click)=\"removeSorting()\" />\r\n <label for=\"none\">None</label>\r\n </div>\r\n </section>\r\n</ng-template>\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 { AnnaGenericTableService } from \"@annalib/anna-core/src/lib/anna-core-shared-lib\";\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: AnnaGenericTableService\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 \"@annalib/anna-core/src/lib/anna-core-shared-lib\";\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","\r\n// Angular import statements\r\nimport { Component, OnInit, Input, ViewChildren, QueryList, Output, EventEmitter, SimpleChanges, OnChanges, ChangeDetectorRef } from '@angular/core';\r\n\r\n// Third party import statements\r\nimport moment from \"moment\";\r\nimport { NgbDate } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Options } from '@angular-slider/ngx-slider';\r\nimport { cloneDeep, isEqual, map, uniq } from \"lodash-es\";\r\n\r\n// User defined import statements\r\nimport { AnnaSortComponent } from '../anna-sort/anna-sort.component';\r\n\r\n//sub-entries of anna lib import statement\r\nimport { SellerGroupHierarchy,IWeekCalendar,radioButtonModel,AnnaSortService,AnnaDateTimeFormatService, NgbDateType, AnnaFilterService, IGtGeneralConfig, IGtTableHeader, ITotalRowInfo, AnnaGenericTableService } from \"@annalib/anna-core/src/lib/anna-core-shared-lib\";\r\n\r\n\r\n@Component({\r\n selector: 'anna-core-non-editable-generic-table-lib',\r\n templateUrl: './anna-non-editable-generic-table.component.html',\r\n styleUrls: ['./anna-non-editable-generic-table.component.scss']\r\n})\r\nexport class AnnaNonEditableGenericTableComponent implements OnInit, OnChanges {\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() numberOfSkeletonRows: number[]; //this is not being used.\r\n @Input() numberOfSkeletonColumns: number[][];\r\n @Input() gtGeneralConfig: IGtGeneralConfig;\r\n @Input() totalRowInfo?: ITotalRowInfo[];\r\n @Input() gtDimension: { rowHeight: number, tableHeight: string, headerHeight: number };\r\n @Input() tableClass: string;\r\n @Input() maximumRowsWhichCanBeRenderedWithoutScroll: number = 5;\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\r\n\r\n tableDataWrapper: any[];\r\n rowChecked: boolean;\r\n isAllRowsChecked: boolean;\r\n noDataWidth: string = \"55%\";\r\n markedForCreditStatus: string;\r\n markedForMGStatus: string;\r\n\r\n //Sort and Filter\r\n toolTipdata: any;\r\n tempTooltipData: any;\r\n tooltipRadioTextMap: Map<any, any>;\r\n radioButtons: any[];\r\n tooltip: any;\r\n clonedTooltipData: any;\r\n clonedTooltipSelectedMapData: any;\r\n searchBar: string;\r\n disableClearAllBtn: boolean = true;\r\n disableColumnClearAllBtn: boolean = true;\r\n allSelected = 0;\r\n showAll: boolean;\r\n disableCheckboxApply: boolean;\r\n disableSliderApplyButton: boolean;\r\n disableTimeApplyButton: boolean;\r\n\r\n // Slider Filter\r\n sliderMinValue: number;\r\n sliderMaxValue: number;\r\n options: Options = {\r\n floor: 0,\r\n ceil: 0,\r\n step: 0.1\r\n };\r\n sliderValue: { min: number, max: number };\r\n sliderFilterTextBoxStep: string;\r\n\r\n // Calendar Filter\r\n calendarMinEnabledDate: NgbDateType;\r\n calendarMaxEnabledDate: NgbDateType;\r\n selectedMinDate: NgbDateType;\r\n selectedMaxDate: NgbDateType;\r\n\r\n //Week Filter\r\n multiWeekPickerConfig: IWeekCalendar;\r\n\r\n //Time Filter\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 hierarchyTooltip: { open: () => void; close: () => void; };\r\n sellerGroupHierarchy: SellerGroupHierarchy[];\r\n showCheckboxFilterRadioButtons: boolean;\r\n\r\n @ViewChildren(AnnaSortComponent) sortComponent: QueryList<AnnaSortComponent>;\r\n isScrolledLeft: boolean = false;\r\n rowBorderWidth: number = 2;\r\n PfpIconActiveColor = \"#9B1B93\"\r\n PfpIconDisableColor = \"rgba(189,189,189,0.5)\";\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 private annaGenericTableService: AnnaGenericTableService\r\n ) {\r\n this.setTooltipRadioNames();\r\n }\r\n\r\n ngOnInit() {\r\n // this.tableData = this.numberOfSkeletonColumns;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n // console.log(\"generic\");\r\n // console.log(this.tableHeaders);\r\n // console.log(JSON.stringify(this.tableData));\r\n if (this.showSkeletonLoading) {\r\n this.tableData = this.numberOfSkeletonColumns;\r\n }\r\n else {\r\n this.setInitialValueMapData();\r\n this.disableEnableEachColumnFilters();\r\n this.tableColumns = this.tableHeaders.filter(x => x.visible).map(x => x.headerInfo[0].objectKey);\r\n this.showSkeletonLoading = false;\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'] && changes['tableHeaders'].currentValue) {\r\n this.tableColumns = this.tableHeaders.filter(x => x.visible).map(x => x.headerInfo[0].objectKey)\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\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(\"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\", \"Buyer 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\", \"Pending Audience 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(\"userChanges\", \"Other changes\");\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(\"rcvPreempt\", \"Madegood PE\");\r\n this.tooltipRadioTextMap.set(\"osPreempt\", \"O/S PE\");\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(\"productCode\", \"Product Code\");\r\n this.tooltipRadioTextMap.set(\"buyerOrderId\", \"ALT 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\",\"Audience Deficit\");\r\n this.tooltipRadioTextMap.set(\"postedAudPercent\",\"Posted Audience %\");\r\n }\r\n\r\n generateTableDataWrapper() {\r\n this.showSkeletonLoading = true;\r\n this.tableDataWrapper = [];\r\n let rowObject: any;\r\n let columnName: string;\r\n let columnObject: { [x: string]: any; };\r\n let columnObjectKey;\r\n let keysUsedForTableDisplay: string[];\r\n let keysUsedForColumn: string[];\r\n let additionalInfoObject: { [x: string]: any; };\r\n let additionalKeys;\r\n this.tableData.forEach((obj: { [x: string]: any; }) => {\r\n rowObject = {};\r\n keysUsedForTableDisplay = [];\r\n for (var colNum in this.tableHeaders) {\r\n columnObject = {};\r\n if (!this.tableHeaders[colNum].visible) {\r\n continue;\r\n }\r\n columnName = \"\";\r\n keysUsedForColumn = [];\r\n this.tableHeaders[colNum].headerInfo.forEach((header) => {\r\n if (header.typeOfBodyData === \"STRING\") {\r\n columnObjectKey = header.objectKey;\r\n columnObject[columnObjectKey] = obj[columnObjectKey];\r\n keysUsedForTableDisplay.push(columnObjectKey);\r\n keysUsedForColumn.push(columnObjectKey);\r\n }\r\n else if (header.typeOfBodyData === \"ICON\") {\r\n columnObjectKey = header.typeOfBodyData;\r\n columnObject[columnObjectKey] = obj[header.objectKey];\r\n keysUsedForColumn.push(header.objectKey);\r\n }\r\n else if (header.typeOfBodyData === \"CHECKBOX\") {\r\n columnObjectKey = header.typeOfBodyData;\r\n columnObject[columnObjectKey] = obj[header.objectKey];\r\n keysUsedForColumn.push(header.objectKey);\r\n }\r\n })\r\n for (var i = 0; i < keysUsedForColumn.length; i++) {\r\n columnName += keysUsedForColumn[i];\r\n if (i !== keysUsedForColumn.length - 1) {\r\n columnName += ',';\r\n }\r\n }\r\n rowObject[columnName] = columnObject;\r\n }\r\n additionalInfoObject = {};\r\n additionalKeys = Object.keys(obj).filter(key => !keysUsedForTableDisplay.includes(key));\r\n additionalKeys.forEach(key => {\r\n additionalInfoObject[key] = obj[key];\r\n })\r\n rowObject.AdditionalInfo = additionalInfoObject;\r\n this.tableDataWrapper.push(rowObject);\r\n })\r\n this.tableData = this.tableDataWrapper;\r\n this.showSkeletonLoading = false;\r\n // console.log(JSON.stringify(this.tableDataWrapper));\r\n }\r\n\r\n\r\n selectOrUnselectCheckbox(rowData: any, columnKeys: any, isCheckboxSelected: any) {\r\n this.toggleCheckbox.emit({ rowData, columnKeys, isCheckboxSelected });\r\n }\r\n\r\n selectUnselectAllRows() {\r\n this.toggleHeaderCheckbox.emit();\r\n }\r\n\r\n selectUnselectRow(rowData: any) {\r\n this.toggleRowCheckbox.emit(rowData);\r\n }\r\n\r\n undoCreditedSpot(data: any) {\r\n this.undoIconClicked.emit({ data, mgOrCredit: \"Credit\" });\r\n }\r\n\r\n undoMgSpot(data: any) {\r\n this.undoIconClicked.emit({ data, mgOrCredit: \"MakeGood\" });\r\n }\r\n\r\n //Sort and Filter Logic begins!\r\n closeTooltip() {\r\n if (this.tooltip && this.tooltip.isOpen()) {\r\n this.tooltip.close();\r\n }\r\n this.tooltip = null;\r\n this.disableCheckboxApply = false;\r\n if (!this.bindValueFuncCalled) {\r\n this.columnFilterClosed.emit();\r\n }\r\n }\r\n\r\n closeSortTooltip() {\r\n if (this.annaSortService.tooltip && this.annaSortService.tooltip.isOpen()) {\r\n this.annaSortService.tooltip.close();\r\n }\r\n }\r\n\r\n initFilters() {\r\n this.annaFilterService.tooltipMap = new Map();\r\n this.annaFilterService.tooltipSelectedMap = new Map();\r\n this.annaSortService.sortByAsc = new Map();\r\n this.annaSortService.sortByDesc = new Map();\r\n this.annaFilterService.selectedRadio = null;\r\n this.annaFilterService.appliedFiltersArray = [];\r\n //closing the sort tooltip if we route on the same route or if we click dropdown filters\r\n this.closeSortTooltip();\r\n this.annaSortService.tooltip = null;\r\n this.disableClearAllBtn = true;\r\n this.disableTimeFilterApplyBtn = false;\r\n }\r\n\r\n setInitialValueMapData() {\r\n this.annaFilterService.initialValueMap = new Map();\r\n this.tableHeaders.forEach((column) => {\r\n column.headerInfo.forEach((header) => {\r\n if (header.filter === \"SLIDER\") {\r\n header.filterObjectKeys.forEach((key) => {\r\n let min = this.annaFilterService.returnMaxAndMinValue(this.clonedTableData, key, true);\r\n let max = this.annaFilterService.returnMaxAndMinValue(this.clonedTableData, key, false);\r\n let obj = { min, max };\r\n\r\n this.annaFilterService.initialValueMap.set(key, obj);\r\n })\r\n }\r\n else if (header.filter === \"DATE\") {\r\n header.filterObjectKeys.forEach((key) => {\r\n if(key == \"period\"){\r\n const minMaxStartDate = this.annaFilterService.returnMinAndMaxDate(this.clonedTableData, \"startDate\");\r\n const minMaxEndDate = this.annaFilterService.returnMinAndMaxDate(this.clonedTableData, \"endDate\");\r\n let dateObj = { minSelectedDate: minMaxStartDate[0], maxSelectedDate: minMaxEndDate[1] };\r\n this.annaFilterService.initialValueMap.set(key, dateObj); \r\n }\r\n else{\r\n const minMaxDate = this.annaFilterService.returnMinAndMaxDate(this.clonedTableData, key);\r\n let obj = { minSelectedDate: minMaxDate[0], maxSelectedDate: minMaxDate[1] };\r\n this.annaFilterService.initialValueMap.set(key, obj);\r\n }\r\n })\r\n }\r\n else if (header.filter === \"TIME\") {\r\n header.filterObjectKeys.forEach((key) => {\r\n let data = this.clonedTableData.filter((obj: { [x: string]: string; }) => ![\"\", \"-\", null, \"0\", \"<multi>\"].includes(obj[key]));\r\n let timeArr = map(data, key);\r\n timeArr.sort((a, b) => {\r\n return this.annaDateTimeFormatService.sortByTimeAscending(a, b);\r\n });\r\n let obj = {\r\n fromTime: timeArr[0],\r\n toTime: timeArr[timeArr.length - 1],\r\n };\r\n if (this.gtGeneralConfig.component === \"SPOTDETAILS\" || this.gtGeneralConfig.component === \"EXCLUDEINVENTORYPOPUP\") {\r\n let includeMulti = this.clonedTableData.findIndex((obj: { [x: string]: string; }) => obj[key] == \"<multi>\") != -1;\r\n let includeZero = this.clonedTableData.findIndex((obj: { [x: string]: string; }) => obj[key] == \"0\") != -1;\r\n let includeTimeRange = this.clonedTableData.findIndex((obj: { [x: string]: string; }) => obj[key] != \"0\" && obj[key] != \"<multi>\") != -1;\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 this.annaFilterService.initialValueMap.set(key, obj);\r\n }\r\n else if (this.gtGeneralConfig.component === \"RATING\") {\r\n let includeMulti = this.clonedTableData.findIndex((obj: any) => obj[key][0] == \"<multi>\") != -1;\r\n let includeZero = this.clonedTableData.findIndex((obj: { [x: string]: string[]; }) => obj[key][0] == \"0\") != -1;\r\n let includeTimeRange = this.clonedTableData.findIndex((obj: { [x: string]: string[]; }) => obj[key][0] != \"0\" && obj[key][0] != \"<multi>\") != -1;\r\n\r\n let startTimeArr = map(this.clonedTableData, \"startTime\");\r\n let endTimeArr = map(this.clonedTableData, \"endTime\");\r\n\r\n startTimeArr.sort((a, b) => {\r\n return this.annaDateTimeFormatService.sortByTimeAscending(a, b);\r\n });\r\n\r\n endTimeArr.sort((a, b) => {\r\n return this.annaDateTimeFormatService.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 this.annaFilterService.initialValueMap.set(key, obj);\r\n\r\n }\r\n else {\r\n this.annaFilterService.initialValueMap.set(key, obj);\r\n }\r\n })\r\n }\r\n })\r\n })\r\n }\r\n\r\n isTooltipActive(header: any[]) {\r\n return this.annaFilterService.isTooltipActive(header);\r\n }\r\n\r\n bindTheValueToToolTip(tooltip: any, header: any[]) {\r\n\r\n this.bindValueFuncCalled = true;\r\n let containerToScroll;\r\n if (this.gtGeneralConfig.component === \"SPOTDETAILS\" || this.gtGeneralConfig.component === \"DRRLISTING\") {\r\n containerToScroll = document.getElementsByClassName(\"scrollable-container\")[0];\r\n var mediaQuery = window.matchMedia(\"(max-width: 1366px)\");\r\n if (mediaQuery.matches) {\r\n containerToScroll.scroll(0, this.gtGeneralConfig.verticalScrollOffsetForFilterTooltip);\r\n }\r\n }\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 this.searchBar = '';\r\n let enabledHeaders: any[] = [];\r\n header.forEach((item: string | number) => {\r\n if(item == \"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 if(uniqStartDate.length > 1 || uniqEndDate.length > 1 || this.isTooltipActive([item])){\r\n enabledHeaders.push(item);\r\n }\r\n }\r\n else if(uniq(this.tableData.map((u:{ [x: string]: any; }) => u[item])).length > 1 || this.isTooltipActive([item])){\r\n enabledHeaders.push(item);\r\n }\r\n });\r\n this.openTooltip(tooltip, enabledHeaders);\r\n if (window.innerWidth < 1500 && window.innerHeight < 768 && !this.annaFilterService.sliderSet.has(header[0])) {\r\n this.columnFilterOpened.emit();\r\n }\r\n\r\n this.showCheckboxFilterRadioButtons = enabledHeaders.length > 1;\r\n\r\n this.populateTooltipDataBasedOnSelectedRadio(enabledHeaders[0]);\r\n this.bindValueFuncCalled = false;\r\n }\r\n }\r\n\r\n openTooltip(tooltip: any, header: any[]) {\r\n this.closeTooltip();\r\n this.tooltip = tooltip;\r\n this.tooltip.open();\r\n //convert key into the header\r\n this.radioButtons = header.map((key: any) => {\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);\r\n });\r\n }\r\n\r\n clearColumnFilter() {\r\n this.annaFilterService.clearColumnFilter();\r\n this.toolTipdata = null;\r\n this.tempTooltipData = null;\r\n this.closeTooltip();\r\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, \"\");\r\n this.checkIfSortingIsApplied();\r\n this.filterAppliedToTable.emit(this.tableData);\r\n this.disableEnableEachColumnFilters();\r\n }\r\n\r\n populateTooltipDataBasedOnSelectedRadio(header: string) {\r\n\r\n this.disableSliderApplyButton = false;\r\n this.disableCheckboxApply = false;\r\n if (this.toolTipdata) {\r\n this.revert();\r\n }\r\n\r\n this.annaFilterService.selectedRadio = header;\r\n let selectedFilterSet = new Set(this.annaFilterService.appliedFiltersArray);\r\n this.disableColumnClearAllBtn = selectedFilterSet.has(this.annaFilterService.selectedRadio) ? false : true;\r\n if (this.annaFilterService.calendarSet.has(header)) {\r\n this.getCalendarData();\r\n } else if (this.annaFilterService.sliderSet.has(header)) {\r\n this.getSliderData(header);\r\n } else if (this.annaFilterService.timeSet.has(header)) {\r\n this.getTimeFilterData(header);\r\n } else {\r\n this.getCheckboxData(header);\r\n }\r\n }\r\n\r\n getSliderData(header: string) {\r\n\r\n if (header === \"Rate\") {\r\n this.annaFilterService.translateFunc = \"currency\";\r\n }\r\n else {\r\n this.annaFilterService.translateFunc = \"normal\";\r\n }\r\n this.options = this.annaFilterService.populateSliderTooltip(this.clonedTableData, this.tableData);\r\n\r\n this.disableSliderApplyButton = this.disableSliderApplyBtn();\r\n let selectedTooltipObj;\r\n if (this.annaFilterService.tooltipSelectedMap.has(header)) {\r\n selectedTooltipObj = this.annaFilterService.tooltipSelectedMap.get(header);\r\n }\r\n else {\r\n selectedTooltipObj = this.annaFilterService.initialValueMap.get(header);\r\n }\r\n\r\n this.sliderMinValue = selectedTooltipObj.min < this.options.floor ? this.options.floor : selectedTooltipObj.min;\r\n this.sliderMaxValue = selectedTooltipObj.max < this.options.ceil ? selectedTooltipObj.max : this.options.ceil;\r\n //default step values\r\n this.options.step = 1;\r\n this.sliderFilterTextBoxStep = \"1\";\r\n if (header !== \"WeekNumber\") {\r\n this.options.step = 0.1;\r\n this.sliderFilterTextBoxStep = \"0.1\";\r\n }\r\n }\r\n\r\n getCheckboxData(header: string) {\r\n this.tempTooltipData = this.annaFilterService.populateTooltip(header, this.clonedTableData, this.tableData);\r\n this.allSelected = this.annaFilterService.isAllOptionsSelected();\r\n this.showAll = this.tempTooltipData.filter((x: { isHidden: any; }) => !x.isHidden).length > 1 ? true : false;\r\n this.toolTipdata = cloneDeep(this.tempTooltipData);\r\n }\r\n\r\n getCalendarData() {\r\n const parsingFormat = \"MM/DD/YYYY\";\r\n let minMaxdate: any = this.annaFilterService.populateDatePickerTooltipWithData(this.clonedTableData, this.tableData);\r\n let selectedDateObj;\r\n if (this.annaFilterService.tooltipSelectedMap.has(this.annaFilterService.selectedRadio)) {\r\n selectedDateObj = this.annaFilterService.tooltipSelectedMap.get(this.annaFilterService.selectedRadio);\r\n }\r\n else {\r\n selectedDateObj = this.annaFilterService.initialValueMap.get(this.annaFilterService.selectedRadio);\r\n }\r\n\r\n // For startDate\r\n // selected date is less than date which we get\r\n if ((selectedDateObj.minSelectedDate).isAfter(minMaxdate.minStartDate)) {\r\n this.selectedMinDate = this.annaDateTimeFormatService.convertToNgbDate(selectedDateObj.minSelectedDate, parsingFormat);\r\n }\r\n else {\r\n this.selectedMinDate = this.annaDateTimeFormatService.convertToNgbDate(minMaxdate.minStartDate, parsingFormat);\r\n }\r\n\r\n // For endData\r\n // selectedDate is less than date which we get\r\n if ((selectedDateObj.maxSelectedDate).isAfter(minMaxdate.maxEndDate)) {\r\n this.selectedMaxDate = this.annaDateTimeFormatService.convertToNgbDate(minMaxdate.maxEndDate, parsingFormat);\r\n }\r\n else {\r\n this.selectedMaxDate = this.annaDateTimeFormatService.convertToNgbDate(selectedDateObj.maxSelectedDate, parsingFormat);\r\n }\r\n\r\n this.calendarMinEnabledDate = this.annaDateTimeFormatService.convertToNgbDate(minMaxdate.minStartDate, parsingFormat);\r\n this.calendarMaxEnabledDate = this.annaDateTimeFormatService.convertToNgbDate(minMaxdate.maxEndDate, parsingFormat);\r\n }\r\n\r\n getTimeFilterData(header: string): void {\r\n if (this.annaFilterService.tooltipSelectedMap.has(header)) {\r\n this.selectedFromTime = this.annaFilterService.tooltipSelectedMap.get(header).fromTime;\r\n this.selectedToTime = this.annaFilterService.tooltipSelectedMap.get(header).toTime;\r\n } else {\r\n this.selectedFromTime = this.annaFilterService.initialValueMap.get(header).fromTime;\r\n this.selectedToTime = this.annaFilterService.initialValueMap.get(header).toTime;\r\n }\r\n if (this.selectedFromTime != undefined || this.selectedToTime != undefined) {\r\n this.selectedFromTime = this.annaDateTimeFormatService.formatToTwelveHrs(this.selectedFromTime, true);\r\n this.selectedToTime = this.annaDateTimeFormatService.formatToTwelveHrs(this.selectedToTime, true);\r\n\r\n this.clonedSelectedFromTime = cloneDeep(this.selectedFromTime);\r\n this.clonedSelectedToTime = cloneDeep(this.selectedToTime);\r\n }\r\n else {\r\n this.selectedFromTime = [\"-\", \"-\", \"-\"];\r\n this.selectedToTime = [\"-\", \"-\", \"-\"];\r\n this.disableTimeFilterApplyBtn = true;\r\n }\r\n\r\n if (this.gtGeneralConfig.component === \"SPOTDETAILS\" || this.gtGeneralConfig.component === \"EXCLUDEINVENTORYPOPUP\") {\r\n this.showMultiTimeCheckbox = false;\r\n this.showZeroTimeCheckbox = false;\r\n this.showEnterTimeCheckbox = false;\r\n\r\n if (this.clonedTableData.findIndex((obj: any) => obj[header] == \"0\") != -1) {\r\n this.showZeroTimeCheckbox = true;\r\n this.annaFilterService.includeZeroTime = this.tableData.findIndex((obj: any) => obj[header] == \"0\") != -1;\r\n this.zeroTimeCheckboxChecked = this.annaFilterService.includeZeroTime;\r\n }\r\n if (this.clonedTableData.findIndex((obj: any) => obj[header] == \"<multi>\") != -1) {\r\n this.showMultiTimeCheckbox = true;\r\n this.annaFilterService.includeMultiTime = this.tableData.findIndex((obj: any) => obj[header] == \"<multi>\") != -1;\r\n this.multiTimeCheckboxChecked = this.annaFilterService.includeMultiTime;\r\n }\r\n if (this.showZeroTimeCheckbox || this.showMultiTimeCheckbox) {\r\n this.showEnterTimeCheckbox = true;\r\n }\r\n if (this.clonedTableData.findIndex((obj: any) => obj[header] != \"<multi>\" && obj[header] != \"0\") != -1) {\r\n this.annaFilterService.includeTimeRange = this.tableData.findIndex((obj: any) => obj[header] != \"<multi>\" && obj[header] != \"0\") != -1;\r\n this.enterTimeCheckboxChecked = this.annaFilterService.includeTimeRange;\r\n }\r\n }\r\n else if (this.gtGeneralConfig.component === \"RATING\") {\r\n this.showMultiTimeCheckbox = false;\r\n this.showZeroTimeCheckbox = false;\r\n this.showEnterTimeCheckbox = false;\r\n\r\n if (this.clonedTableData.findIndex((obj: any) => obj[header][0] == \"0\") != -1) {\r\n this.showZeroTimeCheckbox = true;\r\n this.annaFilterService.includeZeroTime = this.tableData.findIndex((obj: any) => obj[header][0] == \"0\") != -1;\r\n this.zeroTimeCheckboxChecked = this.annaFilterService.includeZeroTime;\r\n }\r\n if (this.clonedTableData.findIndex((obj: any) => obj[header][0] == \"<multi>\") != -1) {\r\n this.showMultiTimeCheckbox = true;\r\n this.annaFilterService.includeMultiTime = this.tableData.findIndex((obj: any) => obj[header][0] == \"<multi>\") != -1;\r\n this.multiTimeCheckboxChecked = this.annaFilterService.includeMultiTime;\r\n }\r\n if (this.showZeroTimeCheckbox || this.showMultiTimeCheckbox) {\r\n this.showEnterTimeCheckbox = true;\r\n }\r\n if (this.clonedTableData.findIndex((obj: any) => obj[header][0] != \"<multi>\" && obj[header][0] != \"0\") != -1) {\r\n this.annaFilterService.includeTimeRange = this.tableData.findIndex((obj: any) => obj[header][0] != \"<multi>\" && obj[header][0] != \"0\") != -1;\r\n this.enterTimeCheckboxChecked = this.annaFilterService.includeTimeRange;\r\n }\r\n\r\n }\r\n }\r\n\r\n selectOrUnselectMultiTimeCheckbox() {\r\n this.multiTimeCheckboxChecked = !this.multiTimeCheckboxChecked;\r\n this.annaFilterService.includeMultiTime = !this.annaFilterService.includeMultiTime;\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n selectOrUnselectZeroTimeCheckbox() {\r\n this.zeroTimeCheckboxChecked = !this.zeroTimeCheckboxChecked;\r\n this.annaFilterService.includeZeroTime = !this.annaFilterService.includeZeroTime;\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n selectOrUnselectEnterTimeCheckbox() {\r\n this.enterTimeCheckboxChecked = !this.enterTimeCheckboxChecked;\r\n this.annaFilterService.includeTimeRange = !this.annaFilterService.includeTimeRange;\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n disableSliderApplyBtn() {\r\n return this.options.floor === this.options.ceil;\r\n }\r\n\r\n isCheckboxSelected(data: boolean | number) {\r\n this.allSelected = this.annaFilterService.isCheckboxSelected(data);\r\n if (this.annaFilterService.tooltipMap.get(this.annaFilterService.selectedRadio).filter((x: any) => x.isSelected && !x.isHidden).length == 0) {\r\n this.disableCheckboxApply = true;\r\n } else {\r\n this.disableCheckboxApply = false;\r\n }\r\n }\r\n\r\n minValueChanged(value: string) {\r\n if (isNaN(+value)) {\r\n this.sliderMinValue = +this.options.floor;\r\n }\r\n else {\r\n if (+value > this.sliderMaxValue) {\r\n this.sliderMinValue = this.sliderMaxValue;\r\n }\r\n else if (+value < this.options.floor) {\r\n this.sliderMinValue = this.options.floor;\r\n } else {\r\n this.sliderMinValue = +value;\r\n }\r\n }\r\n }\r\n\r\n maxValueChanged(value: string) {\r\n if (isNaN(+value)) {\r\n this.sliderMaxValue = +this.options.ceil;\r\n }\r\n else {\r\n if (+value < this.sliderMinValue) {\r\n this.sliderMaxValue = this.sliderMinValue;\r\n }\r\n else if (+value > this.options.ceil) {\r\n this.sliderMinValue = this.options.ceil;\r\n } else {\r\n this.sliderMaxValue = +value;\r\n }\r\n }\r\n }\r\n\r\n sliderValueChange() {\r\n this.sliderValue = { min: this.sliderMinValue, max: this.sliderMaxValue };\r\n }\r\n\r\n cancelSliderFilter() {\r\n this.sliderValue = null;\r\n this.closeTooltip();\r\n }\r\n\r\n allOptionClicked() {\r\n if (this.allSelected == 0 || this.allSelected == 2) {\r\n this.allSelected = 1;\r\n this.disableCheckboxApply = false;\r\n } else {\r\n this.allSelected = 0;\r\n this.disableCheckboxApply = true;\r\n }\r\n this.annaFilterService.allOptionsClicked(this.allSelected);\r\n }\r\n\r\n applyFilters() {\r\n let isSame = isEqual(this.toolTipdata, this.tempTooltipData);\r\n this.toolTipdata = cloneDeep(this.tempTooltipData);\r\n this.annaFilterService.tooltipMap.set(this.annaFilterService.selectedRadio, this.tempTooltipData);\r\n if (!isSame) {\r\n this.annaFilterService.reOrderAppliedFiltersArray(false);\r\n }\r\n let tooltipSelectedDataArray = this.annaFilterService.tooltipMap.get(this.annaFilterService.selectedRadio).filter((x: { isSelected: any; }) => x.isSelected).map((x: { data: any; }) => x.data);\r\n if (tooltipSelectedDataArray.length == 0) {\r\n tooltipSelectedDataArray = this.annaFilterService.tooltipMap.get(this.annaFilterService.selectedRadio).map((x: { data: any; }) => x.data);\r\n }\r\n this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, tooltipSelectedDataArray);\r\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, \"\");\r\n this.checkIfSortingIsApplied();\r\n this.filterAppliedToTable.emit(this.tableData);\r\n // this.generateTableDataWrapper();\r\n this.disableEnableEachColumnFilters();\r\n this.closeTooltip();\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 closeCheckboxFilter() {\r\n if (this.toolTipdata) {\r\n this.revert();\r\n }\r\n this.closeTooltip();\r\n }\r\n\r\n applySliderFilter() {\r\n if (this.sliderValue) {\r\n let selectedDataObj;\r\n if (this.annaFilterService.tooltipSelectedMap.has(this.annaFilterService.selectedRadio)) {\r\n selectedDataObj = this.annaFilterService.tooltipSelectedMap.get(this.annaFilterService.selectedRadio);\r\n }\r\n else {\r\n selectedDataObj = this.annaFilterService.initialValueMap.get(this.annaFilterService.selectedRadio);\r\n }\r\n\r\n let isSame = isEqual(selectedDataObj, this.sliderValue);\r\n\r\n\r\n if (!isSame) {\r\n this.annaFilterService.sliderData = { min: this.options.floor, max: this.options.ceil };\r\n this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, this.sliderValue);\r\n this.annaFilterService.reOrderAppliedFiltersArray(false);\r\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, \"\");\r\n this.checkIfSortingIsApplied();\r\n this.filterAppliedToTable.emit(this.tableData);\r\n // this.generateTableDataWrapper();\r\n this.disableEnableEachColumnFilters();\r\n }\r\n }\r\n this.sliderValue = null;\r\n this.closeTooltip();\r\n }\r\n\r\n cancelInDateFilter() {\r\n this.closeTooltip();\r\n }\r\n\r\n applyDateFilter(selectedDate: { fromDate: NgbDate, toDate: NgbDate }) {\r\n\r\n let selectedDateObj;\r\n if (this.annaFilterService.tooltipSelectedMap.has(this.annaFilterService.selectedRadio)) {\r\n selectedDateObj = this.annaFilterService.tooltipSelectedMap.get(this.annaFilterService.selectedRadio);\r\n }\r\n else {\r\n selectedDateObj = cloneDeep(this.annaFilterService.initialValueMap.get(this.annaFilterService.selectedRadio));\r\n }\r\n\r\n let isStartDateSame = isEqual(this.annaDateTimeFormatService.convertNgbDateToMoment(selectedDate.fromDate), selectedDateObj.minSelectedDate);\r\n let isEndDateSame = isEqual(this.annaDateTimeFormatService.convertNgbDateToMoment(selectedDate.toDate), selectedDateObj.maxSelectedDate);\r\n\r\n if (!isStartDateSame || !isEndDateSame) {\r\n selectedDateObj.minSelectedDate = moment(this.annaDateTimeFormatService.convertNgbDateToMoment(selectedDate.fromDate));\r\n selectedDateObj.maxSelectedDate = moment(this.annaDateTimeFormatService.convertNgbDateToMoment(selectedDate.toDate));\r\n this.annaFilterService.flightDateRange = {\r\n minSelectedDate: moment(this.annaDateTimeFormatService.convertNgbDateToMoment(this.calendarMinEnabledDate)),\r\n maxSelectedDate: moment(this.annaDateTimeFormatService.convertNgbDateToMoment(this.calendarMaxEnabledDate))\r\n };\r\n this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, selectedDateObj);\r\n this.annaFilterService.reOrderAppliedFiltersArray(false);\r\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, \"\");\r\n this.checkIfSortingIsApplied();\r\n this.filterAppliedToTable.emit(this.tableData);\r\n // this.generateTableDataWrapper();\r\n this.disableEnableEachColumnFilters();\r\n }\r\n this.closeTooltip();\r\n }\r\n\r\n applyWeekFilter(event: any) {\r\n\r\n }\r\n\r\n incrementHour(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 decrementHour(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 incrementMinute(arr: any[]) {\r\n if (arr[1] == \"\" || parseInt(arr[1]) == 0) {\r\n arr[1] = 30;\r\n } else {\r\n arr[1] = \"00\";\r\n }\r\n }\r\n\r\n decrementMinute(arr: any) {\r\n if (arr[1] == \"\" || parseInt(arr[1]) == 30) {\r\n arr[1] = \"00\";\r\n } else {\r\n arr[1] = 30;\r\n }\r\n }\r\n\r\n changeStartTimeHour(increment: boolean) {\r\n if (increment) {\r\n this.incrementHour(this.selectedFromTime);\r\n } else {\r\n this.decrementHour(this.selectedFromTime);\r\n }\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n changeEndTimeHour(increment: boolean) {\r\n if (increment) {\r\n this.incrementHour(this.selectedToTime);\r\n } else {\r\n this.decrementHour(this.selectedToTime);\r\n }\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n changeEndTimeMinute(increment: boolean) {\r\n if (increment) {\r\n this.incrementMinute(this.selectedToTime);\r\n } else {\r\n this.decrementMinute(this.selectedToTime);\r\n }\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n changeStartTimeMinute(increment: boolean) {\r\n if (increment) {\r\n this.incrementMinute(this.selectedFromTime);\r\n } else {\r\n this.decrementMinute(this.selectedFromTime);\r\n }\r\n this.disableTimeFilterApplyButton();\r\n }\r\n\r\n applyTimeFilters() {\r\n let fromTime24HrFormatArr = this.annaDateTimeFormatService.convertTotwentyFourHrsFormat(\r\n this.selectedFromTime[0] + \":\" + this.selectedFromTime[1] + \" \" + this.selectedFromTime[2],\r\n true\r\n );\r\n let fromTime24HrFormat = fromTime24HrFormatArr[0] + \":\" + fromTime24HrFormatArr[1] + \":00\";\r\n let toTime24HrFormatArr = this.annaDateTimeFormatService.convertTotwentyFourHrsFormat(\r\n this.selectedToTime[0] + \":\" + this.selectedToTime[1] + \" \" + this.selectedToTime[2],\r\n true\r\n );\r\n let toTime24HrFormat = toTime24HrFormatArr[0] + \":\" + toTime24HrFormatArr[1] + \":00\";\r\n\r\n let previousSelectedData;\r\n if (this.annaFilterService.tooltipSelectedMap.has(this.annaFilterService.selectedRadio)) {\r\n previousSelectedData = this.annaFilterService.tooltipSelectedMap.get(this.annaFilterService.selectedRadio);\r\n } else {\r\n previousSelectedData = this.annaFilterService.initialValueMap.get(this.annaFilterService.selectedRadio);\r\n }\r\n\r\n let selectedData = {\r\n fromTime: fromTime24HrFormat, toTime: toTime24HrFormat, includeMulti: this.annaFilterService.includeMultiTime,\r\n includeZero: this.annaFilterService.includeZeroTime, includeTimeRange: this.annaFilterService.includeTimeRange\r\n };\r\n if (!isEqual(previousSelectedData, selectedData)) {\r\n this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, selectedData);\r\n this.annaFilterService.reOrderAppliedFiltersArray(false);\r\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, \"\");\r\n this.checkIfSortingIsApplied();\r\n this.filterAppliedToTable.emit(this.tableData);\r\n // this.generateTableDataWrapper();\r\n this.disableEnableEachColumnFilters();\r\n }\r\n this.closeTooltip();\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();\r\n }\r\n\r\n disableTimeFilterApplyButton() {\r\n let timeFormat = \"HH:mm:ss\";\r\n\r\n let startTime24HrFormatArr = this.annaDateTimeFormatService.convertTotwentyFourHrsFormat(\r\n this.selectedFromTime[0] + \":\" + this.selectedFromTime[1] + \" \" + this.selectedFromTime[2],\r\n true\r\n );\r\n let startTime24HrFormat = startTime24HrFormatArr[0] + \":\" + startTime24HrFormatArr[1] + \":00\";\r\n let endTime24HrFormatArr = this.annaDateTimeFormatService.convertTotwentyFourHrsFormat(\r\n this.selectedToTime[0] + \":\" + this.selectedToTime[1] + \" \" + this.selectedToTime[2],\r\n true\r\n );\r\n let endTime24HrFormat = endTime24HrFormatArr[0] + \":\" + endTime24HrFormatArr[1] + \":00\";\r\n\r\n this.disableTimeFilterApplyBtn = moment(startTime24HrFormat, timeFormat).isAfter(moment(endTime24HrFormat, timeFormat));\r\n\r\n if (!this.multiTimeCheckboxChecked && !this.zeroTimeCheckboxChecked && !this.enterTimeCheckboxChecked) {\r\n this.disableTimeFilterApplyBtn = true;\r\n }\r\n }\r\n\r\n sortedData(event: any) {\r\n if (event.type == \"none\") {\r\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, \"\");\r\n } else {\r\n this.tableData = event.data;\r\n }\r\n this.sortingAppliedToTable.emit(this.tableData);\r\n // this.generateTableDataWrapper();\r\n }\r\n\r\n checkIfSortingIsApplied() {\r\n let appliedkey;\r\n let isAsc;\r\n const arr = this.sortComponent.toArray();\r\n\r\n let obj = this.annaSortService.checkIfSortingIsApplied(this.annaSortService.sortByAsc, true);\r\n appliedkey = obj.key;\r\n isAsc = obj.setValueTo;\r\n\r\n if (!appliedkey) {\r\n let obj = this.annaSortService.checkIfSortingIsApplied(this.annaSortService.sortByDesc, false);\r\n appliedkey = obj.key;\r\n isAsc = obj.setValueTo;\r\n }\r\n\r\n if (appliedkey) {\r\n this.applySorting(arr, appliedkey, isAsc);\r\n }\r\n }\r\n\r\n applySorting(sortComponentArr: AnnaSortComponent[], appliedKey: string, isAsc: boolean) {\r\n sortComponentArr.forEach((component) => {\r\n if (component.sortBy === appliedKey) {\r\n this.setSortComponentDataProperty(component);\r\n isAsc ? component.sortByAscending() : component.sortByDescending();\r\n }\r\n });\r\n }\r\n\r\n setSortComponentDataProperty(sortComponent: AnnaSortComponent) {\r\n sortComponent.data = this.tableData;\r\n sortComponent.clonedData = cloneDeep(this.tableData);\r\n }\r\n\r\n disableEnableEachColumnFilters() {\r\n this.tableHeaders.forEach(header => {\r\n header.headerInfo.forEach(item => {\r\n if (item.filter != \"\") {\r\n let values = [];\r\n item.disableFilter = true;\r\n\r\n item.filterObjectKeys.forEach(key => {\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.disableFilter = (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(uniq(values).filter(n => n!=null).length > 1){\r\n item.disableFilter = false;\r\n }\r\n }\r\n\r\n })\r\n // if(uniq(values).length > 1){\r\n // item.disableFilter = false;\r\n // }else{\r\n // item.disableFilter = true;\r\n // }\r\n }\r\n if (item.sort) {\r\n if (uniq(this.tableData.map((u: { [x: string]: any; }) => u[item.objectKey])).length > 1) {\r\n item.disableSort = false;\r\n } else {\r\n item.disableSort = true;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.annaGenericTableService.virtualScrollSubject.subscribe((val) =>{\r\n this.isScrolledLeft = document.getElementsByClassName(\"anna-table-virtual-scroll-viewport\")[0].scrollLeft > 0;\r\n this.cdRef.detectChanges();\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: SellerGroupHierarchy[], 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 this.gtIconClicked.emit({data: rowData,iconClass: iconClass});\r\n }\r\n\r\n svgIconClicked(rowData: any,key: string){\r\n this.gtSVGIconClicked.emit({data: rowData,key: key});\r\n }\r\n\r\n textActionClicked(rowData: any,id: number){\r\n this.gtTextActionClicked.emit({data:rowData,id});\r\n }\r\n\r\n viewDetailsClicked(rowData: any){\r\n this.gtViewDetailClicked.emit({data:rowData});\r\n }\r\n\r\n}\r\n","<div class=\"table-container\" [ngClass]=\"{ 'scroll-left-shadow-effect': isScrolledLeft }\">\r\n <anna-table-virtual-scroll-viewport\r\n [buffer]=\"gtGeneralConfig.bufferSize\"\r\n [rowHeight]=\"gtDimension.rowHeight\"\r\n [class]=\"gtGeneralConfig.tableContainerName\"\r\n [ngStyle]=\"{\r\n height:\r\n tableData.length < maximumRowsWhichCanBeRenderedWithoutScroll\r\n ? 'calc(' +\r\n ((gtDimension.rowHeight + rowBorderWidth) * tableData.length +\r\n (!tableData.length || !gtGeneralConfig.totalRow\r\n ? gtDimension.headerHeight\r\n : gtDimension.headerHeight + gtDimension.rowHeight + (2 * rowBorderWidth))) +\r\n 'px)'\r\n : gtDimension.tableHeight\r\n }\"\r\n >\r\n <table class=\"gt\" [ngClass]=\"tableClass\" mat-table [appVirtualDataSource]=\"tableData\">\r\n <tr\r\n class=\"header-row\"\r\n mat-header-row\r\n *matHeaderRowDef=\"tableColumns; sticky: true\"\r\n [style.height.px]=\"gtDimension.headerHeight\"\r\n ></tr>\r\n <tr\r\n class=\"total-row\"\r\n mat-header-row\r\n [style.height.px]=\"gtDimension.rowHeight\"\r\n *matHeaderRowDef=\"totalRowColumns; sticky: true\"\r\n [class.hidden]=\"\r\n showSkeletonLoading ||\r\n (!showSkeletonLoading && !tableData.length) ||\r\n (!showSkeletonLoading && !gtGeneralConfig.totalRow)\r\n \"\r\n ></tr>\r\n <tr\r\n [class]=\"rowData.gtClass\"\r\n mat-row\r\n *matRowDef=\"let rowData; columns: tableColumns\"\r\n [style.height.px]=\"gtDimension.rowHeight\"\r\n [style.background-color]=\"rowData.backgroundColor\"\r\n [style.border]=\"rowData.border\" (click)=\"dataRowClicked(rowData)\"\r\n ></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 <strong>{{ column.data }}</strong>\r\n <ng-container *ngIf=\"column.lowerData\">\r\n <br>\r\n <span>{{column.lowerData}}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"column.tooltipMessage\">\r\n <i class=\"mi mdi-info-outline info-label\" container=\"body\"\r\n [ngbTooltip]=\"column.tooltipMessage\"\r\n tooltipClass=\"gt-total-row-tooltip\" placement=\"bottom\"></i>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- MAIN ROW -->\r\n <ng-container [matColumnDef]=\"columnDef.headerInfo[0].objectKey\" *ngFor=\"let columnDef of tableHeaders; trackBy: trackByFn\">\r\n <th 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\r\n *ngIf=\"header.typeOfHeaderData === 'STRING'\"\r\n [ngClass]=\"{ 'upper-label': j === 0, 'lower-label': j === 1 }\"\r\n >\r\n {{ header.name }}\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'impsInfoTooltip'\" class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\"\r\n #t=\"ngbTooltip\"\r\n [ngbTooltip]=\"impsInfoTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'ratingInfoTooltip'\" class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\"\r\n #t=\"ngbTooltip\"\r\n [ngbTooltip]=\"ratingInfoTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'rateInfoTooltip'\" class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\"\r\n #t=\"ngbTooltip\"\r\n [ngbTooltip]=\"rateInfoTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n </p>\r\n\r\n <ng-container *ngIf=\"header.typeOfHeaderData === 'CHECKBOX'\">\r\n <span\r\n *ngIf=\"gtGeneralConfig.isHeaderChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectUnselectAllRows()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!gtGeneralConfig.isHeaderChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n [ngClass]=\"{ 'disable-checkbox': gtGeneralConfig.disableHeaderCheckbox }\"\r\n (click)=\"selectUnselectAllRows()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n </ng-container>\r\n\r\n <div *ngIf=\"gtGeneralConfig.showAllColumnFilter\" class=\"sort-filter-container\">\r\n <ng-container *ngIf=\"header.sort\">\r\n <anna-core-sort-lib\r\n [sortBy]=\"header.sortObjectKey ? header.sortObjectKey : header.objectKey\"\r\n [data]=\"tableData\"\r\n [disableSort]=\"header.disableSort\"\r\n (sort)=\"sortedData($event)\"\r\n >\r\n </anna-core-sort-lib>\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'CHECKBOX'\">\r\n <span\r\n class=\"mdi mdi-filter\"\r\n [ngClass]=\"{\r\n active:\r\n annaFilterService.appliedFiltersArray.length && isTooltipActive(header.filterObjectKeys),\r\n disabled: header.disableFilter\r\n }\"\r\n [ngbTooltip]=\"filterTooltip\"\r\n placement=\"bottom left-top\"\r\n container=\"body\"\r\n [autoClose]=\"'outside'\"\r\n triggers=\"manual\"\r\n #t=\"ngbTooltip\"\r\n (click)=\"bindTheValueToToolTip(t, header.filterObjectKeys)\"\r\n (hidden)=\"closeTooltip()\"\r\n >\r\n </span\r\n ><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'SLIDER'\">\r\n <span\r\n class=\"mdi mdi-filter\"\r\n [ngClass]=\"{\r\n active:\r\n annaFilterService.appliedFiltersArray.length && isTooltipActive(header.filterObjectKeys),\r\n disabled: header.disableFilter\r\n }\"\r\n [ngbTooltip]=\"sliderToolTip\"\r\n placement=\"bottom left-top\"\r\n container=\"body\"\r\n [autoClose]=\"'outside'\"\r\n triggers=\"manual\"\r\n #t1=\"ngbTooltip\"\r\n (click)=\"bindTheValueToToolTip(t1, header.filterObjectKeys)\"\r\n (hidden)=\"closeTooltip()\"\r\n >\r\n </span\r\n ><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'DATE'\">\r\n <span\r\n class=\"mdi mdi-filter\"\r\n [ngClass]=\"{\r\n active:\r\n isTooltipActive(header.filterObjectKeys) && isTooltipActive(header.filterObjectKeys),\r\n disabled: header.disableFilter\r\n }\"\r\n [ngbTooltip]=\"datePickerTooltip\"\r\n placement=\"left-top auto\"\r\n container=\"body\"\r\n [autoClose]=\"'outside'\"\r\n triggers=\"manual\"\r\n #t2=\"ngbTooltip\"\r\n (click)=\"bindTheValueToToolTip(t2, header.filterObjectKeys)\"\r\n (hidden)=\"closeTooltip()\"\r\n >\r\n </span\r\n ><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'WEEK'\">\r\n <span\r\n class=\"mdi mdi-filter\"\r\n [ngClass]=\"{\r\n active:\r\n isTooltipActive(header.filterObjectKeys) && isTooltipActive(header.filterObjectKeys),\r\n disabled: header.disableFilter\r\n }\"\r\n [ngbTooltip]=\"weekPickerToolTip\"\r\n placement=\"bottom left-top\"\r\n container=\"body\"\r\n [autoClose]=\"'outside'\"\r\n triggers=\"manual\"\r\n #t3=\"ngbTooltip\"\r\n (click)=\"bindTheValueToToolTip(t3, header.filterObjectKeys)\"\r\n (hidden)=\"closeTooltip()\"\r\n >\r\n </span\r\n ><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === 'TIME'\">\r\n <span\r\n class=\"mdi mdi-filter\"\r\n [ngClass]=\"{\r\n active:\r\n isTooltipActive(header.filterObjectKeys) && isTooltipActive(header.filterObjectKeys),\r\n disabled: header.disableFilter\r\n }\"\r\n [ngbTooltip]=\"timeFilterToolTip\"\r\n placement=\"bottom left-top\"\r\n container=\"body\"\r\n [autoClose]=\"'outside'\"\r\n triggers=\"manual\"\r\n #t4=\"ngbTooltip\"\r\n (click)=\"bindTheValueToToolTip(t4, header.filterObjectKeys)\"\r\n (hidden)=\"closeTooltip()\"\r\n >\r\n </span\r\n ><br />\r\n </ng-container>\r\n <ng-container *ngIf=\"header.filter === ''\"> <span id=\"no-filter-space\"></span><br /> </ng-container>\r\n <i *ngIf=\"header.tooltip && header.tooltip.name == 'lurViolationInfoTooltip'\" class=\"{{header['tooltip'].iconClass}}\"\r\n [ngStyle]=\"{'float': header['tooltip'].iconPosition}\"\r\n #t=\"ngbTooltip\"\r\n [ngbTooltip]=\"lurViolationInfoTooltip\"\r\n placement=\"{{ header['tooltip'].tooltipPosition }}\"\r\n tooltipClass=\"{{ header['tooltip'].tooltipClass }}\"\r\n >\r\n </i>\r\n\r\n </div>\r\n </div>\r\n </th>\r\n\r\n <ng-container *ngIf=\"gtGeneralConfig.component == 'DRR'\">\r\n <ng-container *matCellDef=\"let ROW_DATA\">\r\n <ng-container *ngIf=\"showSkeletonLoading\">\r\n <td mat-cell>\r\n <ngx-skeleton-loader count=\"1\" [theme]=\"{ height: '10px', display: 'block' }\">\r\n </ngx-skeleton-loader>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!showSkeletonLoading\">\r\n <ng-container\r\n *ngFor=\"let subline of columnDef.headerInfo; let sublineIndex = index; trackBy: trackByFn\"\r\n >\r\n <td\r\n mat-cell\r\n *ngIf=\"!ROW_DATA['hide' + subline.objectKey + 'Td']\"\r\n [attr.rowspan]=\"ROW_DATA[subline.objectKey + 'Rowspan']\"\r\n >\r\n <ng-container [ngSwitch]=\"subline.typeOfBodyData\">\r\n <ng-container *ngSwitchCase=\"'ICON'\">\r\n <i [class]=\"ROW_DATA.iconClass\"></i>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'CHECKBOX'\">\r\n <span\r\n *ngIf=\"ROW_DATA[subline.objectKey]\"\r\n [ngClass]=\"{ 'disable-checkbox': ROW_DATA[subline.isDisabledKey] }\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectUnselectRow(ROW_DATA)\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!ROW_DATA[subline.objectKey]\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n [ngClass]=\"{ 'disable-checkbox': ROW_DATA[subline.isDisabledKey] }\"\r\n (click)=\"selectUnselectRow(ROW_DATA)\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'RADIO'\">\r\n <mat-radio-group\r\n *ngIf=\"ROW_DATA['RadioButtonConfig']\"\r\n [ngModel]=\"ROW_DATA[subline.objectKey]\"\r\n [disabled]=\"ROW_DATA['RadioButtonConfig'][0].isDisabled\"\r\n >\r\n <ng-container\r\n *ngFor=\"let radioButton of ROW_DATA['RadioButtonConfig']; let last = last\"\r\n >\r\n <mat-radio-button\r\n value=\"{{ radioButton.value }}\"\r\n class=\"{{ radioButton.class }}\"\r\n (click)=\"\r\n radioButtonClicked(\r\n ROW_DATA,\r\n radioButton.value,\r\n ROW_DATA['RadioButtonConfig'][0].isDisabled\r\n )\r\n \"\r\n >{{ radioButton.label }}</mat-radio-button\r\n ><br *ngIf=\"!last\" />\r\n </ng-container>\r\n </mat-radio-group>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n {{ ROW_DATA[subline.objectKey] }}\r\n\r\n <ng-container\r\n *ngIf=\"\r\n subline.objectKey == 'Status' && (ROW_DATA['Remarks'] !== null)\r\n \"\r\n >\r\n <i\r\n class=\"mi mdi-info-outline remarks-tooltip\"\r\n [ngbTooltip]=\"columnInfoTooltip\"\r\n placement=\"bottom\"\r\n container=\"body\"\r\n tooltipClass=\"remarks-info-tooltip\"\r\n #t=\"ngbTooltip\"\r\n ></i>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"gtGeneralConfig.component != 'DRR'\">\r\n <td mat-cell *matCellDef=\"let ROW_DATA\" [style.background]=\"ROW_DATA.backgroundColor\">\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 <div *ngFor=\"let subline of columnDef.headerInfo; let subLineIndex = index; trackBy: trackByFn\">\r\n <ng-container [ngSwitch]=\"columnDef.headerInfo[subLineIndex].typeOfBodyData\">\r\n <ng-container *ngSwitchCase=\"'ICON'\">\r\n <i [class]=\"ROW_DATA.iconClass\" (click)=\"iconClicked(ROW_DATA,ROW_DATA.iconClass)\"></i>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'SVG_ICON'\">\r\n <ng-container *ngIf=\"gtGeneralConfig.component == 'ORDER_LISTING_INFLIGHT'\">\r\n <span\r\n *ngIf=\"ROW_DATA.payForPerformance && subline.objectKey == 'payForPerformance'\"\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=\"ROW_DATA.orderStatus != 'LIVE' && !ROW_DATA.payForPerformance && subline.objectKey == 'payForPerformance'\"\r\n (click)=\"svgIconClicked(ROW_DATA,'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=\"ROW_DATA.orderStatus == 'LIVE' && subline.objectKey == 'orderStatus' \"></anna-live-icon-template>\r\n </ng-container>\r\n <ng-container *ngIf=\"gtGeneralConfig.component == 'ORDER_LISTING_COMPLETED'\">\r\n <span *ngIf=\"ROW_DATA.payForPerformance && subline.objectKey == 'payForPerformance'\" (click)=\"$event.stopPropagation()\">\r\n <anna-pay-for-performance-icon-template\r\n [color]=\"PfpIconActiveColor\"\r\n [width]=\"'20px'\"\r\n [height]=\"'20px'\"\r\n >\r\n </anna-pay-for-performance-icon-template>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngIf=\"subline.objectKey == 'bizRuleStatus'\">\r\n <anna-rejected-icon-template *ngIf=\"ROW_DATA.bizRuleStatus == 'REJECTED'\"></anna-rejected-icon-template>\r\n <anna-notify-icon-template *ngIf=\"ROW_DATA.bizRuleStatus == 'NOTIFY'\"></anna-notify-icon-template>\r\n <anna-buyer-approval-icon-template *ngIf=\"ROW_DATA.bizRuleStatus == 'AWAITING_APPROVAL'\"></anna-buyer-approval-icon-template>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'TEXT_ACTIONS'\">\r\n <button *ngFor=\"let text of ROW_DATA.textActions\" (click)=\"textActionClicked(ROW_DATA,text.id)\" [disabled]=\"text.isDisabled\" class=\"{{text.class}}\">{{text.name}}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'CHECKBOX'\">\r\n <span\r\n *ngIf=\"ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n [ngClass]=\"{\r\n 'disable-checkbox': ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\r\n }\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"\r\n selectOrUnselectCheckbox(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].objectKey,\r\n false\r\n )\r\n \"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey]\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n [ngClass]=\"{\r\n 'disable-checkbox': ROW_DATA[columnDef.headerInfo[subLineIndex].isDisabledKey]\r\n }\"\r\n (click)=\"\r\n selectOrUnselectCheckbox(\r\n ROW_DATA,\r\n columnDef.headerInfo[subLineIndex].objectKey,\r\n true\r\n )\r\n \"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"subline.objectKey != 'description'\">\r\n {{ ROW_DATA[columnDef.headerInfo[subLineIndex].objectKey] }}\r\n <i\r\n *ngIf=\"subline.objectKey == 'inventoryCode' && ROW_DATA['isSellerGroup'] && gtGeneralConfig.component == 'RATING' \"\r\n class=\"mdi mdi-alert-circle-outline seller-tooltip\"\r\n [ngbTooltip]=\"sellerHierarchyTooltip\"\r\n placement=\"bottom auto\"\r\n container=\"body\"\r\n [autoClose]=\"true\"\r\n triggers=\"manual\"\r\n (hidden)=\"closeTooltip()\"\r\n #info=\"ngbTooltip\"\r\n tooltipClass=\"hierarchy-tooltip\"\r\n (mouseenter)=\"bindTheValueToSellerGroupTooltip(ROW_DATA.sellerGroupHierarchy, info)\">\r\n </i>\r\n </ng-container>\r\n <ng-container *ngIf=\"subline.objectKey == 'description'\">\r\n <p *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 *ngIf=\"ROW_DATA.descriptionEmailReferenceNum\">\r\n Email Ref: {{ ROW_DATA.descriptionEmailReferenceNum }}\r\n <br />\r\n </ng-container>\r\n </p>\r\n <a\r\n href=\"{{ ROW_DATA.descriptionDetailsUrl }}\"\r\n target=\"_blank\"\r\n *ngIf=\"ROW_DATA.descriptionDetailsUrlType === 'PDF' || ROW_DATA.descriptionDetailsUrlType === 'EXCEL'\"\r\n >\r\n <button class=\"btn viewDetailsAndEmailBtn\">Download</button>\r\n </a>\r\n <ng-container *ngIf=\"ROW_DATA.activityname.toLowerCase() == 'order onboarded'\">\r\n <a *ngIf=\"ROW_DATA.descriptionDetailsUrlType === 'LINK'\" (click)=\"viewDetailsClicked(ROW_DATA)\">\r\n <button class=\"btn viewDetailsAndEmailBtn\">View details</button>\r\n </a>\r\n </ng-container>\r\n \r\n <a href=\"{{ ROW_DATA.descriptionEmailUrl }}\" target=\"_blank\" *ngIf=\"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 <ng-container\r\n *ngIf=\"\r\n gtGeneralConfig.page === 'SpotDetails' &&\r\n columnDef.headerInfo[subLineIndex].objectKey === 'Status'\r\n \"\r\n >\r\n <img\r\n src=\"assets/images/Undo-Credit-Icon.svg\"\r\n style=\"cursor: pointer\"\r\n class=\"img-circle\"\r\n alt=\"User Image\"\r\n height=\"15px\"\r\n width=\"15px\"\r\n *ngIf=\"ROW_DATA.AllowUserToUndoMarkForCredit\"\r\n (click)=\"undoCreditedSpot(ROW_DATA)\"\r\n />\r\n <img\r\n src=\"assets/images/Undo-MG-Icon.svg\"\r\n style=\"cursor: pointer\"\r\n class=\"img-circle\"\r\n alt=\"User Image\"\r\n height=\"15px\"\r\n width=\"15px\"\r\n *ngIf=\"ROW_DATA.AllowUserToUndoMarkForMakeGood\"\r\n (click)=\"undoMgSpot(ROW_DATA)\"\r\n />\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n </table>\r\n </anna-table-virtual-scroll-viewport>\r\n\r\n <anna-core-no-data-lib [width]=\"noDataWidth\" *ngIf=\"!showSkeletonLoading && tableData.length == 0\"> </anna-core-no-data-lib>\r\n</div>\r\n\r\n<!-- Checkbox template -->\r\n<ng-template #filterTooltip>\r\n <div class=\"radio-container\" *ngIf=\"showCheckboxFilterRadioButtons\">\r\n <div *ngFor=\"let data of radioButtons\">\r\n <input\r\n type=\"radio\"\r\n id=\"{{ data.key }}\"\r\n [ngModel]=\"annaFilterService.selectedRadio\"\r\n name=\"toolTip\"\r\n value=\"{{ data.key }}\"\r\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data.key)\" *ngIf=\"radioButtons.length > 1\"\r\n />\r\n <label for=\"{{ data.key }}\">{{ data.label }}</label>\r\n </div>\r\n </div>\r\n <button class=\"column-clear-all\" [disabled]=\"disableColumnClearAllBtn\" (click)=\"clearColumnFilter()\">Clear filter</button>\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)]=\"searchBar\"\r\n />\r\n </p>\r\n <div class=\"dropdown-data-container\">\r\n <ng-container *ngIf=\"showAll\">\r\n <p class=\"input\" (click)=\"allOptionClicked()\">\r\n <span *ngIf=\"allSelected == 1\" role=\"button\" class=\"mi mdi-check-box check-box\"></span>\r\n <span *ngIf=\"allSelected == 0\" role=\"button\" class=\"mi mdi-check-box-outline-blank check-box unchecked\"></span>\r\n <span *ngIf=\"allSelected == 2\" role=\"button\" class=\"mi mdi-indeterminate-check-box check-box\"></span>\r\n <span class=\"data\">All</span>\r\n </p>\r\n </ng-container>\r\n <ng-container *ngFor=\"let data of tempTooltipData | AnnafilterSearchedText: searchBar\">\r\n <p *ngIf=\"!data.isHidden\" class=\"input\" (click)=\"isCheckboxSelected(data)\">\r\n <span *ngIf=\"data.isSelected\" role=\"button\" class=\"mi mdi-check-box check-box\"></span>\r\n <span *ngIf=\"!data.isSelected\" role=\"button\" class=\"mi mdi-check-box-outline-blank check-box unchecked\"></span>\r\n <span class=\"data\" title=\"{{ data.data }}\">{{ data.data }}</span>\r\n </p>\r\n </ng-container>\r\n </div>\r\n <div class=\"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 </button>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Slider template -->\r\n<ng-template #sliderToolTip>\r\n <div class=\"radio-container\" *ngIf=\"gtGeneralConfig.component == 'DRRLISTING'\">\r\n <div *ngFor=\"let data of radioButtons\">\r\n <input type=\"radio\" id=\"{{data.key}}\" [ngModel]=\"annaFilterService.selectedRadio\" name=\"toolTip\" value=\"{{data.key}}\"\r\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data.key)\" *ngIf=\"radioButtons.length > 1\">\r\n <label for=\"{{data.key}}\">{{data.label}}</label>\r\n </div>\r\n </div>\r\n <button class=\"column-clear-all align-center\" [disabled]=\"disableColumnClearAllBtn\" (click)=\"clearColumnFilter()\">\r\n Clear filter\r\n </button>\r\n <section class=\"min-maxContainer\">\r\n <input\r\n type=\"number\"\r\n step=\"{{ sliderFilterTextBoxStep }}\"\r\n [ngModel]=\"sliderMinValue\"\r\n (ngModelChange)=\"minValueChanged($event)\"\r\n placeholder=\"Min\"\r\n />\r\n <span>To</span>\r\n <input\r\n type=\"number\"\r\n step=\"{{ sliderFilterTextBoxStep }}\"\r\n [ngModel]=\"sliderMaxValue\"\r\n (ngModelChange)=\"maxValueChanged($event)\"\r\n placeholder=\"Max\"\r\n />\r\n </section>\r\n <div class=\"sidebar-slider\">\r\n <ngx-slider\r\n [(value)]=\"sliderMinValue\"\r\n [(highValue)]=\"sliderMaxValue\"\r\n [options]=\"options\"\r\n (valueChange)=\"sliderValueChange()\"\r\n (highValueChange)=\"sliderValueChange()\"\r\n ></ngx-slider>\r\n </div>\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)=\"applySliderFilter()\"\r\n [disabled]=\"disableSliderApplyButton\"\r\n >\r\n Apply\r\n </button>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Date Picker Template -->\r\n<ng-template #datePickerTooltip>\r\n <div class=\"radio-container\" *ngIf=\"gtGeneralConfig.component == 'DRRLISTING'\">\r\n <div *ngFor=\"let data of radioButtons\">\r\n <input type=\"radio\" id=\"{{data.key}}\" [ngModel]=\"annaFilterService.selectedRadio\" name=\"toolTip\" value=\"{{data.key}}\"\r\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data.key)\" *ngIf=\"radioButtons.length > 1\">\r\n <label for=\"{{data.key}}\">{{data.label}}</label>\r\n </div>\r\n </div>\r\n <div class=\"datepicker-container\">\r\n <button class=\"column-clear-all align-center\" [disabled]=\"disableColumnClearAllBtn\" (click)=\"clearColumnFilter()\">\r\n Clear filter\r\n </button>\r\n <anna-core-calendar-filter-lib\r\n [minDate]=\"calendarMinEnabledDate\"\r\n [maxDate]=\"calendarMaxEnabledDate\"\r\n [selectedFromDate]=\"selectedMinDate\"\r\n [selectedToDate]=\"selectedMaxDate\"\r\n (apply)=\"applyDateFilter($event)\"\r\n (cancel)=\"cancelInDateFilter()\"\r\n >\r\n </anna-core-calendar-filter-lib>\r\n </div>\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 <div class=\"radio-container\" *ngIf=\"gtGeneralConfig.component != 'RATING'\">\r\n <div *ngFor=\"let data of radioButtons\">\r\n <input\r\n type=\"radio\"\r\n id=\"{{ data.key }}\"\r\n [ngModel]=\"annaFilterService.selectedRadio\"\r\n name=\"toolTip\"\r\n value=\"{{ data.key }}\"\r\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data.key)\"\r\n *ngIf=\"radioButtons.length > 1\"\r\n />\r\n <label for=\"{{ data.key }}\">{{ data.label }}</label>\r\n </div>\r\n </div>\r\n <button class=\"column-clear-all\" [disabled]=\"disableColumnClearAllBtn\" (click)=\"clearColumnFilter()\">Clear filter</button>\r\n <div\r\n class=\"time-filter-checkboxes\"\r\n *ngIf=\"gtGeneralConfig.component == 'SPOTDETAILS' || gtGeneralConfig.component == 'EXCLUDEINVENTORYPOPUP' || gtGeneralConfig.component == 'RATING'\"\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>From</label>\r\n </div>\r\n <div class=\"time-container\">\r\n <input class=\"form-control numberInput\" [(ngModel)]=\"selectedFromTime[0]\" disabled type=\"text\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-triangle upward\" (click)=\"changeStartTimeHour(true)\"></i>\r\n <i class=\"mdi mdi-triangle downward\" (click)=\"changeStartTimeHour(false)\"></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input class=\"form-control numberInput\" [(ngModel)]=\"selectedFromTime[1]\" type=\"text\" disabled />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-triangle upward\" (click)=\"changeStartTimeMinute(true)\"></i>\r\n <i class=\"mdi mdi-triangle downward\" (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>To</label>\r\n </div>\r\n <div class=\"time-container\">\r\n <input class=\"form-control numberInput\" [(ngModel)]=\"selectedToTime[0]\" disabled type=\"text\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-triangle upward\" (click)=\"changeEndTimeHour(true)\"></i>\r\n <i class=\"mdi mdi-triangle downward\" (click)=\"changeEndTimeHour(false)\"></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input class=\"form-control numberInput\" [(ngModel)]=\"selectedToTime[1]\" disabled type=\"text\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-triangle upward\" (click)=\"changeEndTimeMinute(true)\"></i>\r\n <i class=\"mdi mdi-triangle downward\" (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 <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>\r\n</ng-template>\r\n\r\n<ng-template #columnInfoTooltip>\r\n <p style=\"padding: 0.5rem; 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 #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 <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>{{ data.inventoryCode }}</span>\r\n </td>\r\n <td>\r\n <span>{{ data.program }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\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>","// Angular import statements\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\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\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\n\r\n\r\n// User defined import statements\r\nimport { AnnaNonEditableGenericTableComponent } from './components/anna-non-editable-generic-table/anna-non-editable-generic-table.component';\r\nimport { AnnaSortComponent } from './components/anna-sort/anna-sort.component';\r\nimport { AnnaTableVirtualScrollViewportComponent } from './components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component';\r\nimport { AnnaFixedRowSizeTableVirtualScrollStrategyDirective } from './directives/anna-fixed-row-size-table-virtual-scroll-strategy';\r\nimport { AnnaVirtualTableDirective } from './directives/anna-virtual-table';\r\n\r\n//sub-entries of anna lib import statement\r\nimport { AnnaDropdownLibModule } from '@annalib/anna-core/src/lib/anna-dropdown-lib';\r\nimport { AnnaCoreSharedLibModule } from '@annalib/anna-core/src/lib/anna-core-shared-lib';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AnnaNonEditableGenericTableComponent,\r\n AnnaSortComponent,\r\n AnnaTableVirtualScrollViewportComponent,\r\n AnnaFixedRowSizeTableVirtualScrollStrategyDirective,\r\n AnnaVirtualTableDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n NgbModule,\r\n AnnaDropdownLibModule,\r\n MatButtonToggleModule,\r\n FormsModule,\r\n NgxSliderModule,\r\n NgxSkeletonLoaderModule,\r\n MatTableModule,\r\n MatRadioModule,\r\n AnnaCoreSharedLibModule\r\n ],\r\n exports: [\r\n AnnaNonEditableGenericTableComponent,\r\n AnnaSortComponent,\r\n AnnaTableVirtualScrollViewportComponent,\r\n AnnaFixedRowSizeTableVirtualScrollStrategyDirective,\r\n AnnaVirtualTableDirective\r\n ]\r\n\r\n})\r\nexport class AnnaGenericTableLibModule { }\r\n","//Modules\r\nexport * from \"./anna-generic-table-lib.module\";\r\n\r\n//Components\r\nexport * from \"./components/anna-non-editable-generic-table/anna-non-editable-generic-table.component\";\r\nexport * from \"./components/anna-sort/anna-sort.component\";\r\nexport * from \"./components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component\";\r\n\r\n//Directives\r\nexport * from \"./directives/anna-fixed-row-size-table-virtual-scroll-strategy\";\r\nexport * from \"./directives/anna-virtual-table\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4","i1","i3","map","i2.AnnaTableVirtualScrollViewportComponent","i4.AnnaSortComponent","i11.AnnaFixedRowSizeTableVirtualScrollStrategyDirective","i12.AnnaVirtualTableDirective","i13"],"mappings":"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"}
|