diff --git a/src/lib/ae_journals/ae_journals__journal.ts b/src/lib/ae_journals/ae_journals__journal.ts index 15314181..b2885c85 100644 --- a/src/lib/ae_journals/ae_journals__journal.ts +++ b/src/lib/ae_journals/ae_journals__journal.ts @@ -603,6 +603,8 @@ export function db_save_ae_obj_li__journal( updated_on: obj.updated_on, // Generated fields for sorting locally only + tmp_sort_1: `${obj.group}_${obj.priority}_${obj.sort}_${obj.updated_on}_${obj.created_on}`, + tmp_sort_2: `${obj.group}_${obj.priority}_${obj.sort}_${obj.updated_on ?? obj.created_on}`, // tmp_sort_1: `${obj.original_datetime}_${obj.group}_${obj.priority}_${obj.sort}`, // tmp_sort_2: `${obj.group}_${obj.original_datetime}_${obj.priority}_${obj.sort}`, diff --git a/src/lib/ae_journals/db_journals.ts b/src/lib/ae_journals/db_journals.ts index 0362ec2b..d564ecf4 100644 --- a/src/lib/ae_journals/db_journals.ts +++ b/src/lib/ae_journals/db_journals.ts @@ -80,6 +80,10 @@ export interface Journal { created_on: Date; updated_on?: null|Date; + // Generated fields for sorting locally only + tmp_sort_1?: null|string; + tmp_sort_2?: null|string; + // Additional fields for convenience (database views) file_count?: null|number; // Only files directly under a journal journal_file_id_li_json?: null|string; @@ -299,6 +303,7 @@ export class MySubClassedDexie extends Dexie { name, start_datetime, end_datetime, timezone, + tmp_sort_1, tmp_sort_2, enable, hide, priority, sort, group, notes, created_on, updated_on`, journal_entry: ` id, journal_entry_id, @@ -309,6 +314,7 @@ export class MySubClassedDexie extends Dexie { name, start_datetime, end_datetime, timezone, + tmp_sort_1, tmp_sort_2, enable, hide, priority, sort, group, notes, created_on, updated_on`, }); } diff --git a/src/routes/journals/+page.svelte b/src/routes/journals/+page.svelte index f5ff140f..baaf46ce 100644 --- a/src/routes/journals/+page.svelte +++ b/src/routes/journals/+page.svelte @@ -43,7 +43,7 @@ let ae_acct = data[$slct.account_id]; let lq__journal_obj_li = $derived(liveQuery(async () => { let results = await db_journals.journal - .orderBy('updated_on') + .orderBy('tmp_sort_2') .reverse() .toArray() // .sortBy('start_datetime') diff --git a/src/routes/journals/[journal_id]/+layout.svelte b/src/routes/journals/[journal_id]/+layout.svelte index b57252b7..cbdfbf3d 100644 --- a/src/routes/journals/[journal_id]/+layout.svelte +++ b/src/routes/journals/[journal_id]/+layout.svelte @@ -6,11 +6,17 @@ let { data, children } = $props(); import { goto } from '$app/navigation'; import { + ArrowDown01, ArrowDown10, ArrowDownUp, BookHeart, BookImage, Bookmark, BookOpenText, Check, - FilePlus, Library, - Minus, Notebook, Pencil, Plus, + Eye, EyeOff, + Flag, FlagOff, FilePlus, Library, + MessageSquareWarning, Minus, + Notebook, + Pencil, Plus, SquareLibrary, + Shapes, Share2, ShieldCheck, ShieldMinus, Siren, Skull, + Tags, Trash2, TypeOutline, X } from '@lucide/svelte'; @@ -30,6 +36,9 @@ import { journals_func } from '$lib/ae_journals/ae_journals_functions'; // let { data }: Props = $props(); +let tmp_journal_obj_changed: boolean = $state(false); +let tmp_journal_obj: key_val = $state({}); + let ae_acct = data[$slct.account_id]; if (log_lvl) { @@ -51,6 +60,17 @@ let lq__journal_obj = $derived(liveQuery(async () => { return results; })); +$effect(() => { + if ($lq__journal_obj) { + tmp_journal_obj = { ...$lq__journal_obj }; + } +}); + +$effect(() => { + if (tmp_journal_obj) { + tmp_journal_obj_changed = JSON.stringify(tmp_journal_obj) != JSON.stringify($lq__journal_obj); + } +}); async function handle_update_journal() { if ($journals_slct.tmp_journal_obj.name && $journals_slct.tmp_journal_obj.type_code) { @@ -279,6 +299,7 @@ async function handle_update_journal() { + {@render children()} @@ -438,6 +459,211 @@ async function handle_update_journal() { + +
+ + + + + + + + {#if $lq__journal_obj?.sort} + {$lq__journal_obj.sort} + {:else} + + {/if} + + + + + + { + let data_kv = { + group: tmp_journal_obj.group, + }; + journals_func.update_ae_obj__journal({ + api_cfg: $ae_api, + journal_id: $lq__journal_obj?.journal_id, + data_kv: data_kv, + log_lvl: log_lvl + }).then(() => { + alert('Journal group updated successfully!'); + }).catch((error) => { + console.error('Error updating journal group:', error); + alert('Failed to update journal group.'); + }); + }} + class="input input-sm input-bordered w-24" + title="Set group (for sorting) of this journal" + /> + + + + + + + + + +
+ +