Чтобы сделать что-то подобное, вы можете либо вернуть только те данные, которые вам нужны из базы данных, либо обработать их на лету в JavaScript.
Следующее берет данные и данные категории и обрабатывает их вне фактической инициализации диаграммы:
//Original values
var categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var data = [2, 10, 40, 40, 40, 40, 30, 0, 0, 0, 0, 0]
//New arrays to store data to be displayed
var currentCategories = []
var currentData = [];
//Get current month to provide a cut-off
var currentMonth = new Date().getMonth();
//Loop through the data and add the value for each month to the data array and category array
for(var i = 0; i < categories.length; i++){
if(currentMonth >= i){//Alternatively at this point you could exclude the values if data[i] == 0
currentCategories.push(categories[i]);
//Arrays may be different lengths.
if(data.length >= (i+1)){
currentData.push(data[i]);
}
}
}
Пока вы можете просто исключить 0 значений. Вы можете потерять месяцы ранее в этом году, если они имеют значение 0. С предоставленными вами данными менее рискованно удалять только значения, которые идут после текущего месяца.
Затем вы можете использовать эти созданные переменные для задания данных в HighChart:
$('#container').highcharts({
colors: colors,
title: {
text: 'Points with zero value are not connected by line'
},
xAxis: {
categories: currentCategories, //Use processed list of categories
offset: 0,
},
plotOptions: {
series: {
connectNulls: true
}
},
yAxis: {
min: 0,
},
series: [{
data: currentData //Use processed array of data
},
]
});