0.13.1 DVD Series rc1

This commit is contained in:
michael committed 2026-04-11 21:26:28 +00:00
1 parent 1f8e6d3ce8
commit bc193db50a
14 files changed
+387 -30

No files matched your search

+48 -3
View File
@@ -739,6 +739,47 @@ function resolveSeriesDiscNumber(job) {
);
}
function isSeriesBatchEpisodeChildJob(job) {
const plan = job?.encodePlan && typeof job.encodePlan === 'object'
? job.encodePlan
: null;
if (!plan) {
return false;
}
if (Boolean(plan?.seriesBatchChild) || Boolean(plan?.seriesBatchVirtualEpisode)) {
return true;
}
const hasParent = normalizePositiveInteger(plan?.seriesBatchParentJobId) !== null;
const hasEpisodeMarker = normalizePositiveInteger(plan?.seriesBatchTitleId) !== null
|| normalizePositiveInteger(plan?.seriesBatchChildIndex) !== null
|| normalizePositiveInteger(plan?.seriesBatchChildCount) !== null;
return hasParent && hasEpisodeMarker;
}
function buildSeriesContainerDiskChildren(children = []) {
const rows = Array.isArray(children) ? children : [];
const diskCandidates = rows.filter((child) => !isSeriesBatchEpisodeChildJob(child));
const byDisc = new Map();
const withoutDisc = [];
for (const child of [...diskCandidates].sort((a, b) => Number(b?.id || 0) - Number(a?.id || 0))) {
const discNumber = resolveSeriesDiscNumber(child);
if (discNumber !== null) {
if (!byDisc.has(discNumber)) {
byDisc.set(discNumber, child);
}
continue;
}
withoutDisc.push(child);
}
const withDisc = Array.from(byDisc.entries())
.sort((left, right) => left[0] - right[0])
.map(([, child]) => child);
const withoutDiscSorted = withoutDisc.sort(compareSeriesChildJobsByDisc);
return [...withDisc, ...withoutDiscSorted];
}
function compareSeriesChildJobsByDisc(leftJob, rightJob) {
const leftDisc = resolveSeriesDiscNumber(leftJob);
const rightDisc = resolveSeriesDiscNumber(rightJob);
@@ -1128,10 +1169,14 @@ export default function JobDetailDialog({
const metadataDetails = resolveMetadataDetailsForDisplay(job, omdbInfo);
const seriesDiscNumber = isDvdSeries ? resolveSeriesDiscNumber(job) : null;
const seriesDiscLabel = seriesDiscNumber ? `Disk ${seriesDiscNumber}` : 'Disk unbekannt';
const childJobs = Array.isArray(job?.children)
? [...job.children].sort(compareSeriesChildJobsByDisc)
: [];
const isSeriesContainer = isDvdSeries && String(job?.job_kind || '').trim().toLowerCase() === 'dvd_series_container';
const childJobs = Array.isArray(job?.children)
? (
isSeriesContainer
? buildSeriesContainerDiskChildren(job.children)
: [...job.children].sort(compareSeriesChildJobsByDisc)
)
: [];
const seriesChildSummary = job?.seriesChildSummary || null;
const seriesBackupSummary = isSeriesContainer ? seriesChildSummary?.backup : null;
const seriesEncodeSummary = isSeriesContainer ? seriesChildSummary?.encode : null;