From 37276e1af94533a737269f765daea6c11afa5a45 Mon Sep 17 00:00:00 2001 From: Ville Brofeldt <33317356+villebro@users.noreply.github.com> Date: Mon, 10 May 2021 15:43:21 +0300 Subject: [PATCH] fix(viz): apply uniform sorting to all nvd3 timeseries charts (#14539) --- superset/viz.py | 53 ++++++++++--------------------------------------- 1 file changed, 11 insertions(+), 42 deletions(-) diff --git a/superset/viz.py b/superset/viz.py index 4419c15f7..680f887a2 100644 --- a/superset/viz.py +++ b/superset/viz.py @@ -1229,6 +1229,17 @@ class NVD3TimeSeriesViz(NVD3Viz): is_timeseries = True pivot_fill_value: Optional[int] = None + def query_obj(self) -> QueryObjectDict: + d = super().query_obj() + sort_by = self.form_data.get("timeseries_limit_metric") + 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))] + return d + def to_series( self, df: pd.DataFrame, classed: str = "", title_suffix: str = "" ) -> List[Dict[str, Any]]: @@ -1645,17 +1656,6 @@ class NVD3TimeSeriesStackedViz(NVD3TimeSeriesViz): sort_series = True pivot_fill_value = 0 - def query_obj(self) -> QueryObjectDict: - d = super().query_obj() - sort_by = self.form_data.get("timeseries_limit_metric") - 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))] - return d - class HistogramViz(BaseViz): @@ -2211,18 +2211,6 @@ class HorizonViz(NVD3TimeSeriesViz): "d3-horizon-chart" ) - def query_obj(self) -> QueryObjectDict: - d = super().query_obj() - metrics = self.form_data.get("metrics") - sort_by = self.form_data.get("timeseries_limit_metric") - 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))] - return d - class MapboxViz(BaseViz): @@ -2914,17 +2902,6 @@ class RoseViz(NVD3TimeSeriesViz): sort_series = False is_timeseries = True - def query_obj(self) -> QueryObjectDict: - d = super().query_obj() - sort_by = self.form_data.get("timeseries_limit_metric") - 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))] - return d - def get_data(self, df: pd.DataFrame) -> VizData: if df.empty: return None @@ -2963,14 +2940,6 @@ class PartitionViz(NVD3TimeSeriesViz): time_op = self.form_data.get("time_series_option", "not_time") # Return time series data if the user specifies so query_obj["is_timeseries"] = time_op != "not_time" - sort_by = self.form_data.get("timeseries_limit_metric") - if sort_by: - sort_by_label = utils.get_metric_name(sort_by) - if sort_by_label not in utils.get_metric_names(query_obj["metrics"]): - query_obj["metrics"].append(sort_by) - query_obj["orderby"] = [ - (sort_by, not self.form_data.get("order_desc", True)) - ] return query_obj def levels_for(