This commit is contained in:
@ -36,8 +36,7 @@ export async function sessionsPage() {
|
||||
function renderSessions(sessions, questionnaires, settings) {
|
||||
const el = document.getElementById('sessionsContent');
|
||||
const sorted = [...sessions].sort((a, b) =>
|
||||
(a.orderIndex ?? 0) - (b.orderIndex ?? 0)
|
||||
|| (a.sessionNumber ?? 0) - (b.sessionNumber ?? 0)
|
||||
effectiveSessionNumber(a) - effectiveSessionNumber(b)
|
||||
|| String(a.name).localeCompare(String(b.name)),
|
||||
);
|
||||
const autoRepeat = !!settings.autoRepeatSessions;
|
||||
@ -145,7 +144,7 @@ function sessionCardHTML(session, questionnaires) {
|
||||
<strong>${esc(session.name)}</strong>
|
||||
${activeBadge}
|
||||
</div>
|
||||
<p class="scoring-profile-bands">Session ${session.sessionNumber} · Order ${session.orderIndex}</p>
|
||||
<p class="scoring-profile-bands">Session ${effectiveSessionNumber(session)}</p>
|
||||
${session.description
|
||||
? `<p class="scoring-profile-desc">${esc(session.description)}</p>`
|
||||
: ''}
|
||||
@ -174,9 +173,7 @@ function openSessionModal(session, questionnaires, allSessions) {
|
||||
}))
|
||||
: [];
|
||||
const selectedIds = new Set(members.map(m => m.questionnaireID));
|
||||
const defaultOrder = allSessions?.length
|
||||
? Math.max(...allSessions.map(s => s.orderIndex ?? 0)) + 1
|
||||
: 0;
|
||||
const defaultSessionNumber = (allSessions?.length ?? 0) + 1;
|
||||
|
||||
const overlay = document.createElement('div');
|
||||
overlay.className = 'modal-overlay';
|
||||
@ -191,20 +188,14 @@ function openSessionModal(session, questionnaires, allSessions) {
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="sessNumber">Session number</label>
|
||||
<input type="number" id="sessNumber" min="1" value="${session?.sessionNumber ?? 1}">
|
||||
<input type="number" id="sessNumber" min="1" value="${session ? effectiveSessionNumber(session) : defaultSessionNumber}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row" style="display:grid;grid-template-columns:1fr 1fr;gap:12px">
|
||||
<div class="form-group">
|
||||
<label for="sessOrder">Display order</label>
|
||||
<input type="number" id="sessOrder" min="0" value="${session?.orderIndex ?? defaultOrder}">
|
||||
</div>
|
||||
<div class="form-group scoring-profile-active-row" style="align-self:end;padding-bottom:8px">
|
||||
<label class="checkbox-inline">
|
||||
<input type="checkbox" id="sessActive" ${session?.isActive !== 0 ? 'checked' : ''}>
|
||||
Active (visible in app)
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group scoring-profile-active-row">
|
||||
<label class="checkbox-inline">
|
||||
<input type="checkbox" id="sessActive" ${session?.isActive !== 0 ? 'checked' : ''}>
|
||||
Active (visible in app)
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="sessDesc">Description</label>
|
||||
@ -314,7 +305,6 @@ function openSessionModal(session, questionnaires, allSessions) {
|
||||
const name = overlay.querySelector('#sessName')?.value.trim();
|
||||
const description = overlay.querySelector('#sessDesc')?.value.trim() || '';
|
||||
const sessionNumber = parseInt(overlay.querySelector('#sessNumber')?.value || '1', 10);
|
||||
const orderIndex = parseInt(overlay.querySelector('#sessOrder')?.value || '0', 10);
|
||||
const isActive = overlay.querySelector('#sessActive')?.checked;
|
||||
if (!name) {
|
||||
showToast('Session name is required', 'error');
|
||||
@ -324,7 +314,6 @@ function openSessionModal(session, questionnaires, allSessions) {
|
||||
name,
|
||||
description,
|
||||
sessionNumber: Number.isFinite(sessionNumber) ? Math.max(1, sessionNumber) : 1,
|
||||
orderIndex: Number.isFinite(orderIndex) ? Math.max(0, orderIndex) : 0,
|
||||
isActive,
|
||||
questionnaires: members.map((m, idx) => ({
|
||||
questionnaireID: m.questionnaireID,
|
||||
@ -347,6 +336,11 @@ function openSessionModal(session, questionnaires, allSessions) {
|
||||
});
|
||||
}
|
||||
|
||||
function effectiveSessionNumber(session) {
|
||||
if (!session) return 1;
|
||||
return Math.max(session.sessionNumber ?? 1, (session.orderIndex ?? 0) + 1);
|
||||
}
|
||||
|
||||
function esc(s) {
|
||||
const d = document.createElement('div');
|
||||
d.textContent = s ?? '';
|
||||
|
||||
Reference in New Issue
Block a user