UNPKG

@jsnodor/week-pack

Version:

Utilities to generate arrays made of date objects grouped into 7 items to form a week

70 lines 2.65 kB
"use strict"; (function (global) { function resetDay(day) { var date = new Date(day); for (var m of ['Hours', 'Minutes', 'Seconds', 'Milliseconds']) date['set' + m](0); return date; } function prependWeeks(startDate, numWeeks = 10) { var data = []; var argDate = startDate == 'today' ? resetDay(new Date) : new Date(startDate); var day0 = new Date(argDate.getTime() - (1000 * 60 * 60 * 24)); for (var i = 0; i < numWeeks; i++) { var tmp = []; for (var j = 0; j < 7; j++) { var dt = new Date(day0.getTime() - ((j + i * 7) * (1000 * 60 * 60 * 24))); tmp.unshift(dt); } data.unshift(tmp); } return data; } function appendWeeks(startDate, numWeeks = 10) { var data = []; var argDate = startDate == 'today' ? resetDay(new Date) : new Date(startDate); var day0 = new Date(argDate.getTime() + (1000 * 60 * 60 * 24)); for (var i = 0; i < numWeeks; i++) { var tmp = []; for (var j = 0; j < 7; j++) { var dt = new Date(day0.getTime() + ((j + i * 7) * (1000 * 60 * 60 * 24))); tmp.push(dt); } data.push(tmp); } return data; } function generateInitialWeeks(startDate, numWeeks = 8) { var today = startDate == 'today' ? resetDay(new Date) : new Date(startDate); var firstDayOfThisWeek = computeFirstDayOfWeek(today); var after = appendWeeks(new Date(firstDayOfThisWeek.getTime() - (1000 * 60 * 60 * 24)), numWeeks); var before = prependWeeks(firstDayOfThisWeek, numWeeks); var pack = before.concat(after); return [firstDayOfThisWeek, today, pack]; function computeFirstDayOfWeek(d) { d = new Date(d); var day = d.getDay(), diff = d.getDate() - day + (day == 0 ? -6 : 1); return new Date(d.setDate(diff)); } } function isBrowser() { var process = process || null; var require = require || null; if (typeof process === "object" && typeof require === "function") { return false; } if (typeof importScripts === "function") { return false; } if (typeof window === "object") { return true; } } const WEEK_PACK = { prependWeeks, appendWeeks, generateInitialWeeks }; if (isBrowser()) Object.assign(global, { WEEK_PACK }); else Object.assign(global, WEEK_PACK); }(this)); //# sourceMappingURL=index.js.map