fix: missing orderby in query on the nvd3 timeseries chart (#15343)

This commit is contained in:
Yongjie Zhao 2021-06-24 09:01:38 +01:00 committed by GitHub
parent b3cdff4995
commit fae4531f1e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 3 deletions

View File

@ -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)

View File

@ -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(