0.9.1-2 Metadata Fix
This commit is contained in:
4
backend/package-lock.json
generated
4
backend/package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "ripster-backend",
|
"name": "ripster-backend",
|
||||||
"version": "0.9.1-1",
|
"version": "0.9.1-2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "ripster-backend",
|
"name": "ripster-backend",
|
||||||
"version": "0.9.1-1",
|
"version": "0.9.1-2",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"dotenv": "^16.4.7",
|
"dotenv": "^16.4.7",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ripster-backend",
|
"name": "ripster-backend",
|
||||||
"version": "0.9.1-1",
|
"version": "0.9.1-2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "commonjs",
|
"type": "commonjs",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -641,11 +641,23 @@ function buildRawPathForJobId(rawPath, jobId) {
|
|||||||
|
|
||||||
const absRawPath = normalizeComparablePath(rawPath);
|
const absRawPath = normalizeComparablePath(rawPath);
|
||||||
const folderName = path.basename(absRawPath);
|
const folderName = path.basename(absRawPath);
|
||||||
|
|
||||||
|
// Replace existing job ID suffix if present
|
||||||
const replaced = folderName.replace(/(\s-\sRAW\s-\sjob-)\d+\s*$/i, `$1${Math.trunc(normalizedJobId)}`);
|
const replaced = folderName.replace(/(\s-\sRAW\s-\sjob-)\d+\s*$/i, `$1${Math.trunc(normalizedJobId)}`);
|
||||||
if (replaced === folderName) {
|
if (replaced !== folderName) {
|
||||||
return absRawPath;
|
return path.join(path.dirname(absRawPath), replaced);
|
||||||
}
|
}
|
||||||
return path.join(path.dirname(absRawPath), replaced);
|
|
||||||
|
// No existing job ID suffix — add canonical suffix
|
||||||
|
// Strip any state prefix (Rip_Complete_ / Incomplete_), append suffix, restore prefix
|
||||||
|
const statePrefix = /^Rip_Complete_/i.test(folderName)
|
||||||
|
? RAW_RIP_COMPLETE_PREFIX
|
||||||
|
: /^Incomplete_/i.test(folderName)
|
||||||
|
? RAW_INCOMPLETE_PREFIX
|
||||||
|
: '';
|
||||||
|
const stripped = stripRawFolderStatePrefix(folderName);
|
||||||
|
const withJobId = `${statePrefix}${stripped} - RAW - job-${Math.trunc(normalizedJobId)}`;
|
||||||
|
return path.join(path.dirname(absRawPath), withJobId);
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteFilesRecursively(rootPath, keepRoot = true) {
|
function deleteFilesRecursively(rootPath, keepRoot = true) {
|
||||||
|
|||||||
4
frontend/package-lock.json
generated
4
frontend/package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "ripster-frontend",
|
"name": "ripster-frontend",
|
||||||
"version": "0.9.1-1",
|
"version": "0.9.1-2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "ripster-frontend",
|
"name": "ripster-frontend",
|
||||||
"version": "0.9.1-1",
|
"version": "0.9.1-2",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"primeicons": "^7.0.0",
|
"primeicons": "^7.0.0",
|
||||||
"primereact": "^10.9.2",
|
"primereact": "^10.9.2",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ripster-frontend",
|
"name": "ripster-frontend",
|
||||||
"version": "0.9.1-1",
|
"version": "0.9.1-2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -294,6 +294,7 @@ export default function PipelineStatusCard({
|
|||||||
onAnalyze,
|
onAnalyze,
|
||||||
onReanalyze,
|
onReanalyze,
|
||||||
onOpenMetadata,
|
onOpenMetadata,
|
||||||
|
onReassignOmdb,
|
||||||
onStart,
|
onStart,
|
||||||
onRemoveFromQueue,
|
onRemoveFromQueue,
|
||||||
onRestartEncode,
|
onRestartEncode,
|
||||||
@@ -653,6 +654,17 @@ export default function PipelineStatusCard({
|
|||||||
/>
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
|
{!running && state !== 'METADATA_SELECTION' && state !== 'WAITING_FOR_USER_DECISION' && state !== 'IDLE' && state !== 'DISC_DETECTED' && retryJobId && typeof onReassignOmdb === 'function' ? (
|
||||||
|
<Button
|
||||||
|
label="OMDb neu zuordnen"
|
||||||
|
icon="pi pi-search"
|
||||||
|
severity="secondary"
|
||||||
|
size="small"
|
||||||
|
onClick={() => onReassignOmdb?.(retryJobId)}
|
||||||
|
loading={busy}
|
||||||
|
/>
|
||||||
|
) : null}
|
||||||
|
|
||||||
{state === 'READY_TO_START' && retryJobId ? (
|
{state === 'READY_TO_START' && retryJobId ? (
|
||||||
<Button
|
<Button
|
||||||
label="Job starten"
|
label="Job starten"
|
||||||
|
|||||||
@@ -728,6 +728,7 @@ export default function DashboardPage({
|
|||||||
};
|
};
|
||||||
const [metadataDialogVisible, setMetadataDialogVisible] = useState(false);
|
const [metadataDialogVisible, setMetadataDialogVisible] = useState(false);
|
||||||
const [metadataDialogContext, setMetadataDialogContext] = useState(null);
|
const [metadataDialogContext, setMetadataDialogContext] = useState(null);
|
||||||
|
const [metadataDialogReassignMode, setMetadataDialogReassignMode] = useState(false);
|
||||||
const [cdMetadataDialogVisible, setCdMetadataDialogVisible] = useState(false);
|
const [cdMetadataDialogVisible, setCdMetadataDialogVisible] = useState(false);
|
||||||
const [cdMetadataDialogContext, setCdMetadataDialogContext] = useState(null);
|
const [cdMetadataDialogContext, setCdMetadataDialogContext] = useState(null);
|
||||||
const [cdRipPanelJobId, setCdRipPanelJobId] = useState(null);
|
const [cdRipPanelJobId, setCdRipPanelJobId] = useState(null);
|
||||||
@@ -1040,6 +1041,18 @@ export default function DashboardPage({
|
|||||||
showError(new Error('Kein Job mit offener Metadaten-Auswahl gefunden.'));
|
showError(new Error('Kein Job mit offener Metadaten-Auswahl gefunden.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
setMetadataDialogReassignMode(false);
|
||||||
|
setMetadataDialogContext(context);
|
||||||
|
setMetadataDialogVisible(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleOpenReassignOmdbDialog = (jobId) => {
|
||||||
|
const context = buildMetadataContextForJob(jobId);
|
||||||
|
if (!context?.jobId) {
|
||||||
|
showError(new Error('Job nicht gefunden.'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setMetadataDialogReassignMode(true);
|
||||||
setMetadataDialogContext(context);
|
setMetadataDialogContext(context);
|
||||||
setMetadataDialogVisible(true);
|
setMetadataDialogVisible(true);
|
||||||
};
|
};
|
||||||
@@ -1516,11 +1529,16 @@ export default function DashboardPage({
|
|||||||
const handleMetadataSubmit = async (payload) => {
|
const handleMetadataSubmit = async (payload) => {
|
||||||
setBusy(true);
|
setBusy(true);
|
||||||
try {
|
try {
|
||||||
await api.selectMetadata(payload);
|
if (metadataDialogReassignMode) {
|
||||||
|
await api.assignJobOmdb(payload.jobId, payload);
|
||||||
|
} else {
|
||||||
|
await api.selectMetadata(payload);
|
||||||
|
}
|
||||||
await refreshPipeline();
|
await refreshPipeline();
|
||||||
await loadDashboardJobs();
|
await loadDashboardJobs();
|
||||||
setMetadataDialogVisible(false);
|
setMetadataDialogVisible(false);
|
||||||
setMetadataDialogContext(null);
|
setMetadataDialogContext(null);
|
||||||
|
setMetadataDialogReassignMode(false);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
showError(error);
|
showError(error);
|
||||||
} finally {
|
} finally {
|
||||||
@@ -2348,6 +2366,7 @@ export default function DashboardPage({
|
|||||||
onAnalyze={handleAnalyze}
|
onAnalyze={handleAnalyze}
|
||||||
onReanalyze={handleReanalyze}
|
onReanalyze={handleReanalyze}
|
||||||
onOpenMetadata={handleOpenMetadataDialog}
|
onOpenMetadata={handleOpenMetadataDialog}
|
||||||
|
onReassignOmdb={handleOpenReassignOmdbDialog}
|
||||||
onStart={handleStartJob}
|
onStart={handleStartJob}
|
||||||
onRestartEncode={handleRestartEncodeWithLastSettings}
|
onRestartEncode={handleRestartEncodeWithLastSettings}
|
||||||
onRestartReview={handleRestartReviewFromRaw}
|
onRestartReview={handleRestartReviewFromRaw}
|
||||||
@@ -2469,6 +2488,7 @@ export default function DashboardPage({
|
|||||||
onHide={() => {
|
onHide={() => {
|
||||||
setMetadataDialogVisible(false);
|
setMetadataDialogVisible(false);
|
||||||
setMetadataDialogContext(null);
|
setMetadataDialogContext(null);
|
||||||
|
setMetadataDialogReassignMode(false);
|
||||||
}}
|
}}
|
||||||
onSubmit={handleMetadataSubmit}
|
onSubmit={handleMetadataSubmit}
|
||||||
onSearch={handleOmdbSearch}
|
onSearch={handleOmdbSearch}
|
||||||
|
|||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "ripster",
|
"name": "ripster",
|
||||||
"version": "0.9.1-1",
|
"version": "0.9.1-2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "ripster",
|
"name": "ripster",
|
||||||
"version": "0.9.1-1",
|
"version": "0.9.1-2",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"concurrently": "^9.1.2"
|
"concurrently": "^9.1.2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "ripster",
|
"name": "ripster",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.9.1-1",
|
"version": "0.9.1-2",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "concurrently \"npm run dev --prefix backend\" \"npm run dev --prefix frontend\"",
|
"dev": "concurrently \"npm run dev --prefix backend\" \"npm run dev --prefix frontend\"",
|
||||||
"dev:backend": "npm run dev --prefix backend",
|
"dev:backend": "npm run dev --prefix backend",
|
||||||
|
|||||||
Reference in New Issue
Block a user