Visitenbuch/src/lib/components/table/EntryTable.svelte
ThetaDev 04d9883c96
Some checks failed
Visitenbuch CI / test (push) Failing after 4m26s
Visitenbuch CI / release (push) Has been skipped
feat: make page printable
2024-05-14 02:13:44 +02:00

91 lines
3.3 KiB
Svelte

<script lang="ts">
import type { RouterOutput } from "$lib/shared/trpc";
import { formatDate } from "$lib/shared/util";
import CategoryField from "./CategoryField.svelte";
import PatientField from "./PatientField.svelte";
import RoomField from "./RoomField.svelte";
import SortHeader from "./SortHeader.svelte";
import UserField from "./UserField.svelte";
export let entries: RouterOutput["entry"]["list"];
export let sortData: string[] | undefined;
export let sortUpdate: (sort: string[] | undefined) => void = () => {};
export let perPatient = false;
export let baseUrl: string;
</script>
<div class="overflow-x-auto">
<table class="table" data-testid="entry-table">
<thead>
<tr>
<SortHeader key="id" {sortData} {sortUpdate} title="ID" />
{#if !perPatient}
<SortHeader key="patient" {sortData} {sortUpdate} title="Patient" />
<SortHeader key="room" {sortData} {sortUpdate} title="Zimmer" />
{/if}
<SortHeader key="category" {sortData} {sortUpdate} title="Kategorie" />
<SortHeader key="created_at" {sortData} {sortUpdate} title="Erstellt am" />
<SortHeader key="updated_at" {sortData} {sortUpdate} title="Aktualisiert am" />
<SortHeader key="date" {sortData} {sortUpdate} title="Zu erledigen am" />
<SortHeader key="author" {sortData} {sortUpdate} title="Autor" />
<SortHeader key="version_text" {sortData} {sortUpdate} title="Beschreibung" />
<SortHeader key="executed_at" {sortData} {sortUpdate} title="Erledigt" />
</tr>
</thead>
<tbody>
{#each entries.items as entry (entry.id)}
<tr
class="transition-colors hover:bg-neutral-content/10"
class:done={entry.execution?.done}
class:priority={entry.current_version.priority}
>
<td
><a
class="btn btn-xs btn-primary btn-id"
aria-label="Eintrag anzeigen"
href="/entry/{entry.id}">{entry.id}</a
></td
>
{#if !perPatient}
<td><PatientField {baseUrl} patient={entry.patient} /></td>
<td>
{#if entry.patient.room}
<RoomField {baseUrl} room={entry.patient.room} />
{/if}
</td>
{/if}
<td>
{#if entry.current_version.category}
<CategoryField {baseUrl} category={entry.current_version.category} />
{/if}
</td>
<td>{formatDate(entry.created_at, true)}</td>
<td>{formatDate(entry.current_version.created_at, true)}</td>
<td>{formatDate(entry.current_version.date)}</td>
<td><UserField {baseUrl} user={entry.current_version.author} /></td>
<td><span class="line-clamp-2">{entry.current_version.text}</span></td>
<td>
{#if entry.execution?.done}
{formatDate(entry.execution.created_at, true)}
<UserField
{baseUrl}
filterName="executor"
user={entry.execution.author}
/>
{/if}
</td>
</tr>
{/each}
</tbody>
</table>
</div>
<style lang="postcss">
.done {
@apply bg-success/20 !important;
}
.priority {
@apply bg-warning/20;
}
</style>