88 lines
2.3 KiB
JavaScript
88 lines
2.3 KiB
JavaScript
const SEC_MS = 1000
|
|
const MIN_MS = SEC_MS * 60
|
|
const HOUR_MS = MIN_MS * 60
|
|
const DAY_MS = HOUR_MS * 24
|
|
|
|
const DAYS_SHORT = [
|
|
"Mon",
|
|
"Tue",
|
|
"Wed",
|
|
"Thu",
|
|
"Fri",
|
|
"Sat",
|
|
"Sun"
|
|
]
|
|
|
|
const MONTHS = [
|
|
"January",
|
|
"February",
|
|
"March",
|
|
"April",
|
|
"May",
|
|
"June",
|
|
"July",
|
|
"August",
|
|
"September",
|
|
"October",
|
|
"November",
|
|
"December"
|
|
]
|
|
|
|
//////////////////////////////////////////////////////////
|
|
// //
|
|
// Taken from: https://weeknumber.com/how-to/javascript //
|
|
// //
|
|
//////////////////////////////////////////////////////////
|
|
Date.prototype.getWeek = function() {
|
|
let date = new Date(this.getTime())
|
|
date.setHours(0, 0, 0, 0)
|
|
|
|
// Thursday in current week decides the year.
|
|
date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7)
|
|
|
|
// January 4 is always in week 1.
|
|
let week1 = new Date(date.getFullYear(), 0, 4)
|
|
|
|
// Adjust to Thursday in week 1 and count number of weeks from date to week1.
|
|
return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7)
|
|
}
|
|
|
|
function formatDate(date) {
|
|
let year = date.getFullYear().toString().padStart(4, "0")
|
|
let month = (date.getMonth() + 1).toString().padStart(2, "0")
|
|
let day = date.getDate().toString().padStart(2, "0")
|
|
return `${year}-${month}-${day}`
|
|
}
|
|
|
|
function formatDuration(duration) {
|
|
let hours = Math.floor(duration / 60)
|
|
duration -= hours * 60
|
|
duration = Math.round(duration)
|
|
let res = ""
|
|
if (hours > 0) {
|
|
res += hours.toString() + "h"
|
|
res += duration.toString().padStart(2, "0")
|
|
} else {
|
|
res += duration.toString() + "min"
|
|
}
|
|
return res
|
|
}
|
|
|
|
function formatPercentage(ratio) {
|
|
let percentage = Math.round(ratio * 100)
|
|
return percentage + "%"
|
|
}
|
|
|
|
function req(url, options = {}) {
|
|
let headers = options.headers || {}
|
|
let csrftoken = document.querySelector("input[name='csrfmiddlewaretoken']").value
|
|
headers["X-CSRFToken"] = csrftoken
|
|
options.headers = headers
|
|
return fetch(url, options)
|
|
}
|
|
|
|
function getTemplate(cls) {
|
|
let elmt = document.querySelector(".template." + cls).cloneNode(true)
|
|
elmt.classList.remove("template")
|
|
return elmt
|
|
} |