Restructure to make it easy to extend rendering logic
This commit is contained in:
@@ -4,7 +4,7 @@ import { signedDifferenceInDays } from "helpers/date_helpers"
|
||||
const REFRESH_INTERVAL = 3_600_000 // 1 hour (in milliseconds)
|
||||
|
||||
export default class extends Controller {
|
||||
static targets = [ "entropy", "entropyTop", "entropyDays", "entropyBottom" ]
|
||||
static targets = [ "entropy", "entropyTop", "entropyDays", "entropyBottom", "stalled" ]
|
||||
static values = { entropy: Object }
|
||||
|
||||
#timer
|
||||
@@ -19,22 +19,34 @@ export default class extends Controller {
|
||||
}
|
||||
|
||||
update() {
|
||||
const closesInDays = signedDifferenceInDays(new Date(), new Date(this.entropyValue.closesAt))
|
||||
|
||||
if (closesInDays > this.entropyValue.daysBeforeReminder) {
|
||||
if (this.#hasEntropy) {
|
||||
this.#showEntropy()
|
||||
} else {
|
||||
this.#hide()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
this.entropyTopTarget.innerHTML = closesInDays < 1 ? this.entropyValue.action : `${this.entropyValue.action} in`
|
||||
this.entropyDaysTarget.innerHTML = closesInDays < 1 ? "!" : closesInDays
|
||||
this.entropyBottomTarget.innerHTML = closesInDays < 1 ? "Today" : (closesInDays === 1 ? "day" : "days")
|
||||
get #hasEntropy() {
|
||||
return this.#closesInDays < this.entropyValue.daysBeforeReminder
|
||||
}
|
||||
|
||||
get #closesInDays() {
|
||||
this.closesInDays ??= signedDifferenceInDays(new Date(), new Date(this.entropyValue.closesAt))
|
||||
return this.closesInDays
|
||||
}
|
||||
|
||||
#showEntropy() {
|
||||
this.entropyTopTarget.innerHTML = this.#closesInDays < 1 ? this.entropyValue.action : `${this.entropyValue.action} in`
|
||||
this.entropyDaysTarget.innerHTML = this.#closesInDays < 1 ? "!" : this.#closesInDays
|
||||
this.entropyBottomTarget.innerHTML = this.#closesInDays < 1 ? "Today" : (this.#closesInDays === 1 ? "day" : "days")
|
||||
|
||||
this.entropyTarget.removeAttribute("hidden")
|
||||
this.stalledTarget.toggleAttribute("hidden", true)
|
||||
this.#show()
|
||||
}
|
||||
|
||||
#hide() {
|
||||
this.element.setAttribute("hidden", "")
|
||||
this.element.toggleAttribute("hidden", true)
|
||||
}
|
||||
|
||||
#show() {
|
||||
|
||||
Reference in New Issue
Block a user