@@ -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