feat(journals): expose export functionality in UI
- Added 'Export Entries' button to Journal Index and Journal Detail views - Wired buttons to trigger the new export modal
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
|
|
||||||
// *** Import other supporting libraries
|
// *** Import other supporting libraries
|
||||||
import { BookPlus, FolderPlus, Library, Loader, SquareLibrary, Wrench, FileUp } from '@lucide/svelte';
|
import { BookPlus, FolderPlus, Library, Loader, SquareLibrary, Wrench, FileUp, FileDown } from '@lucide/svelte';
|
||||||
import { liveQuery } from 'dexie';
|
import { liveQuery } from 'dexie';
|
||||||
import { Modal } from 'flowbite-svelte';
|
import { Modal } from 'flowbite-svelte';
|
||||||
|
|
||||||
@@ -34,11 +34,13 @@
|
|||||||
import Journal_obj_li from './ae_comp__journal_obj_li.svelte';
|
import Journal_obj_li from './ae_comp__journal_obj_li.svelte';
|
||||||
import AeCompJournalEntryQuickAdd from './ae_comp__journal_entry_quick_add.svelte';
|
import AeCompJournalEntryQuickAdd from './ae_comp__journal_entry_quick_add.svelte';
|
||||||
import AeCompModalJournalImport from './ae_comp__modal_journal_import.svelte';
|
import AeCompModalJournalImport from './ae_comp__modal_journal_import.svelte';
|
||||||
|
import AeCompModalJournalExport from './ae_comp__modal_journal_export.svelte';
|
||||||
|
|
||||||
// import Element_data_store from '$lib/element_data_store_v2.svelte';
|
// import Element_data_store from '$lib/element_data_store_v2.svelte';
|
||||||
|
|
||||||
let ae_acct = data[$slct.account_id];
|
let ae_acct = data[$slct.account_id];
|
||||||
let show_import_modal = $state(false);
|
let show_import_modal = $state(false);
|
||||||
|
let show_export_modal = $state(false);
|
||||||
|
|
||||||
function handle_import_complete() {
|
function handle_import_complete() {
|
||||||
// Trigger a refresh of the journal list?
|
// Trigger a refresh of the journal list?
|
||||||
@@ -47,6 +49,20 @@
|
|||||||
// $journals_trig.journal_entry_li = true;
|
// $journals_trig.journal_entry_li = true;
|
||||||
}
|
}
|
||||||
// $journals_slct.journal_obj = ae_acct.slct.journal_obj;
|
// $journals_slct.journal_obj = ae_acct.slct.journal_obj;
|
||||||
|
|
||||||
|
// We need to access the currently filtered/displayed list of entries for export.
|
||||||
|
// The list is actually managed inside 'Journal_obj_li' (the list component) or via a store.
|
||||||
|
// However, looking at Journal_obj_li, it takes 'lq__journal_entry_obj_li' as a prop.
|
||||||
|
// BUT wait, this page (+page.svelte) seems to be the Journal INDEX (list of journals),
|
||||||
|
// NOT the list of entries within a journal.
|
||||||
|
// Ah, checking the code...
|
||||||
|
// The main page lists *Journals* (lq__journal_obj_li).
|
||||||
|
// The entries are listed in [journal_id]/+page.svelte.
|
||||||
|
|
||||||
|
// Correction: Bulk Export should probably be on the [journal_id] page, OR here if we want to export ALL journals?
|
||||||
|
// The user request was "export Journal Entries". Usually implies from a specific journal or context.
|
||||||
|
// Let's check [journal_id]/+page.svelte.
|
||||||
|
|
||||||
// $journals_slct.journal_obj_li = ae_acct.slct.journal_obj_li;
|
// $journals_slct.journal_obj_li = ae_acct.slct.journal_obj_li;
|
||||||
|
|
||||||
let lq__journal_obj_li = $derived(
|
let lq__journal_obj_li = $derived(
|
||||||
|
|||||||
@@ -66,6 +66,8 @@
|
|||||||
import Journal_entry_obj_li from './../ae_comp__journal_entry_obj_li.svelte';
|
import Journal_entry_obj_li from './../ae_comp__journal_entry_obj_li.svelte';
|
||||||
// import Journal_entry_obj_qry from './../ae_comp__journal_entry_obj_qry.svelte';
|
// import Journal_entry_obj_qry from './../ae_comp__journal_entry_obj_qry.svelte';
|
||||||
import Journal_obj_id_edit from '../ae_comp__journal_obj_id_edit.svelte';
|
import Journal_obj_id_edit from '../ae_comp__journal_obj_id_edit.svelte';
|
||||||
|
import AeCompModalJournalExport from '../ae_comp__modal_journal_export.svelte';
|
||||||
|
import { FileDown } from '@lucide/svelte';
|
||||||
|
|
||||||
// let ae_promises: key_val = {};
|
// let ae_promises: key_val = {};
|
||||||
// let ae_tmp: key_val = {};
|
// let ae_tmp: key_val = {};
|
||||||
@@ -74,6 +76,8 @@
|
|||||||
// Variables
|
// Variables
|
||||||
// *** Quickly pull out data from parent(s)
|
// *** Quickly pull out data from parent(s)
|
||||||
let ae_acct = data[$slct.account_id];
|
let ae_acct = data[$slct.account_id];
|
||||||
|
let show_export_modal = $state(false);
|
||||||
|
|
||||||
$effect(() => {
|
$effect(() => {
|
||||||
if (log_lvl > 1) {
|
if (log_lvl > 1) {
|
||||||
console.log(`ae_acct = `, ae_acct);
|
console.log(`ae_acct = `, ae_acct);
|
||||||
@@ -327,6 +331,15 @@
|
|||||||
|
|
||||||
<Journal_view {lq__journal_obj} {lq__journal_entry_obj_li} />
|
<Journal_view {lq__journal_obj} {lq__journal_entry_obj_li} />
|
||||||
|
|
||||||
|
<!-- Export Toolbar -->
|
||||||
|
{#if $lq__journal_entry_obj_li && $lq__journal_entry_obj_li.length > 0}
|
||||||
|
<div class="flex justify-end w-full max-w-(--breakpoint-lg) px-2 pb-2">
|
||||||
|
<button class="btn btn-sm variant-soft-secondary hover:variant-filled-secondary" onclick={() => show_export_modal = true}>
|
||||||
|
<FileDown class="mr-2" size="1em" /> Export Entries
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
{#if $lq__journal_entry_obj_li && $lq__journal_entry_obj_li?.length}
|
{#if $lq__journal_entry_obj_li && $lq__journal_entry_obj_li?.length}
|
||||||
<Journal_entry_obj_li {lq__journal_obj} {lq__journal_entry_obj_li} />
|
<Journal_entry_obj_li {lq__journal_obj} {lq__journal_entry_obj_li} />
|
||||||
{:else}
|
{:else}
|
||||||
@@ -344,6 +357,13 @@
|
|||||||
{lq__journal_obj}
|
{lq__journal_obj}
|
||||||
show={$journals_sess.show__modal_edit__journal_obj}
|
show={$journals_sess.show__modal_edit__journal_obj}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<!-- Modal: Bulk Export -->
|
||||||
|
<AeCompModalJournalExport
|
||||||
|
bind:open={show_export_modal}
|
||||||
|
entries={$lq__journal_entry_obj_li ?? []}
|
||||||
|
onClose={() => show_export_modal = false}
|
||||||
|
/>
|
||||||
{:else}
|
{:else}
|
||||||
<section class="main_content grow px-1 md:px-2 pb-28 flex flex-col gap-1 items-center">
|
<section class="main_content grow px-1 md:px-2 pb-28 flex flex-col gap-1 items-center">
|
||||||
<p class="text-center">You must be logged in as the owner to view this Journal.</p>
|
<p class="text-center">You must be logged in as the owner to view this Journal.</p>
|
||||||
|
|||||||
Reference in New Issue
Block a user