diff --git a/packages/api/src/controllers/files.js b/packages/api/src/controllers/files.js index d71a67af8..baebe8066 100644 --- a/packages/api/src/controllers/files.js +++ b/packages/api/src/controllers/files.js @@ -6,6 +6,7 @@ const getChartExport = require('../utility/getChartExport'); const hasPermission = require('../utility/hasPermission'); const socket = require('../utility/socket'); const scheduler = require('./scheduler'); +const getDiagramExport = require('../utility/getDiagramExport'); function serialize(format, data) { if (format == 'text') return data; @@ -152,4 +153,10 @@ module.exports = { } return true; }, + + exportDiagram_meta: true, + async exportDiagram({ filePath, html, css }) { + await fs.writeFile(filePath, getDiagramExport(html, css)); + return true; + }, }; diff --git a/packages/api/src/utility/getDiagramExport.js b/packages/api/src/utility/getDiagramExport.js new file mode 100644 index 000000000..0fc55becc --- /dev/null +++ b/packages/api/src/utility/getDiagramExport.js @@ -0,0 +1,21 @@ +const getDiagramExport = (html,css) => { + return ` + + + + + + + + + + ${html} + + + `; + }; + + module.exports = getDiagramExport; + \ No newline at end of file diff --git a/packages/web/src/designer/Designer.svelte b/packages/web/src/designer/Designer.svelte index fce13cb31..e93caa7f9 100644 --- a/packages/web/src/designer/Designer.svelte +++ b/packages/web/src/designer/Designer.svelte @@ -11,6 +11,18 @@ testEnabled: () => getCurrentEditor()?.canArrange(), onClick: () => getCurrentEditor().arrange(), }); + + registerCommand({ + id: 'diagram.export', + category: 'Designer', + toolbarName: 'Export diagram', + name: 'Export diagram', + icon: 'icon report', + toolbar: true, + isRelatedToTab: true, + onClick: () => getCurrentEditor().exportDiagram(), + testEnabled: () => getCurrentEditor()?.canExport(), + }); diff --git a/packages/web/src/designer/DiagramDesigner.svelte b/packages/web/src/designer/DiagramDesigner.svelte index ca9b47cae..d64f629dc 100644 --- a/packages/web/src/designer/DiagramDesigner.svelte +++ b/packages/web/src/designer/DiagramDesigner.svelte @@ -15,6 +15,7 @@ allowScrollColumns: false, allowAddAllReferences: true, canArrange: true, + canExport: true, }} referenceComponent={DiagramDesignerReference} /> diff --git a/packages/web/src/designer/QueryDesigner.svelte b/packages/web/src/designer/QueryDesigner.svelte index 6c2932a01..9482f66bb 100644 --- a/packages/web/src/designer/QueryDesigner.svelte +++ b/packages/web/src/designer/QueryDesigner.svelte @@ -15,6 +15,7 @@ allowScrollColumns: true, allowAddAllReferences: false, canArrange: false, + canExport: false, }} referenceComponent={QueryDesignerReference} /> diff --git a/packages/web/src/tabs/DiagramTab.svelte b/packages/web/src/tabs/DiagramTab.svelte index 1b1d5f750..0da293c16 100644 --- a/packages/web/src/tabs/DiagramTab.svelte +++ b/packages/web/src/tabs/DiagramTab.svelte @@ -82,6 +82,7 @@ { command: 'diagram.save' }, { command: 'diagram.saveAs' }, { command: 'designer.arrange' }, + { command: 'diagram.export' }, { divider: true }, { command: 'diagram.undo' }, { command: 'diagram.redo' },