From bdc1d1449820cf8f9b51501fb7ac9b2439d3323e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastjan=20Arti=C4=8D?= Date: Sat, 2 May 2026 07:23:03 +0000 Subject: [PATCH] =?UTF-8?q?Toggle=20'Poka=C5=BEi=20tudi=20=C5=BEe=20nalo?= =?UTF-8?q?=C5=BEene'=20+=20recut=20prepi=C5=A1e=20Nextcloud?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User feedback: 'načeloma bi se moral samo če kaj spregledamo in že sejvamo pa ne moremo nazaj vrniti in popraviti' Frontend: - Nov toggle '☁ Pokaži tudi že naložene' nad 'moji reels' headerjem - Default OFF: vidiš samo aktivne (ki niso uploaded) - ON: vidiš VSE, vključno z uploaded (z zelenim borderjem) - buildJobEl: uploaded reels imajo border-left zelen + bg #4ade80 0.04 opacity - Listener: change event sproži refreshJobs() Backend: - recut endpoint: reset hidden_after_upload=false, nextcloud_status='recutting' - Po končanem recut: avto-upload na Nextcloud (PUT prepiše obstoječi file) - Hidden_after_upload=true spet po uspešnem re-uploadu Workflow: 1. Reel uploaded → hidden, ni v UI 2. Klik toggle 'Pokaži tudi že naložene' → vidiš ga (zelen border) 3. Edit → Save → re-render (visible spet, status='processing') 4. Re-upload PUT na Nextcloud → prepiše obstoječi file (ista pot, isto ime) 5. Hidden=true → izgine spet (osim če toggle on) --- app/main.py | 4 ++++ templates/index.html | 29 +++++++++++++++++++++++++---- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/main.py b/app/main.py index 715025f..619b9c8 100644 --- a/app/main.py +++ b/app/main.py @@ -1869,12 +1869,16 @@ async def recut_job(job_id: str, payload: RecutRequest, user: str = Depends(chec analysis_path.write_text(json.dumps(analysis, indent=2, ensure_ascii=False)) # Re-queue job v processing (worker ga bo obdelal) + # Reset upload flags da se reel pojavi v UI med renderiranjem, + # po končanem renderu pa avto-upload spet (in spet izgine). update_job( job_id, status="queued", no_subs=no_subs, custom_clip=True, # flag da preskoči Soniox + Claude auto_upload_to_nextcloud=payload.auto_upload, # avto-upload po končanem recut + hidden_after_upload=False, # vidno med renderiranjem + nextcloud_status="recutting", # signal: ima staro Nextcloud verzijo, čaka novo current_step="V vrsti za recut", error=None, chorus_error=None, diff --git a/templates/index.html b/templates/index.html index 1d9e265..e2fcf39 100644 --- a/templates/index.html +++ b/templates/index.html @@ -409,7 +409,13 @@
-

moji reels

+
+

moji reels

+ +
Še ni obdelav
@@ -979,10 +985,13 @@ if (!r.ok) return; const data = await r.json(); const list = $("#jobs-list"); - // Filtriraj ven jobe ki so že naloženi in skriti - const visible = data.jobs.filter(j => !j.hidden_after_upload); + const showUploaded = $("#show-uploaded") && $("#show-uploaded").checked; + // Filtriraj ven jobe ki so že naloženi in skriti — RAZEN če checkbox vklopljen + const visible = data.jobs.filter(j => showUploaded || !j.hidden_after_upload); if (!visible.length) { - list.innerHTML = '
Še ni obdelav
'; + list.innerHTML = showUploaded + ? '
Še ni obdelav
' + : '
Vse obdelano in naloženo. Klikni "Pokaži tudi že naložene" če želiš popraviti.
'; return; } list.innerHTML = ""; @@ -994,6 +1003,12 @@ } }); } + + // Toggle pokaži/skrij že naložene + document.addEventListener("DOMContentLoaded", () => { + const toggle = $("#show-uploaded"); + if (toggle) toggle.addEventListener("change", refreshJobs); + }); function updateJobInList(job) { const existing = document.getElementById(`job-${job.id}`); @@ -1012,6 +1027,12 @@ el.className = "job"; el.id = `job-${job.id}`; el.dataset.id = job.id; + + // Vizualni hint če je že naložen na Nextcloud + if (job.nextcloud_status === "uploaded") { + el.style.borderLeft = "3px solid #4ade80"; + el.style.background = "rgba(74,222,128,0.04)"; + } const title = job.source_type === "youtube" ? (job.youtube_url || "YouTube")