diff --git a/src/lib/ae_journals/ae_journals__journal_entry.ts b/src/lib/ae_journals/ae_journals__journal_entry.ts index 006e24f3..fd0f817f 100644 --- a/src/lib/ae_journals/ae_journals__journal_entry.ts +++ b/src/lib/ae_journals/ae_journals__journal_entry.ts @@ -332,6 +332,137 @@ export async function delete_ae_obj_id__journal_entry( } + + + +// This new function is using CRUD v2. This should allow for more flexibility in the queries. +// Updated 2025-06-04 +export async function qry__journal_entry( + { + api_cfg, + journal_id, + qry_str = null, // Example: 'name:contains:"test"' + qry_created_on = null, // Example greater than: '2024-10-24' + qry_alert = null, + qry_priority = null, + enabled = 'enabled', + hidden = 'not_hidden', + limit = 50, + offset = 0, + order_by_li = {'group': 'DESC', 'priority': 'DESC', 'sort': 'DESC', 'alert': 'DESC', 'name': 'ASC', 'updated_on': 'DESC', 'created_on': 'DESC'}, + params = {}, + try_cache = true, + log_lvl = 0 + }: { + api_cfg: any, + journal_id: any, + qry_str?: null|string, + qry_created_on?: null|string, + qry_alert?: null|string, + qry_priority?: null|number, + enabled?: string, + hidden?: string, + limit?: number, + offset?: number, + order_by_li?: key_val, + params?: any, + try_cache?: boolean, + log_lvl?: number + } + ) { + log_lvl = 1; + if (log_lvl) { + console.log(`*** qry__journal_entry() *** journal_id=${journal_id}`); + } + + let params_json: key_val = {}; + + params_json['qry'] = []; + + if (qry_str) { + console.log('qry_str:', qry_str); + // let qry_param = + // { + // type: "AND", + // field: "qry_str", + // operator: "LIKE", + // value: qry_str + // }; + let qry_param = + { + type: "", + field: "default_qry_str", // default is really just the standard FT string in the DB + operator: "MATCH", + value: qry_str + }; + params_json['qry'].push(qry_param); + } + + if (qry_created_on) { + let qry_param = + { + type: "AND", + field: "created_on", + operator: ">", + value: qry_created_on + }; + params_json['qry'].push(qry_param); + } + + if (qry_priority) { + console.log('qry_priority:', qry_priority); + let qry_param = + { + type: "AND", + field: "priority", + operator: "=", + value: qry_priority + }; + params_json['qry'].push(qry_param); + } + + ae_promises.load__journal_entry_obj_li = await api.get_ae_obj_li_for_obj_id_crud_v2({ + api_cfg: api_cfg, + obj_type: 'journal_entry', + for_obj_type: 'journal', + for_obj_id: journal_id, + use_alt_tbl: true, // NOTE: We want to use the alt table for journal entry searching??? + use_alt_mdl: false, + use_alt_exp: false, + enabled: enabled, + hidden: hidden, + order_by_li: order_by_li, + limit: limit, + offset: offset, + params_json: params_json, + params: params, + log_lvl: log_lvl + }) + .then(function (journal_entry_obj_li_get_result) { + if (journal_entry_obj_li_get_result) { + if (try_cache) { + db_save_ae_obj_li__journal_entry({ + obj_type: 'journal_entry', + obj_li: journal_entry_obj_li_get_result + }); + } + return journal_entry_obj_li_get_result; + } else { + return []; + } + }); + + if (log_lvl) { + console.log('ae_promises.load__journal_entry_obj_li:', ae_promises.load__journal_entry_obj_li); + } + return ae_promises.load__journal_entry_obj_li; +} + + + + + + // Updated 2025-03-15 // export async function update_ae_obj__journal_entry( // { diff --git a/src/lib/ae_journals/ae_journals_functions.ts b/src/lib/ae_journals/ae_journals_functions.ts index 6ae901b0..ebec36e0 100644 --- a/src/lib/ae_journals/ae_journals_functions.ts +++ b/src/lib/ae_journals/ae_journals_functions.ts @@ -10,12 +10,13 @@ let export_obj = { create_ae_obj__journal: journal.create_ae_obj__journal, delete_ae_obj_id__journal: journal.delete_ae_obj_id__journal, update_ae_obj__journal: journal.update_ae_obj__journal, - db_save_ae_obj_li__journal: journal.db_save_ae_obj_li__journal, + // db_save_ae_obj_li__journal: journal.db_save_ae_obj_li__journal, load_ae_obj_id__journal_entry: journal_entry.load_ae_obj_id__journal_entry, load_ae_obj_li__journal_entry: journal_entry.load_ae_obj_li__journal_entry, create_ae_obj__journal_entry: journal_entry.create_ae_obj__journal_entry, delete_ae_obj_id__journal_entry: journal_entry.delete_ae_obj_id__journal_entry, update_ae_obj__journal_entry: journal_entry.update_ae_obj__journal_entry, - db_save_ae_obj_li__journal_entry: journal_entry.db_save_ae_obj_li__journal_entry, + qry__journal_entry: journal_entry.qry__journal_entry, + // db_save_ae_obj_li__journal_entry: journal_entry.db_save_ae_obj_li__journal_entry, }; export let journals_func = export_obj; diff --git a/src/routes/journals/[journal_id]/+layout.svelte b/src/routes/journals/[journal_id]/+layout.svelte index fe68492d..a0ac9a38 100644 --- a/src/routes/journals/[journal_id]/+layout.svelte +++ b/src/routes/journals/[journal_id]/+layout.svelte @@ -49,6 +49,7 @@ if (log_lvl) { console.log(`ae_acct = `, ae_acct); } +$journals_sess.entry_li = []; $journals_slct.journal_id = ae_acct.slct.journal_id; let lq__journal_obj = $derived(liveQuery(async () => { @@ -293,23 +294,56 @@ async function handle_update_journal() { Search: { + onkeyup={async (event) => { if (event.key === 'Enter') { + log_lvl = 1; // $journals_loc.qry__search_text = event.target.value; // $journals_trig.journal_entry_li = true; // console.log('Search query:', $journals_loc.qry__search_text); + + $journals_prom.load__journal_entry_obj_qry = await journals_func.qry__journal_entry({ + api_cfg: $ae_api, + journal_id: $lq__journal_obj?.journal_id ?? '', + qry_str: $journals_loc.qry__search_text, + + // qry_created_on: null, + // qry_alert: null, + // qry_priority: null, + // qry_type: and_type, + + // enabled: $journals_loc.recovery_meetings.qry__enabled, + // hidden: $journals_loc.recovery_meetings.qry__hidden, + // order_by_li: $journals_loc.recovery_meetings.qry__order_by_li, + // limit: $journals_loc.recovery_meetings.qry__limit, + // try_cache: try_cache, + log_lvl: log_lvl, + }); + if ($journals_prom.load__journal_entry_obj_qry.length) { + $journals_sess.entry_li = $journals_prom.load__journal_entry_obj_qry; + + $journals_sess = { + ...$journals_sess }; // ensure session is updated + + // $journals_trig.journal_entry_li = true; // trigger the entry list to refresh + // $journals_trig.journal_entry_li = $journals_prom.load__journal_entry_obj_qry; + } else { + console.log('Clear the search results: no entries found for that query.'); + // $journals_sess.entry_li = ['']; + $journals_sess.entry_li = null; + // $journals_trig.journal_entry_li = true; + // alert('No journal entries found for that search query.'); + // $journals_sess = $journals_sess; + } } }} - oninput={(event) => { - // $journals_loc.qry__search_text = event.target.value; - // console.log('Search query:', $journals_loc.qry__search_text); - }} title="Search Journal Entries" - class="input input-sm input-bordered w-48 md:w-64" + class="input input-sm input-bordered w-44 text-sm md:w-52" + class:bg-red-200={$journals_sess.entry_li == null} + class:dark:bg-red-800={$journals_sess.entry_li == null} />