diff --git a/frontend/src/lib/components/SegmentationColumn.svelte b/frontend/src/lib/components/SegmentationColumn.svelte index b46153c6..e0ce338d 100644 --- a/frontend/src/lib/components/SegmentationColumn.svelte +++ b/frontend/src/lib/components/SegmentationColumn.svelte @@ -36,7 +36,7 @@ let { docs, weeklyCount }: Props = $props(); {#each docs as doc (doc.id)}
  • {doc.title} diff --git a/frontend/src/lib/components/SegmentationColumn.svelte.spec.ts b/frontend/src/lib/components/SegmentationColumn.svelte.spec.ts index 8f0c538d..0e03d0e8 100644 --- a/frontend/src/lib/components/SegmentationColumn.svelte.spec.ts +++ b/frontend/src/lib/components/SegmentationColumn.svelte.spec.ts @@ -56,12 +56,12 @@ describe('SegmentationColumn', () => { await expect.element(page.getByText(/diese Woche/)).not.toBeInTheDocument(); }); - it('links to /documents/{id}', async () => { + it('links to /documents/{id}?task=transcribe', async () => { const doc = makeDoc({ id: 'abc-123', title: 'Verlinktes Dokument' }); render(SegmentationColumn, { props: { docs: [doc], weeklyCount: 0 } }); const link = page.getByRole('link', { name: /Verlinktes Dokument/ }); - await expect.element(link).toHaveAttribute('href', '/documents/abc-123'); + await expect.element(link).toHaveAttribute('href', '/documents/abc-123?task=transcribe'); }); }); diff --git a/frontend/src/lib/components/TranscriptionColumn.svelte b/frontend/src/lib/components/TranscriptionColumn.svelte index 9c168f98..19b40950 100644 --- a/frontend/src/lib/components/TranscriptionColumn.svelte +++ b/frontend/src/lib/components/TranscriptionColumn.svelte @@ -41,7 +41,7 @@ function blockProgress(doc: TranscriptionQueueItemDTO): number { {#each docs as doc (doc.id)}
  • {doc.title} diff --git a/frontend/src/lib/components/TranscriptionColumn.svelte.spec.ts b/frontend/src/lib/components/TranscriptionColumn.svelte.spec.ts index 05b09d9b..845fedce 100644 --- a/frontend/src/lib/components/TranscriptionColumn.svelte.spec.ts +++ b/frontend/src/lib/components/TranscriptionColumn.svelte.spec.ts @@ -74,12 +74,12 @@ describe('TranscriptionColumn', () => { expect(dashEl?.textContent?.trim()).toBe('—'); }); - it('links to /documents/{id}', async () => { + it('links to /documents/{id}?task=transcribe', async () => { const doc = makeDoc({ id: 'xyz-456', title: 'Transkriptions Dokument' }); render(TranscriptionColumn, { props: { docs: [doc], weeklyCount: 0 } }); const link = page.getByRole('link', { name: /Transkriptions Dokument/ }); - await expect.element(link).toHaveAttribute('href', '/documents/xyz-456'); + await expect.element(link).toHaveAttribute('href', '/documents/xyz-456?task=transcribe'); }); }); diff --git a/frontend/src/routes/documents/[id]/+page.svelte b/frontend/src/routes/documents/[id]/+page.svelte index a62fb70c..69f24b50 100644 --- a/frontend/src/routes/documents/[id]/+page.svelte +++ b/frontend/src/routes/documents/[id]/+page.svelte @@ -362,6 +362,21 @@ onMount(() => { ); } + if (page.url.searchParams.get('task') === 'transcribe') { + transcribeMode = true; + tick() + .then(() => { + const closeBtn = document.querySelector('[data-testid="panel-close"]'); + closeBtn?.scrollIntoView({ + behavior: prefersReducedMotion ? 'instant' : 'smooth', + block: 'nearest' + }); + closeBtn?.focus({ preventScroll: true }); + replaceState(page.url.pathname, page.state ?? {}); + }) + .catch((e) => console.error('task deep-link failed', e)); + } + scrollToCommentFromQuery(new URL(page.url), { transcribeMode, setTranscribeMode: (v) => (transcribeMode = v),