0.13.1 DVD Series rc1
This commit is contained in:
1 parent
1f8e6d3ce8
commit
bc193db50a
14 files changed
+387
-30
No files matched your search
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user