@annalib/anna-core 7.2.2 → 7.2.4

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 (156) hide show
  1. package/.browserslistrc +16 -0
  2. package/karma.conf.js +44 -0
  3. package/ng-package.json +14 -0
  4. package/package.json +19 -39
  5. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.html +22 -0
  6. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.scss +0 -0
  7. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.spec.ts +25 -0
  8. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.ts +16 -0
  9. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.html +33 -0
  10. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.scss +0 -0
  11. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.spec.ts +25 -0
  12. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.ts +28 -0
  13. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.html +20 -0
  14. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.scss +0 -0
  15. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.spec.ts +25 -0
  16. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.ts +16 -0
  17. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.html +3 -0
  18. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.scss +17 -0
  19. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.spec.ts +24 -0
  20. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.ts +20 -0
  21. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.html +23 -0
  22. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.scss +0 -0
  23. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.spec.ts +25 -0
  24. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.ts +16 -0
  25. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.html +15 -0
  26. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.scss +0 -0
  27. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.spec.ts +25 -0
  28. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.ts +19 -0
  29. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.html +14 -0
  30. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.scss +0 -0
  31. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.spec.ts +25 -0
  32. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.ts +16 -0
  33. package/src/lib/anna-core-shared-lib/constants/shared.constant.ts +35 -0
  34. package/src/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.ts +307 -0
  35. package/src/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.ts +19 -0
  36. package/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.ts +19 -0
  37. package/{lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts → src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.ts} +21 -9
  38. package/src/lib/anna-core-shared-lib/models/anna-manage-users.model.ts +6 -0
  39. package/{lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts → src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.ts} +28 -17
  40. package/src/lib/anna-core-shared-lib/models/anna-sort.model.ts +13 -0
  41. package/src/lib/anna-core-shared-lib/models/anna-tooltip.model.ts +44 -0
  42. package/src/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.ts +20 -0
  43. package/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.ts +43 -0
  44. package/src/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.ts +19 -0
  45. package/src/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.ts +12 -0
  46. package/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.ts +219 -0
  47. package/src/lib/anna-core-shared-lib/services/anna-filter.service.ts +563 -0
  48. package/src/lib/anna-core-shared-lib/services/anna-generic-table.service.ts +136 -0
  49. package/src/lib/anna-core-shared-lib/services/anna-global-config.service.ts +170 -0
  50. package/src/lib/anna-core-shared-lib/services/anna-number-format.service.ts +43 -0
  51. package/src/lib/anna-core-shared-lib/services/anna-sort.service.ts +179 -0
  52. package/src/lib/anna-core.module.ts +112 -0
  53. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.html +46 -0
  54. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.scss +153 -0
  55. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.spec.ts +24 -0
  56. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.ts +106 -0
  57. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.html +129 -0
  58. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.scss +275 -0
  59. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.spec.ts +24 -0
  60. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.ts +414 -0
  61. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.html +1080 -0
  62. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.scss +668 -0
  63. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.spec.ts +25 -0
  64. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.ts +2186 -0
  65. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.html +10 -0
  66. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.scss +1 -0
  67. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.spec.ts +24 -0
  68. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.ts +69 -0
  69. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.html +13 -0
  70. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.scss +88 -0
  71. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.spec.ts +25 -0
  72. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.ts +460 -0
  73. 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.ts +237 -0
  74. package/{lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts → src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.ts} +0 -0
  75. package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.ts +204 -0
  76. package/{lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts → src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.ts} +0 -0
  77. package/{public-api.d.ts → src/public-api.ts} +28 -0
  78. package/src/test.ts +27 -0
  79. package/tsconfig.lib.json +19 -0
  80. package/tsconfig.lib.prod.json +10 -0
  81. package/tsconfig.spec.json +17 -0
  82. package/annalib-anna-core.d.ts +0 -5
  83. package/esm2020/annalib-anna-core.mjs +0 -5
  84. package/esm2020/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +0 -15
  85. package/esm2020/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.mjs +0 -35
  86. package/esm2020/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +0 -15
  87. package/esm2020/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +0 -22
  88. package/esm2020/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +0 -15
  89. package/esm2020/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +0 -21
  90. package/esm2020/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +0 -15
  91. package/esm2020/lib/anna-core-shared-lib/constants/shared.constant.mjs +0 -35
  92. package/esm2020/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.mjs +0 -282
  93. package/esm2020/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.mjs +0 -27
  94. package/esm2020/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +0 -2
  95. package/esm2020/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +0 -2
  96. package/esm2020/lib/anna-core-shared-lib/models/anna-manage-users.model.mjs +0 -8
  97. package/esm2020/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +0 -2
  98. package/esm2020/lib/anna-core-shared-lib/models/anna-sort.model.mjs +0 -7
  99. package/esm2020/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +0 -30
  100. package/esm2020/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.mjs +0 -26
  101. package/esm2020/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +0 -46
  102. package/esm2020/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.mjs +0 -25
  103. package/esm2020/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.mjs +0 -16
  104. package/esm2020/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +0 -199
  105. package/esm2020/lib/anna-core-shared-lib/services/anna-filter.service.mjs +0 -469
  106. package/esm2020/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +0 -124
  107. package/esm2020/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +0 -133
  108. package/esm2020/lib/anna-core-shared-lib/services/anna-number-format.service.mjs +0 -41
  109. package/esm2020/lib/anna-core-shared-lib/services/anna-sort.service.mjs +0 -147
  110. package/esm2020/lib/anna-core.module.mjs +0 -180
  111. package/esm2020/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +0 -101
  112. package/esm2020/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +0 -364
  113. package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +0 -1834
  114. package/esm2020/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +0 -69
  115. package/esm2020/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +0 -357
  116. 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 +0 -189
  117. package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +0 -2
  118. package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +0 -178
  119. package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +0 -2
  120. package/esm2020/public-api.mjs +0 -50
  121. package/fesm2015/annalib-anna-core.mjs +0 -4875
  122. package/fesm2015/annalib-anna-core.mjs.map +0 -1
  123. package/fesm2020/annalib-anna-core.mjs +0 -4868
  124. package/fesm2020/annalib-anna-core.mjs.map +0 -1
  125. package/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +0 -8
  126. package/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.d.ts +0 -16
  127. package/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +0 -8
  128. package/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +0 -11
  129. package/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +0 -8
  130. package/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +0 -11
  131. package/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +0 -8
  132. package/lib/anna-core-shared-lib/constants/shared.constant.d.ts +0 -33
  133. package/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.d.ts +0 -34
  134. package/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.d.ts +0 -9
  135. package/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +0 -16
  136. package/lib/anna-core-shared-lib/models/anna-manage-users.model.d.ts +0 -6
  137. package/lib/anna-core-shared-lib/models/anna-sort.model.d.ts +0 -11
  138. package/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +0 -25
  139. package/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.d.ts +0 -9
  140. package/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +0 -9
  141. package/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.d.ts +0 -9
  142. package/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.d.ts +0 -7
  143. package/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +0 -27
  144. package/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +0 -74
  145. package/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +0 -28
  146. package/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +0 -21
  147. package/lib/anna-core-shared-lib/services/anna-number-format.service.d.ts +0 -7
  148. package/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +0 -16
  149. package/lib/anna-core.module.d.ts +0 -36
  150. package/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +0 -34
  151. package/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +0 -70
  152. package/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +0 -283
  153. package/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +0 -17
  154. package/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +0 -141
  155. 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 +0 -89
  156. package/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +0 -45
@@ -0,0 +1,414 @@
1
+ // Angular import statements
2
+ import { DatePipe } from "@angular/common";
3
+ import { AfterViewInit, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from "@angular/core";
4
+
5
+ // Third party import statements
6
+ import { NgbCalendar, NgbDate, NgbDatepickerConfig, NgbDateStruct, NgbInputDatepicker } from "@ng-bootstrap/ng-bootstrap";
7
+ import dayjs from "dayjs";
8
+ import { WeekObject } from '../../../anna-core-shared-lib/models/anna-generic-data-type.model';
9
+ import { IWeekCalendar } from '../../../anna-core-shared-lib/models/anna-global-dropdown-config.model';
10
+ import { AnnaDateTimeFormatService } from '../../../anna-core-shared-lib/services/anna-date-time-format.service';
11
+ import { AnnaGlobalConfigService } from '../../../anna-core-shared-lib/services/anna-global-config.service';
12
+
13
+ // User defined import statements
14
+
15
+
16
+
17
+ @Component({
18
+ selector: "anna-core-week-calendar-filter-lib",
19
+ templateUrl: "./anna-week-calendar-filter.component.html",
20
+ styleUrls: ["./anna-week-calendar-filter.component.scss"],
21
+ })
22
+ export class AnnaWeekCalendarComponent implements OnInit, OnChanges, AfterViewInit {
23
+ fromDate: NgbDate | null;
24
+ hoveredDate: NgbDate | null = null;
25
+ toDate: NgbDate | null = null;
26
+ today: NgbDate;
27
+
28
+ model: NgbDateStruct;
29
+
30
+ weekNumbers: string[] = [];
31
+ pipe: DatePipe;
32
+ dateToDisplay: string = "";
33
+ weekObjects: WeekObject[];
34
+ multiSelectDropdownOpen: boolean = false;
35
+ datepicker: NgbInputDatepicker;
36
+ private formatter: any;
37
+ public formattedStartDate: string;
38
+ public formattedEndDate: string;
39
+ private calendarMap = new Map();
40
+ private flag1: boolean;
41
+ private flag2: boolean;
42
+ @Input("from-date") selectedFromDate: NgbDateStruct;
43
+ @Input("to-date") selectedEndDate: NgbDateStruct;
44
+ @Input("disabled-dates") disabledDates: NgbDate[] = [];
45
+ @Input() maxDate: any;
46
+ @Input() minDate: any;
47
+
48
+ disabledFunc: any;
49
+ state: any;
50
+
51
+ //Setting the default values;
52
+ private _defaultValues: IWeekCalendar;
53
+
54
+ @Input("week-calendar-config") config: IWeekCalendar;
55
+ @Output("apply") applyWeekCalendarChanges = new EventEmitter();
56
+ @Output("toggle-calendar") calendarToggled = new EventEmitter();
57
+
58
+ ngOnChanges(changes: SimpleChanges): void {
59
+ //if some values are not sent, setting the default values
60
+ this._defaultValues = this.globalConfigService.defaultWeekCalendarConfig;
61
+ this.config = { ...this._defaultValues, ...this.config };
62
+
63
+ if (this.config.selectCurrentWeek) {
64
+ this.initializeWeekData();
65
+ this.fromDate && this.selectWeek(this.fromDate);
66
+ }
67
+
68
+ this.formatter = this.formattedDates();
69
+
70
+ if (this.selectedFromDate && this.selectedEndDate && this.config) {
71
+ // this.selectWeek(this.fromDate);
72
+ this.fromDate = NgbDate.from(this.selectedFromDate);
73
+ this.toDate = NgbDate.from(this.selectedEndDate);
74
+ this.weekNumberGenerator();
75
+ this.displayToUI();
76
+ this.setCalendarMap();
77
+ }
78
+
79
+ if (this.disabledDates.length > 0) {
80
+ this.disabledFunc = (date: NgbDate, current: { month: number }) => {
81
+ return this.checkIfDateIsDisabled(date);
82
+ };
83
+ }
84
+ }
85
+
86
+ constructor(
87
+ private calendar: NgbCalendar,
88
+ private datePickerConfig: NgbDatepickerConfig,
89
+ private annaDateTimeFormatService: AnnaDateTimeFormatService,
90
+ private globalConfigService: AnnaGlobalConfigService
91
+ ) { }
92
+
93
+
94
+ getWeekNumber(week: any, firstDayOfWeek: any) {
95
+ const weekStartDate = dayjs(convertNgbDateToMoment(week[0]), "MM/DD/YYYY");
96
+ const weekYear = weekStartDate.year();
97
+ const yearStartDate = dayjs(`01/01/${weekYear}`, "MM/DD/YYYY");
98
+ const weekDay = yearStartDate.day();
99
+
100
+ const noOfDays = weekStartDate.diff(yearStartDate, "d") + 1;
101
+
102
+ function convertNgbDateToMoment(ngbDate: NgbDate): string {
103
+ let formatType = "MM/DD/YYYY";
104
+ let converted = null;
105
+ if(ngbDate && ngbDate.month && ngbDate.day && ngbDate.year){
106
+ converted = ngbDate.month+ "/" + ngbDate.day + "/" + ngbDate.year;
107
+ converted = dayjs(converted).format(formatType);
108
+ }
109
+ return converted;
110
+ }
111
+
112
+ function checkIfYearIsBroadcastLeapYear() {
113
+ let isLeapYear = (weekYear % 4 == 0 && weekYear % 100 != 0) || weekYear % 400 == 0;
114
+ return (isLeapYear && (weekDay == 0 || weekDay == 6)) || (!isLeapYear && weekDay == 0);
115
+ }
116
+
117
+ const isLeapYear = checkIfYearIsBroadcastLeapYear();
118
+ const divider = isLeapYear ? 53 : 52;
119
+ const adder = isLeapYear ? 2 : 1;
120
+
121
+ let broadcastNumberOfDays = weekDay + noOfDays;
122
+ let broadcastWeekNumber = broadcastNumberOfDays % 7 > 0 ? broadcastNumberOfDays / 7 + adder : broadcastNumberOfDays / 7;
123
+
124
+ if (Math.floor(broadcastWeekNumber % divider) === 0) {
125
+ return divider;
126
+ }
127
+ return Math.floor(broadcastWeekNumber % divider);
128
+ }
129
+
130
+ ngAfterViewInit(): void {
131
+ // CHANGES@ANNALIB Changed this.
132
+ // this.calendar["__proto__"].getWeekNumber = this.getWeekNumber;
133
+ Object.setPrototypeOf(this.calendar, {getWeekNumber: this.getWeekNumber})
134
+ }
135
+
136
+ ngOnInit(): void {
137
+ // this.selectWeek(this.fromDate);
138
+ this.setCalendarMap();
139
+ }
140
+
141
+ initializeWeekData() {
142
+ this.weekObjects = [];
143
+
144
+ this.fromDate = this.calendar.getToday();
145
+ this.today = this.calendar.getToday();
146
+
147
+ let backDatedPeriod = JSON.parse(localStorage.getItem("userDetails") || '{}').locking_period_days;
148
+ if (backDatedPeriod < 0) {
149
+ let date: NgbDate = this.calendar.getPrev(this.calendar.getToday(), "d", Math.abs(backDatedPeriod));
150
+ this.today = NgbDate.from(date);
151
+ this.fromDate = NgbDate.from(date);
152
+ }
153
+
154
+ // Disable months before numberOfMonthsToEnable
155
+ this.datePickerConfig.markDisabled = (date: NgbDateStruct) => {
156
+ let previousMonth = this.calendar.getPrev(this.today, "m", this.config.numberOfMonthsToEnableInPast);
157
+ let previousDay = this.calendar.getPrev(previousMonth, "d", 1);
158
+ return !NgbDate.from(previousDay).before(date);
159
+ };
160
+ this.formatter = this.formattedDates();
161
+ this.flag1 = false;
162
+ this.flag2 = false;
163
+ }
164
+
165
+ selectWeek(date: NgbDate): void {
166
+ const dateObject = new Date(date.year, date.month - 1, date.day);
167
+ let constructDate = this.buildDate(dateObject);
168
+
169
+ if (!this.config.selectMultipleWeeks) {
170
+ //Single week selection
171
+ this.fromDate = this.constructStartDate(dateObject)(constructDate);
172
+ this.toDate = this.constructEndDate(dateObject)(constructDate);
173
+ this.weekNumberGenerator();
174
+ } else {
175
+ if (date.before(this.fromDate)) {
176
+ this.fromDate = this.constructStartDate(dateObject)(constructDate);
177
+ if (this.flag1) {
178
+ this.toDate = this.constructEndDate(dateObject)(constructDate);
179
+ }
180
+ this.flag1 = !this.flag1;
181
+ } else if (date.after(this.toDate)) {
182
+ if (this.flag2) {
183
+ this.fromDate = this.constructStartDate(dateObject)(constructDate);
184
+ //this.toDate = this.constructEndDate(dateObject)(constructDate);
185
+ }
186
+ this.flag2 = !this.flag2;
187
+ this.toDate = this.constructEndDate(dateObject)(constructDate);
188
+ } else {
189
+ this.fromDate = this.constructStartDate(dateObject)(constructDate);
190
+ this.toDate = this.constructEndDate(dateObject)(constructDate);
191
+ }
192
+
193
+ if (this.disabledDates.length > 0) {
194
+ let dayjsStartDate = dayjs(this.annaDateTimeFormatService.convertNgbDateToMoment(this.fromDate), "MM/DD/YYYY");
195
+ let dayjsEndDate = dayjs(this.annaDateTimeFormatService.convertNgbDateToMoment(this.toDate), "MM/DD/YYYY");
196
+ let ngbDate;
197
+ while (!dayjsStartDate.isSame(dayjsEndDate)) {
198
+ ngbDate = this.annaDateTimeFormatService.convertToNgbDate(dayjsStartDate, "MM/DD/YYYY");
199
+ if (this.checkIfDateIsDisabled(ngbDate)) {
200
+ break;
201
+ }
202
+ dayjsStartDate.add(1, "d");
203
+ }
204
+ let newDateObject = new Date(ngbDate.year, ngbDate.month - 1, ngbDate.day - 1);
205
+ let constructDate = this.buildDate(newDateObject);
206
+ this.toDate = this.constructEndDate(newDateObject)(constructDate);
207
+ }
208
+
209
+ this.weekNumberGenerator();
210
+ }
211
+
212
+ if (!this.config.showAsDropdown) {
213
+ this.applyChanges();
214
+ }
215
+ }
216
+
217
+ weekNumberGenerator(): void {
218
+ let dates = [];
219
+ let week = [];
220
+
221
+ let startDate = NgbDate.from(this.fromDate);
222
+ let endDate = NgbDate.from(this.toDate);
223
+
224
+ week.push(startDate);
225
+ while (endDate != null && !startDate.equals(endDate)) {
226
+ let date = this.calendar.getNext(startDate, "d", 1);
227
+ startDate = date;
228
+ week.push(date);
229
+
230
+ // Collect all days in week to calculate the week number
231
+ if (week.length == 7) {
232
+ dates.push(week);
233
+ week = [];
234
+ }
235
+ }
236
+ if (((this.config.maxWeeksToSelect ?? 0) > 0 && dates.length > (this.config.maxWeeksToSelect ?? 0))) {
237
+ dates.splice((this.config.maxWeeksToSelect ?? 0), dates.length - (this.config.maxWeeksToSelect ?? 0));
238
+ }
239
+ this.selectedDates(dates);
240
+
241
+ this.weekNumbers = [];
242
+ this.weekObjects = [];
243
+ if (dates.length > 0) {
244
+ for (let date of dates) {
245
+ this.weekNumbers.push(" Week " + this.calendar.getWeekNumber(date, this.config.firstDayOfWeek));
246
+ let dates = this.formatter(date[0], date[6]);
247
+ let dateObjects = { startDate: dates.formattedStartDate, endDate: dates.formattedEndDate };
248
+ this.weekObjects.push(dateObjects);
249
+ }
250
+ }
251
+ this.displayToUI();
252
+ }
253
+
254
+ selectedDates(dates: any) {
255
+ this.fromDate = dates[0][0];
256
+ this.toDate = dates[dates.length - 1][6];
257
+ }
258
+
259
+ formattedDates() {
260
+ let pipe = new DatePipe("en-US");
261
+ let thisObj = this;
262
+ return function (fromDate: NgbDate, toDate: NgbDate) {
263
+ let fromDateObject = new Date(fromDate.year, fromDate.month - 1, fromDate.day);
264
+ let toDateObject = new Date(toDate.year, toDate.month - 1, toDate.day);
265
+ thisObj.formattedStartDate = pipe.transform(fromDateObject, thisObj.config.dateFormatForRequest);
266
+ thisObj.formattedEndDate = pipe.transform(toDateObject, thisObj.config.dateFormatForRequest);
267
+
268
+ thisObj.dateToDisplay =
269
+ pipe.transform(fromDateObject, thisObj.config.dateFormatToDisplay) +
270
+ " to " +
271
+ pipe.transform(toDateObject, thisObj.config.dateFormatToDisplay);
272
+ return thisObj;
273
+ };
274
+ }
275
+
276
+ displayToUI() {
277
+ if (!this.config.selectMultipleWeeks && this.fromDate && this.toDate) {
278
+ // Display for only Single Week
279
+ this.formatter(this.fromDate, this.toDate);
280
+ } else {
281
+ // Display for Multiple Weeks
282
+ if (this.weekNumbers.length > (this.config.maxWeeksToShowWithRemainingCount ?? 0)) {
283
+ let weekDisplay = [];
284
+ for (let i = 0; i < (this.config.maxWeeksToShowWithRemainingCount ?? 0); i++) {
285
+ weekDisplay.push(this.weekNumbers.shift());
286
+ }
287
+ let remainingWeeks = this.weekNumbers.length;
288
+ this.weekNumbers = [];
289
+ this.weekNumbers.push(weekDisplay + " +" + remainingWeeks);
290
+ }
291
+ }
292
+ }
293
+
294
+ constructStartDate(date: Date) {
295
+ let firstDayOfWeek = this.config.firstDayOfWeek;
296
+ return function (constructDate: any) {
297
+ let startDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) - date.getDay() : -6;
298
+ return constructDate(startDay);
299
+ };
300
+ }
301
+
302
+ constructEndDate(date: Date) {
303
+ let firstDayOfWeek = this.config.firstDayOfWeek;
304
+ return function (constructDate: any) {
305
+ let endDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) + 6 - date.getDay() : 0;
306
+ return constructDate(endDay);
307
+ };
308
+ }
309
+
310
+ buildDate(date: Date) {
311
+ return function (number: number): NgbDate | null {
312
+ let day = date.getDate() + number;
313
+ const dateObject = new Date(date.getFullYear(), date.getMonth(), day);
314
+
315
+ let ngbDateObject = {} as NgbDate;
316
+ ngbDateObject.day = day;
317
+
318
+ if (ngbDateObject.day > 31 || ngbDateObject.day < 1) {
319
+ ngbDateObject.day = dateObject.getDate();
320
+ }
321
+
322
+ ngbDateObject.month = dateObject.getMonth() + 1;
323
+ ngbDateObject.year = dateObject.getFullYear();
324
+ return NgbDate.from(ngbDateObject);
325
+ };
326
+ }
327
+
328
+ isHovered(date: NgbDate): boolean | null {
329
+ return this.fromDate && !this.toDate && this.hoveredDate && date.after(this.fromDate) && date.before(this.hoveredDate);
330
+ }
331
+
332
+ isInside(date: NgbDate): boolean | null {
333
+ return this.toDate && date.after(this.fromDate) && date.before(this.toDate);
334
+ }
335
+
336
+ isRange(date: NgbDate): boolean | null {
337
+ return (
338
+ date.equals(this.fromDate) || (this.toDate && date.equals(this.toDate)) || this.isInside(date) || this.isHovered(date)
339
+ );
340
+ }
341
+
342
+ previousWeek(): void {
343
+ if (this.fromDate) {
344
+ this.toDate = this.calendar.getPrev(this.fromDate, "d", 1);
345
+ this.fromDate = this.calendar.getPrev(this.fromDate, "d", this.calendar.getDaysPerWeek());
346
+ }
347
+ this.weekNumberGenerator();
348
+ this.applyChanges();
349
+ }
350
+
351
+ nextWeek(): void {
352
+ if (this.fromDate) {
353
+ this.fromDate = this.calendar.getNext(this.fromDate, "d", this.calendar.getDaysPerWeek());
354
+ this.toDate = this.calendar.getNext(this.fromDate, "d", this.calendar.getDaysPerWeek() - 1);
355
+ }
356
+ this.weekNumberGenerator();
357
+ this.applyChanges();
358
+ }
359
+
360
+ setCalendarMap() {
361
+ let dateObj = { fromDate: this.fromDate, toDate: this.toDate };
362
+ this.calendarMap.set("oldDates", dateObj);
363
+ }
364
+
365
+ applyChanges() {
366
+ this.multiSelectDropdownOpen = false;
367
+ if (!this.config.emitMultipleWeekObjects) {
368
+ let dates = {} as WeekObject;
369
+ let formattedDates = this.formatter(this.fromDate, this.toDate);
370
+ dates.startDate = formattedDates.formattedStartDate;
371
+ dates.endDate = formattedDates.formattedEndDate;
372
+ this.applyWeekCalendarChanges.emit(dates);
373
+ } else {
374
+ this.applyWeekCalendarChanges.emit(this.weekObjects);
375
+ }
376
+ this.setCalendarMap();
377
+ }
378
+
379
+ isFocused(value: any) {
380
+ this.calendarToggled.emit(value);
381
+ }
382
+
383
+ isDropdownOpenedForCalendar(datepicker: NgbInputDatepicker) {
384
+ this.datepicker = datepicker;
385
+ if (this.datepicker.isOpen()) {
386
+ this.revertDates();
387
+ this.datepicker.close();
388
+ this.multiSelectDropdownOpen = false;
389
+ } else {
390
+ this.datepicker.open();
391
+ this.multiSelectDropdownOpen = true;
392
+ }
393
+ }
394
+
395
+ revertDates() {
396
+ this.multiSelectDropdownOpen = false;
397
+ if (this.calendarMap.get("oldDates")) {
398
+ let dateObj = this.calendarMap.get("oldDates");
399
+ this.fromDate = dateObj.fromDate;
400
+ this.toDate = dateObj.toDate;
401
+ this.weekNumberGenerator();
402
+ this.displayToUI();
403
+ }
404
+ }
405
+
406
+ checkIfDateIsDisabled(date: any): boolean {
407
+ const validatorFunc = (ngbDate: NgbDate) => ngbDate.year === date.year && ngbDate.month === date.month && ngbDate.day === date.day;
408
+ return this.disabledDates.some(validatorFunc);
409
+ }
410
+
411
+ closeDatepicker(datepickerRef: any) {
412
+ datepickerRef.close();
413
+ }
414
+ }