mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-25 07:26:00 +00:00
SYNC: configurable export watermark
This commit is contained in:
committed by
Diflow
parent
3f98f9ff39
commit
4bc9b70882
@@ -195,8 +195,8 @@ module.exports = {
|
||||
},
|
||||
|
||||
exportDiagram_meta: true,
|
||||
async exportDiagram({ filePath, html, css, themeType, themeClassName }) {
|
||||
await fs.writeFile(filePath, getDiagramExport(html, css, themeType, themeClassName));
|
||||
async exportDiagram({ filePath, html, css, themeType, themeClassName, watermark }) {
|
||||
await fs.writeFile(filePath, getDiagramExport(html, css, themeType, themeClassName, watermark));
|
||||
return true;
|
||||
},
|
||||
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
const getDiagramExport = (html, css, themeType, themeClassName) => {
|
||||
const getDiagramExport = (html, css, themeType, themeClassName, watermark) => {
|
||||
const watermarkHtml = watermark
|
||||
? `
|
||||
<div style="position: fixed; bottom: 0; right: 0; padding: 5px; font-size: 12px; color: var(--theme-font-2); background-color: var(--theme-bg-2); border-top-left-radius: 5px; border: 1px solid var(--theme-border);">
|
||||
${watermark}
|
||||
</div>
|
||||
`
|
||||
: '';
|
||||
return `<html>
|
||||
<meta charset='utf-8'>
|
||||
|
||||
@@ -17,6 +24,7 @@ const getDiagramExport = (html, css, themeType, themeClassName) => {
|
||||
|
||||
<body class='${themeType == 'dark' ? 'theme-type-dark' : 'theme-type-light'} ${themeClassName}'>
|
||||
${html}
|
||||
${watermarkHtml}
|
||||
</body>
|
||||
|
||||
</html>`;
|
||||
|
||||
@@ -59,3 +59,5 @@ export function chooseTopTables(tables: TableInfo[], count: number, tableFilter:
|
||||
}
|
||||
|
||||
export const DIAGRAM_ZOOMS = [0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1, 1.25, 1.5, 1.75, 2];
|
||||
|
||||
export const DIAGRAM_DEFAULT_WATERMARK = 'Powered by [dbgate.io](https://dbgate.io)';
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
import { showModal } from '../modals/modalTools';
|
||||
import ChooseColorModal from '../modals/ChooseColorModal.svelte';
|
||||
import { currentThemeDefinition } from '../stores';
|
||||
import { chooseTopTables, DIAGRAM_ZOOMS, extendDatabaseInfoFromApps } from 'dbgate-tools';
|
||||
import { chooseTopTables, DIAGRAM_DEFAULT_WATERMARK, DIAGRAM_ZOOMS, extendDatabaseInfoFromApps } from 'dbgate-tools';
|
||||
import SearchInput from '../elements/SearchInput.svelte';
|
||||
import CloseSearchButton from '../buttons/CloseSearchButton.svelte';
|
||||
import DragColumnMemory from './DragColumnMemory.svelte';
|
||||
@@ -763,6 +763,16 @@
|
||||
);
|
||||
}
|
||||
|
||||
function getWatermarkHtml() {
|
||||
const replaceLinks = text => text.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" style="color: var(--theme-font-link)" target="_blank">$1</a>');
|
||||
|
||||
if (value?.style?.omitExportWatermark) return null;
|
||||
if (value?.style?.exportWatermark) {
|
||||
return replaceLinks(value?.style?.exportWatermark);
|
||||
}
|
||||
return replaceLinks(DIAGRAM_DEFAULT_WATERMARK);
|
||||
}
|
||||
|
||||
export async function exportDiagram() {
|
||||
const cssLinks = ['global.css', 'build/bundle.css'];
|
||||
let css = '';
|
||||
@@ -784,6 +794,7 @@
|
||||
css,
|
||||
themeType: $currentThemeDefinition?.themeType,
|
||||
themeClassName: $currentThemeDefinition?.themeClassName,
|
||||
watermark: getWatermarkHtml(),
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user