mixin feed(feed, hideUser) if feed.length > 0 #feed for update of feed .feed-update div a(href=`/users/${update.user}`) if !hideUser | #{update.user} strong= update.mood div= update.desc || "[no mood description provided]" .feed-update-footer .feed-update-actions if update.user === session.user || session.status & 0b0001 form(action="/mood/delete", method="post") input(type="number", name="upd", value=update.id, style="display:none;", readonly) button.button-link(title="Delete this update") x .feed-update-date(title=update.date.toLocaleString())= update.relativeDate else span [no mood updates] mixin invite_code_expiration(code) - const timestamp = code.expires.getTime() if timestamp === 0 td.subtle never else if Date.now() >= timestamp td.error EXPIRED else td= code.expiresString mixin journal_entry_suffix(entry) span.subtle(title=entry.date.toLocaleString()) | (#{entry.relativeDate} if entry.visibility !== 1 | , if entry.visibility === 0 | private if entry.visibility === 2 | mood-only | ) mixin ovm(entry) - const e = entry?.mood #ovm input.ovm-input(type="radio", name="moodDelta", id="moodDelta-mb", value="2", required checked=(e === 2)) label.ovm-input(for="moodDelta-mb", title="Much better") img(src="/img/upup.svg", alt="Much better") input.ovm-input(type="radio", name="moodDelta", id="moodDelta-b", value="1", required checked=(e === 1)) label.ovm-input(for="moodDelta-b", title="Better") img(src="/img/up.svg", alt="Better") input.ovm-input(type="radio", name="moodDelta", id="moodDelta-nc", value="0", required checked=(!entry || e === 0)) label.ovm-input(for="moodDelta-nc", title="About the same") img(src="/img/line.svg", alt="About the same") input.ovm-input(type="radio", name="moodDelta", id="moodDelta-w", value="-1", required checked=(e === -1)) label.ovm-input(for="moodDelta-w", title="Worse") img(src="/img/down.svg", alt="Worse") input.ovm-input(type="radio", name="moodDelta", id="moodDelta-mw", value="-2", required checked=(e === -2)) label.ovm-input(for="moodDelta-mw", title="Much worse") img(src="/img/downdown.svg", alt="Much worse")