2017-02-22 21 views
0

Так что есть установка Highcharts, я хотел бы быть в состоянии заменить аннулирует с 0.Highcharts - Заменить аннулирует с 0

http://jsfiddle.net/e6y43oaf/

На JSFiddle вы можете увидеть 18 и 19(выходные) никто не проводил поисков, однако он переносится на следующую точку.

Возможно ли, чтобы заменил этими пустыми значениями на 0 вместо того, чтобы иметь не столь эстетически приятный зазор в каждой строке? Я подозреваю, что для этого мне, возможно, придется использовать тег formatter.

ответ

1

Увы, у Higcharts есть опция connectNulls, она будет напрямую подключать значение до следующего. Единственный способ, которым я могу думать о том, чтобы предобработки данных, чтение значения перед добавлением его в серию и преобразование аннулирует в нули, например:

// var seriesdatagorfromsomewhere 
for (var i = 0; i < seriesdatagorfromsomewhere.length; i++) { 
    if (seriesdatagorfromsomewhere[i][1] === null) { 
     seriesdatagorfromsomewhere[i][1] = 0; 
    } 
} 

А затем добавить данные в серии, как вы обычно делаете ,

Если ваш код не генерирует нули, вы можете сделать это двумя способами: проверить точки против даты сервера каким-либо образом и проверить точки между рядами.

Идея состоит в том, чтобы обрабатывать точки один за другим, получая первый параметр каждого из них (дата). Когда вы сталкиваетесь с несуществующей датой, просто добавьте ее с нулевым значением. Вы должны прекратить обработку информации, когда вы достигнете даты остановки (с сервера, или запроса, который вы сделали, чтобы показать информацию, что угодно)

Другой - тот же подход, но останавливается, когда какая-либо серия не имеет значения. Одна из проблем заключается в том, что если какая-либо серия имеет данные для выходных, то вы не создадите для нее нулей.

Пример:

// var seriesdatagorfromsomewhere 
// var stopdate (from server/request or highest date value from all series) 
// var startdate (from server/request or lowest date value from all series) 
// var currentseriespos = 0; 
while (startdate <= stopdate) { 
    var date = seriesdatagorfromsomewhere[currentseriespos][0]; 
    if (startdate != date) { 
     seriesdatagorfromsomewhere.splice(currentseriespos, [startdate, 0]); 
    } 
    startdate = increaseOneDay(startdate); 
    currentseriespos++; 
} 

не испытывалось. Конечно, петля не будет работать так, и вы получите бесконечный цикл, но вы получите эту идею.

+0

А, спасибо. Код, который вы произвели, в то время как я благодарен, не будет работать. Ряд данных не содержит записей для каких-либо нулей, поэтому их нельзя сравнивать. Он просто игнорирует его и переходит к следующему набору данных. Данные взяты из базы данных и создаются при выполнении поиска. Затем они подсчитывают их, запуская SQL-запрос, группируя их по имени и дате, чтобы получить счет за каждый день. Поэтому очень сложно проверить, если в течение каждого дня подряд, если нет данных, чтобы сгенерировать 0. Мне нужно будет увидеть, можно ли добавить генерацию 0 где-то в бэкэнд. – Slopax

+0

О, я понимаю. Тогда я думаю, что у меня есть еще 2 интерфейса. Переход к редактированию. –

+0

@Slopax Edited. –