upd link handling journal
This commit is contained in:
parent
9db6cacb8c
commit
90970322f1
|
|
@ -12,7 +12,9 @@
|
||||||
"Bash(docker ps:*)",
|
"Bash(docker ps:*)",
|
||||||
"Bash(docker compose:*)",
|
"Bash(docker compose:*)",
|
||||||
"Bash(az webapp config appsettings list:*)",
|
"Bash(az webapp config appsettings list:*)",
|
||||||
"Bash(node:*)"
|
"Bash(node:*)",
|
||||||
|
"Bash(python3:*)",
|
||||||
|
"Bash(echo:*)"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -280,7 +280,12 @@
|
||||||
<div class="group mb-3 flex items-start gap-2 rounded bg-card-bg p-2.5">
|
<div class="group mb-3 flex items-start gap-2 rounded bg-card-bg p-2.5">
|
||||||
<span class="mt-0.5 text-xs text-muted whitespace-nowrap">{formatTime(entry.updatedAt)}</span>
|
<span class="mt-0.5 text-xs text-muted whitespace-nowrap">{formatTime(entry.updatedAt)}</span>
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<div class="font-bold">{truncateUrlDisplay(title)}
|
<div class="font-bold">
|
||||||
|
{#if /^https?:\/\//i.test(title)}
|
||||||
|
<a href={title} target="_blank" rel="noopener noreferrer" class="text-blue-400 hover:underline">{truncateUrlDisplay(title)}</a>
|
||||||
|
{:else}
|
||||||
|
{title}
|
||||||
|
{/if}
|
||||||
{#if entry.linkedContextId}
|
{#if entry.linkedContextId}
|
||||||
<span class="ml-1 inline-block rounded bg-accent/20 px-1.5 py-0.5 text-xs font-normal text-accent">
|
<span class="ml-1 inline-block rounded bg-accent/20 px-1.5 py-0.5 text-xs font-normal text-accent">
|
||||||
{contextNameMap().get(entry.linkedContextId) ?? entry.linkedContextId}
|
{contextNameMap().get(entry.linkedContextId) ?? entry.linkedContextId}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,21 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { liveQuery } from 'dexie';
|
import { liveQuery } from 'dexie';
|
||||||
import { db } from '$lib/db/schema';
|
import { db } from '$lib/db/schema';
|
||||||
import { resolveWiedervorlage, setWiedervorlage, convertToTopic } from '$lib/db/repositories';
|
import { resolveWiedervorlage, setWiedervorlage, convertToTopic, softDeleteHistoryEntry } from '$lib/db/repositories';
|
||||||
import type { HistoryEntry } from '@ka-note/shared';
|
import type { HistoryEntry } from '@ka-note/shared';
|
||||||
|
import RenderedMarkdown from './RenderedMarkdown.svelte';
|
||||||
|
|
||||||
|
function truncateUrlDisplay(text: string): string {
|
||||||
|
if (!/^https?:\/\//i.test(text)) return text;
|
||||||
|
try {
|
||||||
|
const u = new URL(text);
|
||||||
|
const path = u.pathname !== '/' ? u.pathname : '';
|
||||||
|
const display = u.hostname + path;
|
||||||
|
return display.length > 60 ? display.slice(0, 57) + '…' : display;
|
||||||
|
} catch {
|
||||||
|
return text.length > 60 ? text.slice(0, 57) + '…' : text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
entry: HistoryEntry;
|
entry: HistoryEntry;
|
||||||
|
|
@ -28,6 +41,10 @@
|
||||||
await resolveWiedervorlage(entry.id);
|
await resolveWiedervorlage(entry.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function handleDelete() {
|
||||||
|
await softDeleteHistoryEntry(entry.id);
|
||||||
|
}
|
||||||
|
|
||||||
async function handleVerschieben() {
|
async function handleVerschieben() {
|
||||||
if (!newDate) return;
|
if (!newDate) return;
|
||||||
await setWiedervorlage(entry.id, newDate);
|
await setWiedervorlage(entry.id, newDate);
|
||||||
|
|
@ -48,9 +65,15 @@
|
||||||
<span class="text-xs font-semibold uppercase tracking-wider text-amber-400">⏰ Wiedervorlage {entry.wiedervorlageDate}</span>
|
<span class="text-xs font-semibold uppercase tracking-wider text-amber-400">⏰ Wiedervorlage {entry.wiedervorlageDate}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<div class="font-bold text-white">{title}</div>
|
<div class="font-bold text-white">
|
||||||
|
{#if /^https?:\/\//i.test(title)}
|
||||||
|
<a href={title} target="_blank" rel="noopener noreferrer" class="text-blue-400 hover:underline">{truncateUrlDisplay(title)}</a>
|
||||||
|
{:else}
|
||||||
|
{title}
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
{#if body}
|
{#if body}
|
||||||
<div class="mt-1 text-sm text-[#ccc]">{body}</div>
|
<RenderedMarkdown text={body} class="mt-1 text-sm text-[#ccc]" />
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -105,6 +128,10 @@
|
||||||
class="rounded bg-[#444] px-3 py-1 text-sm text-white hover:bg-[#555]"
|
class="rounded bg-[#444] px-3 py-1 text-sm text-white hover:bg-[#555]"
|
||||||
onclick={() => showConvert = true}
|
onclick={() => showConvert = true}
|
||||||
>In Thema wandeln</button>
|
>In Thema wandeln</button>
|
||||||
|
<button
|
||||||
|
class="ml-auto rounded bg-red-900/60 px-3 py-1 text-sm text-red-300 hover:bg-red-800"
|
||||||
|
onclick={handleDelete}
|
||||||
|
>Löschen</button>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "tsx watch src/index.ts",
|
"dev": "node --watch --import tsx/esm src/index.ts",
|
||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"start": "node dist/index.js",
|
"start": "node dist/index.js",
|
||||||
"db:generate": "drizzle-kit generate",
|
"db:generate": "drizzle-kit generate",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue