@syncfusion/ej2-schedule
Version:
Flexible scheduling library with more built-in features and enhanced customization options similar to outlook and google calendar, allowing the users to plan and manage their appointments with efficient data-binding support.
229 lines (228 loc) • 9.32 kB
JavaScript
/* eslint-disable @typescript-eslint/no-explicit-any */
import { HijriParser, isNullOrUndefined } from '@syncfusion/ej2-base';
/** @private */
var Gregorian = /** @class */ (function () {
function Gregorian() {
}
Gregorian.prototype.firstDateOfMonth = function (date) {
return new Date(date.getFullYear(), date.getMonth());
};
Gregorian.prototype.lastDateOfMonth = function (dt) {
return new Date(dt.getFullYear(), dt.getMonth() + 1, 0);
};
Gregorian.prototype.isMonthStart = function (date) {
return (date.getDate() === 1);
};
Gregorian.prototype.getLeapYearDaysCount = function () {
return 366;
};
Gregorian.prototype.getYearDaysCount = function (date, interval) {
return ((date.getFullYear() + interval) % 4 === 0) ? 366 : 365;
};
Gregorian.prototype.getDate = function (date) {
return date.getDate();
};
Gregorian.prototype.getMonth = function (date) {
return (date.getMonth() + 1);
};
Gregorian.prototype.getFullYear = function (date) {
return date.getFullYear();
};
Gregorian.prototype.getYearLastDate = function (date, interval) {
return new Date(date.getFullYear() + interval, 0, 0);
};
Gregorian.prototype.getMonthDaysCount = function (date) {
return this.lastDateOfMonth(date).getDate();
};
Gregorian.prototype.getMonthStartDate = function (date) {
return new Date(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes());
};
Gregorian.prototype.getMonthEndDate = function (date) {
date.setDate(1);
return new Date(date.setMonth(date.getMonth() + 1));
};
Gregorian.prototype.getExpectedDays = function (date, days) {
return days;
};
Gregorian.prototype.setDate = function (dateObj, date) {
dateObj.setDate(date);
};
Gregorian.prototype.setValidDate = function (date, interval, startDate, monthValue, beginDate) {
if (!isNullOrUndefined(beginDate)) {
date.setMonth((beginDate ? monthValue : date.getMonth()) + interval);
}
else {
date.setMonth(date.getMonth() + interval, startDate);
}
};
Gregorian.prototype.setMonth = function (date, interval, startDate) {
date.setDate(1);
date.setFullYear(date.getFullYear());
date.setMonth(interval - 1);
var maxDay = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();
date.setDate(Math.min(startDate, maxDay));
};
Gregorian.prototype.addYears = function (date, interval) {
date.setFullYear(date.getFullYear() + interval);
};
Gregorian.prototype.isSameMonth = function (date1, date2) {
return (date1.getMonth() === date2.getMonth());
};
Gregorian.prototype.checkMonth = function (date, months) {
return (months.indexOf(date.getMonth() + 1) === -1);
};
Gregorian.prototype.compareMonth = function (date1, date2) {
return (date1.getMonth() > date2.getMonth());
};
Gregorian.prototype.isSameYear = function (date1, date2) {
return (date1.getFullYear() === date2.getFullYear());
};
Gregorian.prototype.isLastMonth = function (date) {
return (date.getMonth() === 11);
};
Gregorian.prototype.isLeapYear = function (year, interval) {
return ((year + interval) % 4 === 0);
};
return Gregorian;
}());
export { Gregorian };
/** @private */
var Islamic = /** @class */ (function () {
function Islamic() {
}
Islamic.prototype.firstDateOfMonth = function (date) {
var hDate = this.getHijriDate(date);
var gDate = HijriParser.toGregorian(hDate.year, hDate.month, 1);
return gDate;
};
Islamic.prototype.lastDateOfMonth = function (date) {
var hDate = this.getHijriDate(date);
var daysInMonth = this.getDaysInMonth(hDate.month, hDate.year);
var gDate = HijriParser.toGregorian(hDate.year, hDate.month, daysInMonth);
var finalGDate = new Date(gDate.getTime());
finalGDate = new Date(finalGDate.setDate(finalGDate.getDate() + 1));
var finalHDate = this.getHijriDate(finalGDate);
if (hDate.month === finalHDate.month) {
return finalGDate;
}
finalHDate = this.getHijriDate(gDate);
if (hDate.month === finalHDate.month) {
return gDate;
}
return new Date(gDate.setDate(gDate.getDate() - 1));
};
Islamic.prototype.isMonthStart = function (date) {
var hijriDate = this.getHijriDate(date);
return (hijriDate.date === 1);
};
Islamic.prototype.getLeapYearDaysCount = function () {
return 355;
};
Islamic.prototype.getYearDaysCount = function (date, interval) {
var hDate = this.getHijriDate(date);
return this.isLeapYear(hDate.year, interval) ? 355 : 354;
};
Islamic.prototype.getDate = function (date) {
var hijriDate = this.getHijriDate(date);
return hijriDate.date;
};
Islamic.prototype.getMonth = function (date) {
var hDate = this.getHijriDate(date);
return hDate.month;
};
Islamic.prototype.getFullYear = function (date) {
var hDate = this.getHijriDate(date);
return hDate.year;
};
Islamic.prototype.getYearLastDate = function (date, interval) {
var hDate = this.getHijriDate(date);
var gDate = HijriParser.toGregorian(hDate.year + interval, 1, 0);
return gDate;
};
Islamic.prototype.getMonthDaysCount = function (date) {
var maxDate = this.lastDateOfMonth(date);
var hijriDate = this.getHijriDate(maxDate);
return hijriDate.date;
};
Islamic.prototype.getMonthStartDate = function (date) {
var firstDate = this.firstDateOfMonth(date);
return new Date(firstDate.getFullYear(), firstDate.getMonth(), firstDate.getDate(), date.getHours(), date.getMinutes());
};
Islamic.prototype.getMonthEndDate = function (date) {
var lastDate = this.lastDateOfMonth(date);
lastDate.setDate(lastDate.getDate() + 1);
return new Date(lastDate.setMonth(lastDate.getMonth()));
};
Islamic.prototype.getExpectedDays = function (date, days) {
var hDate = this.getHijriDate(date);
var day = [];
for (var i = 0; i < days.length; i++) {
var gDate = HijriParser.toGregorian(hDate.year, hDate.month, days[parseInt(i.toString(), 10)]);
day.push(gDate.getDate());
}
return day;
};
Islamic.prototype.setDate = function (dateObj, date) {
var hDate = this.getHijriDate(dateObj);
var gDate = HijriParser.toGregorian(hDate.year, hDate.month, date);
this.updateDateObj(dateObj, gDate);
};
Islamic.prototype.setValidDate = function (date, interval, startDate, monthValue, beginDate) {
var firstDate = (!isNullOrUndefined(beginDate)) ? this.firstDateOfMonth(beginDate) : date;
var hDate = this.getHijriDate(firstDate);
var gDate = HijriParser.toGregorian(hDate.year, hDate.month + interval, startDate);
this.updateDateObj(date, gDate);
};
Islamic.prototype.setMonth = function (date, interval, startDate) {
var hDate = this.getHijriDate(date);
var gDate = HijriParser.toGregorian(hDate.year, interval, startDate);
this.updateDateObj(date, gDate);
};
Islamic.prototype.addYears = function (date, interval, monthValue) {
var hDate = this.getHijriDate(date);
var gDate = HijriParser.toGregorian(hDate.year + interval, monthValue, 1);
this.updateDateObj(date, gDate);
};
Islamic.prototype.isSameMonth = function (date1, date2) {
var currentHijri = this.getHijriDate(date1);
var tempHijri = this.getHijriDate(date2);
return (currentHijri.month === tempHijri.month);
};
Islamic.prototype.checkMonth = function (date, months) {
var hDate = this.getHijriDate(date);
return (months.indexOf(hDate.month) === -1);
};
Islamic.prototype.compareMonth = function (date1, date2) {
var hDate = this.getHijriDate(date1);
var hDate1 = this.getHijriDate(date2);
return (hDate.month > hDate1.month);
};
Islamic.prototype.isSameYear = function (date1, date2) {
var hDate = this.getHijriDate(date1);
var hDate1 = this.getHijriDate(date2);
return (hDate.year === hDate1.year);
};
Islamic.prototype.isLastMonth = function (date) {
var hDate = this.getHijriDate(date);
return (hDate.month === 12);
};
Islamic.prototype.updateDateObj = function (date, gDate) {
date.setFullYear(gDate.getFullYear(), gDate.getMonth(), gDate.getDate());
};
Islamic.prototype.isLeapYear = function (year, interval) {
return (14 + 11 * (year + interval)) % 30 < 11;
};
Islamic.prototype.getDaysInMonth = function (month, year) {
var length = 0;
length = 29 + ((month + 1) % 2);
if (month === 11 && this.isLeapYear(year, 0)) {
length++;
}
return length;
};
Islamic.prototype.getHijriDate = function (date) {
return HijriParser.getHijriDate(date);
};
return Islamic;
}());
export { Islamic };