Now with the ability to rename files. Had to add a new Dexie update IDB function.

This commit is contained in:
Scott Idem
2024-07-19 16:40:56 -04:00
parent af17a05022
commit b2293784e0
3 changed files with 151 additions and 8 deletions

View File

@@ -250,7 +250,9 @@ export async function handle_update_ae_obj__event_file(
})
.then(function (event_file_obj_update_result) {
if (event_file_obj_update_result) {
handle_db_save_ae_obj_li__event_file({obj_type: 'event_file', obj_li: [event_file_obj_update_result]});
// handle_db_save_ae_obj_li__event_file({obj_type: 'event_file', obj_li: [event_file_obj_update_result]});
// Very important: The results returned from the API does not include fields from the DB views. It is the actual table fields only.
handle_db_update_ae_obj_id__event_file({obj_type: 'event_file', obj_id: event_file_id, data_kv: event_file_obj_update_result});
return event_file_obj_update_result;
} else {
return null;
@@ -480,3 +482,86 @@ export function handle_db_save_ae_obj_li__event_file(
}
return false;
}
export function handle_db_update_ae_obj_id__event_file(
{
obj_type,
obj_id,
data_kv,
}: {
obj_type: string,
obj_id: string,
data_kv: key_val
}
) {
console.log(`*** handle_db_update_ae_obj_id__event_file() ***`);
if (obj_id) {
console.log(`ae_obj ${obj_type}:`, obj_id);
try {
// db_events.files.update(obj_id, data_kv);
db_events.files.update(obj_id,
{
// for_type: data_kv.for_type,
// for_id: data_kv.for_id_id_random,
// for_id_random: data_kv.for_id_random,
// event_id_random: data_kv.event_id_random,
// event_session_id_random: data_kv.event_session_id_random,
// event_presentation_id_random: data_kv.event_presentation_id_random,
// event_presenter_id_random: data_kv.event_presenter_id_random,
// event_location_id_random: data_kv.event_location_id_random,
filename: data_kv.filename,
extension: data_kv.extension,
open_in_os: data_kv.open_in_os,
// lu_file_purpose_id: data_kv.lu_file_purpose_id, // Not id_random in this case?
// lu_event_file_purpose_name: data_kv.lu_event_file_purpose_name,
file_purpose: data_kv.file_purpose,
// enable: data_kv.enable,
// hide: data_kv.hide,
// priority: data_kv.priority,
// sort: data_kv.sort,
// group: data_kv.group,
// notes: data_kv.notes,
// created_on: data_kv.created_on,
// updated_on: data_kv.updated_on,
filename_no_ext: data_kv.filename_no_ext,
filename_w_ext: data_kv.filename_w_ext,
// hosted_file_content_type: data_kv.hosted_file_content_type,
// file_size: data_kv.file_size,
// hosted_file_size: data_kv.hosted_file_size,
// event_location_code: data_kv.event_location_code,
// event_location_name: data_kv.event_location_name,
// event_session_code: data_kv.event_session_code,
// event_session_name: data_kv.event_session_name,
// event_session_start_datetime: data_kv.event_session_start_datetime,
// event_presentation_code: data_kv.event_presentation_code,
// event_presentation_name: data_kv.event_presentation_name,
// event_presentation_start_datetime: data_kv.event_presentation_start_datetime,
// event_presenter_given_name: data_kv.event_presenter_given_name,
// event_presenter_family_name: data_kv.event_presenter_family_name,
// event_presenter_full_name: data_kv.event_presenter_full_name,
// event_presenter_email: data_kv.event_presenter_email,
}
);
console.log(`Update obj with ID: ${obj_id}`);
} catch (error) {
let status = `Failed to update ${obj_id}: ${error}`;
console.log(status);
}
// const id_random = await db_events.files.put(obj);
// console.log(`Put obj with ID: ${data_kv.event_file_id_random}`);
return true;
}
return false;
}

View File

@@ -284,6 +284,8 @@ let events_session_data_struct: key_val = {
show_report__presenters_agree: false,
show_report__recent_files: false,
show_field_edit__filename: false, // For file rename
new_upload_list: null,
files_uploading_count: null,
@@ -291,8 +293,11 @@ let events_session_data_struct: key_val = {
qry_max__presentations: 25,
qry_max__presenters: 75,
qry_max__files: 25,
show_fields__presentation: true,
show_fields__session: true,
tmp_val__filename_no_ext: null, // For file rename
},
// Speakers Management (Collection)

View File

@@ -121,9 +121,7 @@ onMount(() => {
{#each $lq__event_file_obj_li as event_file_obj}
<tr class="ae_obj obj_event_file border-t border-b border-gray-200 hover:bg-gray-50 hover:border-gray-300">
<td class="event_file__file align-middle">
<!-- <div
class="min-w-full"
> -->
{#if !$events_sess.pres_mgmt?.show_field_edit__filename}
<button
disabled={!allow_basic && !allow_moderator && !$ae_loc.trusted_access}
on:click={() => {
@@ -171,7 +169,53 @@ onMount(() => {
</span>
</button>
<!-- </div> -->
{:else}
<!-- Show change filename input field here -->
<span
class="flex flex-col gap-1 text-sm"
>
<input
type="text"
size="12"
placeholder="Filename"
bind:value="{$events_sess.pres_mgmt.tmp_val__filename_no_ext}"
data-original_value="{event_file_obj.filename}"
class="input min-w-72 lg:min-w-96 text-sm"
>
{#if $events_sess.pres_mgmt.tmp_val__filename_no_ext.trim() != event_file_obj.filename_no_ext}
<button
on:click={async () => {
let new_filename = $events_sess.pres_mgmt.tmp_val__filename_no_ext.trim() + '.' + event_file_obj.extension;
let event_file_data = {
filename: new_filename,
};
ae_promises.update__event_file_obj = events_func.handle_update_ae_obj__event_file({
api_cfg: $ae_api,
event_file_id: event_file_obj.event_file_id_random,
data_kv: event_file_data,
log_lvl: 1
})
.then (function (update_results) {
console.log(`Update results:`, update_results);
$events_sess.pres_mgmt.show_field_edit__filename = false;
});
}}
class="btn btn-sm variant-glass-tertiary hover:variant-soft-success"
title="Save changes"
>
{#await ae_promises.update__event_file_obj}
<span class="fas fa-spinner fa-spin mx-1"></span>
<span class="">Saving {event_file_obj.extension}</span>
{:then}
<span class="fas fa-save mx-1"></span>
Save {event_file_obj.extension} filename?
{/await}
</button>
{/if}
</span>
{/if}
</td>
{#if display_mode === 'default'}
@@ -181,12 +225,21 @@ onMount(() => {
>
<div class="flex flex-col gap-1 text-sm">
<button
disabled={!allow_basic || !$ae_loc.administrator_access}
disabled={!allow_basic && !$ae_loc.trusted_access}
on:click={() => {
$events_sess.pres_mgmt.tmp_val__filename_no_ext = event_file_obj.filename_no_ext;
$events_sess.pres_mgmt.show_field_edit__filename = !$events_sess.pres_mgmt.show_field_edit__filename;
}}
class="btn btn-sm variant-glass-tertiary hover:variant-soft-success"
title="The rename function is not ready yet."
class:variant-glass-warning={$events_sess.pres_mgmt.show_field_edit__filename}
title={`Rename this file? "${event_file_obj.filename}"`}
>
<span class="fas fa-edit mx-1"></span>
Rename
{#if $events_sess.pres_mgmt.show_field_edit__filename}
Cancel?
{:else}
Rename
{/if}
</button>
<button
disabled={!allow_basic || !allow_moderator || !$ae_loc.administrator_access}