@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.
Files changed (165) hide show
  1. package/README.md +24 -0
  2. package/annalib-anna-core.d.ts +5 -0
  3. package/esm2020/annalib-anna-core.mjs +5 -0
  4. package/esm2020/lib/anna-core-shared-lib/anna-core-shared-lib.module.mjs +59 -0
  5. package/esm2020/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +15 -0
  6. package/esm2020/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +15 -0
  7. package/esm2020/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +22 -0
  8. package/esm2020/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +15 -0
  9. package/esm2020/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +21 -0
  10. package/esm2020/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +15 -0
  11. package/esm2020/lib/anna-core-shared-lib/constants/shared.constant.mjs +34 -0
  12. package/esm2020/lib/anna-core-shared-lib/index.mjs +2 -0
  13. package/esm2020/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +2 -0
  14. package/esm2020/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +2 -0
  15. package/esm2020/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +3 -0
  16. package/esm2020/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +26 -0
  17. package/esm2020/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +31 -0
  18. package/esm2020/lib/anna-core-shared-lib/public-api.mjs +25 -0
  19. package/esm2020/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +180 -0
  20. package/esm2020/lib/anna-core-shared-lib/services/anna-filter.service.mjs +537 -0
  21. package/esm2020/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +52 -0
  22. package/esm2020/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +133 -0
  23. package/esm2020/lib/anna-core-shared-lib/services/anna-sort.service.mjs +185 -0
  24. package/esm2020/lib/anna-dropdown-lib/anna-dropdown-lib.module.mjs +43 -0
  25. package/esm2020/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +76 -0
  26. package/esm2020/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +360 -0
  27. package/esm2020/lib/anna-dropdown-lib/index.mjs +2 -0
  28. package/esm2020/lib/anna-dropdown-lib/public-api.mjs +6 -0
  29. package/esm2020/lib/anna-generic-table-lib/anna-generic-table-lib.module.mjs +86 -0
  30. package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +991 -0
  31. package/esm2020/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +125 -0
  32. package/esm2020/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +357 -0
  33. 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
  34. package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +2 -0
  35. package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +178 -0
  36. package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +2 -0
  37. package/esm2020/lib/anna-generic-table-lib/index.mjs +2 -0
  38. package/esm2020/lib/anna-generic-table-lib/public-api.mjs +10 -0
  39. package/esm2020/public-api.mjs +7 -0
  40. package/esm2020/src/lib/anna-core-shared-lib/anna-core-shared-lib.module.mjs +59 -0
  41. package/esm2020/src/lib/anna-core-shared-lib/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +5 -0
  42. package/esm2020/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +15 -0
  43. package/esm2020/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +15 -0
  44. package/esm2020/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +22 -0
  45. package/esm2020/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +15 -0
  46. 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
  47. package/esm2020/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +15 -0
  48. package/esm2020/src/lib/anna-core-shared-lib/constants/shared.constant.mjs +34 -0
  49. package/esm2020/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +2 -0
  50. package/esm2020/src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +2 -0
  51. package/esm2020/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +3 -0
  52. package/esm2020/src/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +26 -0
  53. package/esm2020/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +31 -0
  54. package/esm2020/src/lib/anna-core-shared-lib/public-api.mjs +25 -0
  55. package/esm2020/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +180 -0
  56. package/esm2020/src/lib/anna-core-shared-lib/services/anna-filter.service.mjs +537 -0
  57. package/esm2020/src/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +52 -0
  58. package/esm2020/src/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +133 -0
  59. package/esm2020/src/lib/anna-core-shared-lib/services/anna-sort.service.mjs +185 -0
  60. package/esm2020/src/lib/anna-dropdown-lib/anna-dropdown-lib.module.mjs +43 -0
  61. package/esm2020/src/lib/anna-dropdown-lib/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +5 -0
  62. package/esm2020/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +76 -0
  63. package/esm2020/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +360 -0
  64. package/esm2020/src/lib/anna-dropdown-lib/public-api.mjs +6 -0
  65. package/esm2020/src/lib/anna-generic-table-lib/anna-generic-table-lib.module.mjs +86 -0
  66. package/esm2020/src/lib/anna-generic-table-lib/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +5 -0
  67. package/esm2020/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +991 -0
  68. package/esm2020/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +125 -0
  69. package/esm2020/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +357 -0
  70. 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
  71. package/esm2020/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +2 -0
  72. package/esm2020/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +178 -0
  73. package/esm2020/src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +2 -0
  74. package/esm2020/src/lib/anna-generic-table-lib/public-api.mjs +10 -0
  75. package/fesm2015/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +1295 -0
  76. package/fesm2015/annalib-anna-core-src-lib-anna-core-shared-lib.mjs.map +1 -0
  77. package/fesm2015/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +474 -0
  78. package/fesm2015/annalib-anna-core-src-lib-anna-dropdown-lib.mjs.map +1 -0
  79. package/fesm2015/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +1887 -0
  80. package/fesm2015/annalib-anna-core-src-lib-anna-generic-table-lib.mjs.map +1 -0
  81. package/fesm2015/annalib-anna-core.mjs +3630 -0
  82. package/fesm2015/annalib-anna-core.mjs.map +1 -0
  83. package/fesm2020/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +1295 -0
  84. package/fesm2020/annalib-anna-core-src-lib-anna-core-shared-lib.mjs.map +1 -0
  85. package/fesm2020/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +472 -0
  86. package/fesm2020/annalib-anna-core-src-lib-anna-dropdown-lib.mjs.map +1 -0
  87. package/fesm2020/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +1886 -0
  88. package/fesm2020/annalib-anna-core-src-lib-anna-generic-table-lib.mjs.map +1 -0
  89. package/fesm2020/annalib-anna-core.mjs +3627 -0
  90. package/fesm2020/annalib-anna-core.mjs.map +1 -0
  91. package/lib/anna-core-shared-lib/anna-core-shared-lib.module.d.ts +14 -0
  92. package/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +8 -0
  93. package/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +8 -0
  94. package/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +11 -0
  95. package/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +8 -0
  96. package/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +11 -0
  97. package/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +8 -0
  98. package/lib/anna-core-shared-lib/constants/shared.constant.d.ts +32 -0
  99. package/lib/anna-core-shared-lib/index.d.ts +1 -0
  100. package/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +8 -0
  101. package/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +95 -0
  102. package/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +70 -0
  103. package/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +21 -0
  104. package/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +9 -0
  105. package/lib/anna-core-shared-lib/public-api.d.ts +18 -0
  106. package/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +25 -0
  107. package/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +68 -0
  108. package/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +14 -0
  109. package/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +21 -0
  110. package/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +23 -0
  111. package/lib/anna-dropdown-lib/anna-dropdown-lib.module.d.ts +11 -0
  112. package/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +29 -0
  113. package/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +67 -0
  114. package/lib/anna-dropdown-lib/index.d.ts +1 -0
  115. package/lib/anna-dropdown-lib/public-api.d.ts +3 -0
  116. package/lib/anna-generic-table-lib/anna-generic-table-lib.module.d.ts +21 -0
  117. package/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +171 -0
  118. package/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +27 -0
  119. package/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +141 -0
  120. 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
  121. package/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts +1 -0
  122. package/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +45 -0
  123. package/lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts +1 -0
  124. package/lib/anna-generic-table-lib/index.d.ts +1 -0
  125. package/lib/anna-generic-table-lib/public-api.d.ts +6 -0
  126. package/package.json +61 -0
  127. package/public-api.d.ts +3 -0
  128. package/src/lib/anna-core-shared-lib/anna-core-shared-lib.module.d.ts +14 -0
  129. package/src/lib/anna-core-shared-lib/annalib-anna-core-src-lib-anna-core-shared-lib.d.ts +5 -0
  130. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +8 -0
  131. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +8 -0
  132. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +11 -0
  133. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +8 -0
  134. 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
  135. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +8 -0
  136. package/src/lib/anna-core-shared-lib/constants/shared.constant.d.ts +32 -0
  137. package/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +8 -0
  138. package/src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +95 -0
  139. package/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +70 -0
  140. package/src/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +21 -0
  141. package/src/lib/anna-core-shared-lib/package.json +10 -0
  142. package/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +9 -0
  143. package/src/lib/anna-core-shared-lib/public-api.d.ts +18 -0
  144. package/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +25 -0
  145. package/src/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +68 -0
  146. package/src/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +14 -0
  147. package/src/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +21 -0
  148. package/src/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +23 -0
  149. package/src/lib/anna-dropdown-lib/anna-dropdown-lib.module.d.ts +11 -0
  150. package/src/lib/anna-dropdown-lib/annalib-anna-core-src-lib-anna-dropdown-lib.d.ts +5 -0
  151. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +29 -0
  152. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +67 -0
  153. package/src/lib/anna-dropdown-lib/package.json +10 -0
  154. package/src/lib/anna-dropdown-lib/public-api.d.ts +3 -0
  155. package/src/lib/anna-generic-table-lib/anna-generic-table-lib.module.d.ts +21 -0
  156. package/src/lib/anna-generic-table-lib/annalib-anna-core-src-lib-anna-generic-table-lib.d.ts +5 -0
  157. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +171 -0
  158. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +27 -0
  159. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +141 -0
  160. 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
  161. package/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts +1 -0
  162. package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +45 -0
  163. package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts +1 -0
  164. package/src/lib/anna-generic-table-lib/package.json +10 -0
  165. package/src/lib/anna-generic-table-lib/public-api.d.ts +6 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annalib-anna-core.mjs","sources":["../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.html","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.html","../../../projects/anna-core/src/lib/anna-dropdown-lib/anna-dropdown-lib.module.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/public-api.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.ts","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.html","../../../projects/anna-core/src/lib/anna-generic-table-lib/components/anna-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-core-shared-lib/components/anna-no-data/anna-no-data.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.html","../../../projects/anna-core/src/lib/anna-core-shared-lib/anna-core-shared-lib.module.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-global-config.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-tooltip.model.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-filter.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/constants/shared.constant.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-sort.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/services/anna-generic-table.service.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.ts","../../../projects/anna-core/src/lib/anna-core-shared-lib/public-api.ts","../../../projects/anna-core/src/public-api.ts","../../../projects/anna-core/src/annalib-anna-core.ts"],"sourcesContent":["// Angular import statements\r\nimport { DatePipe } from \"@angular/common\";\r\nimport { AfterViewInit, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from \"@angular/core\";\r\n\r\n// Third party import statements\r\nimport { NgbCalendar, NgbDate, NgbDatepickerConfig, NgbDateStruct, NgbInputDatepicker } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport moment from \"moment\";\r\n\r\n// User defined import statements\r\n\r\n//sub-entries of anna lib import statement\r\nimport { WeekObject, IWeekCalendar, AnnaDateTimeFormatService, AnnaGlobalConfigService } from \"@annalib/anna-core/src/lib/anna-core-shared-lib\";\r\n\r\n\r\n@Component({\r\n selector: \"anna-core-week-calendar-filter-lib\",\r\n templateUrl: \"./anna-week-calendar-filter.component.html\",\r\n styleUrls: [\"./anna-week-calendar-filter.component.scss\"],\r\n})\r\nexport class AnnaWeekCalendarComponent implements OnInit, OnChanges, AfterViewInit {\r\n fromDate: NgbDate | null;\r\n hoveredDate: NgbDate | null = null;\r\n toDate: NgbDate | null = null;\r\n today: NgbDate;\r\n\r\n model: NgbDateStruct;\r\n\r\n weekNumbers: string[] = [];\r\n pipe: DatePipe;\r\n dateToDisplay: string = \"\";\r\n weekObjects: WeekObject[];\r\n multiSelectDropdownOpen: boolean = false;\r\n datepicker: NgbInputDatepicker;\r\n private formatter: any;\r\n public formattedStartDate: string;\r\n public formattedEndDate: string;\r\n private calendarMap = new Map();\r\n private flag1: boolean;\r\n private flag2: boolean;\r\n @Input(\"from-date\") selectedFromDate: NgbDateStruct;\r\n @Input(\"to-date\") selectedEndDate: NgbDateStruct;\r\n @Input(\"disabled-dates\") disabledDates: NgbDate[] = [];\r\n @Input() maxDate: any;\r\n @Input() minDate: any;\r\n\r\n disabledFunc: any;\r\n state: any;\r\n\r\n //Setting the default values;\r\n private _defaultValues: IWeekCalendar;\r\n\r\n @Input(\"week-calendar-config\") config: IWeekCalendar;\r\n @Output(\"apply\") applyWeekCalendarChanges = new EventEmitter();\r\n @Output(\"toggle-calendar\") calendarToggled = new EventEmitter();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n //if some values are not sent, setting the default values\r\n this._defaultValues = this.globalConfigService.defaultWeekCalendarConfig;\r\n this.config = { ...this._defaultValues, ...this.config };\r\n\r\n if (this.config.selectCurrentWeek) {\r\n this.initializeWeekData();\r\n this.fromDate && this.selectWeek(this.fromDate);\r\n }\r\n\r\n this.formatter = this.formattedDates();\r\n\r\n if (this.selectedFromDate && this.selectedEndDate && this.config) {\r\n // this.selectWeek(this.fromDate);\r\n this.fromDate = NgbDate.from(this.selectedFromDate);\r\n this.toDate = NgbDate.from(this.selectedEndDate);\r\n this.weekNumberGenerator();\r\n this.displayToUI();\r\n this.setCalendarMap();\r\n }\r\n\r\n if (this.disabledDates.length > 0) {\r\n this.disabledFunc = (date: NgbDate, current: { month: number }) => {\r\n return this.checkIfDateIsDisabled(date);\r\n };\r\n }\r\n }\r\n\r\n constructor(\r\n private calendar: NgbCalendar,\r\n private datePickerConfig: NgbDatepickerConfig,\r\n private annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n private globalConfigService: AnnaGlobalConfigService\r\n ) { }\r\n\r\n\r\n getWeekNumber(week: any, firstDayOfWeek: any) {\r\n const weekStartDate = moment(convertNgbDateToMoment(week[0]), \"MM/DD/YYYY\");\r\n const weekYear = weekStartDate.year();\r\n const yearStartDate = moment(`01/01/${weekYear}`, \"MM/DD/YYYY\");\r\n const weekDay = yearStartDate.day();\r\n\r\n const noOfDays = weekStartDate.diff(yearStartDate, \"d\") + 1;\r\n\r\n function convertNgbDateToMoment(ngbDate: NgbDate): string {\r\n let converted = moment();\r\n converted.month(ngbDate.month - 1);\r\n converted.date(ngbDate.day);\r\n converted.year(ngbDate.year);\r\n return converted.format(\"MM/DD/YYYY\");\r\n }\r\n\r\n function checkIfYearIsBroadcastLeapYear() {\r\n let isLeapYear = (weekYear % 4 == 0 && weekYear % 100 != 0) || weekYear % 400 == 0;\r\n return (isLeapYear && (weekDay == 0 || weekDay == 6)) || (!isLeapYear && weekDay == 0);\r\n }\r\n\r\n const isLeapYear = checkIfYearIsBroadcastLeapYear();\r\n const divider = isLeapYear ? 53 : 52;\r\n const adder = isLeapYear ? 2 : 1;\r\n\r\n let broadcastNumberOfDays = weekDay + noOfDays;\r\n let broadcastWeekNumber = broadcastNumberOfDays % 7 > 0 ? broadcastNumberOfDays / 7 + adder : broadcastNumberOfDays / 7;\r\n\r\n if (Math.floor(broadcastWeekNumber % divider) === 0) {\r\n return divider;\r\n }\r\n return Math.floor(broadcastWeekNumber % divider);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // CHANGES@ANNALIB Changed this.\r\n // this.calendar[\"__proto__\"].getWeekNumber = this.getWeekNumber;\r\n Object.setPrototypeOf(this.calendar, {getWeekNumber: this.getWeekNumber})\r\n }\r\n\r\n ngOnInit(): void {\r\n // this.selectWeek(this.fromDate);\r\n this.setCalendarMap();\r\n }\r\n\r\n initializeWeekData() {\r\n this.weekObjects = [];\r\n\r\n this.fromDate = this.calendar.getToday();\r\n this.today = this.calendar.getToday();\r\n\r\n let backDatedPeriod = JSON.parse(localStorage.getItem(\"userDetails\") || '{}').locking_period_days;\r\n if (backDatedPeriod < 0) {\r\n let date: NgbDate = this.calendar.getPrev(this.calendar.getToday(), \"d\", Math.abs(backDatedPeriod));\r\n this.today = NgbDate.from(date);\r\n this.fromDate = NgbDate.from(date);\r\n }\r\n\r\n // Disable months before numberOfMonthsToEnable\r\n this.datePickerConfig.markDisabled = (date: NgbDateStruct) => {\r\n let previousMonth = this.calendar.getPrev(this.today, \"m\", this.config.numberOfMonthsToEnableInPast);\r\n let previousDay = this.calendar.getPrev(previousMonth, \"d\", 1);\r\n return !NgbDate.from(previousDay).before(date);\r\n };\r\n this.formatter = this.formattedDates();\r\n this.flag1 = false;\r\n this.flag2 = false;\r\n }\r\n\r\n selectWeek(date: NgbDate): void {\r\n const dateObject = new Date(date.year, date.month - 1, date.day);\r\n let constructDate = this.buildDate(dateObject);\r\n\r\n if (!this.config.selectMultipleWeeks) {\r\n //Single week selection\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n this.weekNumberGenerator();\r\n } else {\r\n if (date.before(this.fromDate)) {\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n if (this.flag1) {\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n }\r\n this.flag1 = !this.flag1;\r\n } else if (date.after(this.toDate)) {\r\n if (this.flag2) {\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n //this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n }\r\n this.flag2 = !this.flag2;\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n } else {\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n }\r\n\r\n if (this.disabledDates.length > 0) {\r\n let momentStartDate = moment(this.annaDateTimeFormatService.convertNgbDateToMoment(this.fromDate), \"MM/DD/YYYY\");\r\n let momentEndDate = moment(this.annaDateTimeFormatService.convertNgbDateToMoment(this.toDate), \"MM/DD/YYYY\");\r\n let ngbDate;\r\n while (!momentStartDate.isSame(momentEndDate)) {\r\n ngbDate = this.annaDateTimeFormatService.convertToNgbDate(momentStartDate, \"MM/DD/YYYY\");\r\n if (this.checkIfDateIsDisabled(ngbDate)) {\r\n break;\r\n }\r\n momentStartDate.add(1, \"d\");\r\n }\r\n let newDateObject = new Date(ngbDate.year, ngbDate.month - 1, ngbDate.day - 1);\r\n let constructDate = this.buildDate(newDateObject);\r\n this.toDate = this.constructEndDate(newDateObject)(constructDate);\r\n }\r\n\r\n this.weekNumberGenerator();\r\n }\r\n\r\n if (!this.config.showAsDropdown) {\r\n this.applyChanges();\r\n }\r\n }\r\n\r\n weekNumberGenerator(): void {\r\n let dates = [];\r\n let week = [];\r\n\r\n let startDate = NgbDate.from(this.fromDate);\r\n let endDate = NgbDate.from(this.toDate);\r\n\r\n week.push(startDate);\r\n while (endDate != null && !startDate.equals(endDate)) {\r\n let date = this.calendar.getNext(startDate, \"d\", 1);\r\n startDate = date;\r\n week.push(date);\r\n\r\n // Collect all days in week to calculate the week number\r\n if (week.length == 7) {\r\n dates.push(week);\r\n week = [];\r\n }\r\n }\r\n if (((this.config.maxWeeksToSelect ?? 0) > 0 && dates.length > (this.config.maxWeeksToSelect ?? 0))) {\r\n dates.splice((this.config.maxWeeksToSelect ?? 0), dates.length - (this.config.maxWeeksToSelect ?? 0));\r\n }\r\n this.selectedDates(dates);\r\n\r\n this.weekNumbers = [];\r\n this.weekObjects = [];\r\n if (dates.length > 0) {\r\n for (let date of dates) {\r\n this.weekNumbers.push(\" Week \" + this.calendar.getWeekNumber(date, this.config.firstDayOfWeek));\r\n let dates = this.formatter(date[0], date[6]);\r\n let dateObjects = { startDate: dates.formattedStartDate, endDate: dates.formattedEndDate };\r\n this.weekObjects.push(dateObjects);\r\n }\r\n }\r\n this.displayToUI();\r\n }\r\n\r\n selectedDates(dates: any) {\r\n this.fromDate = dates[0][0];\r\n this.toDate = dates[dates.length - 1][6];\r\n }\r\n\r\n formattedDates() {\r\n let pipe = new DatePipe(\"en-US\");\r\n let thisObj = this;\r\n return function (fromDate: NgbDate, toDate: NgbDate) {\r\n let fromDateObject = new Date(fromDate.year, fromDate.month - 1, fromDate.day);\r\n let toDateObject = new Date(toDate.year, toDate.month - 1, toDate.day);\r\n thisObj.formattedStartDate = pipe.transform(fromDateObject, thisObj.config.dateFormatForRequest);\r\n thisObj.formattedEndDate = pipe.transform(toDateObject, thisObj.config.dateFormatForRequest);\r\n\r\n thisObj.dateToDisplay =\r\n pipe.transform(fromDateObject, thisObj.config.dateFormatToDisplay) +\r\n \" to \" +\r\n pipe.transform(toDateObject, thisObj.config.dateFormatToDisplay);\r\n return thisObj;\r\n };\r\n }\r\n\r\n displayToUI() {\r\n if (!this.config.selectMultipleWeeks && this.fromDate && this.toDate) {\r\n // Display for only Single Week\r\n this.formatter(this.fromDate, this.toDate);\r\n } else {\r\n // Display for Multiple Weeks\r\n if (this.weekNumbers.length > (this.config.maxWeeksToShowWithRemainingCount ?? 0)) {\r\n let weekDisplay = [];\r\n for (let i = 0; i < (this.config.maxWeeksToShowWithRemainingCount ?? 0); i++) {\r\n weekDisplay.push(this.weekNumbers.shift());\r\n }\r\n let remainingWeeks = this.weekNumbers.length;\r\n this.weekNumbers = [];\r\n this.weekNumbers.push(weekDisplay + \" +\" + remainingWeeks);\r\n }\r\n }\r\n }\r\n\r\n constructStartDate(date: Date) {\r\n let firstDayOfWeek = this.config.firstDayOfWeek;\r\n return function (constructDate: any) {\r\n let startDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) - date.getDay() : -6;\r\n return constructDate(startDay);\r\n };\r\n }\r\n\r\n constructEndDate(date: Date) {\r\n let firstDayOfWeek = this.config.firstDayOfWeek;\r\n return function (constructDate: any) {\r\n let endDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) + 6 - date.getDay() : 0;\r\n return constructDate(endDay);\r\n };\r\n }\r\n\r\n buildDate(date: Date) {\r\n return function (number: number): NgbDate | null {\r\n let day = date.getDate() + number;\r\n const dateObject = new Date(date.getFullYear(), date.getMonth(), day);\r\n\r\n let ngbDateObject = {} as NgbDate;\r\n ngbDateObject.day = day;\r\n\r\n if (ngbDateObject.day > 31 || ngbDateObject.day < 1) {\r\n ngbDateObject.day = dateObject.getDate();\r\n }\r\n\r\n ngbDateObject.month = dateObject.getMonth() + 1;\r\n ngbDateObject.year = dateObject.getFullYear();\r\n return NgbDate.from(ngbDateObject);\r\n };\r\n }\r\n\r\n isHovered(date: NgbDate): boolean | null {\r\n return this.fromDate && !this.toDate && this.hoveredDate && date.after(this.fromDate) && date.before(this.hoveredDate);\r\n }\r\n\r\n isInside(date: NgbDate): boolean | null {\r\n return this.toDate && date.after(this.fromDate) && date.before(this.toDate);\r\n }\r\n\r\n isRange(date: NgbDate): boolean | null {\r\n return (\r\n date.equals(this.fromDate) || (this.toDate && date.equals(this.toDate)) || this.isInside(date) || this.isHovered(date)\r\n );\r\n }\r\n\r\n previousWeek(): void {\r\n if (this.fromDate) {\r\n this.toDate = this.calendar.getPrev(this.fromDate, \"d\", 1);\r\n this.fromDate = this.calendar.getPrev(this.fromDate, \"d\", this.calendar.getDaysPerWeek());\r\n }\r\n this.weekNumberGenerator();\r\n this.applyChanges();\r\n }\r\n\r\n nextWeek(): void {\r\n if (this.fromDate) {\r\n this.fromDate = this.calendar.getNext(this.fromDate, \"d\", this.calendar.getDaysPerWeek());\r\n this.toDate = this.calendar.getNext(this.fromDate, \"d\", this.calendar.getDaysPerWeek() - 1);\r\n }\r\n this.weekNumberGenerator();\r\n this.applyChanges();\r\n }\r\n\r\n setCalendarMap() {\r\n let dateObj = { fromDate: this.fromDate, toDate: this.toDate };\r\n this.calendarMap.set(\"oldDates\", dateObj);\r\n }\r\n\r\n applyChanges() {\r\n this.multiSelectDropdownOpen = false;\r\n if (!this.config.emitMultipleWeekObjects) {\r\n let dates = {} as WeekObject;\r\n let formattedDates = this.formatter(this.fromDate, this.toDate);\r\n dates.startDate = formattedDates.formattedStartDate;\r\n dates.endDate = formattedDates.formattedEndDate;\r\n this.applyWeekCalendarChanges.emit(dates);\r\n } else {\r\n this.applyWeekCalendarChanges.emit(this.weekObjects);\r\n }\r\n this.setCalendarMap();\r\n }\r\n\r\n isFocused(value: any) {\r\n this.calendarToggled.emit(value);\r\n }\r\n\r\n isDropdownOpenedForCalendar(datepicker: NgbInputDatepicker) {\r\n this.datepicker = datepicker;\r\n if (this.datepicker.isOpen()) {\r\n this.revertDates();\r\n this.datepicker.close();\r\n this.multiSelectDropdownOpen = false;\r\n } else {\r\n this.datepicker.open();\r\n this.multiSelectDropdownOpen = true;\r\n }\r\n }\r\n\r\n revertDates() {\r\n this.multiSelectDropdownOpen = false;\r\n if (this.calendarMap.get(\"oldDates\")) {\r\n let dateObj = this.calendarMap.get(\"oldDates\");\r\n this.fromDate = dateObj.fromDate;\r\n this.toDate = dateObj.toDate;\r\n this.weekNumberGenerator();\r\n this.displayToUI();\r\n }\r\n }\r\n\r\n checkIfDateIsDisabled(date: any): boolean {\r\n const validatorFunc = (ngbDate: NgbDate) => ngbDate.year === date.year && ngbDate.month === date.month && ngbDate.day === date.day;\r\n return this.disabledDates.some(validatorFunc);\r\n }\r\n\r\n closeDatepicker(datepickerRef: any) {\r\n datepickerRef.close();\r\n }\r\n}\r\n","<form class=\"form-inline\" *ngIf=\"config.showAsDropdown\">\r\n <div class=\"form-group hidden\">\r\n <div class=\"input-group\">\r\n <input\r\n name=\"datepicker\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"false\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n (closed)=\"isFocused(false)\"\r\n [displayMonths]=\"1\"\r\n [dayTemplate]=\"t\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n tabindex=\"-1\"\r\n style=\"display: none\"\r\n [footerTemplate]=\"footerTemplate\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!--Single week select-->\r\n <div *ngIf=\"!config.selectMultipleWeeks\">\r\n <span style=\"position: relative; left: 30px; font-size: 12px\"> &nbsp;{{ weekNumbers }} </span>\r\n <div class=\"form-group\">\r\n <div class=\"input-group\">\r\n <div class=\"single-week\">\r\n <div class=\"left\">\r\n <span class=\"material-icons next-round-btn\" (click)=\"previousWeek()\"> navigate_next </span>\r\n </div>\r\n <input\r\n #dpFromDate\r\n class=\"form-control\"\r\n placeholder=\"Select Weeks\"\r\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\r\n name=\"dpFromDate\"\r\n [value]=\"dateToDisplay\"\r\n [readonly]=\"true\"\r\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n />\r\n <i class=\"mdi mdi-menu-down\" *ngIf='!datepicker.isOpen()' (click)=\"datepicker.open()\"></i>\r\n <i class='mdi mdi-menu-up' *ngIf=\"datepicker.isOpen()\" (click)=\"isDropdownOpenedForCalendar(datepicker)\"></i>\r\n <div class=\"right\">\r\n <span class=\"material-icons round-btn\" (click)=\"nextWeek()\"> navigate_next </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Multiple week select-->\r\n <div class=\"form-group\" *ngIf=\"config.selectMultipleWeeks\">\r\n <div class=\"input-group\">\r\n <div class=\"multiple-weeks\">\r\n <input\r\n #dpFromDate\r\n class=\"form-control\"\r\n placeholder=\"Select Weeks\"\r\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\r\n name=\"dpFromDate\"\r\n [readonly]=\"true\"\r\n [value]=\"weekNumbers\"\r\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n />\r\n <i *ngIf=\"!multiSelectDropdownOpen\" class=\"mdi mdi-menu-down multiselect-input-arrow\"></i>\r\n <i *ngIf=\"multiSelectDropdownOpen\" class=\"mdi mdi-menu-up multiselect-input-arrow\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ngb-datepicker\r\n #weekPicker\r\n *ngIf=\"!config.showAsDropdown\"\r\n [displayMonths]=\"1\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n [dayTemplate]=\"t\"\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n [markDisabled]=\"disabledFunc\"\r\n>\r\n</ngb-datepicker>\r\n\r\n<ng-template #footerTemplate>\r\n <hr class=\"my-0\" />\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"applyChanges(); closeDatepicker(datepicker)\"\r\n style=\"background-color: #268bff; color: #ffffff\"\r\n >\r\n Apply\r\n </button>\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"revertDates(); closeDatepicker(datepicker)\"\r\n style=\"background-color: rgba(38, 139, 255, 0.12); color: #268bff\"\r\n >\r\n Cancel\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #t let-date let-focused=\"focused\" let-disabled=\"disabled\">\r\n <span\r\n class=\"custom-day\"\r\n [class.focused]=\"focused\"\r\n [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\"\r\n [class.disabled]=\"disabled\"\r\n (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\"\r\n >\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n<!--\r\n\r\n<hr>\r\n\r\n<pre>From: {{ fromDate | json }} </pre>\r\n<pre>To: {{ toDate | json }} </pre>\r\n<pre>weekNumbers: {{ weekNumbers | json }} </pre>\r\n\r\n-->\r\n","// Angular import statements\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { NgbDate } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\n@Component({\r\n selector: \"anna-core-calendar-filter-lib\",\r\n templateUrl: \"./anna-calendar-filter.component.html\",\r\n styleUrls: [\"./anna-calendar-filter.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AnnaCalendarFilterComponent implements OnInit {\r\n // @ViewChild(NgbDatepicker) datepicker: NgbDatepicker;\r\n @Input() maxDate: any;\r\n @Input() minDate: any;\r\n @Input() showDate: any;\r\n @Output() selectedDate = new EventEmitter();\r\n @Input() selectedFromDate: any;\r\n @Input() selectedToDate: any;\r\n @Output() apply = new EventEmitter();\r\n @Output() cancel = new EventEmitter();\r\n fromDate: any;\r\n toDate: any;\r\n hoveredDate: any;\r\n disableApplyBtn: boolean = false;\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.fromDate = this.selectedFromDate;\r\n this.toDate = this.selectedToDate;\r\n }\r\n\r\n dateSelected(event: any) {\r\n this.selectedDate.emit(event);\r\n }\r\n\r\n onDateSelection(date: NgbDate) {\r\n if (!this.fromDate && !this.toDate) {\r\n this.fromDate = date;\r\n } else if (this.fromDate && !this.toDate && (date.after(this.fromDate) || date.equals(this.fromDate))) {\r\n this.toDate = date;\r\n } else {\r\n this.toDate = null;\r\n this.fromDate = date;\r\n }\r\n this.disableCalendarApplyBtn();\r\n }\r\n\r\n isHovered(date: NgbDate) {\r\n return this.fromDate && !this.toDate && this.hoveredDate && date.after(this.fromDate) && date.before(this.hoveredDate);\r\n }\r\n\r\n isInside(date: NgbDate) {\r\n return this.toDate && date.after(this.fromDate) && date.before(this.toDate);\r\n }\r\n\r\n isRange(date: NgbDate) {\r\n return (\r\n date.equals(this.fromDate) || (this.toDate && date.equals(this.toDate)) || this.isInside(date) || this.isHovered(date)\r\n );\r\n }\r\n\r\n cancelSelection() {\r\n this.cancel.emit();\r\n }\r\n\r\n applySelection() {\r\n if (this.fromDate && this.toDate) {\r\n let dateObj = { fromDate: this.fromDate, toDate: this.toDate };\r\n this.apply.emit(dateObj);\r\n }\r\n }\r\n\r\n disableCalendarApplyBtn() {\r\n this.disableApplyBtn = !(this.fromDate && this.toDate);\r\n }\r\n}\r\n","<ngb-datepicker\r\n class=\"custom-datepicker\"\r\n #dp\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n [displayMonths]=\"1\"\r\n [dayTemplate]=\"t\"\r\n [startDate]=\"fromDate\"\r\n (dateSelect)=\"onDateSelection($event)\"\r\n navigation=\"select\"\r\n>\r\n</ngb-datepicker>\r\n<div class=\"buttons\">\r\n <button class=\"btn\" (click)=\"cancelSelection()\">Cancel</button>\r\n <button class=\"btn\" (click)=\"applySelection()\" [disabled]=\"disableApplyBtn\">Apply</button>\r\n</div>\r\n\r\n<ng-template #t let-date let-focused=\"focused\">\r\n <span\r\n class=\"custom-day\"\r\n [class.focused]=\"focused\"\r\n [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\"\r\n (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\"\r\n >\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n","// Angular import statements\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n// Third party import statements\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n// User defined import statements\r\nimport { AnnaWeekCalendarComponent } from './components/anna-week-calendar-filter/anna-week-calendar-filter.component';\r\nimport { AnnaCalendarFilterComponent } from './components/anna-calendar-filter/anna-calendar-filter.component';\r\n\r\n//sub-entries of anna lib import statement\r\nimport { AnnaCoreSharedLibModule } from '@annalib/anna-core/src/lib/anna-core-shared-lib';\r\n\r\n@NgModule({\r\n declarations: [\r\n AnnaWeekCalendarComponent,\r\n AnnaCalendarFilterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n NgbModule,\r\n AnnaCoreSharedLibModule\r\n ],\r\n exports: [\r\n AnnaWeekCalendarComponent,\r\n AnnaCalendarFilterComponent\r\n ]\r\n\r\n})\r\nexport class AnnaDropdownLibModule { }\r\n","//Modules\r\nexport * from \"./anna-dropdown-lib.module\";\r\n\r\n//Components\r\nexport * from \"./components/anna-calendar-filter/anna-calendar-filter.component\";\r\nexport * from \"./components/anna-week-calendar-filter/anna-week-calendar-filter.component\";","// 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","import { ChangeDetectionStrategy, Component, Input, OnInit } from \"@angular/core\";\r\n@Component({\r\n selector: \"anna-core-no-data-lib\",\r\n templateUrl: \"./anna-no-data.component.html\",\r\n styleUrls: [\"./anna-no-data.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AnnaNoDataComponent implements OnInit {\r\n @Input() width;\r\n @Input() marginTop;\r\n message: string;\r\n constructor() {\r\n this.width = \"46%\";\r\n this.marginTop = \"1.25rem\";\r\n }\r\n\r\n ngOnInit() {\r\n this.message = \"No data to display\";\r\n }\r\n}\r\n","<div [style.width]=\"width\" [style.marginTop]=\"marginTop\" class=\"no-data\">\r\n <label>{{ message }}</label>\r\n</div>\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { memoize } from \"lodash-es\";\r\n\r\n@Pipe({\r\n name: \"AnnafilterSearchedText\",\r\n})\r\nexport class AnnaFilterSearchedTextPipe implements PipeTransform {\r\n callFilter = memoize(this.filter, (...args) => this.filter(args[0], args[1], args[2]));\r\n\r\n transform(items: any[], searchText: any, keyName?: any): any[] {\r\n return this.callFilter(items, searchText, keyName);\r\n }\r\n\r\n filter(items: any[], searchText: string, keyName?: any): any[] {\r\n if (!items) return [];\r\n if (!searchText) return items;\r\n searchText = searchText.toString().toLowerCase();\r\n\r\n //if keyName is undefined every key will be considered for filtering.\r\n if (!keyName)\r\n return items.filter(\r\n (item) => Object.values(item).filter((n) => n.toString().toLowerCase().includes(searchText)).length > 0\r\n );\r\n return items.filter((item) => item[keyName].toString().toLowerCase().startsWith(searchText));\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-buyer-approval-icon-template',\r\n templateUrl: './anna-buyer-approval-icon-template.component.html',\r\n styleUrls: ['./anna-buyer-approval-icon-template.component.scss']\r\n})\r\nexport class AnnaBuyerApprovalIconTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"buyerApprovalIcon\"></ng-container>\r\n\r\n<ng-template #buyerApprovalIcon>\r\n <svg width=\"15px\" height=\"15px\" viewBox=\"0 0 20 20\">\r\n <g id=\"Awaiting-Buyer-Approval-icon\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"time-left\" transform=\"translate(3.000000, 2.000000)\" fill=\"#4A4A4A\" fill-rule=\"nonzero\">\r\n <path\r\n d=\"M6.23157622,14.1696467 C5.70535057,14.0721422 5.2005579,13.9061054 4.72188769,13.6745242 C4.71622258,13.6714711 4.71115545,13.6679958 4.70520709,13.6652025 C4.59240848,13.6104091 4.47979871,13.551718 4.37065094,13.4903961 C4.37027327,13.4899414 4.36958087,13.4896491 4.36898288,13.4893893 C4.16872129,13.37558 3.97327504,13.2496557 3.78339947,13.1117139 C1.01467199,11.0989392 0.348958764,7.13679055 2.29945571,4.27950803 C2.72358352,3.65842885 3.23684237,3.14027823 3.80904983,2.72960334 C3.81609974,2.72453649 3.82314965,2.71950212 3.83013662,2.71440279 C5.84650619,1.28061347 8.58442178,1.183986 10.7254867,2.65733574 L10.2656372,3.34301728 C10.1377946,3.53386873 10.2164452,3.67294733 10.4402485,3.65216024 L12.4377343,3.46760989 C12.6618209,3.4468228 12.7958322,3.24677957 12.7355617,3.0234483 L12.1991703,1.02899228 C12.1391202,0.805401178 11.9853754,0.778637804 11.8574069,0.969456765 L11.3964873,1.6567623 C9.82523796,0.568265989 7.94067659,0.153206329 6.0701521,0.487943386 C5.88175576,0.521592483 5.69600314,0.562776899 5.51279981,0.610717118 C5.51138354,0.610976957 5.51025052,0.611139356 5.50911749,0.611399194 C5.50203611,0.613185585 5.4948603,0.615556612 5.48796775,0.617537881 C3.8749854,1.04500483 2.46767797,2.01585923 1.46347449,3.40105873 C1.4550083,3.41141979 1.44629033,3.4215535 1.43829623,3.432824 C1.40490356,3.47923766 1.37176268,3.52672316 1.33931419,3.57420867 C1.28625101,3.65203032 1.23394317,3.73180077 1.18390138,3.81157121 C1.17763828,3.82118524 1.17285441,3.83096167 1.16737814,3.84067314 C0.338698623,5.1658824 -0.0610062726,6.69795566 0.00754154337,8.25770173 C0.00769890751,8.26283354 0.00741565207,8.26799784 0.00754154337,8.27325957 C0.0141823097,8.42562242 0.0258902012,8.58009646 0.0417839785,8.73216699 C0.0426337448,8.7419759 0.0447424242,8.75126512 0.0463475384,8.76107403 C0.0627763537,8.91398904 0.0833910551,9.06726132 0.109230246,9.22050113 C0.371839509,10.7840149 1.08652445,12.1909434 2.15745032,13.2856758 C2.15993667,13.2882417 2.16251744,13.291035 2.16503527,13.2936983 C2.16591651,13.2947052 2.16689216,13.2952249 2.16774193,13.2961668 C2.45546651,13.5890373 2.7684323,13.8599191 3.10541185,14.1048494 C3.98728044,14.7461311 4.9692641,15.1700252 6.02385557,15.3653264 C6.3438398,15.424667 6.64950389,15.2048436 6.70691032,14.8747836 C6.76428528,14.5444963 6.55146603,14.2287924 6.23157622,14.1696467 Z\"\r\n id=\"Path\"\r\n ></path>\r\n <path\r\n d=\"M9.22237925,14.6588011 C9.29073073,14.9263505 9.1292489,15.198652 8.86169949,15.2670034 C8.51639563,15.355219 8.1641424,15.4188128 7.8069689,15.4570516 C7.53239558,15.4864472 7.28598003,15.2876915 7.25658436,15.0131182 C7.22718869,14.7385449 7.42594445,14.4921293 7.70051776,14.4627336 C8.01004537,14.4295958 8.31515603,14.3745129 8.61417689,14.2981213 C8.8817263,14.2297698 9.15402777,14.3912517 9.22237925,14.6588011 Z M12.5552524,12.2886551 C12.7611952,12.4726175 12.7790139,12.7886982 12.5950515,12.994641 C12.3569806,13.2611574 12.1001968,13.5104915 11.8267859,13.7406023 C11.6155121,13.9184167 11.3000937,13.8912925 11.1222793,13.6800187 C10.9444648,13.4687448 10.9715891,13.1533264 11.1828629,12.975512 C11.4200152,12.7759175 11.6427598,12.5596351 11.8492666,12.3284542 C12.033229,12.1225114 12.3493096,12.1046927 12.5552524,12.2886551 Z M13.9945063,8.57622811 C14.2674538,8.61811209 14.4547678,8.87333344 14.4128838,9.14628095 C14.3584322,9.50112883 14.2787427,9.85020038 14.1746496,10.1914009 C14.0940709,10.4555252 13.8146338,10.6043183 13.5505094,10.5237395 C13.2863851,10.4431608 13.137592,10.1637237 13.2181708,9.89959931 C13.3082912,9.6041989 13.3772907,9.30195366 13.4244534,8.99460564 C13.4663374,8.72165813 13.7215588,8.53434413 13.9945063,8.57622811 Z M13.8741743,4.99628976 C14.0173723,5.32357494 14.1370467,5.66111195 14.2320931,6.00667963 C14.305325,6.27293459 14.1488489,6.54814305 13.8825939,6.62137492 C13.6163389,6.6946068 13.3411305,6.53813067 13.2678986,6.27187571 C13.1856167,5.97271686 13.0820133,5.68050756 12.958028,5.39713383 C12.847338,5.14414702 12.9626923,4.84932868 13.2156791,4.73863865 C13.4686659,4.62794862 13.7634843,4.74330295 13.8741743,4.99628976 Z\"\r\n id=\"Combined-Shape\"\r\n ></path>\r\n <path\r\n d=\"M6.49684035,4 C6.22234237,4 6,4.21290493 6,4.47514225 L6,9.20888548 L10.5252942,11.4469308 C10.5981282,11.4830116 10.6761155,11.5 10.7528554,11.5 C10.9325937,11.5 11.106194,11.4063595 11.1944548,11.2429754 C11.3203307,11.0097848 11.2250786,10.7233052 10.9813357,10.6028789 L6.9931227,8.63027395 L6.9931227,4.47514225 C6.99308988,4.21290493 6.77101009,4 6.49684035,4 Z\"\r\n id=\"Path\"\r\n ></path>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-live-icon-template',\r\n templateUrl: './anna-live-icon-template.component.html',\r\n styleUrls: ['./anna-live-icon-template.component.scss']\r\n})\r\nexport class AnnaLiveIconTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"liveIcon\"></ng-container>\r\n<ng-template #liveIcon>\r\n <svg width=\"15px\" height=\"15px\" viewBox=\"0 0 20 20\">\r\n <g id=\"Live-Icon\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"next\" transform=\"translate(2.000000, 2.000000)\" fill-rule=\"nonzero\">\r\n <path\r\n d=\"M8,0 C3.58171139,0 0,3.58171139 0,8 C0,12.4182886 3.58171139,16 8,16 C12.4182886,16 16,12.4182886 16,8 C15.9950435,3.58379835 12.4162343,0.00498913721 8,0 Z\"\r\n id=\"Path\"\r\n fill=\"#C2E361\"\r\n ></path>\r\n <path\r\n d=\"M8,16 C3.58171139,16 0,12.4182633 0,7.9999837 C0,3.58170409 3.58171139,0 8,0 C12.4182886,0 16,3.58170409 16,7.9999837 C15.9950435,12.416209 12.4162343,15.9950109 8,16 Z M8,0.695640832 C3.96590756,0.695640832 0.69564225,3.96589948 0.69564225,7.9999837 C0.69564225,12.0340679 3.96590756,15.3043266 8,15.3043266 C12.0340924,15.3043266 15.3043578,12.0340679 15.3043578,7.9999837 C15.2997599,3.96782339 12.0322011,0.700238655 8,0.695640832 Z\"\r\n id=\"Shape\"\r\n fill=\"#8BAC2A\"\r\n ></path>\r\n <circle id=\"Oval\" fill=\"#8BAC2A\" cx=\"8\" cy=\"8\" r=\"4\"></circle>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-notify-icon-template',\r\n templateUrl: './anna-notify-icon-template.component.html',\r\n styleUrls: ['./anna-notify-icon-template.component.scss']\r\n})\r\nexport class AnnaNotifyIconTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"notifyIcon\"></ng-container>\r\n\r\n<ng-template #notifyIcon>\r\n <svg width=\"15px\" height=\"15px\" viewBox=\"0 0 20 20\">\r\n <g id=\"Notify-buyer-icon\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"notification\" transform=\"translate(3.000000, 1.000000)\" fill=\"#4A4A4A\" fill-rule=\"nonzero\">\r\n <path\r\n d=\"M12.6666669,8.66366455 L12.6666669,7.08618164 C12.6666669,4.78491943 11.1196383,2.8344397 9.0000114,2.19737549 L9.0000114,1.4831543 C9.0000114,0.665343018 8.32711346,8.52651283e-13 7.50001599,8.52651283e-13 C6.67291852,8.52651283e-13 6.00002058,0.665343018 6.00002058,1.4831543 L6.00002058,2.19737549 C3.8803604,2.8344397 2.33336513,4.78488647 2.33336513,7.08618164 L2.33336513,8.66366455 C2.33336513,10.685105 1.55410085,12.6018677 0.139138508,14.060896 C0.000472265053,14.2038721 -0.0384942824,14.4148425 0.0401054772,14.5970398 C0.118705237,14.7792371 0.299704683,14.8974609 0.500037404,14.8974609 L5.05032349,14.8974609 C5.28258944,16.0243945 6.29271969,16.875 7.50001599,16.875 C8.70734563,16.875 9.71740921,16.0243945 9.9497085,14.8974609 L14.5,14.8974609 C14.7003273,14.8974609 14.8812934,14.7792371 14.9598932,14.5970398 C15.0384929,14.4148425 14.9995264,14.2038721 14.8608935,14.060896 C13.4459311,12.6018677 12.6666669,10.685072 12.6666669,8.66366455 Z M7.00001752,1.4831543 C7.00001752,1.21055054 7.22431684,0.988769531 7.50001752,0.988769531 C7.77571515,0.988769531 8.00001752,1.21055054 8.00001752,1.4831543 L8.00001752,2.0015332 C7.8354483,1.98584473 7.66868214,1.97753906 7.50001752,1.97753906 C7.33134984,1.97753906 7.16458369,1.98584473 7.00001752,2.0015332 L7.00001752,1.4831543 Z M7.50001599,15.8862305 C6.84818465,15.8862305 6.29241969,15.4728918 6.08602032,14.8974609 L8.91401167,14.8974609 C8.7076123,15.4728918 8.15184733,15.8862305 7.50001599,15.8862305 L7.50001599,15.8862305 Z M1.57770077,13.9086914 C2.71639729,12.3994336 3.33336207,10.5729785 3.33336207,8.66366455 L3.33336207,7.08618164 C3.33336207,4.81448364 5.20252302,2.96630859 7.50001599,2.96630859 C9.79750897,2.96630859 11.6666699,4.81448364 11.6666699,7.08618164 L11.6666699,8.66366455 C11.6666699,10.5729785 12.2836347,12.3994336 13.4223645,13.9086914\"\r\n id=\"Shape\"\r\n ></path>\r\n <path\r\n d=\"M13.7705926,7.02729272 C13.7705926,7.28835319 14.0458159,7.5 14.3852963,7.5 C14.7247767,7.5 15,7.28835319 15,7.02729272 C15,5.13331221 14.0408983,3.3526869 12.2993607,2.01344415 C12.0593394,1.82886771 11.670109,1.82883619 11.4300467,2.01344415 C11.1899844,2.1980521 11.1899844,2.49733883 11.4300467,2.68194678 C12.9393902,3.84263224 13.7705926,5.38583244 13.7705926,7.02729272 L13.7705926,7.02729272 Z\"\r\n id=\"Path\"\r\n ></path>\r\n <path\r\n d=\"M0.614703713,7.5 C0.954184083,7.5 1.22940743,7.28835245 1.22940743,7.02729106 C1.22940743,5.38585655 2.06065077,3.84265095 3.56995328,2.68196143 C3.81001557,2.49735283 3.81001557,2.19806504 3.56995328,2.01345645 C3.32993197,1.82884785 2.94070158,1.82884785 2.70063929,2.01345645 C0.959101713,3.3527039 0,5.13330392 0,7.02729106 C0,7.28835245 0.275223342,7.5 0.614703713,7.5 Z\"\r\n id=\"Path\"\r\n ></path>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-pay-for-performance-icon-template',\r\n templateUrl: './anna-pay-for-performance-icon-template.component.html',\r\n styleUrls: ['./anna-pay-for-performance-icon-template.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AnnaPayForPerformanceIconTemplateComponent implements OnInit {\r\n\r\n @Input() color: string;\r\n @Input() width: string;\r\n @Input() height: string;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"PayForPerformanceIcon\"\r\n [ngTemplateOutletContext]=\"{ color: color,width: width,height:height}\"> \r\n</ng-container>\r\n\r\n<ng-template #PayForPerformanceIcon let-color=\"color\" let-width=\"width\" let-height=\"height\">\r\n <svg [attr.width]=\"width\" [attr.height]=\"height\" viewBox=\"0 0 20 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"02.-PAY-FOR-PERFORMANCE-MARKED\" transform=\"translate(-100.000000, -537.000000)\" [attr.fill]=\"color\" fill-rule=\"nonzero\">\r\n <g id=\"PFP\" transform=\"translate(100.000000, 537.000000)\">\r\n <path d=\"M20,3.125 L20,8.3984375 C20,8.82995605 19.6502686,9.1796875 19.21875,9.1796875 C18.7872314,9.1796875 18.4375,8.82995605 18.4375,8.3984375 L18.4375,3.125 C18.4375,2.26348875 17.7365112,1.5625 16.875,1.5625 L3.125,1.5625 C2.26348875,1.5625 1.5625,2.26348875 1.5625,3.125 L1.5625,16.875 C1.5625,17.7365112 2.26348875,18.4375 3.125,18.4375 L12.96875,18.4375 C13.4002686,18.4375 13.75,18.7872314 13.75,19.21875 C13.75,19.6502686 13.4002686,20 12.96875,20 L3.125,20 C1.40182496,20 0,18.598175 0,16.875 L0,3.125 C0,1.40182496 1.40182496,0 3.125,0 L16.875,0 C18.598175,0 20,1.40182496 20,3.125 Z M15.9622314,5.43584332 C15.9447753,5.38514929 15.9230346,5.33649554 15.8936766,5.29255022 C15.8924071,5.290196 15.891455,5.28799875 15.8901855,5.28580147 C15.8589232,5.23981585 15.8206786,5.19995115 15.7789427,5.16322545 C15.7689451,5.15427945 15.7584715,5.1459612 15.7475217,5.13764299 C15.7022947,5.10280065 15.6545285,5.07203893 15.6008908,5.04975236 C15.6008908,5.04975236 15.6008908,5.04975236 15.6005734,5.04975236 C15.5488399,5.02825056 15.4929805,5.01600867 15.4358516,5.00863213 C15.4218867,5.00674875 15.4082392,5.00549317 15.3942744,5.00455147 C15.3791987,5.0036098 15.3652338,5 15.3499994,5 L13.0749975,5 C12.7161959,5 12.4249969,5.28799875 12.4249969,5.64285714 C12.4249969,5.99771553 12.7161959,6.28571429 13.0749975,6.28571429 L13.7624492,6.28571429 L11.4499961,8.53571429 C11.4415854,8.52708216 11.4320639,8.5182931 11.4230185,8.5102888 L10.4034253,7.61160714 C9.89545371,7.12554061 9.08263561,7.13071987 8.58291595,7.62416295 L3.19264032,12.9001116 C2.937623,13.1498152 2.93555998,13.557094 3.18787956,13.8094657 C3.31530888,13.9362793 3.48225238,14 3.64998933,14 C3.8153459,14 3.98054383,13.9383196 4.10733834,13.8141741 L9.5,8.53571429 C9.50840503,8.54434641 9.51792652,8.55313547 9.52697193,8.56113977 L10.5462477,9.45982143 C10.7899979,9.69320244 11.1100788,9.82142857 11.4499961,9.82142857 C11.7970545,9.82142857 12.1233243,9.68770926 12.3651702,9.44852121 L14.6999989,7.1770194 L14.6999989,7.89285714 C14.6999989,8.24771553 14.9911979,8.53571429 15.3499994,8.53571429 C15.708801,8.53571429 16,8.24771553 16,7.89285714 L16,5.64285714 C16,5.58431572 15.9895264,5.52844239 15.9746094,5.47445244 C15.9711181,5.46126884 15.9668335,5.44871304 15.9622314,5.43584332 Z M17.7789307,14.21875 L17.0629883,14.21875 C16.71875,14.21875 16.4280701,13.9146423 16.4280701,13.5546875 L16.4280701,13.2698059 C16.4280701,12.9200745 16.7010498,12.65625 17.0629883,12.65625 L17.7400207,12.65625 C17.9388428,12.65625 18.1446838,12.7894592 18.1446838,13.0123902 C18.1446838,13.4437561 18.4945679,13.7936402 18.9259338,13.7936402 C19.3574524,13.7936402 19.7071838,13.4437561 19.7071838,13.0123902 C19.7071838,12.0761109 19.0158081,11.2947082 18.1048584,11.1273193 L18.1048584,10.625 C18.1048584,10.1934814 17.755127,9.84375 17.3236084,9.84375 C16.8920898,9.84375 16.5423584,10.1934814 16.5423584,10.625 L16.5423584,11.1541748 C16.1557007,11.2454223 15.8015442,11.4382934 15.5142212,11.7193604 C15.0959778,12.1286011 14.8655701,12.6792908 14.8655701,13.2696533 L14.8655701,13.5546875 C14.8655701,14.7824097 15.8512879,15.78125 17.0629883,15.78125 L17.7789307,15.78125 C18.1373596,15.78125 18.4181213,16.053009 18.4181213,16.3999939 L18.4181213,16.5917969 C18.4181213,16.9313049 18.1433105,17.1875 17.7789307,17.1875 L16.615448,17.1875 C16.4233398,17.1875 16.2290955,17.0666504 16.2290955,16.8359375 C16.2290955,16.4044189 15.879364,16.0546875 15.4478455,16.0546875 C15.0163269,16.0546875 14.6665955,16.4044189 14.6665955,16.8359375 C14.6665955,17.8851318 15.4847717,18.7117004 16.5423584,18.7481689 L16.5423584,19.1796875 C16.5423584,19.6112061 16.8920898,19.9609375 17.3236084,19.9609375 C17.755127,19.9609375 18.1048584,19.6112061 18.1048584,19.1796875 L18.1048584,18.7272644 C19.1795349,18.5771179 19.9806213,17.6931763 19.9806213,16.5917969 L19.9806213,16.3999939 C19.9806213,15.8096313 19.7496033,15.2581787 19.3299866,14.8472595 C18.9161682,14.4419861 18.3653259,14.21875 17.7789307,14.21875 Z\" id=\"Shape-Copy-9\"></path>\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-rejected-icon-template',\r\n templateUrl: './anna-rejected-icon-template.component.html',\r\n styleUrls: ['./anna-rejected-icon-template.component.scss']\r\n})\r\nexport class AnnaRejectedIconTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"rejectedIcon\"></ng-container>\r\n\r\n<ng-template #rejectedIcon>\r\n <svg width=\"15px\" height=\"15px\" viewBox=\"0 0 20 20\">\r\n <g id=\"Buyer-rejected-icon\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M15.7822266,4.21777344 C14.3671875,2.80276367 12.4951465,2 10.5,2 C6.37918945,2 3,5.37253906 3,9.5 C3,13.6296289 6.37133789,17 10.5,17 C14.6105273,17 18,13.6429004 18,9.5 C18,7.50485352 17.1972656,5.6327832 15.7822266,4.21777344 Z M10.5,15.2128906 C7.34220703,15.2128906 4.78710938,12.664502 4.78710938,9.5 C4.78710938,8.26950195 5.17382812,7.10055664 5.88574219,6.13375977 L13.8662402,14.1054395 C12.8993848,14.8261719 11.730498,15.2128906 10.5,15.2128906 Z M15.1054688,12.8661816 L7.13375977,4.88574219 C8.10061523,4.17382813 9.26950195,3.78710938 10.5,3.78710938 C13.6578809,3.78710938 16.2128906,6.33549805 16.2128906,9.5 C16.2128906,10.7304395 15.8261719,11.8993848 15.1054688,12.8661816 Z\"\r\n id=\"Shape\"\r\n fill=\"#4A4A4A\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","\r\n\r\n// Angular import statements\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n// Third party import statements\r\n\r\n// User defined import statements\r\nimport { AnnaNoDataComponent } from './components/anna-no-data/anna-no-data.component';\r\nimport { AnnaFilterSearchedTextPipe } from './pipes/annaFilterSearchedText.pipe';\r\nimport { AnnaBuyerApprovalIconTemplateComponent } from './components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component';\r\nimport { AnnaLiveIconTemplateComponent } from './components/anna-live-icon-template/anna-live-icon-template.component';\r\nimport { AnnaNotifyIconTemplateComponent } from './components/anna-notify-icon-template/anna-notify-icon-template.component';\r\nimport { AnnaPayForPerformanceIconTemplateComponent } from './components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component';\r\nimport { AnnaRejectedIconTemplateComponent } from './components/anna-rejected-icon-template/anna-rejected-icon-template.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AnnaNoDataComponent,\r\n AnnaFilterSearchedTextPipe,\r\n AnnaBuyerApprovalIconTemplateComponent,\r\n AnnaLiveIconTemplateComponent,\r\n AnnaNotifyIconTemplateComponent,\r\n AnnaPayForPerformanceIconTemplateComponent,\r\n AnnaRejectedIconTemplateComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports : [\r\n AnnaNoDataComponent,\r\n AnnaFilterSearchedTextPipe,\r\n AnnaBuyerApprovalIconTemplateComponent,\r\n AnnaLiveIconTemplateComponent,\r\n AnnaNotifyIconTemplateComponent,\r\n AnnaPayForPerformanceIconTemplateComponent,\r\n AnnaRejectedIconTemplateComponent\r\n ]\r\n})\r\nexport class AnnaCoreSharedLibModule { }\r\n","// Angular import statements\r\nimport { Injectable } from '@angular/core';\r\nimport { NgbDate } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n// Third party import statements\r\nimport moment from \"moment\";\r\n\r\n// User defined import statements \r\nexport type NgbDateType = { year: number, month: number, day: number };\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AnnaDateTimeFormatService {\r\n\r\n constructor() {\r\n console.log(\"AnnaDateTimeFormatService service created.\")\r\n }\r\n\r\n convertToNgbDateStandardFormat(date: any): NgbDateType | NgbDate {\r\n return {\r\n year: parseInt(moment(date, \"MM/DD/YYYY\").format(\"YYYY\")),\r\n month: parseInt(moment(date, \"MM/DD/YYYY\").format(\"M\")),\r\n day: parseInt(moment(date, \"MM/DD/YYYY\").format(\"D\")),\r\n };\r\n }\r\n\r\n convertToNgbDate(date: any, parseFormat: any): NgbDateType | NgbDate {\r\n return {\r\n year: parseInt(moment(date, parseFormat).format(\"YYYY\")),\r\n month: parseInt(moment(date, parseFormat).format(\"M\")),\r\n day: parseInt(moment(date, parseFormat).format(\"D\")),\r\n };\r\n }\r\n\r\n formatToTwelveHrs(time: any, callRemoveZero: boolean) {\r\n if (time.endsWith('A') || time.endsWith('P')) {\r\n time = time.substring(0, time.length - 1);\r\n }\r\n let tmp = time.split(\":\");\r\n let formattedTime = [];\r\n if (+tmp[0] > 12) {\r\n formattedTime[0] = (+tmp[0] - 12).toString();\r\n if (+tmp[0] == 24) formattedTime[2] = \"AM\";\r\n else formattedTime[2] = \"PM\";\r\n } else if (tmp[0] == \"12\") {\r\n formattedTime[0] = tmp[0];\r\n formattedTime[2] = \"PM\";\r\n } else if (tmp[0] == \"00\") {\r\n formattedTime[0] = \"12\"\r\n formattedTime[2] = \"AM\";\r\n } else {\r\n formattedTime[0] = tmp[0];\r\n formattedTime[2] = \"AM\";\r\n }\r\n formattedTime[1] = tmp[1];\r\n if (callRemoveZero) formattedTime = this.removeZero(formattedTime);\r\n return formattedTime;\r\n }\r\n\r\n convertTotwentyFourHrsFormat(time: any, callAddZero: any) {\r\n let tmp = time.split(/[ :]+/);\r\n let formattedTime = [];\r\n if (tmp[0] != \"12\" && tmp[2] == \"PM\") {\r\n formattedTime[0] = (+tmp[0] + 12).toString();\r\n } else if (tmp[0] == \"12\" && tmp[2] == \"AM\") {\r\n formattedTime[0] = \"00\";\r\n } else formattedTime[0] = tmp[0].toString();\r\n formattedTime[1] = tmp[1].toString();\r\n if (callAddZero) formattedTime = this.addZero(formattedTime);\r\n return formattedTime;\r\n }\r\n\r\n removeZero(time: any) {\r\n let removedZero;\r\n let formattedTime = time;\r\n if (\r\n time[0] == \"01\" ||\r\n time[0] == \"02\" ||\r\n time[0] == \"03\" ||\r\n time[0] == \"04\" ||\r\n time[0] == \"05\" ||\r\n time[0] == \"06\" ||\r\n time[0] == \"07\" ||\r\n time[0] == \"08\" ||\r\n time[0] == \"09\"\r\n ) {\r\n removedZero = time[0].toString();\r\n formattedTime[0] = removedZero.charAt(1);\r\n formattedTime[1] = time[1];\r\n formattedTime[2] = time[2];\r\n }\r\n return formattedTime;\r\n }\r\n\r\n addZero(time: any) {\r\n let addedZero;\r\n let formattedTime = time;\r\n if (time[1] == \"0\") time[1] = \"0\" + time[1];\r\n if (\r\n time[0] == \"0\" ||\r\n time[0] == \"1\" ||\r\n time[0] == \"2\" ||\r\n time[0] == \"3\" ||\r\n time[0] == \"4\" ||\r\n time[0] == \"5\" ||\r\n time[0] == \"6\" ||\r\n time[0] == \"7\" ||\r\n time[0] == \"8\" ||\r\n time[0] == \"9\"\r\n ) {\r\n addedZero = \"0\" + time[0];\r\n formattedTime[0] = addedZero;\r\n formattedTime[1] = time[1];\r\n }\r\n return formattedTime;\r\n }\r\n\r\n sortByTimeAscending(a: any, b: any) {\r\n let format = \"HH:mm:ss\";\r\n a = moment(a, format);\r\n b = moment(b, format);\r\n\r\n let results;\r\n\r\n results = a.hours() > b.hours() ? 1 : a.hours() < b.hours() ? -1 : 0;\r\n\r\n if (results === 0) results = a.minutes() > b.minutes() ? 1 : a.minutes() < b.minutes() ? -1 : 0;\r\n\r\n if (results === 0) results = a.seconds() > b.seconds() ? 1 : a.seconds() < b.seconds() ? -1 : 0;\r\n\r\n return results;\r\n }\r\n\r\n sortByTimeDescending(a: any, b: any) {\r\n let format = \"HH:mm:ss\";\r\n a = moment(a, format);\r\n b = moment(b, format);\r\n\r\n let results;\r\n\r\n results = a.hours() < b.hours() ? 1 : a.hours() > b.hours() ? -1 : 0;\r\n\r\n if (results === 0) results = a.minutes() < b.minutes() ? 1 : a.minutes() > b.minutes() ? -1 : 0;\r\n\r\n if (results === 0) results = a.seconds() < b.seconds() ? 1 : a.seconds() > b.seconds() ? -1 : 0;\r\n return results;\r\n }\r\n\r\n convertNgbDateToMoment(ngbDate: NgbDate | NgbDateType): string {\r\n let converted = moment();\r\n converted.month(ngbDate.month - 1);\r\n converted.date(ngbDate.day);\r\n converted.year(ngbDate.year);\r\n return converted.format(\"MM/DD/YYYY\");\r\n }\r\n\r\n compareDate(a: string, b: string, isAsc: boolean) {\r\n return isAsc ? moment(a).diff(b) : moment(b).diff(a);\r\n }\r\n\r\n formatDateAndHHMMATimeToStandardFormat(dateAndTime: any) {\r\n let standardFormat, date, time;\r\n if (dateAndTime.includes(\"|\")) {\r\n date = dateAndTime.slice(0, dateAndTime.indexOf(\"|\"));\r\n time = dateAndTime.slice(dateAndTime.indexOf('|') + 1, dateAndTime.length).trim();\r\n\r\n time = time.slice(0, 2) + \":\" + time.slice(2, 4) + \" \" + time.slice(4, 5);\r\n time = time + \"M\";\r\n standardFormat = date + time;\r\n }\r\n else {\r\n standardFormat = dateAndTime + \" 00:00 AM\"\r\n }\r\n return moment(standardFormat).format(\"MM/DD/YYYY hh:mm A\");\r\n }\r\n\r\n compare(a: number | string, b: number | string, isAsc: boolean) {\r\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\r\n }\r\n\r\n sortDataByBroadcastTimeAsc(firstParamTime: string, secondParamTime: string, broadcastTime: string) {\r\n let format = \"HH:mm:ss\";\r\n\r\n let a = moment(firstParamTime, format);\r\n let b = moment(secondParamTime, format);\r\n\r\n let broadcastMomentDateTime = moment(broadcastTime, \"HH:mm:ss\");\r\n\r\n a = a.isBefore(broadcastMomentDateTime) ? a.add(1, \"d\") : a;\r\n b = b.isBefore(broadcastMomentDateTime) ? b.add(1, \"d\") : b;\r\n\r\n let result = a.isBefore(b) ? -1 : a.isAfter(b) ? 1 : 0;\r\n return result;\r\n }\r\n \r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport {\r\n IAngular2MultiSelectSettings,\r\n INgxAsideSettings,\r\n INgbDatePickerSettings,\r\n INgSelectSettings,\r\n INgxInfiniteScrollSettings,\r\n INgxSkeletonLoaderSettings,\r\n IRadioButtonComponentConfig,\r\n IConfirmationPopupConfig,\r\n IWeekCalendar,\r\n ICustomSingleSelect,\r\n ICustomMultiSelect,\r\n} from \"../models/anna-global-dropdown-config.model\";\r\nimport {\r\n IGtHeaderConfig,\r\n IGtGeneralConfig\r\n} from \"../models/anna-non-editable-gt-models\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaGlobalConfigService {\r\n readonly defaultAngular2MultiSelectSettings: IAngular2MultiSelectSettings;\r\n readonly defaultNgxAsideSettings: INgxAsideSettings;\r\n readonly defaultNgbDatePickerSettings: INgbDatePickerSettings;\r\n readonly defaultNgSelectSettings: INgSelectSettings;\r\n readonly defaultNgxInfiniteScrollSettings: INgxInfiniteScrollSettings;\r\n readonly defaultNgxSkeletonLoaderSettings: INgxSkeletonLoaderSettings;\r\n readonly defaultRadioButtonsComponentConfig: IRadioButtonComponentConfig;\r\n readonly defaultConfirmationPopupConfig: IConfirmationPopupConfig;\r\n readonly defaultWeekCalendarConfig: IWeekCalendar;\r\n readonly defaultGtHeaderConfig: IGtHeaderConfig;\r\n readonly defaultGtGeneralConfig: IGtGeneralConfig;\r\n readonly defaultSingleSelectConfig: ICustomSingleSelect;\r\n readonly defaultMultiSelectConfig: ICustomMultiSelect;\r\n\r\n /*\r\n Initializing all default settings\r\n */\r\n constructor() {\r\n console.log(\"AnnaGlobalConfigService service created.\");\r\n this.defaultAngular2MultiSelectSettings = {\r\n text: \"Select option\",\r\n selectAllText: \"Select All\",\r\n unSelectAllText: \"UnSelect All\",\r\n badgeShowLimit: 1,\r\n singleSelection: false,\r\n classes: \"filter-dropdowns\",\r\n enableSearchFilter: true,\r\n enableCheckAll: true,\r\n autoPosition: false,\r\n disabled: false,\r\n position: \"bottom\",\r\n lazyLoading: false,\r\n showCheckbox: true,\r\n maxHeight: 300,\r\n enableFilterSelectAll: true,\r\n };\r\n\r\n this.defaultNgxAsideSettings = {\r\n title: '\"Filters\"',\r\n cancelButtonTitle: '\"Cancel\"',\r\n submitButtonTitle: '\"Apply\"',\r\n closeOnEscape: false,\r\n showOverlay: false,\r\n showDefaultFooter: false,\r\n showDefaultHeader: false,\r\n };\r\n\r\n this.defaultNgbDatePickerSettings = {\r\n autoClose: false,\r\n placeholder: \"mm-dd-yyyy\",\r\n displayMonths: 1,\r\n firstDayOfWeek: 1,\r\n showWeekNumbers: false,\r\n readonly: true,\r\n };\r\n\r\n this.defaultNgSelectSettings = {\r\n allowClear: false,\r\n placeholder: \"Select\",\r\n };\r\n\r\n this.defaultNgxInfiniteScrollSettings = {\r\n infiniteScrollDistance: 1,\r\n infiniteScrollUpDistance: 2,\r\n infiniteScrollThrottle: 300,\r\n scrollWindow: false,\r\n };\r\n\r\n this.defaultNgxSkeletonLoaderSettings = {\r\n numberOfSkeletonRows: Array(6).fill(0),\r\n };\r\n\r\n this.defaultRadioButtonsComponentConfig = {\r\n heading: \"Select Option\",\r\n radioButtons: [\r\n {\r\n value: \"Yes\",\r\n isDisabled: false,\r\n label: \"Yes\",\r\n class: \"\",\r\n },\r\n {\r\n value: \"No\",\r\n isDisabled: false,\r\n label: \"No\",\r\n class: \"\",\r\n },\r\n ],\r\n };\r\n\r\n this.defaultConfirmationPopupConfig = {\r\n showCancelButton: true,\r\n title: \"Are you sure ?\",\r\n showConfirmButton: true,\r\n cancelButtonLabel: \"No\",\r\n confirmButtonLabel: \"Yes\",\r\n showCloseIcon: true,\r\n backdrop: \"static\",\r\n windowClass: \"\",\r\n size: \"sm\",\r\n keyboard: false,\r\n };\r\n\r\n this.defaultWeekCalendarConfig = {\r\n firstDayOfWeek: 1,\r\n showWeekNumbers: true,\r\n dateFormatToDisplay: \"d MMM y\",\r\n dateFormatForRequest: \"y-MM-dd\",\r\n maxWeeksToShowWithRemainingCount: 2,\r\n numberOfMonthsToEnableInPast: 1,\r\n selectMultipleWeeks: false,\r\n customClass: \"\",\r\n emitMultipleWeekObjects: true,\r\n maxWeeksToSelect: 0,\r\n showAsDropdown: true,\r\n selectCurrentWeek: true,\r\n };\r\n\r\n this.defaultGtHeaderConfig = {\r\n iconColumn: false,\r\n checkboxColumn: false,\r\n lastColumnKeys: []\r\n };\r\n\r\n this.defaultGtGeneralConfig = {\r\n component: \"\",\r\n totalRow: false,\r\n isHeaderChecked: false,\r\n disableHeaderCheckbox: false,\r\n verticalScrollOffsetForFilterTooltip: 0,\r\n isGrouped: false,\r\n showAllColumnFilter: true,\r\n bufferSize: 20,\r\n page: \"\"\r\n };\r\n\r\n this.defaultSingleSelectConfig = {\r\n showSearchBar: false,\r\n placeholder: \"Select\",\r\n classes: \"\",\r\n position: \"BOTTOM\",\r\n maxHeightOfList: 200\r\n }\r\n\r\n this.defaultMultiSelectConfig = {...this.defaultSingleSelectConfig, ...{showErrorWhenNoOptionSelected: true}};\r\n }\r\n}\r\n","export class tooltipModel {\r\n isSelected: boolean;\r\n data: string;\r\n\r\n constructor(obj: string) {\r\n this.data = obj;\r\n this.isSelected = false;\r\n }\r\n}\r\n\r\nexport class tooltipModelForColumnLevelFiltering {\r\n isHidden;\r\n isSelected: boolean;\r\n data: string;\r\n constructor(data: string) {\r\n this.data = data;\r\n this.isSelected = true;\r\n this.isHidden = false;\r\n }\r\n}\r\n\r\nexport class radioButtonModel {\r\n key: string;\r\n label: string;\r\n\r\n constructor(key: string, value: string) {\r\n this.key = key;\r\n this.label = value;\r\n }\r\n}\r\n\r\nexport enum AllSelectedStatus {\r\n none = 0,\r\n allSelected = 1,\r\n fewSelected = 2,\r\n}\r\n","// Angular import statements\r\nimport { Options } from '@angular-slider/ngx-slider';\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Third party import statements\r\nimport { min, max, map, sortBy, uniq, cloneDeep, isEqual } from \"lodash-es\";\r\nimport moment from \"moment\";\r\n\r\n// User defined import statements \r\nimport { AllSelectedStatus, tooltipModelForColumnLevelFiltering } from \"../models/anna-tooltip.model\";\r\nimport { AnnaDateTimeFormatService, NgbDateType } from './anna-date-time-format.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AnnaFilterService {\r\n\r\n tooltipMap = new Map();\r\n tooltipSelectedMap = new Map();\r\n initialValueMap: Map<string, any>;\r\n translateFunc: string;\r\n selectedRadio: string;\r\n subRadioButton: string;\r\n\r\n calendarSet: Set<string>;\r\n sliderSet: Set<string>;\r\n timeSet: Set<string>;\r\n\r\n includeMultiTime: boolean;\r\n includeZeroTime: boolean;\r\n includeTimeRange: boolean;\r\n\r\n appliedFiltersArray: string[] = [];\r\n flightDateRange: { minSelectedDate: any, maxSelectedDate: any };\r\n sliderData: { min: any, max: any };\r\n ngxSliderObj: Options;\r\n\r\n public static bufferSize = 20;\r\n\r\n constructor(private dateTimeFormatService: AnnaDateTimeFormatService) {\r\n console.log(\"AnnaFilterService service created.\")\r\n const sliderArr = [\r\n \"rcvPreempt\",\r\n \"osPreempt\",\r\n \"rcvUnderDly\",\r\n \"postedAudPercent\",\r\n \"booked\",\r\n \"spots\",\r\n \"grp\",\r\n \"cpp\",\r\n \"imps\",\r\n \"cpm\",\r\n \"osUnderDly\",\r\n \"totalWeeks\",\r\n \"WeekNumber\",\r\n \"Rate\",\r\n \"OrderedRatingsOrImpressions\",\r\n \"PostedRatingsOrImpressions\", ,\r\n \"postedAudPercent\",\r\n \"postedAdu\",\r\n \"scheduledAdu\",\r\n \"audienceDeficit\",\r\n \"offeredMGs\",\r\n \"outstandingPE\",\r\n \"offeredADUs\",\r\n \"udDeficitValue\",\r\n \"bookedValue\",\r\n \"bookedSpots\",\r\n \"userChanges\"\r\n ];\r\n const calendarArr = [\"period\", \"AirDate\", \"flightStartDate\", \"flightEndDate\",\"date\"];\r\n const timeArr = [\"StartTimeForFilter\", \"EndTimeForFilter\",\r\n \"start_time_for_filter\", \"end_time_for_filter\", \"startEndTimeMulti\"];\r\n this.sliderSet = new Set(sliderArr);\r\n this.calendarSet = new Set(calendarArr);\r\n this.timeSet = new Set(timeArr);\r\n }\r\n\r\n returnMaxAndMinValue(data: any[], key: string, isMin: boolean) {\r\n data = data.filter((obj) => ![\"\", \"-\", null].includes(obj[key]));\r\n const values = data.map((x) => x[key]);\r\n let valueToReturn = isMin ? min(values) : max(values);\r\n return valueToReturn;\r\n }\r\n\r\n returnMinAndMaxDate(data: any[], key: string) {\r\n data = data.filter((obj) => ![\"\", \"-\", null].includes(obj[key]));\r\n let DateArr = data.map((obj) => moment(obj[key]));\r\n let minDate = moment.min(DateArr);\r\n let maxDate = moment.max(DateArr);\r\n return [minDate, maxDate];\r\n }\r\n\r\n isTooltipActive(header: string[]): boolean {\r\n let set: Set<string> = new Set(this.appliedFiltersArray);\r\n return (set.has(header[0])) || (set.has(header[1]));\r\n }\r\n\r\n clearColumnFilter() {\r\n this.tooltipSelectedMap.delete(this.selectedRadio);\r\n if (this.tooltipMap.has(this.selectedRadio)) {\r\n this.tooltipMap.delete(this.selectedRadio);\r\n }\r\n if (this.selectedRadio === \"postedAdu\") {\r\n this.subRadioButton = \"required\";\r\n this.tooltipSelectedMap.delete(\"isAudRequired\");\r\n }\r\n let appliedFilterSet: Set<string> = new Set(this.appliedFiltersArray);\r\n appliedFilterSet.delete(this.selectedRadio);\r\n this.appliedFiltersArray = [...appliedFilterSet];\r\n }\r\n\r\n populateSliderTooltip(completeData: any[], filteredData: any[]) {\r\n let obj;\r\n let minValue;\r\n let maxValue;\r\n if (\r\n this.appliedFiltersArray.length > 0 &&\r\n this.appliedFiltersArray[this.appliedFiltersArray.length - 1] === this.selectedRadio\r\n ) {\r\n let subsetData;\r\n let subfilterApplied = false;\r\n //applying all filterexcept the current filter\r\n if (this.selectedRadio === \"postedAdu\" && this.tooltipSelectedMap.has(\"isAudRequired\")) {\r\n this.tooltipSelectedMap.delete(\"isAudRequired\");\r\n subfilterApplied = true;\r\n }\r\n subsetData = this.filterData(completeData, this.selectedRadio);\r\n //need to find min and max value for\r\n minValue = this.returnMaxAndMinValue(subsetData, this.selectedRadio, true);\r\n maxValue = this.returnMaxAndMinValue(subsetData, this.selectedRadio, false);\r\n if (this.selectedRadio === \"postedAdu\" && subfilterApplied) {\r\n this.tooltipSelectedMap.set(\"isAudRequired\", [false]);\r\n }\r\n } else {\r\n minValue = this.returnMaxAndMinValue(filteredData, this.selectedRadio, true);\r\n maxValue = this.returnMaxAndMinValue(filteredData, this.selectedRadio, false);\r\n }\r\n this.ngxSliderObj = this.setOptionValues(minValue, maxValue);\r\n if (this.translateFunc === \"normal\") {\r\n this.ngxSliderObj.translate = this.normalTranslateFunction;\r\n } else if (this.translateFunc === \"percent\") {\r\n this.ngxSliderObj.translate = this.percentTranslateFunction;\r\n } else if (this.translateFunc === \"currency\") {\r\n this.ngxSliderObj.translate = this.currencyTranslateFunction;\r\n }\r\n return obj;\r\n }\r\n\r\n setOptionValues(minValue: number, maxValue: number) {\r\n return {\r\n floor: minValue,\r\n ceil: maxValue\r\n };\r\n }\r\n\r\n percentTranslateFunction = (data: number): string => {\r\n const val = data.toFixed(1) + \"%\";\r\n return val;\r\n };\r\n\r\n currencyTranslateFunction = (data: number): string => {\r\n if (data >= 1000) {\r\n const val = (data / 1000).toFixed(1) + \"k\";\r\n return \"$\" + val;\r\n } else if (data != Math.floor(data)) {\r\n return data.toFixed(1).toString();\r\n }\r\n return \"$\" + data;\r\n };\r\n\r\n normalTranslateFunction = (data: number): string => {\r\n if (data >= 1000) {\r\n const val = (data / 1000).toFixed(1) + \"k\";\r\n return val;\r\n } else if (data != Math.floor(data)) {\r\n return data.toFixed(1).toString();\r\n }\r\n return data.toString();\r\n };\r\n\r\n populateTooltip(selectedColumnName: string, completeData: any[], filteredData: any[]) {\r\n let tooltipData;\r\n\r\n if (this.appliedFiltersArray.length === 0) {\r\n tooltipData = this.populateTooltipDataBasedOnSelectedRadio([selectedColumnName], completeData);\r\n tooltipData.forEach((item: { isHidden: boolean }) => (item.isHidden = false));\r\n } else if (selectedColumnName === this.appliedFiltersArray[this.appliedFiltersArray.length - 1]) {\r\n let subsetData = this.filterData(completeData, selectedColumnName); //filter the data without applying the latest filter\r\n tooltipData = this.showHideFilterCheckbox(subsetData, selectedColumnName);\r\n } else {\r\n //if it is not the latest filter\r\n //then filtered Data will be used\r\n //create the option data\r\n if (!this.tooltipMap.has(selectedColumnName)) {\r\n this.populateTooltipDataBasedOnSelectedRadio([selectedColumnName], completeData);\r\n }\r\n\r\n tooltipData = this.showHideFilterCheckbox(filteredData, selectedColumnName);\r\n }\r\n return tooltipData;\r\n }\r\n\r\n populateTooltipDataBasedOnSelectedRadio(value: string[], originalData: any) {\r\n //if the initial tooltip data is already present fetch from the map\r\n if (this.tooltipMap.has(value[0])) {\r\n return this.tooltipMap.get(value[0]);\r\n } else {\r\n //get the unique values from the column and save it in the map\r\n this.selectedRadio = value[0];\r\n const data = sortBy(originalData.map((u: any) => u[this.selectedRadio])).filter(n => n !== null); //sorting the data in alphabetical order\r\n const dataSet = new Set(data); //created a set from the data\r\n const toolTipdata = [...dataSet].map((x) => new tooltipModelForColumnLevelFiltering(x));\r\n this.tooltipMap.set(value[0], toolTipdata); //setting the key value pair in the tooltipMap\r\n this.tooltipSelectedMap.set(value[0], map(toolTipdata, \"data\")); //setting the key value pair in tooltipSelectedMap\r\n return toolTipdata;\r\n }\r\n }\r\n\r\n showHideFilterCheckbox(arr: any[], selectedColumnName: string) {\r\n let currentSubsetData = uniq(arr.map((u) => u[selectedColumnName]));\r\n\r\n //get the initial tooltip Data\r\n let tooltipData = this.tooltipMap.get(selectedColumnName);\r\n\r\n //show or hide the value\r\n tooltipData.forEach((value: { data: string | number; isHidden: boolean; }) => {\r\n //if the element is not present then hide the element\r\n let elementToFindIndex = currentSubsetData.findIndex((n: string | number) => n === value.data);\r\n if (elementToFindIndex === -1) {\r\n value.isHidden = true;\r\n } else {\r\n //show the element\r\n value.isHidden = false;\r\n }\r\n });\r\n\r\n return tooltipData;\r\n }\r\n\r\n isAllOptionsSelected() {\r\n let allSelected;\r\n let totalOptionsCount = this.tooltipMap.get(this.selectedRadio).filter((x: any) => !x.isHidden).length;\r\n let selectedOptionsCount = this.tooltipMap.get(this.selectedRadio).filter((x: any) => !x.isHidden && x.isSelected).length;\r\n if (selectedOptionsCount === 0) {\r\n allSelected = AllSelectedStatus.none;\r\n } else if (selectedOptionsCount > 0 && selectedOptionsCount < totalOptionsCount) {\r\n allSelected = AllSelectedStatus.fewSelected;\r\n } else {\r\n allSelected = AllSelectedStatus.allSelected;\r\n }\r\n return allSelected;\r\n }\r\n\r\n populateDatePickerTooltipWithData(completeData: any[], filteredData: any[]) {\r\n let enabledDates;\r\n //some filter is applied and the latest filter is the date filter\r\n if (\r\n this.appliedFiltersArray.length > 0 &&\r\n this.appliedFiltersArray[this.appliedFiltersArray.length - 1] === this.selectedRadio\r\n ) {\r\n let subsetData;\r\n //applying all filterexcept thec current filter\r\n if (this.selectedRadio === \"period\") {\r\n subsetData = this.filterData(completeData, \"period\");\r\n let minStartDate = this.returnMinAndMaxDate(subsetData, \"startDate\");\r\n let maxEndDate = this.returnMinAndMaxDate(subsetData, \"endDate\");\r\n enabledDates = { minStartDate: minStartDate[0], maxEndDate: maxEndDate[1] };\r\n } else if (this.selectedRadio === \"AirDate\" || this.selectedRadio === \"flightStartDate\" ||\r\n this.selectedRadio === \"flightEndDate\" || this.selectedRadio == \"date\") {\r\n subsetData = this.filterData(completeData, this.selectedRadio);\r\n let minAndMaxDate = this.returnMinAndMaxDate(subsetData, this.selectedRadio);\r\n enabledDates = { minStartDate: minAndMaxDate[0], maxEndDate: minAndMaxDate[1] };\r\n } else {\r\n subsetData = this.filterData(completeData, this.selectedRadio);\r\n //need to find min and max date for start and end date\r\n //enabledDates is an arr of minDate and maxDate\r\n enabledDates = this.returnMinAndMaxDate(subsetData, this.selectedRadio);\r\n }\r\n } else {\r\n if (this.selectedRadio === \"period\") {\r\n let minStartDate = this.returnMinAndMaxDate(filteredData, \"startDate\");\r\n let maxEndDate = this.returnMinAndMaxDate(filteredData, \"endDate\");\r\n enabledDates = { minStartDate: minStartDate[0], maxEndDate: maxEndDate[1] };\r\n } else if (this.selectedRadio === \"AirDate\" || this.selectedRadio === \"flightStartDate\" ||\r\n this.selectedRadio === \"flightEndDate\" || this.selectedRadio == \"date\") {\r\n let minAndMaxDate = this.returnMinAndMaxDate(filteredData, this.selectedRadio);\r\n enabledDates = { minStartDate: minAndMaxDate[0], maxEndDate: minAndMaxDate[1] };\r\n } else {\r\n //need to find min and max date for start and end date.\r\n // enabledDates is an arr of minDate and maxDate\r\n enabledDates = this.returnMinAndMaxDate(filteredData, this.selectedRadio);\r\n }\r\n }\r\n return enabledDates;\r\n }\r\n\r\n findUniqueDatesWithData(data: any[]) {\r\n let uniqueDates = uniq(data.map((u) => u[\"date\"]));\r\n let uniqueDatesInNgbDateFormat: NgbDateType[] = [];\r\n uniqueDates.forEach((date) => {\r\n uniqueDatesInNgbDateFormat.push(\r\n this.dateTimeFormatService.convertToNgbDateStandardFormat(moment(date, \"MM/DD/YY\").format(\"MM/DD/YYYY\"))\r\n );\r\n });\r\n return uniqueDatesInNgbDateFormat;\r\n }\r\n\r\n isCheckboxSelected(selectedData: any) {\r\n selectedData.isSelected = !selectedData.isSelected;\r\n let allSelected = this.isAllOptionsSelected();\r\n return allSelected;\r\n }\r\n\r\n allOptionsClicked(status: number) {\r\n let header = this.selectedRadio;\r\n if (status === 1) {\r\n this.tooltipMap.get(header).forEach((item: any) => {\r\n if (!item.isHidden) {\r\n item.isSelected = true;\r\n }\r\n });\r\n this.tooltipSelectedMap.set(\r\n header,\r\n this.tooltipMap\r\n .get(header)\r\n .filter((x: any) => x.isSelected)\r\n .map((x: any) => x.data)\r\n );\r\n } else {\r\n this.tooltipMap.get(header).forEach((item: any) => {\r\n if (!item.isHidden) {\r\n item.isSelected = false;\r\n }\r\n });\r\n this.tooltipSelectedMap.delete(header);\r\n }\r\n }\r\n\r\n reOrderAppliedFiltersArray(isHierarchialUserFiltered: boolean, date?: any) {\r\n let isFiltered = true;\r\n isFiltered = this.checkIfDataIsFiltered(isFiltered, isHierarchialUserFiltered, date);\r\n this.removeOrChangeLatestFilterIndex(isFiltered);\r\n }\r\n\r\n checkIfDataIsFiltered(isFiltered: boolean, isHierarchialUserFiltered: boolean, date?: any) {\r\n if (this.selectedRadio == \"user\" && !this.tooltipMap.has(\"user\")) {\r\n isFiltered = cloneDeep(isHierarchialUserFiltered);\r\n } else if (this.selectedRadio == \"StartTimeForFilter\" || this.selectedRadio == \"EndTimeForFilter\"\r\n || this.selectedRadio == \"start_time_for_filter\" || this.selectedRadio == \"end_time_for_filter\" || this.selectedRadio == \"startEndTimeMulti\") {\r\n isFiltered = !isEqual(\r\n this.initialValueMap.get(this.selectedRadio),\r\n this.tooltipSelectedMap.get(this.selectedRadio)\r\n ) || !this.includeZeroTime || !this.includeMultiTime;\r\n }\r\n else if (this.selectedRadio == \"startEndTime\" || this.selectedRadio == \"TimeBand\") {\r\n isFiltered = !isEqual(this.initialValueMap.get(this.selectedRadio), this.tooltipSelectedMap.get(this.selectedRadio)) || !this.includeZeroTime || !this.includeMultiTime;\r\n }\r\n else if (this.sliderSet.has(this.selectedRadio)) {\r\n isFiltered = !isEqual(this.initialValueMap.get(this.selectedRadio), this.tooltipSelectedMap.get(this.selectedRadio)) && !isEqual(this.tooltipSelectedMap.get(this.selectedRadio), this.sliderData);\r\n if (this.selectedRadio == \"postedAdu\" && this.subRadioButton == \"notRequired\") {\r\n isFiltered = true;\r\n }\r\n if (!isFiltered && this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n this.tooltipSelectedMap.delete(this.selectedRadio);\r\n }\r\n } else if (\r\n this.selectedRadio == \"startDate\" ||\r\n this.selectedRadio == \"endDate\" ||\r\n this.selectedRadio == \"period\" ||\r\n this.selectedRadio == \"AirDate\" ||\r\n this.selectedRadio === \"flightStartDate\" ||\r\n this.selectedRadio === \"flightEndDate\" ||\r\n this.selectedRadio == \"date\"\r\n ) {\r\n isFiltered =\r\n !isEqual(this.initialValueMap.get(this.selectedRadio), this.tooltipSelectedMap.get(this.selectedRadio)) &&\r\n !isEqual(this.tooltipSelectedMap.get(this.selectedRadio), this.flightDateRange);\r\n if (!isFiltered && this.tooltipSelectedMap.has(this.selectedRadio)) {\r\n this.tooltipSelectedMap.delete(this.selectedRadio);\r\n }\r\n } else {\r\n let totalOptionsCount = this.tooltipMap.get(this.selectedRadio).filter((x: any) => !x.isHidden).length;\r\n let selectedOptionsCount = this.tooltipMap.get(this.selectedRadio).filter((x: any) => !x.isHidden && x.isSelected).length;\r\n isFiltered = selectedOptionsCount > 0 && selectedOptionsCount != totalOptionsCount ? true : false;\r\n }\r\n return isFiltered;\r\n }\r\n\r\n removeOrChangeLatestFilterIndex(isFiltered: boolean) {\r\n let set = new Set(this.appliedFiltersArray);\r\n\r\n if (isFiltered && !set.has(this.selectedRadio)) {\r\n set.add(this.selectedRadio);\r\n } else if (isFiltered && set.has(this.selectedRadio)) {\r\n set.delete(this.selectedRadio);\r\n set.add(this.selectedRadio);\r\n } else {\r\n set.delete(this.selectedRadio);\r\n }\r\n this.appliedFiltersArray = [...set];\r\n }\r\n\r\n filterData(originalData: any[], keyToSkip: string) {\r\n let filteredData = originalData;\r\n\r\n this.tooltipSelectedMap.forEach((value, key) => {\r\n if (key != keyToSkip) {\r\n if (this.sliderSet.has(key)) {\r\n filteredData = filteredData.filter((obj) => obj[key] >= value.min && obj[key] <= value.max);\r\n }\r\n else if (key === \"startDate\" || key === \"endDate\") {\r\n filteredData = filteredData.filter((obj) => this.returnOrdersInTheRange(obj, value, key));\r\n } else if (key === \"period\" || key === \"AirDate\" || key === \"flightStartDate\" || key === \"flightEndDate\" || key == \"date\") {\r\n filteredData = filteredData.filter((obj) => this.getDataInTheDateRange(obj, value, key));\r\n }\r\n else if (key === \"StartTimeForFilter\" || key === \"EndTimeForFilter\"\r\n || key === \"start_time_for_filter\" || key === \"end_time_for_filter\") {\r\n filteredData = filteredData.filter((obj) => this.returnDataForFromAndToTimeRange(obj, value, key));\r\n }\r\n else if (key === \"startEndTimeMulti\") {\r\n filteredData = filteredData.filter((obj) => this.returnDataForStartAndEndTimeRange(obj, value, key));\r\n }\r\n else if (key === \"startEndTime\" || key === \"TimeBand\") {\r\n let filteredMulti = [];\r\n let filteredZero = [];\r\n let filteredTimeRange = [];\r\n if (this.includeTimeRange) {\r\n filteredTimeRange = filteredData.filter((obj) => this.returnDataForTimeRange(obj, value));\r\n }\r\n\r\n if (this.includeMultiTime) {\r\n filteredMulti = filteredData.filter((obj) => obj[key][0] == \"<multi>\");\r\n }\r\n\r\n if (this.includeZeroTime) {\r\n filteredZero = filteredData.filter((obj) => obj[key][0] == \"0\");\r\n }\r\n\r\n filteredData = [...filteredMulti, ...filteredZero, ...filteredTimeRange];\r\n } else if (value.length > 0) {\r\n filteredData = filteredData.filter((u) => value.includes(u[key]));\r\n }\r\n }\r\n });\r\n return filteredData;\r\n }\r\n\r\n returnOrdersInTheRange(order: any, range: any, key: any) {\r\n let isDateBetweenTheSelectedRange = moment(order[key]).isBetween(range.minSelectedDate, range.maxSelectedDate);\r\n let isDateSameAsTheMinSelectedDate = moment(order[key]).isSame(range.minSelectedDate);\r\n let isDateSameAsTheMaxSelectedDate = moment(order[key]).isSame(range.maxSelectedDate);\r\n return isDateBetweenTheSelectedRange || isDateSameAsTheMinSelectedDate || isDateSameAsTheMaxSelectedDate;\r\n }\r\n\r\n returnDataForTimeRange(obj: any, selectedData: any) {\r\n let format = \"HH:mm:ss\";\r\n let selectedStartDate = moment(selectedData.startTime, format);\r\n let selectedEndDate = moment(selectedData.endTime, format);\r\n let startTime = moment(obj.startTime, format);\r\n let endTime = moment(obj.endTime, format);\r\n\r\n let isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedStartDate);\r\n let isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedStartDate, selectedEndDate);\r\n let isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedEndDate);\r\n let isEndTimeBetweenSelectedStartAndEndTime = endTime.isBetween(selectedStartDate, selectedEndDate);\r\n\r\n return (\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeSameAsSelectedEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeSameAsSelectedEndTime)\r\n );\r\n }\r\n\r\n returnDataForFromAndToTimeRange(obj: any, selectedData: any, key: any) {\r\n let format = \"HH:mm:ss\";\r\n let selectedFromTime = moment(selectedData.fromTime, format);\r\n let selectedToTime = moment(selectedData.toTime, format);\r\n let objTime = obj[key];\r\n if ([\"\", \"-\", null].includes(objTime)) {\r\n return false;\r\n }\r\n if (this.includeMultiTime && obj[key] == \"<multi>\") {\r\n return true;\r\n }\r\n if (!this.includeMultiTime && obj[key] == \"<multi>\") {\r\n return false;\r\n }\r\n if (this.includeZeroTime && obj[key] == \"0\") {\r\n return true;\r\n }\r\n if (!this.includeZeroTime && obj[key] == \"0\") {\r\n return false;\r\n }\r\n if (!this.includeTimeRange) {\r\n return false;\r\n }\r\n\r\n objTime = this.dateTimeFormatService.formatToTwelveHrs(objTime, true);\r\n\r\n objTime = this.dateTimeFormatService.convertTotwentyFourHrsFormat(\r\n objTime[0] + \":\" + objTime[1] + \" \" + objTime[2],\r\n true\r\n );\r\n objTime = objTime[0] + \":\" + objTime[1] + \":00\";\r\n\r\n objTime = moment(objTime, format);\r\n\r\n let isObjTimeSameAsSelectedFromTime = objTime.isSame(selectedFromTime);\r\n let isObjTimeSameAsSelectedToTime = objTime.isSame(selectedToTime);\r\n let isObjTimeBetweenSelectedFromTimeAndToTime = objTime.isBetween(selectedFromTime, selectedToTime);\r\n\r\n return (\r\n isObjTimeSameAsSelectedFromTime ||\r\n isObjTimeSameAsSelectedToTime ||\r\n isObjTimeBetweenSelectedFromTimeAndToTime\r\n );\r\n }\r\n\r\n returnDataForStartAndEndTimeRange(obj: any, selectedData: any, key: any) {\r\n let format = \"HH:mm:ss\";\r\n let selectedFromTime = moment(selectedData.fromTime, format);\r\n let selectedToTime = moment(selectedData.toTime, format);\r\n let objTime = obj[key];\r\n\r\n if (this.includeMultiTime && obj[key][0] == \"<multi>\") {\r\n return true;\r\n }\r\n if (!this.includeMultiTime && obj[key][0] == \"<multi>\") {\r\n return false;\r\n }\r\n if (this.includeZeroTime && obj[key][0] == \"0\") {\r\n return true;\r\n }\r\n if (!this.includeZeroTime && obj[key][0] == \"0\") {\r\n return false;\r\n }\r\n if (!this.includeTimeRange) {\r\n return false;\r\n }\r\n\r\n let startTime = moment(obj[key][1], format);\r\n let endTime = moment(obj[key][2], format);\r\n\r\n let isStartTimeSameAsSelectedStartTime = startTime.isSame(selectedFromTime);\r\n let isStartTimeBetweenSelectedStartAndEndTime = startTime.isBetween(selectedFromTime, selectedToTime);\r\n let isEndTimeSameAsSelectedEndTime = endTime.isSame(selectedToTime);\r\n let isEndTimeBetweenSelectedStartAndEndTime = endTime.isBetween(selectedFromTime, selectedToTime);\r\n\r\n return (\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeSameAsSelectedEndTime) ||\r\n (isStartTimeSameAsSelectedStartTime && isEndTimeBetweenSelectedStartAndEndTime) ||\r\n (isStartTimeBetweenSelectedStartAndEndTime && isEndTimeSameAsSelectedEndTime)\r\n );\r\n }\r\n\r\n getDataInTheDateRange(obj: any, value: any, key: any) {\r\n let parsingFormat: string;\r\n if (key === \"period\") {\r\n parsingFormat = \"YYYY-MM-DD\";\r\n let startDateIsBetweenSelDate = moment(obj.startDate, parsingFormat).isBetween(\r\n value.minSelectedDate,\r\n value.maxSelectedDate\r\n );\r\n let endDateIsBetweenSelDate = moment(obj.endDate, parsingFormat).isBetween(\r\n value.minSelectedDate,\r\n value.maxSelectedDate\r\n );\r\n\r\n let startDateIsSameAsSelStartDate = moment(obj.startDate, parsingFormat).isSame(value.minSelectedDate);\r\n let endDateIsSameAsSelEndDate = moment(obj.endDate, parsingFormat).isSame(value.maxSelectedDate);\r\n\r\n return (\r\n (startDateIsBetweenSelDate || startDateIsSameAsSelStartDate) &&\r\n (endDateIsBetweenSelDate || endDateIsSameAsSelEndDate)\r\n );\r\n } else if (key === \"AirDate\" || key === \"flightStartDate\" || key === \"flightEndDate\") {\r\n parsingFormat = \"MM/DD/YYYY\";\r\n let dateIsBetweenSelDate = moment(obj[key], parsingFormat).isBetween(value.minSelectedDate, value.maxSelectedDate);\r\n\r\n let dateIsSameAsSelStartDate = moment(obj[key], parsingFormat).isSame(value.minSelectedDate);\r\n let dateIsSameAsSelEndDate = moment(obj[key], parsingFormat).isSame(value.maxSelectedDate);\r\n\r\n return dateIsBetweenSelDate || dateIsSameAsSelStartDate || dateIsSameAsSelEndDate;\r\n }\r\n else {\r\n\r\n }\r\n }\r\n\r\n\r\n public initializeTimeFilterData(clonedData: any[], key = \"startEndTime\") {\r\n let startTimeArr = map(clonedData, \"startTime\");\r\n let endTimeArr = map(clonedData, \"endTime\");\r\n \r\n startTimeArr.sort((a, b) => {\r\n return this.dateTimeFormatService.sortByTimeAscending(a, b);\r\n });\r\n \r\n endTimeArr.sort((a, b) => {\r\n return this.dateTimeFormatService.sortByTimeDescending(a, b);\r\n });\r\n \r\n let initialStartEndTime = {\r\n startTime: startTimeArr[0],\r\n endTime: endTimeArr[0],\r\n };\r\n this.initialValueMap.set(key, initialStartEndTime);\r\n } \r\n\r\n returnColumnFilterStatus(data: any[], headername: string | number) {\r\n return uniq(data.map((u) => u[headername])).length > 1 ? false : true;\r\n } \r\n\r\n}\r\n","export class Constants {\r\n static readonly SUCCESS_STRING = \"success\";\r\n static readonly BACKEND_SERVER_URL = \"/server/public/index.php/api\";\r\n static readonly ERROR_MSG = \"Error occurred please try again.\";\r\n static readonly NO_DATA_MSG = \"No Data to display\";\r\n static readonly SERVER_ERROR = \"Server error. Please try Again\";\r\n static readonly USER_ORIGIN = \"ANNA\";\r\n static readonly ACTIVE_USER_STATUS = \"active\";\r\n static readonly DELETED_USER_STATUS = \"deleted\";\r\n static readonly INACTIVE_USER_STATUS = \"inactive\";\r\n static readonly OGAdminRole = \"OG-admin\";\r\n static readonly dollars = \"$\";\r\n}\r\n\r\nexport class ErrorCodes {\r\n static readonly BAD_REQUEST = 400;\r\n static readonly SERVER_ERROR = 500;\r\n static readonly SUCCESS_CODE = 200;\r\n static readonly SUCCESS_CODE_GET = 200;\r\n static readonly SUCCESS_CODE_POST = 201;\r\n static readonly SUCCESS_CODE_PATCH = 204;\r\n static readonly NO_CONTENT = 204;\r\n static readonly under_review = 409;\r\n}\r\n\r\nexport enum Days {\r\n M = 1,\r\n Tu = 2,\r\n We = 3,\r\n Th = 4,\r\n F = 5,\r\n Sa = 6,\r\n Su = 7,\r\n}\r\n","// Angular import statements\r\nimport { Injectable } from \"@angular/core\";\r\nimport { AnnaDateTimeFormatService } from './anna-date-time-format.service';\r\n\r\n// Third party import statements\r\n\r\n// User defined import statements\r\nimport { Days, Constants} from \"../constants/shared.constant\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaSortService {\r\n sortByAsc: Map<string, boolean> = new Map();\r\n sortByDesc: Map<string, boolean> = new Map();\r\n dateSet = new Set([\"endDate\", \"startDate\", \"end_date\", \"start_date\", \"flightStartDate\", \"flightEndDate\"]);\r\n tooltip: any;\r\n keySorted: string;\r\n isAsc: boolean;\r\n\r\n constructor(private annaDateTimeFormatService: AnnaDateTimeFormatService) {\r\n console.log(\"AnnaTableColumnSortService sevice created.\")\r\n }\r\n\r\n checkIfSortingIsApplied(sortMap: Map<string, boolean>, setValueTo: boolean) {\r\n let obj: { key: string, setValueTo: any } = { key: \"\", setValueTo: null };\r\n\r\n for (let [key, value] of sortMap.entries()) {\r\n if (value) {\r\n obj = { key, setValueTo };\r\n break;\r\n }\r\n }\r\n return obj;\r\n }\r\n\r\n sort(isAsc: boolean, data: any[], sortBy: string) {\r\n const dataToExclude: any[] = [];\r\n const dataToInclude: any[] = [];\r\n let param1: string | number;\r\n let param2: string | number;\r\n if (this.dateSet.has(sortBy)) {\r\n data.sort((a, b) => {\r\n return this.annaDateTimeFormatService.compareDate(a[sortBy], b[sortBy], isAsc);\r\n });\r\n }\r\n else if (sortBy === \"AirDateAndTime\") {\r\n data.sort((a, b) => {\r\n let first, second;\r\n if (a[sortBy] == \"-\") {\r\n return 1;\r\n }\r\n if (b[sortBy] == \"-\") {\r\n return -1;\r\n }\r\n else {\r\n first = this.annaDateTimeFormatService.formatDateAndHHMMATimeToStandardFormat(a[sortBy]);\r\n second = this.annaDateTimeFormatService.formatDateAndHHMMATimeToStandardFormat(b[sortBy]);\r\n let compareDate = this.annaDateTimeFormatService.compareDate(first, second, isAsc)\r\n return compareDate;\r\n }\r\n });\r\n }\r\n else if (sortBy === \"startEndTime\" || sortBy === \"TimeBand\") {\r\n data.sort((a, b) => {\r\n if (isAsc) {\r\n param1 = a[sortBy][1];\r\n param2 = b[sortBy][1];\r\n } else {\r\n param1 = a[sortBy][2];\r\n param2 = b[sortBy][2];\r\n }\r\n let val = isAsc\r\n ? this.annaDateTimeFormatService.sortByTimeAscending(param1, param2)\r\n : this.annaDateTimeFormatService.sortByTimeDescending(param1, param2);\r\n return val;\r\n });\r\n } else if (sortBy === \"days\") {\r\n data.sort((a, b) => {\r\n param1 = a[sortBy].includes(\"-\") ? Days[a[sortBy].split(\"-\")[0]] : Days[a[sortBy]];\r\n param2 = b[sortBy].includes(\"-\") ? Days[b[sortBy].split(\"-\")[0]] : Days[b[sortBy]];\r\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\r\n });\r\n }\r\n //sort by string or number\r\n else {\r\n data.forEach((a) => {\r\n // if(a['sort'] == undefined) //\r\n //for component other than enter/edit lur page\r\n if (!(\"sort\" in a)) {\r\n dataToInclude.push(a);\r\n }\r\n //for enter/edit lur page\r\n else {\r\n dataToExclude.push(a);\r\n }\r\n });\r\n\r\n data = [];\r\n data = dataToInclude;\r\n data.sort((a, b): number => {\r\n param1 = a[sortBy];\r\n param2 = b[sortBy];\r\n\r\n if (Array.isArray(a[sortBy])) {\r\n param1 = a[sortBy][0] === \"-\" ? 0 : a[sortBy][0];\r\n if (a[sortBy][0].includes(Constants.dollars)) {\r\n param1 = +a[sortBy][0].split(Constants.dollars)[1];\r\n }\r\n }\r\n\r\n if (Array.isArray(b[sortBy])) {\r\n param2 = b[sortBy][0] == \"-\" ? 0 : b[sortBy][0];\r\n if (b[sortBy][0].includes(Constants.dollars)) {\r\n param2 = +b[sortBy][0].split(Constants.dollars)[1];\r\n }\r\n }\r\n\r\n if (param1 !== param2) {\r\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\r\n }\r\n // CHANGES@ANNALIB changed it to from false to 0\r\n return 0;\r\n });\r\n\r\n if (dataToExclude.length > 0) {\r\n if (sortBy.includes(\"_\")) {\r\n let keys: any = sortBy.split(\"_\");\r\n let weekNumber = keys[0];\r\n let sortKey = keys[1];\r\n if (keys.length > 2) {\r\n sortKey = keys[2] == true ? \"BookedAurIncludingNoChargeSpots\" : \"BookedAurExcludingNoChargeSpots\";\r\n }\r\n dataToExclude.sort((a, b) => {\r\n let aInventoryCodeWeekWiseKey = Object.keys(a.WeekWiseInventoryCodeData).filter(\r\n (key) => key.split(\"_\")[1] == weekNumber\r\n );\r\n let bInventoryCodeWeekWiseKey = Object.keys(b.WeekWiseInventoryCodeData).filter(\r\n (key) => key.split(\"_\")[1] == weekNumber\r\n );\r\n\r\n param1 = null;\r\n param2 = null;\r\n if (aInventoryCodeWeekWiseKey.length > 0) {\r\n param1 = a.WeekWiseInventoryCodeData[aInventoryCodeWeekWiseKey[0]][sortKey][1];\r\n }\r\n\r\n if (bInventoryCodeWeekWiseKey.length > 0) {\r\n param2 = b.WeekWiseInventoryCodeData[bInventoryCodeWeekWiseKey[0]][sortKey][1];\r\n }\r\n\r\n if (param1 !== param2) {\r\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\r\n }\r\n\r\n return 0;\r\n });\r\n } else {\r\n dataToExclude.sort((a, b) => {\r\n param1 = a[sortBy];\r\n param2 = b[sortBy];\r\n\r\n if (param1 !== param2) {\r\n return this.annaDateTimeFormatService.compare(param1, param2, isAsc);\r\n }\r\n\r\n return 0;\r\n });\r\n }\r\n }\r\n }\r\n return { data: [...data, ...dataToExclude], type: isAsc };\r\n }\r\n\r\n callSort(data: any[]) {\r\n let sortBy = null;\r\n let isAsc: boolean;\r\n this.sortByAsc.forEach((value, key) => {\r\n if (value === true) {\r\n sortBy = key;\r\n isAsc = true;\r\n }\r\n });\r\n if (sortBy == null) {\r\n this.sortByDesc.forEach((value, key) => {\r\n if (value === true) {\r\n sortBy = key;\r\n isAsc = false;\r\n }\r\n });\r\n }\r\n if (sortBy != null) {\r\n return this.sort(isAsc, data, sortBy).data;\r\n } else {\r\n return data;\r\n }\r\n}\r\n\r\n\r\n}\r\n","// Angular import statements\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Third party import statements\r\nimport { Subject } from \"rxjs\";\r\n\r\n//sub-entries of anna lib import statement\r\nimport { AnnaSortService } from './anna-sort.service';\r\nimport { AnnaFilterService } from \"./anna-filter.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaGenericTableService {\r\n\r\n virtualScrollSubject = new Subject();\r\n constructor(private annaFilterService: AnnaFilterService, \r\n private annaSortService: AnnaSortService){}\r\n\r\n calculateNumberOfSkeletonColumnsForTable(tableHeaders: any[]): number[][] {\r\n let numberOfSkeletonColumns: any[][] = [];\r\n var headersInEachColumn = 0;\r\n tableHeaders.forEach((column) => {\r\n if (column.visible) {\r\n headersInEachColumn = 0;\r\n column.headerInfo.forEach(() => {\r\n headersInEachColumn++;\r\n })\r\n numberOfSkeletonColumns.push(Array(headersInEachColumn).fill(0));\r\n }\r\n })\r\n return numberOfSkeletonColumns;\r\n }\r\n\r\n initColumnFilterAndSorting() {\r\n this.annaFilterService.tooltipMap = new Map();\r\n this.annaFilterService.tooltipSelectedMap = new Map();\r\n this.annaFilterService.selectedRadio = null;\r\n this.annaFilterService.appliedFiltersArray = [];\r\n this.annaFilterService.initialValueMap = new Map();\r\n\r\n this.annaSortService.tooltip = null;\r\n this.annaSortService.sortByAsc = new Map();\r\n this.annaSortService.sortByDesc = new Map();\r\n this.annaSortService.keySorted = null;\r\n this.annaSortService.isAsc = false;\r\n }\r\n\r\n\r\n}\r\n","import { TooltipPosition } from \"@angular/material/tooltip\";\r\nimport { IWeekCalendar } from \"./anna-global-dropdown-config.model\";\r\n\r\nexport interface IGtTableHeader {\r\n headerInfo: IHeaderInfo[];\r\n visible: boolean;\r\n width: string;\r\n}\r\n\r\ninterface IHeaderInfo {\r\n name: string;\r\n objectKey: string;\r\n isDisabledKey?: string;\r\n typeOfHeaderData: DATATYPE;\r\n typeOfBodyData: DATATYPE;\r\n sort: boolean;\r\n filter: FILTERTYPE;\r\n filterObjectKeys?: string[];\r\n disableFilter?: boolean;\r\n disableSort?: boolean;\r\n tooltip?: ITooltip;\r\n sortObjectKey?: string;\r\n}\r\n\r\ntype DATATYPE = \"CHECKBOX\" | \"ICON\" | \"STRING\" | \"RADIO\" | \"\" | \"SVG_ICON\" | \"TEXT_ACTIONS\";\r\ntype FILTERTYPE = \"CHECKBOX\" | \"SLIDER\" | \"DATE\" | \"TIME\" | \"WEEK\" | \"\" ;\r\ntype TOOLTIPOSITION = \"left\" | \"right\";\r\n\r\nexport interface ITotalRowInfo {\r\n colspan: number;\r\n data: string;\r\n lowerData?: string;\r\n colName: string;\r\n class?: string;\r\n tooltipMessage?: string; \r\n}\r\n\r\nexport interface IGtHeaderConfig {\r\n iconColumn: boolean;\r\n checkboxColumn: boolean;\r\n lastColumnKeys: string[];\r\n}\r\n\r\nexport interface IGtGeneralConfig extends ISpotTableConfig{\r\n component: COMPONENTNAME;\r\n totalRow: boolean;\r\n isHeaderChecked?: boolean;\r\n disableHeaderCheckbox?: boolean;\r\n multiWeekPickerConfig?: IWeekCalendar;\r\n verticalScrollOffsetForFilterTooltip?: number;\r\n tableContainerName?: string;\r\n showAllColumnFilter: boolean;\r\n bufferSize: number;\r\n page: string;\r\n}\r\n\r\ntype COMPONENTNAME = \"SPOTDETAILS\" | \"EXCLUDEINVENTORYPOPUP\" | \"EXCLUDEINVENTORY\" | \"DRRLISTING\" | \"DRR\" | \"\" | \"RATING\" | \"ORDER_LISTING_INFLIGHT\" | \"ORDER_LISTING_COMPLETED\" | \"ORDER_LISTING_BLANK\" | \"LUR_VIOLATIONS\";;\r\ninterface ISpotTableConfig {\r\n isGrouped: boolean;\r\n}\r\n\r\n\r\nexport interface ITooltip{\r\n iconPosition: TooltipPosition;\r\n name: string;\r\n tooltipPosition: string;\r\n iconClass: string;\r\n tooltipClass: string;\r\n}\r\n\r\nexport interface IconData{\t\r\n data: any;\t\r\n iconClass: string;\t\r\n}\t\r\nexport interface TextAction{\t\r\n id: number;\t\r\n name: string;\t\r\n class: string;\t\r\n isDisabled: boolean;\t\r\n}","//Modules\r\nexport * from \"./anna-core-shared-lib.module\";\r\n\r\n//components \r\nexport * from \"./components/anna-no-data/anna-no-data.component\";\r\nexport * from \"./components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component\";\r\nexport * from \"./components/anna-live-icon-template/anna-live-icon-template.component\";\r\nexport * from \"./components/anna-notify-icon-template/anna-notify-icon-template.component\";\r\nexport * from \"./components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component\";\r\nexport * from \"./components/anna-rejected-icon-template/anna-rejected-icon-template.component\";\r\n\r\n//services\r\nexport * from \"./services/anna-date-time-format.service\";\r\nexport * from \"./services/anna-global-config.service\";\r\nexport * from \"./services/anna-filter.service\";\r\nexport * from \"./services/anna-sort.service\";\r\nexport * from \"./services/anna-generic-table.service\";\r\n\r\n//models\r\nexport * from \"./models/anna-generic-data-type.model\";\r\nexport * from \"./models/anna-global-dropdown-config.model\";\r\nexport * from \"./models/anna-non-editable-gt-models\";\r\nexport * from \"./models/anna-tooltip.model\";\r\n\r\n//constants\r\nexport * from \"./constants/shared.constant\";\r\n\r\n//pipes\r\nexport * from \"./pipes/annaFilterSearchedText.pipe\";\r\n","/*\r\n * Public API Surface of anna-core\r\n */\r\n\r\nexport * from \"./lib/anna-dropdown-lib\";\r\nexport * from \"./lib/anna-generic-table-lib\";\r\nexport * from \"./lib/anna-core-shared-lib\";\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","AnnaCoreSharedLibModule","i1","i4","AnnaFilterService","map","radioButtonModel","i2.AnnaTableVirtualScrollViewportComponent","i4.AnnaSortComponent","i11.AnnaFixedRowSizeTableVirtualScrollStrategyDirective","i12.AnnaVirtualTableDirective","i13","AnnaDropdownLibModule","i1.AnnaDateTimeFormatService","i1.AnnaFilterService","i2.AnnaSortService"],"mappings":"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"}