@@ -18,6 +18,7 @@ import { FiltersModel } from '../filters';
1818import { QueriesModel } from '../queries' ;
1919import { SQLSnippetsModel } from '../sql-snippets' ;
2020
21+ import { v4 as uuidv4 } from 'uuid' ;
2122import { TAdditionalQueryInfo } from '~/api-caller/request' ;
2223import {
2324 formatSQLSnippet ,
@@ -281,24 +282,45 @@ const _ContentModel = types
281282 self . views . findByID ( viewID ) ?. removePanelID ( panelID ) ;
282283 } ,
283284 addANewPanel ( viewID : string ) {
284- const id = new Date ( ) . getTime ( ) . toString ( ) ;
285+ const id = uuidv4 ( ) ;
285286 self . panels . append ( getNewPanel ( id ) ) ;
286287 self . views . findByID ( viewID ) ?. appendPanelID ( id ) ;
287288 } ,
288289 applyJSONSchema ( partialSchema : AnyObject ) {
289- const { panels, filters, definition = { } } = partialSchema ;
290+ const { views , panels, filters, definition = { } } = partialSchema ;
290291 const { queries, sqlSnippets, mock_context } = definition ;
292+ const panelIDMap : Map < string , string > = new Map ( ) ; // old -> new
291293
292294 // PANELS
293295 if ( Array . isArray ( panels ) ) {
294- const newPanels = panels . map ( ( p ) => ( {
295- ...p ,
296- id : new Date ( ) . getTime ( ) . toString ( ) ,
297- } ) ) ;
296+ const newPanels = panels . map ( ( p ) => {
297+ const newID = uuidv4 ( ) ;
298+ panelIDMap . set ( p . id , newID ) ;
299+ return {
300+ ...p ,
301+ id : newID ,
302+ } ;
303+ } ) ;
298304 self . panels . appendMultiple ( newPanels ) ;
299305
300- const panelIDs = newPanels . map ( ( p ) => p . id ) ;
301- self . views . VIE ?. appendPanelIDs ( panelIDs ) ;
306+ // import panels to current view
307+ if ( ! Array . isArray ( views ) || views . length === 0 ) {
308+ const panelIDs = newPanels . map ( ( p ) => p . id ) ;
309+ self . views . VIE ?. appendPanelIDs ( panelIDs ) ;
310+ }
311+ }
312+
313+ // VIEWS
314+ if ( Array . isArray ( views ) ) {
315+ const newViews = views . map ( ( v ) => {
316+ const panelIDs = v . panelIDs . map ( ( oldID : string ) => panelIDMap . get ( oldID ) ?? oldID ) ;
317+ return {
318+ ...v ,
319+ id : uuidv4 ( ) ,
320+ panelIDs,
321+ } ;
322+ } ) ;
323+ self . views . appendMultiple ( newViews ) ;
302324 }
303325
304326 // FILTERS
0 commit comments