mirror of
https://github.com/getredash/redash.git
synced 2026-03-22 10:00:17 -04:00
* Prettier all the JS files * Add GitHub Action to autoformat code pushed to master * Fix eslint violation due to formatting. * Remove GitHub actions for styling * Add restyled.io config
98 lines
2.3 KiB
JavaScript
98 lines
2.3 KiB
JavaScript
import { isNil, isObject, each, forOwn, sortBy, values } from "lodash";
|
|
|
|
function addPointToSeries(point, seriesCollection, seriesName) {
|
|
if (seriesCollection[seriesName] === undefined) {
|
|
seriesCollection[seriesName] = {
|
|
name: seriesName,
|
|
type: "column",
|
|
data: [],
|
|
};
|
|
}
|
|
|
|
seriesCollection[seriesName].data.push(point);
|
|
}
|
|
|
|
export default function getChartData(data, options) {
|
|
const series = {};
|
|
|
|
const mappings = options.columnMapping;
|
|
|
|
each(data, row => {
|
|
let point = { $raw: row };
|
|
let seriesName = null;
|
|
let xValue = 0;
|
|
const yValues = {};
|
|
let eValue = null;
|
|
let sizeValue = null;
|
|
let zValue = null;
|
|
|
|
forOwn(row, (value, definition) => {
|
|
definition = "" + definition;
|
|
const definitionParts = definition.split("::") || definition.split("__");
|
|
const name = definitionParts[0];
|
|
const type = mappings ? mappings[definition] : definitionParts[1];
|
|
|
|
if (type === "unused") {
|
|
return;
|
|
}
|
|
|
|
if (type === "x") {
|
|
xValue = value;
|
|
point[type] = value;
|
|
}
|
|
if (type === "y") {
|
|
yValues[name] = value;
|
|
point[type] = value;
|
|
}
|
|
if (type === "yError") {
|
|
eValue = value;
|
|
point[type] = value;
|
|
}
|
|
|
|
if (type === "series") {
|
|
seriesName = String(value);
|
|
}
|
|
|
|
if (type === "size") {
|
|
point[type] = value;
|
|
sizeValue = value;
|
|
}
|
|
|
|
if (type === "zVal") {
|
|
point[type] = value;
|
|
zValue = value;
|
|
}
|
|
|
|
if (type === "multiFilter" || type === "multi-filter") {
|
|
seriesName = String(value);
|
|
}
|
|
});
|
|
|
|
if (isNil(seriesName)) {
|
|
each(yValues, (yValue, ySeriesName) => {
|
|
point = { x: xValue, y: yValue, $raw: point.$raw };
|
|
if (eValue !== null) {
|
|
point.yError = eValue;
|
|
}
|
|
|
|
if (sizeValue !== null) {
|
|
point.size = sizeValue;
|
|
}
|
|
|
|
if (zValue !== null) {
|
|
point.zVal = zValue;
|
|
}
|
|
addPointToSeries(point, series, ySeriesName);
|
|
});
|
|
} else {
|
|
addPointToSeries(point, series, seriesName);
|
|
}
|
|
});
|
|
return sortBy(values(series), ({ name }) => {
|
|
if (isObject(options.seriesOptions[name])) {
|
|
return options.seriesOptions[name].zIndex || 0;
|
|
}
|
|
return 0;
|
|
});
|
|
}
|