Alterar programaticamente os valores da coluna em HighCharts

Este violino usa ações de botão e um controle deslizante para alterar os valores da coluna em um HighChart baseado em coluna.

Clicar em uma coluna muda o que o controle deslizante considera ser a coluna primária (o padrão é a coluna do meio). Deslizar para a direita aumenta o valor da coluna atualmente selecionada. Em seguida, ele distribui a diferença de seu novo valor e seu valor antigo nas colunas à direita dele (aumentando seus valores) e, em seguida, nas colunas à esquerda dele (diminuindo seus valores). Deslizar para a esquerda faz o oposto. Finalmente, os valores nas colunas são ponderados para somar 100 e o valor do controle deslizante é atualizado com o valor da coluna atual.

É meio complicado, mas mostra como interagir com vários componentes ao mesmo tempo, especialmente com o gráfico HighChart. A maior parte do trabalho acontece na função sliderChange :

var sliderChange = function(event, ui) {
// reset chart title
chart
.setTitle({
text
: 'Custom'
});
var difference = ui.value - originalValue;
originalValue
= ui.value;
datapointAt
(currentIndex).update(originalValue, false);
var total = originalValue;
// update all values with raw value, and calculate total
for (var index = 1; index < 6; index++) {
if (index !== currentIndex) {
var datapoint = datapointAt(index);
var newValue = 0;
newValue
= index < currentIndex ? datapoint.y - difference : datapoint.y + difference;
if (newValue < 0) {
newValue
= 0;
}
datapoint
.update(newValue, false);
total
+= newValue;
}
}
// weight the values from 0 - 100
for (var index = 1; index < 6; index++) {
var datapoint = datapointAt(index);
var newValue = Math.floor(100 * datapoint.y / total);
datapoint
.update(newValue, true);
if (index === currentIndex) {
originalValue
= newValue;
}
}
updateSliderWithCurrentData
();
};