Improved airing dates
This commit is contained in:
@ -1,4 +1,12 @@
|
||||
const oneDay = 24 * 60 * 60 * 1000
|
||||
import { plural } from "./Utils"
|
||||
|
||||
const oneSecond = 1000
|
||||
const oneMinute = 60 * oneSecond
|
||||
const oneHour = 60 * oneMinute
|
||||
const oneDay = 24 * oneHour
|
||||
const oneWeek = 7 * oneDay
|
||||
const oneMonth = 30 * oneDay
|
||||
const oneYear = 365.25 * oneDay
|
||||
|
||||
export var monthNames = [
|
||||
"January", "February", "March",
|
||||
@ -17,6 +25,40 @@ export var dayNames = [
|
||||
"Saturday"
|
||||
]
|
||||
|
||||
function getRemainingTime(remaining: number): string {
|
||||
let remainingAbs = Math.abs(remaining)
|
||||
|
||||
if(remainingAbs >= oneYear) {
|
||||
return plural(Math.round(remaining / oneYear), "year")
|
||||
}
|
||||
|
||||
if(remainingAbs >= oneMonth) {
|
||||
return plural(Math.round(remaining / oneMonth), "month")
|
||||
}
|
||||
|
||||
if(remainingAbs >= oneWeek) {
|
||||
return plural(Math.round(remaining / oneWeek), "week")
|
||||
}
|
||||
|
||||
if(remainingAbs >= oneDay) {
|
||||
return plural(Math.round(remaining / oneDay), "day")
|
||||
}
|
||||
|
||||
if(remainingAbs >= oneHour) {
|
||||
return plural(Math.round(remaining / oneHour), " hour")
|
||||
}
|
||||
|
||||
if(remainingAbs >= oneMinute) {
|
||||
return plural(Math.round(remaining / oneMinute), " minute")
|
||||
}
|
||||
|
||||
if(remainingAbs >= oneSecond) {
|
||||
return plural(Math.round(remaining / oneSecond), " second")
|
||||
}
|
||||
|
||||
return "Just now"
|
||||
}
|
||||
|
||||
export function displayLocalDate(element: HTMLElement, now: Date) {
|
||||
let startDate = new Date(element.dataset.startDate)
|
||||
let endDate = new Date(element.dataset.endDate)
|
||||
@ -29,37 +71,70 @@ export function displayLocalDate(element: HTMLElement, now: Date) {
|
||||
m = endDate.getMinutes()
|
||||
let endTime = (h <= 9 ? "0" + h : h) + ":" + (m <= 9 ? "0" + m : m)
|
||||
|
||||
let dayDifference = Math.round((startDate.getTime() - now.getTime()) / oneDay)
|
||||
|
||||
if(isNaN(dayDifference)) {
|
||||
element.style.opacity = "0"
|
||||
return
|
||||
}
|
||||
|
||||
let dayInfo = dayNames[startDate.getDay()] + ", " + monthNames[startDate.getMonth()] + " " + startDate.getDate()
|
||||
|
||||
let airingVerb = "will be airing"
|
||||
|
||||
switch(dayDifference) {
|
||||
case 0:
|
||||
element.innerText = "Today"
|
||||
break
|
||||
case 1:
|
||||
element.innerText = "Tomorrow"
|
||||
break
|
||||
case -1:
|
||||
element.innerText = "Yesterday"
|
||||
break
|
||||
default:
|
||||
let text = Math.abs(dayDifference) + " days"
|
||||
|
||||
if(dayDifference < 0) {
|
||||
text += " ago"
|
||||
airingVerb = "aired"
|
||||
} else {
|
||||
element.innerText = text
|
||||
}
|
||||
// let dayInfo = dayNames[startDate.getDay()] + ", " + monthNames[startDate.getMonth()] + " " + startDate.getDate()
|
||||
|
||||
let remaining = startDate.getTime() - now.getTime()
|
||||
let remainingString = getRemainingTime(remaining)
|
||||
|
||||
// Add "ago" if the date is in the past
|
||||
if(remainingString.startsWith("-")) {
|
||||
remainingString = remainingString.substring(1) + " ago"
|
||||
}
|
||||
|
||||
element.title = "Episode " + element.dataset.episodeNumber + " " + airingVerb + " " + startTime + " - " + endTime + " your time"
|
||||
element.innerText = remainingString
|
||||
|
||||
// let remainingString = seconds + plural(seconds, 'second')
|
||||
|
||||
// let days = seconds / (60 * )
|
||||
// if(Math.abs(days) >= 1) {
|
||||
// remainingString = plural(days, 'day')
|
||||
// } else {
|
||||
// let hours = arn.inHours(now, timeStamp)
|
||||
// if(Math.abs(hours) >= 1) {
|
||||
// remainingString = plural(hours, 'hour')
|
||||
// } else {
|
||||
// let minutes = arn.inMinutes(now, timeStamp)
|
||||
// if(Math.abs(minutes) >= 1) {
|
||||
// remainingString = plural(minutes, 'minute')
|
||||
// } else {
|
||||
// let seconds = arn.inSeconds(now, timeStamp)
|
||||
// remainingString = plural(seconds, 'second')
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// if(isNaN(oneHour)) {
|
||||
// element.style.opacity = "0"
|
||||
// return
|
||||
// }
|
||||
|
||||
// switch(Math.floor(dayDifference)) {
|
||||
// case 0:
|
||||
// element.innerText = "Today"
|
||||
// break
|
||||
// case 1:
|
||||
// element.innerText = "Tomorrow"
|
||||
// break
|
||||
// case -1:
|
||||
// element.innerText = "Yesterday"
|
||||
// break
|
||||
// default:
|
||||
// let text = Math.abs(dayDifference) + " days"
|
||||
|
||||
// if(dayDifference < 0) {
|
||||
// text += " ago"
|
||||
// airingVerb = "aired"
|
||||
// } else {
|
||||
// element.innerText = text
|
||||
// }
|
||||
// }
|
||||
|
||||
if(remaining < 0) {
|
||||
airingVerb = "aired"
|
||||
}
|
||||
|
||||
element.title = "Episode " + element.dataset.episodeNumber + " " + airingVerb + " " + dayNames[startDate.getDay()] + " from " + startTime + " - " + endTime
|
||||
}
|
Reference in New Issue
Block a user