UNPKG

@mikezimm/fps-core-v7

Version:

Library of reusable core interfaces, types and constants migrated from fps-library-v2

122 lines (120 loc) 5.44 kB
/** * CodeAnalizerComment: Updated 3 imports on 2024-09-22 02:56:43 * Update:: import { ISO8601_week_no } to '@mikezimm/fps-core-v7/lib/logic/Time/weeks;' * Update:: import { getDayOfWeek } to '@mikezimm/fps-core-v7/lib/logic/Time/weeks;' * Update:: import { getTimeDelta } to '@mikezimm/fps-core-v7/lib/logic/Time/deltas;' */ /** * CodeAnalizerComment: Updated 8 imports on 2024-09-21 23:07:24 * Update:: import { holidays } to '@mikezimm/fps-core-v7/lib/logic/Time/constants;' * Update:: import { msPerDay } to '@mikezimm/fps-core-v7/lib/logic/Time/constants;' * Update:: import { msPerHr } to '@mikezimm/fps-core-v7/lib/logic/Time/constants;' * Update:: import { msPerMin } to '@mikezimm/fps-core-v7/lib/logic/Time/constants;' * Update:: import { msPerMo } to '@mikezimm/fps-core-v7/lib/logic/Time/constants;' * Update:: import { msPerQ } to '@mikezimm/fps-core-v7/lib/logic/Time/constants;' * Update:: import { msPerWk } to '@mikezimm/fps-core-v7/lib/logic/Time/constants;' * Update:: import { msPerYr } to '@mikezimm/fps-core-v7/lib/logic/Time/constants;' */ import { holidays, msPerDay, } from './constants'; import { weekday3 } from './dayLabels'; import { monthStr3 } from './monthLabels'; import { ISO8601_week_no, getDayOfWeek } from './weeks'; import { getTimeDelta } from './deltas'; //This is a more detailed version of the time object for charting purposes export function makeTheTimeObject(timeString, coreStart = 8, coreEnd = 18, useHolidays = holidays) { //console.log('makeTimeObject: ', timeString); let rightNow = new Date(); let todayYear = rightNow.getFullYear(); let todayMonth = rightNow.getMonth(); //Zero Index let todayWeek = ISO8601_week_no(rightNow); let todayDate = rightNow.getDate(); let todayDay = rightNow.getDay(); let todaysDate = new Date(todayYear, todayMonth, todayDate); let todayTime = rightNow.getTime(); let todayHour = rightNow.getHours(); let giveTime = new Date(); if (timeString != null && timeString.length > 0) { giveTime = new Date(timeString); } else { timeString = giveTime.toLocaleString(); } let givenYear = giveTime.getFullYear(); let givenMonth = giveTime.getMonth(); //Zero Index let givenWeek = ISO8601_week_no(giveTime); let givenDate = giveTime.getDate(); let givenDay = giveTime.getDay(); let priorNewYears = new Date(givenYear, 0, 1); let givenTime = giveTime.getTime(); let givenHour = giveTime.getHours(); let givenMinutes = giveTime.getMinutes(); let isThisYear = todayYear === givenYear ? true : false; let isThisMonth = isThisYear && todayMonth === givenMonth ? true : false; let isThisWeek = isThisYear && givenWeek === todayWeek ? true : false; let isToday = isThisMonth && todayDate === givenDate ? true : false; let givenDateMidnight = new Date(givenYear, givenMonth, givenDate); let firstOfMonth = new Date(givenYear, givenMonth, 1); let priorSunday = getDayOfWeek(timeString, 'sun'); let priorMonday = getDayOfWeek(timeString, 'mon'); let coreTime = 'Normal'; let hoursEarly = 0; let hoursLate = 0; let isHoliday = false; for (let d of useHolidays) { if (d[0] - 1 === givenMonth && d[1] == givenDate) { isHoliday = true; } } if (isHoliday) { coreTime = 'Holiday'; } else if (givenDay === 0 || givenDay === 6) { coreTime = 'Weekend'; } else if (givenHour < coreStart) { hoursEarly = coreStart - givenHour; hoursEarly += (1 - givenMinutes / 60); coreTime = 'Early'; } else if (givenHour >= coreEnd) { hoursLate = givenHour - coreEnd; hoursLate += givenMinutes / 60; coreTime = 'Late'; } let daysAgo = Math.round(Math.abs((rightNow.getTime() - giveTime.getTime()) / msPerDay)); let theTime = { now: giveTime, theTime: giveTime.toUTCString(), milliseconds: giveTime.getTime(), year: givenYear, month: givenMonth, week: givenWeek, date: givenDate, day: givenDay, hour: givenHour, minute: givenMinutes, isThisYear: isThisYear, isThisMonth: isThisMonth, isThisWeek: isThisWeek, isToday: isToday, isYesterday: daysAgo === 1 ? true : false, daysAgo: getTimeDelta(givenDateMidnight, todaysDate, 'days'), firstOfMonth: firstOfMonth, priorSunday: priorSunday, priorMonday: priorMonday, daysSinceSun: getTimeDelta(priorSunday, todaysDate, 'days'), daysSinceMon: getTimeDelta(priorMonday, todaysDate, 'days'), daysSinceNewYear: getTimeDelta(priorNewYears, todaysDate, 'days'), daysSinceMonthStart: getTimeDelta(firstOfMonth, todaysDate, 'days'), dayMMMDD: monthStr3['en-us'][givenMonth] + '-' + givenDate, dayDDDMMMDD: [weekday3['en-us'][givenDay], monthStr3['en-us'][givenMonth], givenDate].join(' '), dayYYYYMMDD: [givenYear, ("0" + (givenMonth + 1)).slice(-2), givenDate].join('-'), dayOfWeekDDD: weekday3['en-us'][givenDay], coreTime: coreTime, hoursEarly: hoursEarly, hoursLate: hoursLate, }; //console.log('theTime:', theTime); return theTime; } //# sourceMappingURL=timeObject.js.map