function trim_and_upload_import_file(frm) { frappe.confirm( __( 'Trim leading and trailing spaces from all cells, upload the cleaned file, and update Import File?' ), () => { frappe.call({ method: 'asset_lite.api.data_import_api.trim_and_upload_import_file', args: { data_import: frm.doc.name }, freeze: true, freeze_message: __('Trimming and uploading file...'), callback(r) { if (!r.message) { return; } frappe.show_alert( { message: r.message.summary || __('File trimmed and uploaded.'), indicator: 'green', }, 5 ); frm.reload_doc().then(() => frm.trigger('import_file')); }, }); } ); } function add_trim_and_upload_button(frm) { if (frm.is_new() || !frm.doc.import_file || frm.doc.google_sheets_url) { frm.fields_dict.import_file?.$wrapper?.find('.trim-upload-btn').remove(); return; } const label = __('Trim and Upload file'); const action = () => trim_and_upload_import_file(frm); frm.add_custom_button(label, action, __('Actions')); frm.page.add_action_item(label, action); const field = frm.get_field('import_file'); if (!field?.$wrapper) { return; } field.$wrapper.find('.trim-upload-btn').remove(); const $btn = $(``); $btn.on('click', action); const $attachRow = field.$wrapper.find('.attached-file, .file-preview, .control-input-wrapper').last(); if ($attachRow.length) { $attachRow.append($btn); } else { field.$wrapper.append($btn); } } frappe.ui.form.on('Data Import', { refresh(frm) { add_trim_and_upload_button(frm); }, onload_post_render(frm) { add_trim_and_upload_button(frm); }, });