From 08d5e7d328828e4ebdf5fde3a94f3488c1edd2e1 Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Tue, 9 Oct 2018 11:44:02 +0200 Subject: [PATCH] Refactor toggle chart helpers --- app/javascript/new_design/toggle-chart.js | 32 ++++++++++------------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/app/javascript/new_design/toggle-chart.js b/app/javascript/new_design/toggle-chart.js index b51622402..2de8b6394 100644 --- a/app/javascript/new_design/toggle-chart.js +++ b/app/javascript/new_design/toggle-chart.js @@ -1,28 +1,24 @@ -import $ from 'jquery'; import Chartkick from 'chartkick'; +import { toggle } from '@utils'; export function toggleChart(event, chartClass) { - const nextSelectorItem = $(event.target), - nextChart = $(chartClass), - nextChartId = nextChart - .children() - .first() - .attr('id'), - currentSelectorItem = nextSelectorItem - .parent() - .find('.segmented-control-item-active'), - currentChart = nextSelectorItem - .parent() - .parent() - .find('.chart:not(.hidden)'); + const nextSelectorItem = event.target, + nextChart = document.querySelector(chartClass), + nextChartId = nextChart.children[0].id, + currentSelectorItem = nextSelectorItem.parentElement.querySelector( + '.segmented-control-item-active' + ), + currentChart = nextSelectorItem.parentElement.parentElement.querySelector( + '.chart:not(.hidden)' + ); // Change the current selector and the next selector states - currentSelectorItem.toggleClass('segmented-control-item-active'); - nextSelectorItem.toggleClass('segmented-control-item-active'); + currentSelectorItem.classList.toggle('segmented-control-item-active'); + nextSelectorItem.classList.toggle('segmented-control-item-active'); // Hide the currently shown chart and show the new one - currentChart.toggleClass('hidden'); - nextChart.toggleClass('hidden'); + toggle(currentChart); + toggle(nextChart); // Reflow needed, see https://github.com/highcharts/highcharts/issues/1979 Chartkick.charts[nextChartId].getChartObject().reflow();