Video get-modal: fix owned-season dead-end under 'Missing only'
Fully-owned seasons used to render with a disabled checkbox and expand to nothing (every episode hidden by the filter) — looked broken. Now: - Fully-owned seasons are HIDDEN while 'Missing only' is on (the filter doing its job); turn it off to see + re-download them (owned episodes are selectable). Season meta reads 'owned · N eps' when shown. - If you own EVERY episode, a hint appears: 'You have every episode. Turn off Missing only to re-download.' (instead of a blank list). Partial seasons (with gaps) show + expand as before.
This commit is contained in:
parent
419b939999
commit
9a5d187c0d
2 changed files with 15 additions and 2 deletions
|
|
@ -236,6 +236,7 @@
|
||||||
if (!d.seasons || !d.seasons.length) { wrap.hidden = true; return; }
|
if (!d.seasons || !d.seasons.length) { wrap.hidden = true; return; }
|
||||||
var today = isoToday();
|
var today = isoToday();
|
||||||
modalState = { kind: 'show', sel: new Set() };
|
modalState = { kind: 'show', sel: new Set() };
|
||||||
|
var totalMissing = 0;
|
||||||
var html = '<div class="vgm-eps-head"><span class="vgm-eps-h">Episodes</span>' +
|
var html = '<div class="vgm-eps-head"><span class="vgm-eps-h">Episodes</span>' +
|
||||||
'<label class="vgm-eps-toggle"><input type="checkbox" data-vgm-missing-only checked>' +
|
'<label class="vgm-eps-toggle"><input type="checkbox" data-vgm-missing-only checked>' +
|
||||||
'<span>Missing only</span></label></div><div class="vgm-eps-list">';
|
'<span>Missing only</span></label></div><div class="vgm-eps-list">';
|
||||||
|
|
@ -243,17 +244,24 @@
|
||||||
var eps = s.episodes || [];
|
var eps = s.episodes || [];
|
||||||
var missing = 0;
|
var missing = 0;
|
||||||
eps.forEach(function (e) { if (epState(e, today) === 'missing') { missing++; modalState.sel.add(s.season_number + '_' + e.episode_number); } });
|
eps.forEach(function (e) { if (epState(e, today) === 'missing') { missing++; modalState.sel.add(s.season_number + '_' + e.episode_number); } });
|
||||||
html += '<div class="vgm-season">' +
|
totalMissing += missing;
|
||||||
|
// Fully-owned seasons are hidden while "Missing only" is on (turn it off
|
||||||
|
// to re-download); otherwise an owned season expanded to nothing.
|
||||||
|
html += '<div class="vgm-season' + (missing ? '' : ' vgm-season--owned') + '">' +
|
||||||
'<div class="vgm-season-head" data-vgm-season-toggle>' +
|
'<div class="vgm-season-head" data-vgm-season-toggle>' +
|
||||||
'<span class="vgm-season-check"><input type="checkbox" data-vgm-season-all="' + s.season_number + '"' + (missing && missing === eps.length ? ' checked' : '') + '></span>' +
|
'<span class="vgm-season-check"><input type="checkbox" data-vgm-season-all="' + s.season_number + '"' + (missing && missing === eps.length ? ' checked' : '') + '></span>' +
|
||||||
'<span class="vgm-season-name">' + esc(s.title || ('Season ' + s.season_number)) + '</span>' +
|
'<span class="vgm-season-name">' + esc(s.title || ('Season ' + s.season_number)) + '</span>' +
|
||||||
'<span class="vgm-season-meta">' + (missing ? missing + ' missing · ' : '') + eps.length + ' eps</span>' +
|
'<span class="vgm-season-meta">' + (missing ? missing + ' missing · ' : 'owned · ') + eps.length + ' eps</span>' +
|
||||||
'<span class="vgm-season-chev" aria-hidden="true">⌄</span>' +
|
'<span class="vgm-season-chev" aria-hidden="true">⌄</span>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'<div class="vgm-season-eps">' + eps.map(function (e) { return epRow(s.season_number, e, today); }).join('') + '</div>' +
|
'<div class="vgm-season-eps">' + eps.map(function (e) { return epRow(s.season_number, e, today); }).join('') + '</div>' +
|
||||||
'</div>';
|
'</div>';
|
||||||
});
|
});
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
// When you own everything, the missing-only view would be blank — say so.
|
||||||
|
if (totalMissing === 0) {
|
||||||
|
html += '<div class="vgm-eps-allowned">✓ You have every episode. Turn off “Missing only” to re-download.</div>';
|
||||||
|
}
|
||||||
wrap.innerHTML = html;
|
wrap.innerHTML = html;
|
||||||
wrap.classList.add('vgm-eps--missing-only');
|
wrap.classList.add('vgm-eps--missing-only');
|
||||||
wrap.hidden = false;
|
wrap.hidden = false;
|
||||||
|
|
|
||||||
|
|
@ -2034,3 +2034,8 @@ body[data-side="video"] #soulsync-toggle { display: none; }
|
||||||
.vgm-follow-row input { accent-color: rgb(var(--accent-rgb, 88 101 242)); width: 17px; height: 17px; cursor: pointer; flex-shrink: 0; }
|
.vgm-follow-row input { accent-color: rgb(var(--accent-rgb, 88 101 242)); width: 17px; height: 17px; cursor: pointer; flex-shrink: 0; }
|
||||||
.vgm-follow-txt { font-size: 13px; color: rgba(255, 255, 255, 0.82); }
|
.vgm-follow-txt { font-size: 13px; color: rgba(255, 255, 255, 0.82); }
|
||||||
.vgm-follow-txt strong { color: #fff; font-weight: 800; }
|
.vgm-follow-txt strong { color: #fff; font-weight: 800; }
|
||||||
|
|
||||||
|
/* Fully-owned seasons hide while "Missing only" is on (turn it off to re-download). */
|
||||||
|
.vgm-eps--missing-only .vgm-season--owned { display: none; }
|
||||||
|
.vgm-eps-allowned { display: none; padding: 22px 14px; text-align: center; font-size: 13.5px; font-weight: 600; color: rgba(108, 211, 145, 0.85); }
|
||||||
|
.vgm-eps--missing-only .vgm-eps-allowned { display: block; }
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue