/
index.js
92 lines (78 loc) · 2.35 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import Chart from 'chart.js';
const ctx = document.getElementById('resultsChart').getContext('2d');
const calcBtn = document.querySelector('.calc-btn');
const resultsCtn = document.querySelector('.results__ctn');
const resultsList = document.querySelector('.results__list');
calcBtn.addEventListener('click', onBtnClick);
function onBtnClick () {
let initalAmount = Number(document.getElementById('initalAmount').value);
const percentage = Number(document.getElementById('percentage').value);
const nbTimes = Number(document.getElementById('nbTimes').value);
const data = [];
const labels = [];
if (!initalAmount || !nbTimes || !percentage) {
alert('yo');
return;
}
for (let i = 0; i < nbTimes; i++) {
const label = `${getOrdinalSuffix(i + 1)} Occurence`;
if (i > 0) {
initalAmount = initalAmount + (initalAmount * (percentage / 100));
}
resultsCtn.classList.remove('hidden');
resultsList.innerHTML += createResultsListItem(label, Math.round(initalAmount))
data.push(Math.round(initalAmount))
labels.push(label);
}
console.log(resultsCtn);
createChart(labels, data);
}
function createResultsListItem(label, amount) {
return `<li>${label}: ${amount}</li>`
}
function createChart(labels, data) {
const resultsChart = new Chart(ctx, {
type: 'line',
data: {
labels: labels,
datasets: [{
data: data,
borderWidth: 1,
borderColor:'#00c0ef',
label: 'Amount',
}]
},
options: {
responsive: true,
legend: {
display: false
},
scales: {
yAxes: [{
ticks: {
beginAtZero: false,
}
}]
}
}
});
}
function getOrdinalSuffix(num) {
const j = num % 10;
const k = num % 100;
if (j === 1 && k !== 11) {
return `${num}st`;
}
if (j === 2 && k !== 12) {
return `${num}nd`;
}
if (j === 3 && k !== 13) {
return `${num}rd`;
}
return `${num}th`;
}
function updateData(label, amount) {
resultsChart.data.labels.push(label);
resultsChart.data.datasets[0].data.push(amount);
resultsChart.update();
}