Restructure to make it easy to extend rendering logic

This commit is contained in:
Jorge Manrubia
2025-06-05 10:39:51 +02:00
parent 76119b17bd
commit bfa4dc626b
@@ -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() {