JSFiddle - React, Tailwind, and code Playground
JavaScript
let milestones = [10, 30, 20];
function getPercentFromMilestone(milestoneIndex, milestoneValue) {
let sum = 0;
for (let i = 0; i < milestoneIndex; i++) {
sum += milestones[i];
}
sum += milestoneValue;
let sum2 = milestones.reduce((a, b) => a + b, 0);
return sum / sum2 * 100.0;
}
function getPercent(val) {
let sum = milestones.reduce((a, b) => a + b, 0);
return val / sum * 100.0;
}
function getMilestone(val) {
for (let i = 0; i < milestones.length; i++) {
val -= milestones[i];
if (val <= 0) {
return i;
}
}
return -1;
}
for (let i = 0; i <= 30; i++) {
console.log(i + " of MS 2 is " + getPercentFromMilestone(1, i) + " %");
}
for (let i = 0; i <= 60; i++) {
console.log(i + " of all MS is " + getPercent(i) + " %, that is MS " + (getMilestone(i) + 1));
}