Files
dbgate/packages/web/src/utility/createQuickExportMenu.ts
Jan Prochazka 391d04b45c MPR archive
2025-10-26 18:28:35 +01:00

52 lines
1.4 KiB
TypeScript

import type { QuickExportDefinition } from 'dbgate-types';
import { currentArchive, getCurrentArchive, getExtensions } from '../stores';
import hasPermission from './hasPermission';
import { isProApp } from './proTools';
export function createQuickExportMenuItems(handler: (fmt: QuickExportDefinition) => Function, advancedExportMenuItem) {
const extensions = getExtensions();
return [
isProApp() && {
text: 'Export advanced...',
...advancedExportMenuItem,
},
{ divider: true },
...extensions.quickExports.map(fmt => ({
text: fmt.label,
onClick: handler(fmt),
})),
{ divider: true },
isProApp() && {
text: 'Current archive',
onClick: handler({
extension: 'jsonl',
label: 'Current archive',
noFilenameDependency: true,
createWriter: (fileName, dataName) => ({
functionName: 'archiveWriter',
props: {
fileName: dataName,
folderName: getCurrentArchive(),
},
}),
}),
},
];
}
export default function createQuickExportMenu(
handler: (fmt: QuickExportDefinition) => Function,
advancedExportMenuItem,
additionalFields = {}
) {
if (!hasPermission('dbops/export')) {
return null;
}
return {
text: 'Export',
submenu: createQuickExportMenuItems(handler, advancedExportMenuItem),
...additionalFields,
};
}