@annalib/anna-core 3.3.0 → 3.4.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 (142) hide show
  1. package/annalib-anna-core.d.ts +5 -0
  2. package/esm2020/annalib-anna-core.mjs +5 -0
  3. package/esm2020/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +15 -0
  4. package/esm2020/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.mjs +35 -0
  5. package/esm2020/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +15 -0
  6. package/esm2020/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +22 -0
  7. package/esm2020/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +15 -0
  8. package/esm2020/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +21 -0
  9. package/esm2020/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +15 -0
  10. package/esm2020/lib/anna-core-shared-lib/constants/shared.constant.mjs +34 -0
  11. package/esm2020/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.mjs +27 -0
  12. package/esm2020/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +2 -0
  13. package/esm2020/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +2 -0
  14. package/esm2020/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +3 -0
  15. package/esm2020/lib/anna-core-shared-lib/models/anna-sort.model.mjs +2 -0
  16. package/esm2020/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +30 -0
  17. package/esm2020/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.mjs +26 -0
  18. package/esm2020/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +46 -0
  19. package/esm2020/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +190 -0
  20. package/esm2020/lib/anna-core-shared-lib/services/anna-filter.service.mjs +419 -0
  21. package/esm2020/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +48 -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 +147 -0
  24. package/esm2020/lib/anna-core.module.mjs +161 -0
  25. package/esm2020/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +100 -0
  26. package/esm2020/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +362 -0
  27. package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +1689 -0
  28. package/esm2020/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +67 -0
  29. package/esm2020/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +357 -0
  30. 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
  31. package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +2 -0
  32. package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +178 -0
  33. package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +2 -0
  34. package/esm2020/public-api.mjs +45 -0
  35. package/fesm2015/annalib-anna-core.mjs +4206 -0
  36. package/fesm2015/annalib-anna-core.mjs.map +1 -0
  37. package/fesm2020/annalib-anna-core.mjs +4203 -0
  38. package/fesm2020/annalib-anna-core.mjs.map +1 -0
  39. package/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +8 -0
  40. package/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.d.ts +16 -0
  41. package/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +8 -0
  42. package/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +11 -0
  43. package/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +8 -0
  44. package/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +11 -0
  45. package/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +8 -0
  46. package/lib/anna-core-shared-lib/constants/shared.constant.d.ts +32 -0
  47. package/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.d.ts +9 -0
  48. package/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +12 -0
  49. package/{src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.ts → lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts} +9 -21
  50. package/{src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.ts → lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts} +17 -27
  51. package/lib/anna-core-shared-lib/models/anna-sort.model.d.ts +6 -0
  52. package/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +25 -0
  53. package/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.d.ts +9 -0
  54. package/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +9 -0
  55. package/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +26 -0
  56. package/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +73 -0
  57. package/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +14 -0
  58. package/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +21 -0
  59. package/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +16 -0
  60. package/lib/anna-core.module.d.ts +33 -0
  61. package/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +34 -0
  62. package/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +70 -0
  63. package/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +268 -0
  64. package/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +17 -0
  65. package/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +141 -0
  66. 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
  67. package/{src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.ts → lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts} +0 -0
  68. package/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +45 -0
  69. package/{src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.ts → lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts} +0 -0
  70. package/package.json +38 -18
  71. package/{src/public-api.ts → public-api.d.ts} +1 -28
  72. package/src/lib/anna-common-scss/_mixins.scss +172 -171
  73. package/.browserslistrc +0 -16
  74. package/karma.conf.js +0 -44
  75. package/ng-package.json +0 -14
  76. package/src/lib/anna-common-scss/_application-spacing.scss +0 -6
  77. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.html +0 -22
  78. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.scss +0 -0
  79. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.spec.ts +0 -25
  80. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.ts +0 -16
  81. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.html +0 -33
  82. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.scss +0 -0
  83. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.spec.ts +0 -25
  84. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.ts +0 -28
  85. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.html +0 -20
  86. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.scss +0 -0
  87. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.spec.ts +0 -25
  88. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.ts +0 -16
  89. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.html +0 -3
  90. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.scss +0 -17
  91. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.spec.ts +0 -24
  92. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.ts +0 -20
  93. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.html +0 -23
  94. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.scss +0 -0
  95. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.spec.ts +0 -25
  96. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.ts +0 -16
  97. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.html +0 -15
  98. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.scss +0 -0
  99. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.spec.ts +0 -25
  100. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.ts +0 -19
  101. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.html +0 -14
  102. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.scss +0 -0
  103. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.spec.ts +0 -25
  104. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.ts +0 -16
  105. package/src/lib/anna-core-shared-lib/constants/shared.constant.ts +0 -34
  106. package/src/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.ts +0 -19
  107. package/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.ts +0 -15
  108. package/src/lib/anna-core-shared-lib/models/anna-sort.model.ts +0 -7
  109. package/src/lib/anna-core-shared-lib/models/anna-tooltip.model.ts +0 -44
  110. package/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.ts +0 -26
  111. package/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.ts +0 -202
  112. package/src/lib/anna-core-shared-lib/services/anna-filter.service.ts +0 -507
  113. package/src/lib/anna-core-shared-lib/services/anna-generic-table.service.ts +0 -44
  114. package/src/lib/anna-core-shared-lib/services/anna-global-config.service.ts +0 -170
  115. package/src/lib/anna-core-shared-lib/services/anna-sort.service.ts +0 -179
  116. package/src/lib/anna-core.module.ts +0 -99
  117. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.html +0 -46
  118. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.scss +0 -153
  119. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.spec.ts +0 -24
  120. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.ts +0 -106
  121. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.html +0 -129
  122. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.scss +0 -275
  123. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.spec.ts +0 -24
  124. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.ts +0 -412
  125. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.html +0 -920
  126. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.scss +0 -596
  127. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.spec.ts +0 -25
  128. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.ts +0 -2012
  129. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.html +0 -10
  130. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.scss +0 -1
  131. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.spec.ts +0 -24
  132. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.ts +0 -70
  133. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.html +0 -13
  134. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.scss +0 -88
  135. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.spec.ts +0 -25
  136. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.ts +0 -460
  137. 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 +0 -237
  138. package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.ts +0 -204
  139. package/src/test.ts +0 -27
  140. package/tsconfig.lib.json +0 -19
  141. package/tsconfig.lib.prod.json +0 -10
  142. package/tsconfig.spec.json +0 -17
@@ -1,412 +0,0 @@
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
- }