This commit is contained in:
nelsondrew 2024-05-05 02:18:33 -03:00 committed by GitHub
commit fbd0fdccf6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 32 additions and 3 deletions

View File

@ -220,6 +220,7 @@ export default function transformProps(
);
const isMultiSeries = groupby?.length || metrics?.length > 1;
const { timeseriesLimitMetric = '' } = formData;
const [rawSeries, sortedTotalValues, minPositiveValue] = extractSeries(
rebasedData,
@ -236,6 +237,7 @@ export default function transformProps(
xAxisSortSeriesAscending: isMultiSeries
? xAxisSortSeriesAscending
: undefined,
timeseriesLimitMetric,
},
);
const showValueIndexes = extractShowValueIndexes(rawSeries, {

View File

@ -264,6 +264,7 @@ export function extractSeries(
sortSeriesAscending?: boolean;
xAxisSortSeries?: SortSeriesType;
xAxisSortSeriesAscending?: boolean;
timeseriesLimitMetric?: any;
} = {},
): [SeriesOption[], number[], number | undefined] {
const {
@ -278,6 +279,7 @@ export function extractSeries(
sortSeriesAscending,
xAxisSortSeries,
xAxisSortSeriesAscending,
timeseriesLimitMetric,
} = opts;
if (data.length === 0) return [[], [], undefined];
const rows: DataRecord[] = data.map(datum => ({
@ -292,7 +294,9 @@ export function extractSeries(
sortSeriesAscending,
);
const sortedRows =
isDefined(xAxisSortSeries) && isDefined(xAxisSortSeriesAscending)
isDefined(xAxisSortSeries) &&
isDefined(xAxisSortSeriesAscending) &&
!timeseriesLimitMetric
? sortRows(
rows,
totalStackedValues,

View File

@ -251,13 +251,36 @@ class QueryContextProcessor:
query += ";\n\n".join(queries)
query += ";\n\n"
timeseries_limit_metric = None
x_axis_index = None
sort_order = None
# Here we extract the x axis as its being used as index
# in the pivot operation
if self._query_context and self._query_context.form_data:
x_axis_index = self._query_context.form_data.get("x_axis")
if isinstance(x_axis_index, dict):
x_axis_index = x_axis_index.get("label")
timeseries_limit_metric = self._query_context.form_data.get(
"timeseries_limit_metric"
)
if timeseries_limit_metric and x_axis_index is not None:
sort_order = df[x_axis_index].unique().tolist()
sort_order = [item for item in sort_order if item is not None]
# Re-raising QueryObjectValidationError
try:
df = query_object.exec_post_processing(df)
except InvalidPostProcessingError as ex:
raise QueryObjectValidationError(ex.message) from ex
if (
timeseries_limit_metric
and x_axis_index is not None
and sort_order is not None
):
df[x_axis_index] = pd.Categorical(
df[x_axis_index], categories=sort_order, ordered=True
)
df = df.sort_values(x_axis_index)
df = df.reset_index(drop=True)
result.df = df
result.query = query
result.from_dttm = query_object.from_dttm