mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-20 01:55:59 +00:00
chart fixes
This commit is contained in:
@@ -24,8 +24,7 @@
|
||||
|
||||
import contextMenu, { getContextMenu, registerMenu } from '../utility/contextMenu';
|
||||
import createActivator, { getActiveComponent } from '../utility/createActivator';
|
||||
import { saveFileToDisk } from '../utility/exportElectronFile';
|
||||
import resolveApi from '../utility/resolveApi';
|
||||
import { saveFileToDisk } from '../utility/exportElectronFile';
|
||||
|
||||
export let data;
|
||||
export let title;
|
||||
|
||||
@@ -29,7 +29,8 @@
|
||||
// export let menu;
|
||||
|
||||
let availableColumnNames = [];
|
||||
let error = null;
|
||||
let errorLoadingColumns = null;
|
||||
let errorLoadingData = null;
|
||||
let loadedData = null;
|
||||
|
||||
$: config = $configStore;
|
||||
@@ -45,25 +46,32 @@
|
||||
const driver = await getDriver();
|
||||
if (!driver) return;
|
||||
try {
|
||||
errorLoadingColumns = null;
|
||||
const columns = await loadChartStructure(driver, conid, database, sql);
|
||||
availableColumnNames = columns;
|
||||
// configStore.update(x => ({ ...x, labelColumn: availableColumnNames[0] }));
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
error = err.message;
|
||||
errorLoadingColumns = err.message;
|
||||
}
|
||||
};
|
||||
|
||||
const handleLoadData = async () => {
|
||||
const driver = await getDriver();
|
||||
if (!driver) return;
|
||||
const loaded = await loadChartData(driver, conid, database, sql, config);
|
||||
if (!loaded) return;
|
||||
const { columns, rows } = loaded;
|
||||
loadedData = {
|
||||
structure: columns,
|
||||
rows,
|
||||
};
|
||||
try {
|
||||
errorLoadingData = null;
|
||||
const loaded = await loadChartData(driver, conid, database, sql, config);
|
||||
if (!loaded) return;
|
||||
const { columns, rows } = loaded;
|
||||
loadedData = {
|
||||
structure: columns,
|
||||
rows,
|
||||
};
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
errorLoadingData = err.message;
|
||||
}
|
||||
};
|
||||
|
||||
$: {
|
||||
@@ -154,8 +162,10 @@
|
||||
</div>
|
||||
|
||||
<svelte:fragment slot="2">
|
||||
{#if error}
|
||||
<ErrorInfo message={error} alignTop />
|
||||
{#if errorLoadingColumns}
|
||||
<ErrorInfo message={errorLoadingColumns} alignTop />
|
||||
{:else if errorLoadingData}
|
||||
<ErrorInfo message={errorLoadingData} alignTop />
|
||||
{:else}
|
||||
<DataChart data={data || loadedData} />
|
||||
{/if}
|
||||
|
||||
@@ -75,7 +75,10 @@ export async function loadChartData(driver: EngineDriver, conid, database, sql,
|
||||
const dmp = driver.createDumper();
|
||||
dumpSqlSelect(dmp, select);
|
||||
const resp = await axiosInstance.post('database-connections/query-data', { conid, database, sql: dmp.s });
|
||||
let { rows, columns } = resp.data;
|
||||
let { rows, columns, errorMessage } = resp.data;
|
||||
if (errorMessage) {
|
||||
throw new Error(errorMessage);
|
||||
}
|
||||
if (truncateFrom == 'end' && rows) {
|
||||
rows = _.reverse([...rows]);
|
||||
}
|
||||
@@ -97,6 +100,9 @@ export async function loadChartData(driver: EngineDriver, conid, database, sql,
|
||||
// });
|
||||
}
|
||||
}
|
||||
|
||||
console.log('Loaded chart data', { columns, rows });
|
||||
|
||||
return {
|
||||
columns,
|
||||
rows,
|
||||
|
||||
@@ -11,18 +11,6 @@
|
||||
|
||||
undoRedo: true,
|
||||
});
|
||||
|
||||
registerCommand({
|
||||
id: 'chart.export',
|
||||
category: 'Chart',
|
||||
toolbarName: 'Export',
|
||||
name: 'Export chart',
|
||||
icon: 'icon report',
|
||||
toolbar: true,
|
||||
isRelatedToTab: true,
|
||||
onClick: () => getCurrentEditor().exportChart(),
|
||||
testEnabled: () => getCurrentEditor() != null,
|
||||
});
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
|
||||
Reference in New Issue
Block a user