Ignore:
Timestamp:
07/01/2026 01:39:56 PM (2 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
f1956d7
Parents:
667fb41
Message:

feat(polls): show voter count + open/closed status on the interact page

The poll footer on the interact page now reads the voter count with a proper
"voters" label and an explicit open/closed status (open also shows the closing
time). A closed poll shows the results (bars) instead of a ballot.

  • src/views/pages/authorize-interaction.ejs — shared footer "N voters · open · closes …" (open) / "N voters · closed" (closed); closed renders result bars, not the ballot.
  • src/services/i18n.js — poll.open (nl/en/de).

Co-Authored-By: Claude <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/views/pages/authorize-interaction.ejs

    r667fb41 rc45c187  
    143143      </a>
    144144    <% } %>
    145     <% if (target.poll) { var _pl = target.poll; var _tot = _pl.options.reduce(function(s,o){return s+(o.count||0);},0); %>
     145    <% if (target.poll) { var _pl = target.poll; var _tot = _pl.options.reduce(function(s,o){return s+(o.count||0);},0); var _vn = (_pl.voters!=null?_pl.voters:_tot); %>
    146146      <% if (!_pl.closed) { %>
    147147        <form method="post" action="/authorize_interaction/vote" class="auth-poll">
     
    153153            <button type="submit" class="btn btn-primary"><%= t('poll.vote') %></button>
    154154          </div>
    155           <p class="auth-poll-foot"><% if (_pl.multiple) { %><%= t('poll.multiple') %> · <% } %><%= (_pl.voters!=null?_pl.voters:_tot) %> <%= t('poll.votes') %></p>
     155          <p class="auth-poll-foot"><%= _vn %> <%= _vn === 1 ? t('poll.voter_one') : t('poll.voter_many') %> · <%= t('poll.open') %><% if (_pl.endTime) { %> · <%= t('poll.closes') %> <%= new Date(_pl.endTime).toLocaleString() %><% } %><% if (_pl.multiple) { %> · <%= t('poll.multiple') %><% } %></p>
    156156        </form>
    157157      <% } else { %>
     
    160160            <div class="auth-poll-res"><span class="auth-poll-fill" style="width:<%= _pct %>%"></span><span class="auth-poll-name"><%= o.name %></span><span class="auth-poll-pct"><%= _pct %>%</span></div>
    161161          <% }); %>
    162           <p class="auth-poll-foot"><%= (_pl.voters!=null?_pl.voters:_tot) %> <%= t('poll.votes') %> · <%= t('poll.closed') %></p>
     162          <p class="auth-poll-foot"><%= _vn %> <%= _vn === 1 ? t('poll.voter_one') : t('poll.voter_many') %> · <%= t('poll.closed') %><% if (_pl.multiple) { %> · <%= t('poll.multiple') %><% } %></p>
    163163        </div>
    164164      <% } %>
Note: See TracChangeset for help on using the changeset viewer.