如何计算燃尽图的理想和实际燃尽

时间:2019-03-11 09:39:22

标签: javascript algorithm highcharts burndowncharts

我正在尝试为课程的燃尽图计算数据。该课程有开始和结束日期,练习次数以及实际学生的开始和结束日期。我有来自服务器的数据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();

问题是,如果天数多于练习数,我的理想烧伤就不正确了。 enter image description here

我要完成12个练习,但是第二天显示为19。我在这里做错了什么?

然后我需要填写实际刻录数据。但是问题是,如何根据练习完成的日期将其填充并显示在图表上?我的意思是在我的最终dataObject中,我只有totalExercisesDoneCount,但在初始JSON中,我有关于锻炼结束日期的信息。我应该按日期对它们进行分组吗?

我还有一个codepen,其中包含图表和所有代码。任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

  

我要完成12项练习,但第二天显示   19.我在这里做什么错了?

您对calculateIdealIncrement的计算有2个问题。您正在计算每次运动的天数...应该是每天的运动,即理想情况下每天应该完成多少运动才能达到理想的燃烧效果。另外,如果结果是例如,不要使用floor舍入为整数,而应将其保留为小数。每天进行0.5次练习就可以了。

  

然后我需要填写实际刻录数据。但是问题是,如何   根据日期填写练习完成并显示在   图形?我的意思是在我最终的dataObject中   totalExercisesDoneCount,但是在初始JSON中,我有关于日期的信息   练习结束时。我应该按日期对它们进行分组吗?

有几种方法可以解决此问题。我不会使用分组方式,因为(1)无法正确访问嵌套的exercise_details(2)您不想按日期分组,您想获取开始日期和练习之间的天数差异完成日期。因此,我将从类似于getRemainExercisesCount的代码开始,在其中您访问每个finished_time,获取带有开始日期的差异,构建一个数组,该数组存储每天完成的练习数,然后使用该数组填充实际的练习数组。