Now able to search the Journal Entries!
This commit is contained in:
@@ -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(
|
||||
// {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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:
|
||||
</span>
|
||||
<input
|
||||
disabled={true}
|
||||
disabled={false}
|
||||
type="text"
|
||||
placeholder="Search Journal Entries"
|
||||
bind:value={$journals_loc.qry__search_text}
|
||||
onkeyup={(event) => {
|
||||
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}
|
||||
/>
|
||||
<!-- Clear search text button -->
|
||||
<button
|
||||
|
||||
@@ -67,11 +67,31 @@ let lq__journal_obj = $derived(liveQuery(async () => {
|
||||
|
||||
|
||||
let lq__journal_entry_obj_li = $derived(liveQuery(async () => {
|
||||
log_lvl = 1;
|
||||
if (log_lvl) {
|
||||
console.log(`$lq__journal_obj.cfg_json = `, $lq__journal_obj?.cfg_json);
|
||||
console.log(`$journals_loc.filter__category_code = `, $journals_loc.filter__category_code);
|
||||
}
|
||||
if ($lq__journal_obj?.cfg_json?.entry_group_sort === 'DESC') {
|
||||
if ($journals_sess.entry_li_trigger && !$journals_sess?.entry_li) {
|
||||
$journals_sess.entry_li = null;
|
||||
$journals_sess.entry_li_trigger = false;
|
||||
}
|
||||
if ($journals_sess?.entry_li && $journals_sess?.entry_li?.length) {
|
||||
// $journals_sess.entry_li_trigger = false;
|
||||
let journal_entry_id_random_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
|
||||
|
||||
for (let i = 0; i < $journals_sess?.entry_li.length; i++) {
|
||||
let journal_entry_obj = $journals_sess?.entry_li[i];
|
||||
let journal_entry_id_random = journal_entry_obj.journal_entry_id_random;
|
||||
journal_entry_id_random_li.push(journal_entry_id_random);
|
||||
}
|
||||
// let journal_entry_id_random_li = tmp_li;
|
||||
|
||||
let results = await db_journals.journal_entry
|
||||
.bulkGet(journal_entry_id_random_li);
|
||||
|
||||
return results;
|
||||
} else if ($lq__journal_obj?.cfg_json?.entry_group_sort === 'DESC') {
|
||||
let results = await db_journals.journal_entry
|
||||
// .orderBy('updated_on')
|
||||
.where('journal_id')
|
||||
@@ -117,6 +137,12 @@ $effect(() => {
|
||||
if ($journals_trig.journal_entry_li) {
|
||||
$journals_trig.journal_entry_li = false;
|
||||
|
||||
// if ($journals_trig?.journal_entry_li.length > 0) {
|
||||
// $journals_sess.entry_li = $journals_trig.journal_entry_li;
|
||||
// console.log('TEST TEST TEST');
|
||||
// return ;
|
||||
// }
|
||||
|
||||
if (log_lvl) {
|
||||
console.log(`Triggered: $journals_trig.journal_entry_li`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user