Files
dbgate/plugins/dbgate-plugin-excel/src/frontend/index.js
2023-02-17 13:57:30 +01:00

83 lines
1.9 KiB
JavaScript

const fileFormat = {
packageName: 'dbgate-plugin-excel',
// file format identifier
storageType: 'excel',
// file extension without leading dot
extension: 'xlsx',
// human readable file format name
name: 'MS Excel',
// function name from backend, which contains reader factory, postfixed by package name
readerFunc: 'reader@dbgate-plugin-excel',
// function name from backend, which contains writer factory, postfixed by package name
writerFunc: 'writer@dbgate-plugin-excel',
addFileToSourceList: async ({ fileName }, newSources, newValues, apiCall) => {
const resp = await apiCall('plugins/command', {
command: 'analyse',
packageName: 'dbgate-plugin-excel',
args: {
fileName,
},
});
const sheetNames = resp;
for (const sheetName of sheetNames) {
newSources.push(sheetName);
newValues[`sourceFile_${sheetName}`] = {
fileName,
sheetName,
};
}
},
args: [
{
type: 'checkbox',
name: 'singleFile',
label: 'Create single file',
direction: 'target',
},
{
type: 'number',
default: '0',
name: 'skipHeaderRows',
apiName: 'skipHeaderRows',
label: 'Skip header rows',
direction: 'source',
},
],
getDefaultOutputName: (sourceName, values) => {
if (values.target_excel_singleFile) {
return sourceName;
}
return null;
},
getOutputParams: (sourceName, values) => {
if (values.target_excel_singleFile) {
return {
sheetName: values[`targetName_${sourceName}`] || sourceName,
fileName: 'data.xlsx',
};
}
return null;
},
};
export default {
fileFormats: [fileFormat],
quickExports: [
{
label: 'MS Excel',
extension: 'xlsx',
createWriter: (fileName, dataName) => ({
functionName: 'writer@dbgate-plugin-excel',
props: {
fileName,
sheetName: dataName,
},
}),
},
],
};