feat(plugin-chart-echarts): add support for generic axis to mixed chart (#20097)

* feat(plugin-chart-echarts): add support for generic axis to mixed chart

* fix tests + add new tests

* address review comments

* simplify control panel

* fix types and tests
This commit is contained in:
Ville Brofeldt
2022-05-19 13:51:52 +03:00
committed by GitHub
parent b2a7fadba9
commit d5c5e58583
12 changed files with 267 additions and 105 deletions

View File

@@ -18,10 +18,12 @@
*/
import {
buildQueryContext,
QueryFormData,
QueryObject,
DTTM_ALIAS,
ensureIsArray,
normalizeOrderBy,
PostProcessingPivot,
QueryFormData,
QueryObject,
} from '@superset-ui/core';
import {
pivotOperator,
@@ -39,12 +41,13 @@ import {
} from '../utils/formDataSuffix';
export default function buildQuery(formData: QueryFormData) {
const { x_axis: index } = formData;
const is_timeseries = index === DTTM_ALIAS || !index;
const baseFormData = {
...formData,
is_timeseries: true,
columns: formData.groupby,
columns_b: formData.groupby_b,
is_timeseries,
};
const formData1 = removeFormDataSuffix(baseFormData, '_b');
const formData2 = retainFormDataSuffix(baseFormData, '_b');
@@ -52,7 +55,9 @@ export default function buildQuery(formData: QueryFormData) {
buildQueryContext(fd, baseQueryObject => {
const queryObject = {
...baseQueryObject,
is_timeseries: true,
columns: [...ensureIsArray(index), ...ensureIsArray(fd.groupby)],
series_columns: fd.groupby,
is_timeseries,
};
const pivotOperatorInRuntime: PostProcessingPivot = isTimeComparison(
@@ -60,7 +65,12 @@ export default function buildQuery(formData: QueryFormData) {
queryObject,
)
? timeComparePivotOperator(fd, queryObject)
: pivotOperator(fd, queryObject);
: pivotOperator(fd, {
...queryObject,
columns: fd.groupby,
index,
is_timeseries,
});
const tmpQueryObject = {
...queryObject,
@@ -70,9 +80,13 @@ export default function buildQuery(formData: QueryFormData) {
rollingWindowOperator(fd, queryObject),
timeCompareOperator(fd, queryObject),
resampleOperator(fd, queryObject),
renameOperator(fd, queryObject),
renameOperator(fd, {
...queryObject,
columns: fd.groupby,
is_timeseries,
}),
flattenOperator(fd, queryObject),
],
].filter(Boolean),
} as QueryObject;
return [normalizeOrderBy(tmpQueryObject)];
}),