В проекте laravel я использую Highcharts, чтобы показать диаграмму стандартного типа столбца, просто называемого столбцом.xAxis имеет 4 категории, представляющие команды, и yAxis хранит счет каждой команды.Это выглядит так:
<div id="chart" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
<script type="text/javascript">
var chart1 = Highcharts.chart('chart', {
chart: {
type: 'column'
},
title: {
text: 'title'
},
xAxis: {
categories: ["f","j","n","s"]
},
yAxis: {
min: 0,
title: {
text: 'Total score'
},
stackLabels: {
enabled: true,
style: {
fontWeight: 'bold',
color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray'
}
}
},
legend: {
align: 'right',
x: -30,
verticalAlign: 'top',
y: 25,
floating: true,
backgroundColor: (Highcharts.theme && Highcharts.theme.background2) || 'white',
borderColor: '#CCC',
borderWidth: 1,
shadow: false
},
tooltip: {
headerFormat: '<b>{point.x}</b><br/>',
pointFormat: '{series.name}: {point.y}<br/>Total: {point.stackTotal}'
},
plotOptions: {
column: {
stacking: 'normal',
dataLabels: {
enabled: true,
color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white'
}
}
},
});
</script>
Точки добавляются после загрузки страницы с помощью jquery и функции javascript, например:
$( document ).ready(function() {
@foreach($existingScores as $score)
addScoreToChart({!! $score !!})
@endforeach
});
function addScoreToChart(obj)
{
var scores = obj.params.scores;
var datas = [];
for(var k in scores){
datas.push([k, parseInt(scores[k])]);
}
console.log(datas);
chart1.addSeries({
name: obj.clientName,
data: datas,
});
}
Это отлично работает при начальной загрузкеоценки.Некоторые результаты будут добавлены на график после загрузки страницы (через веб-сокеты).
Я совершенно не уверен, как на самом деле обновить заданный счет команд.Часть websockets работает, и когда добавляется новый счет, я могу вызвать функцию javascript, которая обновляет табло с новыми данными.Как я могу это сделать ?Скажем, например, что для команды "j" добавлен новый результат в 5 баллов.Как бы я сказал Highcharts обновить график такими данными / добавить 5 баллов к «j» существующему счету?