91 lines
3.3 KiB
Svelte
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>
|