This commit is contained in:
parent
33624d3b02
commit
896a3b77d7
5 changed files with 293 additions and 85 deletions
110
frontend/src/lib/data/holidays.js
Normal file
110
frontend/src/lib/data/holidays.js
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
/**
|
||||
* Holiday data for terminal calendar
|
||||
* Includes both Indian national holidays and international holidays
|
||||
*/
|
||||
|
||||
/**
|
||||
* Fixed holidays - same date every year
|
||||
* Format: { month: 0-11, day: 1-31, name: string, type: 'indian' | 'international' }
|
||||
*/
|
||||
export const fixedHolidays = [
|
||||
// Indian National Holidays (Fixed)
|
||||
{ month: 0, day: 26, name: 'Republic Day', type: 'indian' },
|
||||
{ month: 7, day: 15, name: 'Independence Day', type: 'indian' },
|
||||
{ month: 9, day: 2, name: 'Gandhi Jayanti', type: 'indian' },
|
||||
|
||||
// International Holidays (Fixed)
|
||||
{ month: 0, day: 1, name: "New Year's Day", type: 'international' },
|
||||
{ month: 1, day: 14, name: "Valentine's Day", type: 'international' },
|
||||
{ month: 9, day: 31, name: 'Halloween', type: 'international' },
|
||||
{ month: 11, day: 25, name: 'Christmas', type: 'international' },
|
||||
{ month: 11, day: 31, name: "New Year's Eve", type: 'international' },
|
||||
];
|
||||
|
||||
/**
|
||||
* Variable holidays - different date each year (lunar calendar based)
|
||||
* Format: { [year]: Array<{ month: 0-11, day: 1-31, name: string, type: string }> }
|
||||
*/
|
||||
export const variableHolidays = {
|
||||
2024: [
|
||||
{ month: 2, day: 25, name: 'Holi', type: 'indian' },
|
||||
{ month: 3, day: 10, name: 'Eid ul-Fitr', type: 'indian' },
|
||||
{ month: 5, day: 17, name: 'Eid ul-Adha', type: 'indian' },
|
||||
{ month: 7, day: 19, name: 'Raksha Bandhan', type: 'indian' },
|
||||
{ month: 7, day: 26, name: 'Janmashtami', type: 'indian' },
|
||||
{ month: 8, day: 7, name: 'Ganesh Chaturthi', type: 'indian' },
|
||||
{ month: 9, day: 12, name: 'Dussehra', type: 'indian' },
|
||||
{ month: 10, day: 1, name: 'Diwali', type: 'indian' },
|
||||
],
|
||||
2025: [
|
||||
{ month: 2, day: 14, name: 'Holi', type: 'indian' },
|
||||
{ month: 2, day: 31, name: 'Eid ul-Fitr', type: 'indian' },
|
||||
{ month: 5, day: 7, name: 'Eid ul-Adha', type: 'indian' },
|
||||
{ month: 7, day: 9, name: 'Raksha Bandhan', type: 'indian' },
|
||||
{ month: 7, day: 16, name: 'Janmashtami', type: 'indian' },
|
||||
{ month: 7, day: 27, name: 'Ganesh Chaturthi', type: 'indian' },
|
||||
{ month: 9, day: 2, name: 'Dussehra', type: 'indian' },
|
||||
{ month: 9, day: 20, name: 'Diwali', type: 'indian' },
|
||||
],
|
||||
2026: [
|
||||
{ month: 2, day: 4, name: 'Holi', type: 'indian' },
|
||||
{ month: 2, day: 20, name: 'Eid ul-Fitr', type: 'indian' },
|
||||
{ month: 4, day: 27, name: 'Eid ul-Adha', type: 'indian' },
|
||||
{ month: 7, day: 28, name: 'Raksha Bandhan', type: 'indian' },
|
||||
{ month: 8, day: 4, name: 'Janmashtami', type: 'indian' },
|
||||
{ month: 8, day: 17, name: 'Ganesh Chaturthi', type: 'indian' },
|
||||
{ month: 8, day: 20, name: 'Dussehra', type: 'indian' },
|
||||
{ month: 10, day: 8, name: 'Diwali', type: 'indian' },
|
||||
],
|
||||
2027: [
|
||||
{ month: 2, day: 22, name: 'Holi', type: 'indian' },
|
||||
{ month: 2, day: 10, name: 'Eid ul-Fitr', type: 'indian' },
|
||||
{ month: 4, day: 17, name: 'Eid ul-Adha', type: 'indian' },
|
||||
{ month: 7, day: 17, name: 'Raksha Bandhan', type: 'indian' },
|
||||
{ month: 7, day: 25, name: 'Janmashtami', type: 'indian' },
|
||||
{ month: 8, day: 6, name: 'Ganesh Chaturthi', type: 'indian' },
|
||||
{ month: 9, day: 9, name: 'Dussehra', type: 'indian' },
|
||||
{ month: 9, day: 28, name: 'Diwali', type: 'indian' },
|
||||
],
|
||||
};
|
||||
|
||||
/**
|
||||
* Get all holidays for a specific month and year
|
||||
* @param {number} year - Full year (e.g., 2024)
|
||||
* @param {number} month - Month (0-11)
|
||||
* @returns {Map<number, { name: string, type: string }>} - Map of day -> holiday info
|
||||
*/
|
||||
export function getHolidaysForMonth(year, month) {
|
||||
const holidayMap = new Map();
|
||||
|
||||
// Add fixed holidays for this month
|
||||
for (const holiday of fixedHolidays) {
|
||||
if (holiday.month === month) {
|
||||
holidayMap.set(holiday.day, { name: holiday.name, type: holiday.type });
|
||||
}
|
||||
}
|
||||
|
||||
// Add variable holidays for this year and month
|
||||
const yearHolidays = variableHolidays[year];
|
||||
if (yearHolidays) {
|
||||
for (const holiday of yearHolidays) {
|
||||
if (holiday.month === month) {
|
||||
holidayMap.set(holiday.day, { name: holiday.name, type: holiday.type });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return holidayMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a specific date is a holiday
|
||||
* @param {number} year - Full year
|
||||
* @param {number} month - Month (0-11)
|
||||
* @param {number} day - Day of month (1-31)
|
||||
* @returns {{ name: string, type: string } | null}
|
||||
*/
|
||||
export function getHolidayInfo(year, month, day) {
|
||||
const monthHolidays = getHolidaysForMonth(year, month);
|
||||
return monthHolidays.get(day) || null;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue