From fae4531f1ecad966d6469731432484e6af0b8b89 Mon Sep 17 00:00:00 2001 From: Yongjie Zhao Date: Thu, 24 Jun 2021 09:01:38 +0100 Subject: [PATCH] fix: missing orderby in query on the nvd3 timeseries chart (#15343) --- superset/utils/core.py | 5 +++++ superset/viz.py | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/superset/utils/core.py b/superset/utils/core.py index 12c66e41a7..50dc87e92c 100644 --- a/superset/utils/core.py +++ b/superset/utils/core.py @@ -1269,6 +1269,11 @@ def get_metric_names(metrics: Sequence[Metric]) -> List[str]: return [get_metric_name(metric) for metric in metrics] +def get_main_metric_name(metrics: Sequence[Metric]) -> Optional[str]: + metric_labels = get_metric_names(metrics) + return metric_labels[0] if metric_labels else None + + def ensure_path_exists(path: str) -> None: try: os.makedirs(path) diff --git a/superset/viz.py b/superset/viz.py index 04adab3d2a..b46c297bf8 100644 --- a/superset/viz.py +++ b/superset/viz.py @@ -1228,13 +1228,15 @@ class NVD3TimeSeriesViz(NVD3Viz): def query_obj(self) -> QueryObjectDict: d = super().query_obj() - sort_by = self.form_data.get("timeseries_limit_metric") + sort_by = self.form_data.get( + "timeseries_limit_metric" + ) or utils.get_main_metric_name(d.get("metrics") or []) + is_asc = not self.form_data.get("order_desc") if sort_by: sort_by_label = utils.get_metric_name(sort_by) if sort_by_label not in utils.get_metric_names(d["metrics"]): d["metrics"].append(sort_by) - if self.form_data.get("order_desc"): - d["orderby"] = [(sort_by, not self.form_data.get("order_desc", True))] + d["orderby"] = [(sort_by, not self.form_data.get("order_desc", is_asc))] return d def to_series(