coloring and page tweaks

This commit is contained in:
John Lancaster
2026-06-29 17:34:05 -05:00
parent 3a141bd4cc
commit e35a8ec060
3 changed files with 17 additions and 36 deletions
@@ -185,36 +185,15 @@ def render_document_panzoom(*, document: Document, height: str = "640px") -> Non
document_url = _document_url(document)
document_kind = _document_kind(document)
with ui.card().classes("w-full bg-blue-grey-10 text-grey-1 q-pa-md"):
with ui.row().classes("w-full items-center justify-between q-gutter-sm"):
with ui.column().classes("q-gutter-none"):
with ui.card().classes("w-full q-pa-md"):
with ui.column().classes("q-gutter-none"):
with ui.row().classes("w-full items-center justify-between q-gutter-sm"):
ui.label("Document preview").classes("text-subtitle1 text-weight-medium")
ui.label(document.filename).classes("text-caption text-grey-4")
with ui.button_group().props("flat outline"):
ui.button(
"Zoom In",
icon="add",
on_click=lambda: ui.run_javascript(f"window.__transcriptionPanzoom[{host_id!r}]?.zoomIn()"),
)
ui.button(
"Zoom Out",
icon="remove",
on_click=lambda: ui.run_javascript(f"window.__transcriptionPanzoom[{host_id!r}]?.zoomOut()"),
)
ui.button(
"Reset",
icon="restart_alt",
on_click=lambda: ui.run_javascript(f"window.__transcriptionPanzoom[{host_id!r}]?.reset()"),
)
ui.label("Scroll, pinch, or use the buttons to inspect the document.").classes(
"text-caption text-grey-4 q-mt-sm"
)
with (
ui.element("div")
.classes("w-full document-panzoom-host bg-blue-grey-9 rounded-borders q-mt-md")
.classes("w-full document-panzoom-host rounded-borders q-mt-md")
.style(f"height: {height};") as host
):
host.props(f"id={host_id}")
+13 -9
View File
@@ -2,6 +2,7 @@
from __future__ import annotations
import logging
from collections.abc import Sequence
from nicegui import ui
@@ -11,6 +12,8 @@ from transcription.models import Job
from transcription.models import Transcript
from transcription.ui.components.document_panzoom import render_document_panzoom
logger = logging.getLogger(__name__)
def _status_chip_classes(status: str) -> str:
if status == "queued":
@@ -31,21 +34,21 @@ def _metadata_row(label: str, value: str) -> None:
def _render_document_section(document: Document) -> None:
with ui.card().classes("w-full bg-blue-grey-10 text-grey-1 q-pa-md"):
with ui.card().classes("w-full q-pa-md"):
ui.label("Document").classes("text-subtitle1 text-weight-medium")
ui.separator().classes("q-my-sm bg-blue-grey-7")
ui.separator().classes("q-my-sm")
with ui.column().classes("w-full q-gutter-y-xs"):
_metadata_row("Filename", document.filename)
_metadata_row("File path", document.file_path)
ui.separator().classes("q-my-md bg-blue-grey-7")
ui.separator().classes("q-my-md")
render_document_panzoom(document=document)
def _render_transcript_section(transcripts: Sequence[Transcript]) -> None:
with ui.card().classes("w-full bg-blue-grey-10 text-grey-1 q-pa-md"):
with ui.card().classes("w-full q-pa-md"):
ui.label("Transcripts").classes("text-subtitle1 text-weight-medium")
ui.separator().classes("q-my-sm bg-blue-grey-7")
ui.separator().classes("q-my-sm")
if not transcripts:
ui.label("Transcript history is not available yet.").classes("text-body2 text-grey-3")
@@ -59,11 +62,11 @@ def _render_transcript_section(transcripts: Sequence[Transcript]) -> None:
_metadata_row("Created", transcript.created_at.isoformat())
if transcript.text:
ui.separator().classes("q-my-sm bg-blue-grey-7")
with ui.card().classes("w-full bg-blue-grey-9 text-grey-1 q-pa-sm"):
ui.separator().classes("q-my-sm")
with ui.card().classes("w-fullq-pa-sm"):
ui.markdown(transcript.text).classes("text-grey-1")
elif transcript.error_detail:
ui.separator().classes("q-my-sm bg-blue-grey-7")
ui.separator().classes("q-my-sm")
with ui.card().classes("w-full bg-red-1 text-red-10 q-pa-sm"):
ui.label("Failure detail").classes("text-caption text-uppercase")
ui.label(transcript.error_detail).classes("text-body2")
@@ -73,9 +76,10 @@ def _render_transcript_section(transcripts: Sequence[Transcript]) -> None:
def render_job_detail(*, job: Job, document: Document | None, transcripts: Sequence[Transcript]) -> None:
"""Render all sections for the job detail page."""
logger.debug("Rendering job detail for job ID %s with %d transcripts", job.id, len(transcripts))
status_text = job.status.value
with ui.column().classes("w-full max-w-4xl q-gutter-md"):
with ui.card().classes("w-full bg-blue-grey-10 text-grey-1 q-pa-lg"):
with ui.card().classes("w-full q-pa-lg"):
with ui.row().classes("w-full items-center justify-between q-gutter-md"):
with ui.column().classes("q-gutter-none"):
ui.label("Job overview").classes("text-h6 text-weight-bold")
-2
View File
@@ -67,5 +67,3 @@ def register_page() -> None:
transcripts = list(await transcription_service.list_transcripts_by_job(parsed_id))
render_job_detail(job=job, document=job.document, transcripts=transcripts)
ui.link("Back to jobs", "/jobs")