Skip to content

Commit d1b9169

Browse files
authored
Calendar: improve Views and Selection strategies types (#30758)
1 parent 5b5d8c0 commit d1b9169

File tree

15 files changed

+575
-432
lines changed

15 files changed

+575
-432
lines changed

packages/devextreme/js/__internal/core/utils/m_date.ts

Lines changed: 37 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -425,33 +425,37 @@ function getDateIntervalByString(intervalString) {
425425
return result;
426426
}
427427

428-
function sameDate(date1, date2) {
428+
function sameDate(date1, date2): boolean {
429429
return sameMonthAndYear(date1, date2) && date1.getDate() === date2.getDate();
430430
}
431431

432-
function sameMonthAndYear(date1, date2) {
432+
function sameMonthAndYear(date1, date2): boolean {
433433
return sameYear(date1, date2) && date1.getMonth() === date2.getMonth();
434434
}
435435

436-
function sameYear(date1, date2) {
436+
function sameYear(date1, date2): boolean {
437437
return date1 && date2 && date1.getFullYear() === date2.getFullYear();
438438
}
439439

440-
function sameHoursAndMinutes(date1, date2) {
440+
function sameHoursAndMinutes(date1, date2): boolean {
441441
return date1 && date2 && date1.getHours() === date2.getHours() && date1.getMinutes() === date2.getMinutes();
442442
}
443443

444-
const sameDecade = function (date1, date2) {
445-
if (!isDefined(date1) || !isDefined(date2)) return;
444+
const sameDecade = function (date1, date2): boolean {
445+
if (!isDefined(date1) || !isDefined(date2)) {
446+
return false;
447+
}
446448

447449
const startDecadeDate1 = date1.getFullYear() - date1.getFullYear() % 10;
448450
const startDecadeDate2 = date2.getFullYear() - date2.getFullYear() % 10;
449451

450452
return date1 && date2 && startDecadeDate1 === startDecadeDate2;
451453
};
452454

453-
const sameCentury = function (date1, date2) {
454-
if (!isDefined(date1) || !isDefined(date2)) return;
455+
const sameCentury = function (date1, date2): boolean {
456+
if (!isDefined(date1) || !isDefined(date2)) {
457+
return false;
458+
}
455459

456460
const startCenturyDate1 = date1.getFullYear() - date1.getFullYear() % 100;
457461
const startCenturyDate2 = date2.getFullYear() - date2.getFullYear() % 100;
@@ -540,41 +544,56 @@ function getLastDateInYear(year) {
540544

541545
function getDayWeekNumber(date, firstDayOfWeek) {
542546
let day = date.getDay() - firstDayOfWeek + 1;
543-
if (day <= 0) { day += DAYS_IN_WEEK; }
547+
if (day <= 0) {
548+
day += DAYS_IN_WEEK;
549+
}
544550

545551
return day;
546552
}
547553

548-
function getWeekNumber(date, firstDayOfWeek, rule) {
549-
const firstWeekDayInYear = getDayWeekNumber(getFirstDateInYear(date.getFullYear()), firstDayOfWeek);
554+
function getWeekNumber(date, firstDayOfWeek, rule): number {
555+
const firstWeekDayInYear = getDayWeekNumber(
556+
getFirstDateInYear(date.getFullYear()),
557+
firstDayOfWeek,
558+
);
550559
const lastWeekDayInYear = getDayWeekNumber(getLastDateInYear(date.getFullYear()), firstDayOfWeek);
551560
const daysInFirstWeek = DAYS_IN_WEEK - firstWeekDayInYear + 1;
552561

553562
let weekNumber = Math.ceil((getDayNumber(date) - daysInFirstWeek) / 7);
554563
switch (rule) {
555564
case 'fullWeek': {
556-
if (daysInFirstWeek === DAYS_IN_WEEK) { weekNumber++; }
565+
if (daysInFirstWeek === DAYS_IN_WEEK) {
566+
weekNumber += 1;
567+
}
557568
if (weekNumber === 0) {
558569
const lastDateInPreviousYear = getLastDateInYear(date.getFullYear() - 1);
559570
return getWeekNumber(lastDateInPreviousYear, firstDayOfWeek, rule);
560571
}
561572
return weekNumber;
562573
}
563574
case 'firstDay': {
564-
if (daysInFirstWeek > 0) { weekNumber++; }
575+
if (daysInFirstWeek > 0) {
576+
weekNumber += 1;
577+
}
565578

566579
const isSunday = firstWeekDayInYear === SUNDAY_WEEK_NUMBER
567580
|| lastWeekDayInYear === SUNDAY_WEEK_NUMBER;
568-
if ((weekNumber > USUAL_WEEK_COUNT_IN_YEAR && !isSunday) || weekNumber === 54) { weekNumber = 1; }
581+
if ((weekNumber > USUAL_WEEK_COUNT_IN_YEAR && !isSunday) || weekNumber === 54) {
582+
weekNumber = 1;
583+
}
569584

570585
return weekNumber;
571586
}
572587
case 'firstFourDays': {
573-
if (daysInFirstWeek > 3) { weekNumber++; }
588+
if (daysInFirstWeek > 3) {
589+
weekNumber += 1;
590+
}
574591

575592
const isThursday = firstWeekDayInYear === THURSDAY_WEEK_NUMBER
576593
|| lastWeekDayInYear === THURSDAY_WEEK_NUMBER;
577-
if (weekNumber > USUAL_WEEK_COUNT_IN_YEAR && !isThursday) { weekNumber = 1; }
594+
if (weekNumber > USUAL_WEEK_COUNT_IN_YEAR && !isThursday) {
595+
weekNumber = 1;
596+
}
578597

579598
if (weekNumber === 0) {
580599
const lastDateInPreviousYear = getLastDateInYear(date.getFullYear() - 1);
@@ -583,6 +602,7 @@ function getWeekNumber(date, firstDayOfWeek, rule) {
583602
return weekNumber;
584603
}
585604
default:
605+
return weekNumber;
586606
break;
587607
}
588608
}
@@ -699,7 +719,7 @@ const makeDate = function (date) {
699719
};
700720

701721
const getDatesOfInterval = function (startDate, endDate, step) {
702-
const result: any[] = [];
722+
const result: Date[] = [];
703723
let currentDate = new Date(startDate.getTime());
704724

705725
while (currentDate < endDate) {

0 commit comments

Comments
 (0)