#javascript #algorithm #highcharts #burndowncharts
#javascript #алгоритм #графики максимумов #диаграммы выгорания
Вопрос:
Я пытаюсь рассчитать данные для диаграммы выгорания для курса. Курс имеет даты начала и окончания, количество упражнений и фактические даты начала и окончания занятий. У меня есть JSON данных с сервера с данными курса. Я обрабатываю это. Прежде всего, я подсчитываю, totalExcercisesCount
затем подсчитываю количество дней, которые у студента есть для завершения курса. В конце концов, я получаю следующий объект данных:
const chartDataObj = {
idealBurn: [],
actualBurn: [],
idealIncrement: 0,
totalExcercisesCount: 12,
totalExercisesDoneCount: 4,
timeLine: {
courseFrom: "2018-09-10",
courseTo: "2019-06-21",
start: "2018-09-11",
finish: "2018-10-01",
totalDays: 20,
}
}
После того, как я построю идеальную линию, и здесь возникает первая проблема. Я пытаюсь сделать следующее,
chartDataObj.idealIncrement = Math.floor(
chartDataObj.timeLine.totalDays / chartDataObj.totalExcercisesCount
);
for (i = 0; i <= chartDataObj.timeLine.totalDays - 1; i ) {
chartDataObj.idealBurn.push(chartDataObj.idealIncrement * (i 1));
}
chartDataObj.idealBurn.reverse();
Проблема в том, что если количество дней намного больше, чем упражнений, у меня неправильный идеальный прогон.
Мне нужно выполнить 12 упражнений, но на второй день их становится 19. Что я здесь делаю не так?
И затем мне нужно заполнить фактические данные записи. Но проблема в том, как заполнить его в соответствии с датами завершения упражнений и отобразить это на графике? Я имею в виду, что в моем окончательном объекте DataObject у меня есть только totalExercisesDoneCount
, но в исходном JSON у меня есть информация о датах завершения упражнений. Должен ли я группировать их по датам или нет?
У меня также есть codepen, подготовленный с диаграммой и всем кодом. Любая помощь будет оценена. Спасибо
Комментарии:
1. Не могли бы вы подготовить рабочий пример вашей диаграммы? К сожалению, опубликованный вариант не работает.
2. @WojciechChmiel да, это исправлено.
3. Вы выполняете цикл от 0 до
totalDays
(что равно 20) и помещаете эти значения в массив idealBurn. Затем строим диаграмму на основе этого массива с 20 значениями от 1 до 20. График в полном порядке, ваши расчеты — нет.