Как рассчитать идеальное и фактическое значение для диаграммы выгорания

#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. График в полном порядке, ваши расчеты — нет.