{"version":3,"names":["LocalTime","constructor","timeString","console","assert","length","parts","split","this","hour","parseInt","minute","second","toString","toLocalSeconds","toLocalMinutes","isBefore","other","isBeforeOrEqual","isAfter","isAfterOrEqual","isEqual","diffString","diff","diffMinutes","minutesToString","Math","abs","diffSeconds","combineWithDate","datePart","dt","Date","getTime","setHours","minutes","whenEmpty","str","hoursSuffix","EliteConfig","language","Language","NORWEGIAN","minutesSuffix","floor","from","obj","TimeRange","startTime","endTime","seconds","clone","newRange","timeRange","separator","DateRange","startDate","endDate","inRange","date","epoc","onlyPastMonths","numMonths","now","dateStart","getFullYear","getMonth","dateEnd","onlyFutureMonths","pastAndFutureMonths","numMonthsPast","numMonthsFuture","addMonths","getDate","WeekCoverage","Month","Day","monthFrom0","month","JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER","dayNameFromNumber","day","maxLength","dayName","dayFrom0","name","fullDayName","substring","SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","monthName","fullMonthName","monthToZeroIndex"],"sources":["src/utils/timeUtils.ts"],"sourcesContent":["import {EliteConfig, Language} from \"./utils\";\n\nexport class LocalTime {\n readonly timeString: string\n readonly hour: number\n readonly minute: number\n readonly second: number\n\n // Format: hh:mm\n constructor(timeString: string) {\n console.assert(timeString.length >= 5)\n console.assert(timeString.length <= 8)\n\n let parts = timeString.split(\":\")\n\n this.hour = parseInt(parts[0], 10)\n this.minute = parts.length > 1 ? parseInt(parts[1], 10) : 0\n this.second = parts.length > 2 ? parseInt(parts[1], 10) : 0\n this.timeString = timeString;\n\n console.assert(this.second >= 0 && this.second < 60)\n console.assert(this.minute >= 0 && this.minute < 60)\n console.assert(this.hour >= 0 && this.hour < 24)\n }\n\n toString() {\n return this.timeString\n }\n\n toLocalSeconds(): number {\n return this.second + this.minute * 60 + this.hour * 3600\n }\n\n toLocalMinutes(): number {\n return this.minute + this.hour * 60\n }\n\n isBefore(other: LocalTime) {\n return this.toLocalSeconds() < other.toLocalSeconds()\n }\n\n isBeforeOrEqual(other: LocalTime) {\n return this.toLocalSeconds() <= other.toLocalSeconds()\n }\n\n isAfter(other: LocalTime) {\n return this.toLocalSeconds() > other.toLocalSeconds()\n }\n\n isAfterOrEqual(other: LocalTime) {\n return this.toLocalSeconds() >= other.toLocalSeconds()\n }\n\n isEqual(other: LocalTime) {\n return this.toLocalSeconds() == other.toLocalSeconds()\n }\n\n\n diffString(other: LocalTime): string {\n let diff = this.diffMinutes(other)\n\n return LocalTime.minutesToString(diff);\n }\n\n diffMinutes(other: LocalTime) {\n return Math.abs(this.toLocalMinutes() - other.toLocalMinutes());\n }\n\n diffSeconds(other: LocalTime) {\n return Math.abs(this.toLocalSeconds() - other.toLocalSeconds());\n }\n\n combineWithDate(datePart: Date): Date {\n var dt = new Date(datePart.getTime());\n\n dt.setHours(this.hour, this.minute, this.second, 0)\n\n return dt;\n }\n\n static minutesToString(minutes: number, whenEmpty: string = \"-\") {\n let str = \"\"\n let hoursSuffix = EliteConfig.language == Language.NORWEGIAN ? \"t\" : \"h\"\n let minutesSuffix = \"m\"\n\n if (minutes >= 60) {\n str += Math.floor((minutes / 60)) + hoursSuffix + \" \"\n minutes %= 60\n }\n\n if (minutes > 0)\n str += minutes + minutesSuffix\n\n if (str.length == 0)\n str = whenEmpty\n\n return str\n }\n\n static from(obj: any): LocalTime {\n return obj == null ? null : new LocalTime(obj.timeString)\n }\n}\n\nexport class TimeRange {\n startTime: LocalTime\n endTime: LocalTime\n\n minutes() {\n return (this.startTime && this.endTime) ? this.startTime.diffMinutes(this.endTime) : 0\n }\n\n seconds() {\n return (this.startTime && this.endTime) ? this.startTime.diffSeconds(this.endTime) : 0\n }\n\n diffString(): string {\n return LocalTime.minutesToString(this.minutes());\n }\n\n clone(): TimeRange {\n let newRange = new TimeRange()\n\n newRange.startTime = this.startTime\n newRange.endTime = this.endTime\n\n return newRange\n }\n\n static from(obj: any): TimeRange {\n if (obj == null)\n return null\n\n let timeRange = new TimeRange()\n\n timeRange.startTime = LocalTime.from(obj.startTime)\n timeRange.endTime = LocalTime.from(obj.endTime)\n\n return timeRange\n }\n\n toString(separator: string = \"-\"): string {\n return this.startTime + separator + this.endTime\n }\n}\n\nexport class DateRange {\n readonly startDate: Date\n readonly endDate: Date\n\n constructor(startDate: Date, endDate: Date) {\n this.startDate = startDate;\n this.endDate = endDate;\n }\n\n inRange(date: Date): boolean {\n let epoc = date.getTime()\n\n return epoc >= this.startDate.getTime() && epoc < this.endDate.getTime()\n }\n\n static onlyPastMonths(numMonths: number): DateRange {\n let now = new Date()\n let dateStart = new Date(now.getFullYear(), now.getMonth() - numMonths)\n let dateEnd = new Date(now.getFullYear(), now.getMonth() + 1)\n\n return new DateRange(dateStart, dateEnd)\n }\n\n static onlyFutureMonths(numMonths: number): DateRange {\n let now = new Date()\n let dateStart = new Date(now.getFullYear(), now.getMonth())\n let dateEnd = new Date(now.getFullYear(), now.getMonth() + numMonths)\n\n return new DateRange(dateStart, dateEnd)\n }\n\n static pastAndFutureMonths(numMonthsPast: number, numMonthsFuture: number): DateRange {\n let now = new Date()\n let dateStart = new Date(now.getFullYear(), now.getMonth() - numMonthsPast)\n let dateEnd = new Date(now.getFullYear(), now.getMonth() + numMonthsFuture + 1)\n\n return new DateRange(dateStart, dateEnd)\n }\n\n static addMonths(date: Date, numMonths: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + numMonths, date.getDate())\n }\n}\n\nexport enum WeekCoverage {\n WEEKDAYS,\n WEEKDAYS_AND_SATURDAY,\n ALL_DAYS\n}\n\nexport enum Month {\n JANUARY = 0,\n FEBRUARY = 1,\n MARCH = 2,\n APRIL = 3,\n MAY = 4,\n JUNE = 5,\n JULY = 6,\n AUGUST = 7,\n SEPTEMBER = 8,\n OCTOBER = 9,\n NOVEMBER = 10,\n DECEMBER = 11\n}\n\nexport enum Day {\n SUNDAY = 0, MONDAY = 1, TUESDAY = 2, WEDNESDAY = 3, THURSDAY = 4, FRIDAY = 5, SATURDAY = 6\n}\n\nexport function monthFrom1(month: number): Month {\n console.assert(month >= 1 && month <= 12)\n\n return monthFrom0(month - 1)\n}\n\nexport function monthFrom0(month: number): Month {\n console.assert(month >= 0 && month <= 11)\n\n switch (month) {\n case 0:\n return Month.JANUARY;\n case 1:\n return Month.FEBRUARY;\n case 2:\n return Month.MARCH;\n case 3:\n return Month.APRIL;\n case 4:\n return Month.MAY;\n case 5:\n return Month.JUNE;\n case 6:\n return Month.JULY;\n case 7:\n return Month.AUGUST;\n case 8:\n return Month.SEPTEMBER;\n case 9:\n return Month.OCTOBER;\n case 10:\n return Month.NOVEMBER;\n case 11:\n return Month.DECEMBER;\n default:\n return null\n }\n}\n\nexport function dayNameFromNumber(day: number, maxLength = 100) {\n return dayName(dayFrom0(day), maxLength)\n}\n\nexport function dayName(day: Day, maxLength = 100) {\n if(day === null)\n return null\n\n let name = fullDayName(day)\n\n if (name.length > maxLength)\n return name.substring(0, maxLength)\n\n return name\n}\n\nexport function fullDayName(day: Day) {\n if (EliteConfig.language == Language.NORWEGIAN) {\n switch (day) {\n case Day.SUNDAY:\n return \"Søndag\"\n case Day.MONDAY:\n return \"Mandag\"\n case Day.TUESDAY:\n return \"Tirsdag\"\n case Day.WEDNESDAY:\n return \"Onsdag\"\n case Day.THURSDAY:\n return \"Torsdag\"\n case Day.FRIDAY:\n return \"Fredag\"\n case Day.SATURDAY:\n return \"Lørdag\"\n }\n }\n\n switch (day) {\n case Day.SUNDAY:\n return \"Sunday\"\n case Day.MONDAY:\n return \"Monday\"\n case Day.TUESDAY:\n return \"Tuesday\"\n case Day.WEDNESDAY:\n return \"Wednesday\"\n case Day.THURSDAY:\n return \"Thursday\"\n case Day.FRIDAY:\n return \"Friday\"\n case Day.SATURDAY:\n return \"Saturday\"\n }\n}\n\nexport function monthNameFromNumber(month: number, maxLength = 100) {\n return monthName(monthFrom0(month), maxLength)\n}\n\nexport function monthName(month: Month, maxLength = 100) {\n let name = fullMonthName(month)\n\n if (name.length > maxLength)\n return name.substring(0, maxLength)\n\n return name\n}\n\nexport function fullMonthName(month: Month) {\n if (EliteConfig.language == Language.NORWEGIAN) {\n switch (month) {\n case Month.JANUARY:\n return \"Januar\"\n case Month.FEBRUARY:\n return \"Februar\"\n case Month.MARCH:\n return \"Mars\"\n case Month.APRIL:\n return \"April\"\n case Month.MAY:\n return \"Mai\"\n case Month.JUNE:\n return \"Juni\"\n case Month.JULY:\n return \"Juli\"\n case Month.AUGUST:\n return \"August\"\n case Month.SEPTEMBER:\n return \"September\"\n case Month.OCTOBER:\n return \"Oktober\"\n case Month.NOVEMBER:\n return \"November\"\n case Month.DECEMBER:\n return \"Desember\"\n }\n }\n\n switch (month) {\n case Month.JANUARY:\n return \"January\"\n case Month.FEBRUARY:\n return \"February\"\n case Month.MARCH:\n return \"March\"\n case Month.APRIL:\n return \"April\"\n case Month.MAY:\n return \"May\"\n case Month.JUNE:\n return \"June\"\n case Month.JULY:\n return \"July\"\n case Month.AUGUST:\n return \"August\"\n case Month.SEPTEMBER:\n return \"September\"\n case Month.OCTOBER:\n return \"October\"\n case Month.NOVEMBER:\n return \"November\"\n case Month.DECEMBER:\n return \"December\"\n }\n}\n\nexport function dayFrom0(day: number): Day {\n if (day === null)\n return null\n console.assert(day >= 0 && day <= 6)\n\n switch (day) {\n case 0:\n return Day.SUNDAY;\n case 1:\n return Day.MONDAY;\n case 2:\n return Day.TUESDAY;\n case 3:\n return Day.WEDNESDAY;\n case 4:\n return Day.THURSDAY;\n case 5:\n return Day.FRIDAY;\n case 6:\n return Day.SATURDAY;\n default:\n return null\n }\n}\n\nexport function monthToOneIndex(month: Month): number {\n return monthToZeroIndex(month) + 1\n}\n\nexport function monthToZeroIndex(month: Month): number {\n switch (month) {\n case Month.JANUARY:\n return 0;\n case Month.FEBRUARY:\n return 1;\n case Month.MARCH:\n return 2;\n case Month.APRIL:\n return 3;\n case Month.MAY:\n return 4;\n case Month.JUNE:\n return 5;\n case Month.JULY:\n return 6;\n case Month.AUGUST:\n return 7;\n case Month.SEPTEMBER:\n return 8;\n case Month.OCTOBER:\n return 9;\n case Month.NOVEMBER:\n return 10;\n case Month.DECEMBER:\n return 11;\n default:\n return null\n }\n}\n"],"mappings":"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","ignoreList":[]}