mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-20 12:26:01 +00:00
charts
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { dumpSqlSelect, Select } from 'dbgate-sqltree';
|
||||
import { EngineDriver } from 'dbgate-types';
|
||||
import axios from '../utility/axios';
|
||||
import _ from 'lodash';
|
||||
import { extractDataColumns } from './DataChart';
|
||||
|
||||
export async function loadChartStructure(driver: EngineDriver, conid, database, sql) {
|
||||
@@ -22,24 +23,11 @@ export async function loadChartStructure(driver: EngineDriver, conid, database,
|
||||
|
||||
export async function loadChartData(driver: EngineDriver, conid, database, sql, config) {
|
||||
const dataColumns = extractDataColumns(config);
|
||||
const { labelColumn } = config;
|
||||
const { labelColumn, truncateFrom, truncateLimit } = config;
|
||||
if (!labelColumn || !dataColumns || dataColumns.length == 0) return null;
|
||||
|
||||
const select: Select = {
|
||||
commandType: 'select',
|
||||
// columns:[
|
||||
// {
|
||||
// exprType:'call',
|
||||
// func:'SUM',
|
||||
// args: [
|
||||
// {
|
||||
// exprType: 'column',
|
||||
// columnName,
|
||||
// source: { alias: 'subq' },
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
// ],
|
||||
|
||||
columns: [
|
||||
{
|
||||
@@ -62,7 +50,7 @@ export async function loadChartData(driver: EngineDriver, conid, database, sql,
|
||||
alias: columnName,
|
||||
})),
|
||||
],
|
||||
topRecords: 500,
|
||||
topRecords: truncateLimit || 100,
|
||||
from: {
|
||||
subQueryString: sql,
|
||||
alias: 'subq',
|
||||
@@ -74,10 +62,24 @@ export async function loadChartData(driver: EngineDriver, conid, database, sql,
|
||||
columnName: labelColumn,
|
||||
},
|
||||
],
|
||||
orderBy: [
|
||||
{
|
||||
exprType: 'column',
|
||||
source: { alias: 'subq' },
|
||||
columnName: labelColumn,
|
||||
direction: truncateFrom == 'end' ? 'DESC' : 'ASC',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const dmp = driver.createDumper();
|
||||
dumpSqlSelect(dmp, select);
|
||||
const resp = await axios.post('database-connections/query-data', { conid, database, sql: dmp.s });
|
||||
if (truncateFrom == 'end' && resp.data.rows) {
|
||||
return {
|
||||
...resp.data,
|
||||
rows: _.reverse([...resp.data.rows]),
|
||||
};
|
||||
}
|
||||
return resp.data;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user