Skip to content

Changes

Started by Ian
Started 15 days ago
Took 2 min 31 sec
livetest: restore LiveTestModule + LiveTest (deleted in cb777b278)

Brings back the live-voting controller (loadLiveTest/loadTestStatus/updateActiveNode/
validateVote/recordResponse/triggerPageReload/muteVideoRooms) and the LiveTest plan
wrapper, so the plugin.xml bean and the livetest/livepage .xconf actions resolve again.

LiveTest now extends BaseData: SearchHitData no longer has a no-arg constructor (it
requires a Searcher), and LiveTest is just a TestPlan holder.
ian at
ship a default admin user + administrators group

WEB-INF/data is gitignored, so the workspace admin.xml/groups never reached a fresh
checkout and new instances booted with no login. Force-track the two defaults; createWar
already packages WEB-INF/data/system/** into the WAR.
ian at
livetest: guard availability/tally/recording and parse votes safely

- getTotalAvailableVotes/getTotalsForResponse: exact id matches, null-check the question/
  profile/aggregation, parse proxy counts tolerantly ($, commas, '-', blank).
- recordResponse: guard a missing live test/question, use exact deletes, compute available
  votes once, skip invalid or over-count split values, fix the responsetext NPE.
- validateVote: null guards and tolerant parsing.
ian at
importbmusers: persist the per-voteclass uservoteclass rows

The BMVA-style import computed each user's voteclass proxycount but only saved the
'general' row, so classed allocations were always 0. Add the voteclass row to the save
batch, guard failed user creation, and parse VOTES tolerantly.
ian at
runtime: drop the sensortech datadisk /data mount

ThoughtFrame has no bulk /data volume (that was SensorTech Edge Vault). Remove the mount
from compose and DATADISK_HOST from site.sh.example/install scripts.
ian at
benchconnection: compare planid as strings for slidechange
ian at
livepage: clean placeholder from AGM sidebar layout
ian at
livepage: restore Show Live Status offcanvas trigger
ian at
auth: keep PasswordHelper unchanged; use the page emaillayout
ian at
AGM Status: full-page meeting dashboard (vote counts, participants, responses, login links)

New class/agmstatus page renders the important live-meeting info as tabs
on one screen: vote counts, participant/quorum status, per-participant
response details and login links. Linked from the class menu and from the
meeting room sidebar (Full Page).
ian at
AGM Status link: show for instructors too, outside the class-admin block
ian at
AGM status: rebuild as a self-contained admin dashboard

Drop the $pages.include() assembly of the meeting fragments and render the
whole tool here: KPI strip (quorum, roster, proxies, on-screen node), vote
counts with shares, participant status, per-participant responses and login
links. Sections refresh in place over ?oemaxlevel=1&only=SECTION. Full-width
inner layout (no pod sidebar/menu); view restricted to admins/instructors.
ian at
AGM status: drop the on-screen node tile and vote badge

The liveteststatus currentnode does not track what is actually on the
meeting screen, so showing it was misleading.
ian at
jtmx: data-refresh auto-refresh; use it to wrap the AGM status page

Any element with data-refresh="10s" now reloads its own contents on that
interval (ms/s/m/h), fetching data-url (default: the current page) and
swapping in the matching element from the response; fires jtmx:refreshed and
can be run on demand with jQuery(el).trigger("jtmx:refresh"). The AGM status
tool is wrapped in such a div at 10s instead of its own per-section timers.
ian at
Sanitize default admin; fix AGM status KPI counts

- admin.xml: remove Google OAuth clientid/refreshtoken and Stripe id;
  move the personal email to support@thoughtframe.ai
- TestBench: scope online/offline counts to the class roster (excluding
  instructors and archived members) and clamp offline at zero
- TestBench: add getOnlineProxyCounts(classId), reading uservoteclass per
  vote class for online members with a legacy studentclasses.proxycount
  fallback
- LiveTestManager: make parseCount public so the KPI code reuses it
- agmstatus: show a total plus per-voteclass online proxy tiles
ian at