From d2826ab7af4da1b36816150b71002ed966c553cd Mon Sep 17 00:00:00 2001 From: vera-liu Date: Fri, 28 Oct 2016 10:33:57 -0700 Subject: [PATCH] Added checkbox in dist_bar viz to enable sorting of bars based on x axis labels (#1379) * Added order bars option for dist_bar viz * Make order_bar checkbox to cover half the colum and translate the description --- caravel/assets/visualizations/nvd3_vis.js | 12 +++++++++++- caravel/forms.py | 5 +++++ caravel/viz.py | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/caravel/assets/visualizations/nvd3_vis.js b/caravel/assets/visualizations/nvd3_vis.js index 7d8dbfa25a548..09ceac6e08618 100644 --- a/caravel/assets/visualizations/nvd3_vis.js +++ b/caravel/assets/visualizations/nvd3_vis.js @@ -159,7 +159,17 @@ function nvd3Vis(slice) { stacked = fd.bar_stacked; chart.stacked(stacked); - + if (fd.order_bars) { + payload.data.forEach((d) => { + d.values.sort( + function compare(a, b) { + if (a.x < b.x) return -1; + if (a.x > b.x) return 1; + return 0; + } + ); + }); + } if (fd.show_bar_value) { setTimeout(function () { addTotalBarValues(chart, payload.data, stacked); diff --git a/caravel/forms.py b/caravel/forms.py index d4d2064e0f873..693499f20b039 100755 --- a/caravel/forms.py +++ b/caravel/forms.py @@ -250,6 +250,11 @@ def __init__(self, viz): "default": False, "description": "Show the value on top of the bars or not" }), + 'order_bars': (BetterBooleanField, { + "label": _("Sort Bars"), + "default": False, + "description": _("Sort bars by x labels."), + }), 'show_controls': (BetterBooleanField, { "label": _("Extra Controls"), "default": False, diff --git a/caravel/viz.py b/caravel/viz.py index 768b0813d81e8..63a0168a331d9 100755 --- a/caravel/viz.py +++ b/caravel/viz.py @@ -1320,7 +1320,7 @@ class DistributionBarViz(DistributionPieViz): ('y_axis_format', 'bottom_margin'), ('x_axis_label', 'y_axis_label'), ('reduce_x_ticks', 'contribution'), - ('show_controls', None), + ('show_controls', 'order_bars'), ) },) form_overrides = {