diff --git a/packages/web/src/charts/ChartEditor.js b/packages/web/src/charts/ChartEditor.js
index 961c9e04e..d204029f2 100644
--- a/packages/web/src/charts/ChartEditor.js
+++ b/packages/web/src/charts/ChartEditor.js
@@ -111,6 +111,7 @@ export default function ChartEditor({ data, config, setConfig, sql, conid, datab
+
diff --git a/packages/web/src/charts/chartDataLoader.ts b/packages/web/src/charts/chartDataLoader.ts
index d3aba2df3..dfed5bf30 100644
--- a/packages/web/src/charts/chartDataLoader.ts
+++ b/packages/web/src/charts/chartDataLoader.ts
@@ -24,7 +24,7 @@ export async function loadChartStructure(driver: EngineDriver, conid, database,
export async function loadChartData(driver: EngineDriver, conid, database, sql, config) {
const dataColumns = extractDataColumns(config);
- const { labelColumn, truncateFrom, truncateLimit } = config;
+ const { labelColumn, truncateFrom, truncateLimit, showRelativeValues } = config;
if (!labelColumn || !dataColumns || dataColumns.length == 0) return null;
const select: Select = {
@@ -76,11 +76,30 @@ export async function loadChartData(driver: EngineDriver, conid, database, sql,
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]),
- };
+ let { rows, columns } = resp.data;
+ if (truncateFrom == 'end' && rows) {
+ rows = _.reverse([...rows]);
}
- return resp.data;
+ if (showRelativeValues) {
+ const maxValues = dataColumns.map((col) => _.max(rows.map((row) => row[col])));
+ for (const [col, max] of _.zip(dataColumns, maxValues)) {
+ if (!max) continue;
+ if (!_.isNumber(max)) continue;
+ if (!(max > 0)) continue;
+ rows = rows.map((row) => ({
+ ...row,
+ [col]: (row[col] / max) * 100,
+ }));
+ // columns = columns.map((x) => {
+ // if (x.columnName == col) {
+ // return { columnName: `${col} %` };
+ // }
+ // return x;
+ // });
+ }
+ }
+ return {
+ columns,
+ rows,
+ };
}