You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.1 KiB

// I know; bite me.
Date.prototype.toDisplay = function() {
let month = `${this.getMonth() + 1}`
if ( month.length < 2 ) month = `0${month}`
let date = `${this.getDate()}`
if ( date.length < 2 ) date = `0${date}`
return `${this.getFullYear()}-${month}-${date}`
}
Date.prototype.toInputString = function() {
let month = `${this.getMonth() + 1}`
if ( month.length < 2 ) month = `0${month}`
let date = `${this.getDate()}`
if ( date.length < 2 ) date = `0${date}`
let hours = `${this.getHours()}`
if ( hours.length < 2 ) hours = `0${date}`
let minutes = `${this.getMinutes()}`
if ( minutes.length < 2 ) minutes = `0${date}`
return `${this.getFullYear()}-${month}-${date}T${hours}:${minutes}`
}
export function uuid() {
return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
)
}
export function debounce(handler = () => {}, delay = 500) {
let timeout = null
return (...args) => {
clearTimeout(timeout)
timeout = setTimeout(() => {
handler(...args)
}, delay)
}
}