diff --git a/packages/web/src/appobj/ArchiveFolderAppObject.svelte b/packages/web/src/appobj/ArchiveFolderAppObject.svelte index 1843efbdd..8ffa9bec2 100644 --- a/packages/web/src/appobj/ArchiveFolderAppObject.svelte +++ b/packages/web/src/appobj/ArchiveFolderAppObject.svelte @@ -102,8 +102,27 @@ await dbgateApi.deployDb(${JSON.stringify( editor: { sourceConid: '__model', sourceDatabase: `archive:${data.name}`, - targetConid: _.get($currentDatabase, 'connection._id'), - targetDatabase: _.get($currentDatabase, 'name'), + targetConid: $currentDatabase?.connection?._id, + targetDatabase: $currentDatabase?.name, + }, + } + ); + }; + + const handleOpenDuplicatorTab = () => { + openNewTab( + { + title: data.name, + icon: 'img duplicator', + tabComponent: 'DataDuplicatorTab', + props: { + conid: $currentDatabase?.connection?._id, + database: $currentDatabase?.name, + }, + }, + { + editor: { + archiveFolder: data.name, }, } ); @@ -115,6 +134,7 @@ await dbgateApi.deployDb(${JSON.stringify( data.name != 'default' && { text: 'Rename', onClick: handleRename }, data.name != 'default' && $currentDatabase && [ + { text: 'Data duplicator', onClick: handleOpenDuplicatorTab }, { text: 'Generate deploy DB SQL - experimental', onClick: handleGenerateDeploySql }, { text: 'Shell: Deploy DB - experimental', onClick: handleGenerateDeployScript }, ], diff --git a/packages/web/src/icons/FontIcon.svelte b/packages/web/src/icons/FontIcon.svelte index 688cc43a4..189098a5a 100644 --- a/packages/web/src/icons/FontIcon.svelte +++ b/packages/web/src/icons/FontIcon.svelte @@ -226,6 +226,8 @@ 'img type-binary': 'mdi mdi-file color-icon-blue', 'img type-rejson': 'mdi mdi-color-json color-icon-blue', 'img keydb': 'mdi mdi-key color-icon-blue', + + 'img duplicator': 'mdi mdi-content-duplicate color-icon-green', }; diff --git a/packages/web/src/tabs/DataDuplicatorTab.svelte b/packages/web/src/tabs/DataDuplicatorTab.svelte new file mode 100644 index 000000000..b077868af --- /dev/null +++ b/packages/web/src/tabs/DataDuplicatorTab.svelte @@ -0,0 +1,129 @@ + + +