0.16.1-5 Ebcode Fix / presets
This commit is contained in:
@@ -129,6 +129,16 @@ function formatPercent(value) {
|
||||
return `${Math.trunc(parsed)}%`;
|
||||
}
|
||||
|
||||
function isPlaylistTrackPreparationStatus(value) {
|
||||
const normalized = String(value || '').trim().toUpperCase();
|
||||
if (!normalized) {
|
||||
return false;
|
||||
}
|
||||
return normalized.includes('PLAYLIST')
|
||||
&& normalized.includes('TRACKDATEN')
|
||||
&& normalized.includes('VORBEREIT');
|
||||
}
|
||||
|
||||
function formatTemperature(value) {
|
||||
const parsed = Number(value);
|
||||
if (!Number.isFinite(parsed)) {
|
||||
@@ -3132,9 +3142,10 @@ export default function RipperPage({
|
||||
let stateLabel = null;
|
||||
let stateSeverity = 'secondary';
|
||||
let discInfo = null;
|
||||
let showProgress = false;
|
||||
let progressValue = 0;
|
||||
let statusText = null;
|
||||
let showProgress = false;
|
||||
let progressValue = 0;
|
||||
let statusText = null;
|
||||
let showIndeterminateDriveProgress = false;
|
||||
|
||||
if (cdDrive) {
|
||||
const s = String(cdDrive.state || '').toUpperCase();
|
||||
@@ -3145,9 +3156,10 @@ export default function RipperPage({
|
||||
: 'info';
|
||||
const cd = cdDrive.device || {};
|
||||
discInfo = cd.discLabel || cd.model || null;
|
||||
showProgress = ['CD_RIPPING', 'CD_ENCODING', 'CD_ANALYZING'].includes(s);
|
||||
progressValue = Number(cdDrive.progress ?? 0);
|
||||
statusText = cdDrive.statusText || null;
|
||||
showProgress = ['CD_RIPPING', 'CD_ENCODING', 'CD_ANALYZING'].includes(s);
|
||||
progressValue = Number(cdDrive.progress ?? 0);
|
||||
statusText = cdDrive.statusText || null;
|
||||
showIndeterminateDriveProgress = isPlaylistTrackPreparationStatus(statusText);
|
||||
} else if (pipelineDevice) {
|
||||
const s = String(drv.pipelineState || '').toUpperCase();
|
||||
stateLabel = s || 'DISC_DETECTED';
|
||||
@@ -3286,12 +3298,14 @@ export default function RipperPage({
|
||||
{discInfo ? <span className="drive-list-disc-label" title={discInfo}>{discInfo}</span> : null}
|
||||
</div>
|
||||
) : null}
|
||||
{showProgress && (
|
||||
<ProgressBar value={progressValue} style={{ height: '5px', margin: '0.2rem 0 0' }} showValue={false} />
|
||||
)}
|
||||
{showProgress && statusText && (
|
||||
<div className="drive-list-status-text">{statusText}</div>
|
||||
)}
|
||||
{showProgress && (
|
||||
showIndeterminateDriveProgress
|
||||
? <ProgressBar mode="indeterminate" style={{ height: '5px', margin: '0.2rem 0 0' }} showValue={false} />
|
||||
: <ProgressBar value={progressValue} style={{ height: '5px', margin: '0.2rem 0 0' }} showValue={false} />
|
||||
)}
|
||||
{showProgress && statusText && (
|
||||
<div className="drive-list-status-text">{statusText}</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
@@ -3463,7 +3477,8 @@ export default function RipperPage({
|
||||
const mediaProfile = String(pipelineForJob?.context?.mediaProfile || '').trim().toLowerCase();
|
||||
const jobState = String(pipelineForJob?.state || normalizedStatus).trim().toUpperCase();
|
||||
const pipelineStage = String(pipelineForJob?.context?.stage || '').trim().toUpperCase();
|
||||
const pipelineStatusText = String(pipelineForJob?.statusText || '').trim().toUpperCase();
|
||||
const pipelineStatusTextRaw = String(pipelineForJob?.statusText || '').trim();
|
||||
const pipelineStatusText = pipelineStatusTextRaw.toUpperCase();
|
||||
const isCdJob = jobState.startsWith('CD_')
|
||||
|| pipelineStage.startsWith('CD_')
|
||||
|| mediaProfile === 'cd'
|
||||
@@ -3509,6 +3524,8 @@ export default function RipperPage({
|
||||
? Math.max(0, Math.min(100, rawProgress))
|
||||
: 0;
|
||||
const progressLabel = `${Math.trunc(clampedProgress)}%`;
|
||||
const showIndeterminateProgress = !hasSeriesBatchProgress
|
||||
&& isPlaylistTrackPreparationStatus(pipelineStatusTextRaw);
|
||||
const etaLabel = isCancelledState ? '' : String(
|
||||
hasSeriesBatchProgress
|
||||
? (runningSeriesChild?.eta || pipelineForJob?.eta || '')
|
||||
@@ -3982,9 +3999,16 @@ export default function RipperPage({
|
||||
: null}
|
||||
<JobStepChecks backupSuccess={Boolean(job?.backupSuccess)} encodeSuccess={Boolean(job?.encodeSuccess)} />
|
||||
</div>
|
||||
<div className="ripper-job-row-progress" aria-label={`Job Fortschritt ${progressLabel}`}>
|
||||
<ProgressBar value={clampedProgress} showValue={false} />
|
||||
<small>{etaLabel ? `${progressLabel} | ETA ${etaLabel}` : progressLabel}</small>
|
||||
<div
|
||||
className="ripper-job-row-progress"
|
||||
aria-label={showIndeterminateProgress ? 'Job Fortschritt Vorbereitung läuft' : `Job Fortschritt ${progressLabel}`}
|
||||
>
|
||||
{showIndeterminateProgress ? (
|
||||
<ProgressBar mode="indeterminate" showValue={false} />
|
||||
) : (
|
||||
<ProgressBar value={clampedProgress} showValue={false} />
|
||||
)}
|
||||
<small>{showIndeterminateProgress ? 'Vorbereitung läuft …' : (etaLabel ? `${progressLabel} | ETA ${etaLabel}` : progressLabel)}</small>
|
||||
</div>
|
||||
</div>
|
||||
<i className="pi pi-angle-down" aria-hidden="true" />
|
||||
@@ -4051,6 +4075,8 @@ export default function RipperPage({
|
||||
: (jobProgressEntry?.progress ?? 0)
|
||||
);
|
||||
const clampedQueueProgress = Number.isFinite(rawQueueProgress) ? Math.max(0, Math.min(100, rawQueueProgress)) : 0;
|
||||
const queueStatusText = String(jobProgressEntry?.statusText || '').trim();
|
||||
const showIndeterminateQueueProgress = isPlaylistTrackPreparationStatus(queueStatusText);
|
||||
return (
|
||||
<div key={`running-${item.jobId}`} className="pipeline-queue-entry-wrap">
|
||||
<div className="pipeline-queue-item running queue-job-item">
|
||||
@@ -4062,8 +4088,12 @@ export default function RipperPage({
|
||||
</strong>
|
||||
{item.subtitle ? <small>{item.subtitle}</small> : null}
|
||||
<small>#{item.jobId} | {getMergeAwareStatusLabel(item, item.status)}</small>
|
||||
{clampedQueueProgress > 0 && (
|
||||
<ProgressBar value={clampedQueueProgress} style={{ height: '5px' }} showValue={false} />
|
||||
{showIndeterminateQueueProgress ? (
|
||||
<ProgressBar mode="indeterminate" style={{ height: '5px' }} showValue={false} />
|
||||
) : (
|
||||
clampedQueueProgress > 0
|
||||
? <ProgressBar value={clampedQueueProgress} style={{ height: '5px' }} showValue={false} />
|
||||
: null
|
||||
)}
|
||||
</div>
|
||||
{hasScriptSummary ? (
|
||||
|
||||
Reference in New Issue
Block a user