@annalib/anna-core 4.2.4 → 4.2.5

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