0.12.0-19 Final Build
Deploy Docs to GitHub Pages / Build Documentation (push) Has been cancelled
Deploy Docs to GitHub Pages / Deploy to GitHub Pages (push) Has been cancelled

This commit is contained in:
2026-04-07 19:12:40 +00:00
parent ccad7ec9f4
commit 43702b0138
39 changed files with 2829 additions and 460 deletions
+15 -15
View File
@@ -1056,9 +1056,9 @@ export default function ConverterJobCard({
})();
const jobIdLabel = Number.isFinite(Number(job?.id)) ? `Job #${Math.trunc(Number(job.id))}` : 'Job';
const dashboardTitleId = Number.isFinite(Number(job?.id)) ? `#${Math.trunc(Number(job.id))}` : '#-';
const ripperTitleId = Number.isFinite(Number(job?.id)) ? `#${Math.trunc(Number(job.id))}` : '#-';
const customTitle = String(job?.title || '').trim();
const title = customTitle ? `${dashboardTitleId} | ${customTitle}` : dashboardTitleId;
const title = customTitle ? `${ripperTitleId} | ${customTitle}` : ripperTitleId;
const status = job.status || 'UNKNOWN';
const statusLabel = getStatusLabel(status);
const statusSeverity = getStatusSeverity(status);
@@ -1173,15 +1173,15 @@ export default function ConverterJobCard({
return (
<button
type="button"
className="dashboard-job-row"
className="ripper-job-row"
onClick={onExpand}
>
<div className="poster-thumb dashboard-job-poster-fallback">
<div className="poster-thumb ripper-job-poster-fallback">
{isAudio ? 'Audio' : 'Video'}
</div>
<div className="dashboard-job-row-content">
<div className="dashboard-job-row-main">
<strong className="dashboard-job-title-line">
<div className="ripper-job-row-content">
<div className="ripper-job-row-main">
<strong className="ripper-job-title-line">
<i className="pi pi-circle-fill media-indicator-icon" style={{ color: 'var(--rip-muted)', fontSize: '0.65rem' }} />
<span>{title}</span>
</strong>
@@ -1189,12 +1189,12 @@ export default function ConverterJobCard({
{fileCount != null ? `${fileCount} Datei${fileCount !== 1 ? 'en' : ''}` : null}
</small>
</div>
<div className="dashboard-job-badges">
<div className="ripper-job-badges">
{converterMediaType && mediaTypeBadge(converterMediaType)}
<Tag value={statusLabel} severity={statusSeverity} />
</div>
{active && progressValue !== null && (
<div className="dashboard-job-row-progress">
<div className="ripper-job-row-progress">
<ProgressBar value={progressValue} showValue={false} />
<small>
{liveEta ? `${progressValue}% | ETA ${liveEta}` : `${progressValue}%`}
@@ -1209,20 +1209,20 @@ export default function ConverterJobCard({
// ── Ausgeklappt ───────────────────────────────────────────────────────────
return (
<div className={`dashboard-job-expanded converter-job-card status-${status.toLowerCase()}${isReady ? ' is-ready' : ''}`}>
<div className={`ripper-job-expanded converter-job-card status-${status.toLowerCase()}${isReady ? ' is-ready' : ''}`}>
{/* Header */}
<div className="dashboard-job-expanded-head">
<div className="ripper-job-expanded-head">
{job?.poster_url && job.poster_url !== 'N/A' ? (
<img src={job.poster_url} alt={title} className="poster-thumb" />
) : (
<div className="poster-thumb dashboard-job-poster-fallback">Kein Poster</div>
<div className="poster-thumb ripper-job-poster-fallback">Kein Poster</div>
)}
<div className="dashboard-job-expanded-title">
<strong className="dashboard-job-title-line">
<div className="ripper-job-expanded-title">
<strong className="ripper-job-title-line">
<i className="pi pi-circle-fill media-indicator-icon" style={{ color: 'var(--rip-muted)', fontSize: '0.65rem' }} />
<span>{title}</span>
</strong>
<div className="dashboard-job-badges">
<div className="ripper-job-badges">
{converterMediaType && mediaTypeBadge(converterMediaType)}
<Tag value={statusLabel} severity={statusSeverity} />
</div>