From ca3b509918fd1957fb2ec1cb30718da33021b2d1 Mon Sep 17 00:00:00 2001 From: Siddhartha Dasari <143531683+Siddhartha03D@users.noreply.github.com> Date: Sat, 4 Oct 2025 20:51:45 +0530 Subject: [PATCH] Added Auto Save Draft Feature that Implements automatic form data and Adds draft restoration --- .../Auto Save Draft Feature/script.js | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Client-Side Components/Catalog Client Script/Auto Save Draft Feature/script.js diff --git a/Client-Side Components/Catalog Client Script/Auto Save Draft Feature/script.js b/Client-Side Components/Catalog Client Script/Auto Save Draft Feature/script.js new file mode 100644 index 0000000000..89cf714501 --- /dev/null +++ b/Client-Side Components/Catalog Client Script/Auto Save Draft Feature/script.js @@ -0,0 +1,66 @@ +/** + * Auto-save draft feature for Catalog Client Script + * + * This script automatically saves form data as a draft in the browser's sessionStorage + * every minute if changes are detected. It also provides functionality to restore + * the last saved draft when the form is loaded. + */ + +// Executes when the form loads +function onLoad() { + var autosaveInterval = 60000; // 1 minute + + // Try to restore previous draft + restoreLastDraft(); + + // Set up auto-save interval + setInterval(function() { + if (g_form.isModified()) { + saveDraft(); + } + }, autosaveInterval); +} + +// Saves the current form state as a draft +function saveDraft() { + try { + var draftData = {}; + g_form.serialize(draftData); + + var draftKey = 'catalogDraft_' + g_form.getUniqueValue(); + sessionStorage.setItem(draftKey, JSON.stringify({ + timestamp: new Date().getTime(), + data: draftData + })); + + g_form.addInfoMessage('Draft saved automatically'); + } catch (e) { + console.error('Error saving draft: ' + e); + } +} + +// Restores the last saved draft if available +function restoreLastDraft() { + try { + var draftKey = 'catalogDraft_' + g_form.getUniqueValue(); + var savedDraft = sessionStorage.getItem(draftKey); + + if (savedDraft) { + var draftData = JSON.parse(savedDraft); + var timestamp = new Date(draftData.timestamp); + + // Ask user if they want to restore the draft + if (confirm('A draft from ' + timestamp.toLocaleString() + ' was found. Would you like to restore it?')) { + Object.keys(draftData.data).forEach(function(field) { + g_form.setValue(field, draftData.data[field]); + }); + g_form.addInfoMessage('Draft restored from ' + timestamp.toLocaleString()); + } else { + // Clear the draft if user chooses not to restore + sessionStorage.removeItem(draftKey); + } + } + } catch (e) { + console.error('Error restoring draft: ' + e); + } +} \ No newline at end of file