Skip to content

Commit ca3b509

Browse files
Added Auto Save Draft Feature that Implements automatic form data and Adds draft restoration
1 parent f609e38 commit ca3b509

File tree

1 file changed

+66
-0
lines changed
  • Client-Side Components/Catalog Client Script/Auto Save Draft Feature

1 file changed

+66
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/**
2+
* Auto-save draft feature for Catalog Client Script
3+
*
4+
* This script automatically saves form data as a draft in the browser's sessionStorage
5+
* every minute if changes are detected. It also provides functionality to restore
6+
* the last saved draft when the form is loaded.
7+
*/
8+
9+
// Executes when the form loads
10+
function onLoad() {
11+
var autosaveInterval = 60000; // 1 minute
12+
13+
// Try to restore previous draft
14+
restoreLastDraft();
15+
16+
// Set up auto-save interval
17+
setInterval(function() {
18+
if (g_form.isModified()) {
19+
saveDraft();
20+
}
21+
}, autosaveInterval);
22+
}
23+
24+
// Saves the current form state as a draft
25+
function saveDraft() {
26+
try {
27+
var draftData = {};
28+
g_form.serialize(draftData);
29+
30+
var draftKey = 'catalogDraft_' + g_form.getUniqueValue();
31+
sessionStorage.setItem(draftKey, JSON.stringify({
32+
timestamp: new Date().getTime(),
33+
data: draftData
34+
}));
35+
36+
g_form.addInfoMessage('Draft saved automatically');
37+
} catch (e) {
38+
console.error('Error saving draft: ' + e);
39+
}
40+
}
41+
42+
// Restores the last saved draft if available
43+
function restoreLastDraft() {
44+
try {
45+
var draftKey = 'catalogDraft_' + g_form.getUniqueValue();
46+
var savedDraft = sessionStorage.getItem(draftKey);
47+
48+
if (savedDraft) {
49+
var draftData = JSON.parse(savedDraft);
50+
var timestamp = new Date(draftData.timestamp);
51+
52+
// Ask user if they want to restore the draft
53+
if (confirm('A draft from ' + timestamp.toLocaleString() + ' was found. Would you like to restore it?')) {
54+
Object.keys(draftData.data).forEach(function(field) {
55+
g_form.setValue(field, draftData.data[field]);
56+
});
57+
g_form.addInfoMessage('Draft restored from ' + timestamp.toLocaleString());
58+
} else {
59+
// Clear the draft if user chooses not to restore
60+
sessionStorage.removeItem(draftKey);
61+
}
62+
}
63+
} catch (e) {
64+
console.error('Error restoring draft: ' + e);
65+
}
66+
}

0 commit comments

Comments
 (0)