Skip to content

Commit 9882744

Browse files
committed
feat: Add support for loading data from localStorage using storageKey parameter in embedded mode
1 parent 80e6163 commit 9882744

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

src/jsonld-editor/core.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,60 @@ $(document).ready(async function () {
113113
const modeParam = urlParams.get("mode");
114114
const isEmbeddedMode = modeParam === "embedded" || window.parent !== window;
115115

116+
// Check for storageKey parameter (data passed via localStorage from external app)
117+
const storageKeyParam = urlParams.get("storageKey");
118+
116119
if (!fileId || !siteUrl) {
120+
// Check if we have data in localStorage from storageKey parameter
121+
if (storageKeyParam) {
122+
const storedData = localStorage.getItem(storageKeyParam);
123+
if (storedData) {
124+
// Clean up localStorage immediately after reading
125+
localStorage.removeItem(storageKeyParam);
126+
127+
try {
128+
const jsonData = JSON.parse(storedData);
129+
logInfo("Loaded data from localStorage via storageKey parameter");
130+
131+
// Set original filename
132+
setOriginalFileName("ddi-cdi-metadata.jsonld");
133+
134+
// Normalize and prepare the data
135+
const normalizedData = await normalizeToGraphFormat(jsonData);
136+
const migratedData = await migrateContextFormat(normalizedData);
137+
const expanded = await jsonld.expand(migratedData);
138+
139+
setJsonData(migratedData);
140+
setOriginalData(JSON.parse(JSON.stringify(migratedData)));
141+
setExpandedJsonLd(expanded);
142+
143+
// Pre-populate Dataverse URL field if provided
144+
const dataverseUrlParam = urlParams.get("dataverseUrl");
145+
const datasetPidParam = urlParams.get("datasetPid");
146+
if (dataverseUrlParam && datasetPidParam) {
147+
// Build the dataset URL for the Dataverse URL input field
148+
// The persistentId must be URL-encoded in the query parameter
149+
const fullUrl = `${dataverseUrlParam}/dataset.xhtml?persistentId=${encodeURIComponent(datasetPidParam)}`;
150+
$("#dataverseUrlInput").val(fullUrl);
151+
logInfo(
152+
`Pre-populated Dataverse URL: ${fullUrl} (dataset PID: ${datasetPidParam})`
153+
);
154+
}
155+
156+
// Show the Save to Dataverse button in standalone mode
157+
$("#load-local-btn").show();
158+
$("#load-dataverse-btn").show();
159+
160+
setupEventHandlers();
161+
await renderData();
162+
163+
return;
164+
} catch (error) {
165+
logError("Failed to parse data from localStorage:", error);
166+
}
167+
}
168+
}
169+
117170
if (isEmbeddedMode) {
118171
// In embedded mode, wait for data from parent via postMessage
119172
setIsEmbeddedMode(true);

0 commit comments

Comments
 (0)