Skip to content

Commit

Permalink
wip switch to highcharts
Browse files Browse the repository at this point in the history
  • Loading branch information
hristop committed Apr 5, 2023
1 parent 1345c09 commit 86e3dd8
Show file tree
Hide file tree
Showing 7 changed files with 135 additions and 9 deletions.
6 changes: 6 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@
"scripts": {
"dev": "vite --host",
"build": "vite build",
"preview": "vite preview"
"preview": "vite preview --host"
},
"devDependencies": {
"vite": "^4.1.0"
},
"dependencies": {
"@ui5/webcomponents": "^1.11.0",
"@ui5/webcomponents-icons": "^1.11.0",
"highcharts": "^10.3.3",
"moment": "^2.29.4"
}
}
4 changes: 3 additions & 1 deletion src/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -95,16 +95,18 @@ ui5-table#extraPaymentsTable {
}

div#lineChart {
height: 400px;
flex-grow: 1;
flex-shrink: 1;
}

div#pieChart {
height: 400px;
flex-grow: 1;
flex-shrink: 1;
}

@media screen and (min-width: 600px) {
@media screen and (min-width: 800px) {
body {
margin: 0;
display: flex;
Expand Down
11 changes: 7 additions & 4 deletions src/js/calcLoan.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ import { validInput, validateAdditionalPayments } from "./validateInput";
import { renderMonthTableStart, renderMonthTableRow, renderMonthTableEnd } from "./monthTable";
import { gatherAdditionalPayments } from "./extraPayment";
import { drawLineChart, drawPieChart } from "./charts";
import { drawLineChartH, drawPieChartH } from "./chartsH";
import { loanData } from "./loadData";


import moment from 'moment';

export function setUpCalc(element) {
Expand Down Expand Up @@ -127,6 +129,7 @@ export function setUpCalc(element) {
}

// Line chart data
// Google chards data
includeAddPayments && loanData.addLineChartData([
index,
remainingPrincipal,
Expand Down Expand Up @@ -210,11 +213,11 @@ export function setUpCalc(element) {
const data = new loanData(startDate.format("DD/MM/YYYY"), loanAmount, interestRate, loanTerm, fixedPrincipal);
data.additionalPayments = additionalPayments;
data.lineChartData = [
["Month", "Principal", "Interest"],
//["Month", "Principal", "Interest"],
[0, loanAmount, 0],
];
data.pieChartData = [
["Principal", "Interest"]
//["Principal", "Interest"]
];

additionalPayments.length && calcLoanData(data, false);
Expand All @@ -230,8 +233,8 @@ export function setUpCalc(element) {
tableDiv.innerHTML = tableHtml;

// Charts
drawLineChart(data.lineChartData);
drawPieChart(data.pieChartData);
drawLineChartH(data.lineChartData);
drawPieChartH(data.pieChartData);

data.destroy();
}
Expand Down
6 changes: 3 additions & 3 deletions src/js/charts.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const drawLineChart = lineChartData => {
},
hAxis: { title: "Month" },
vAxis: { title: "Amount" },
//width: 600
width: "100%"
};

var chart = new google.visualization.LineChart(
Expand All @@ -28,8 +28,8 @@ const drawPieChart = pieChartData => {
position: "right",
alignment: "center"
},
//width: 500,
pieSliceText: 'value'
pieSliceText: 'value',
width: "100%"
};

var chart = new google.visualization.PieChart(
Expand Down
108 changes: 108 additions & 0 deletions src/js/chartsH.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
import HighCharts from 'highcharts';

const extractToLineChartSeries = (data, seriesName, index) => {
const seriesData = data.map(dataPoint => ({
x: dataPoint[0],
y: dataPoint[index]
}));
return {
name: seriesName,
data: seriesData
}
};

const drawLineChartH = lineChartData => {
const remainingPrincipal = extractToLineChartSeries(lineChartData, "Principal", 1);
const totalInterest = extractToLineChartSeries(lineChartData, "Interest", 2);

console.log(remainingPrincipal);
console.log(totalInterest);

remainingPrincipal.color = '#0070f2';
totalInterest.color = '#aa0808';

const options = {
title: {
text: 'Loan Payment Schedule'
},
xAxis: {
title: {
text: 'Month'
}
},
yAxis: {
title: {
text: 'Amount'
}
},
series: [
remainingPrincipal,
totalInterest
],
legend: {
align: 'center',
verticalAlign: 'bottom'
},
tooltip: {
shared: true,
useHTML: true,
headerFormat: '<table><tr><th colspan="2">{point.key}</th></tr>',
pointFormat:
'<tr><td style="color: {series.color}">{series.name} </td>' +
'<td style="text-align: right"><b>{point.y}</b></td></tr>',
footerFormat: '</table>',
valueDecimals: 2
}
};

HighCharts.chart('lineChart', options);
};

const drawPieChartH = pieChartData => {
console.log(pieChartData)
const options = {
title: {
text: 'Loan Payment'
},
colors: [
'#ff0000',
'#0d233a'
],
series: [{
type: 'pie',
data: [
{
name: pieChartData[0][0],
color: '#0070f2',
y: pieChartData[0][1]
},
{
name: pieChartData[1][0],
color: '#aa0808',
y: pieChartData[1][1]
}
]
}],
legend: {
align: 'right',
verticalAlign: 'middle'
},
tooltip: {
useHTML: true,
headerFormat: '<table><tr><th colspan="2">{point.key}</th></tr>',
pointFormat:
'<tr><td> {point.y} </td></tr>' +
'<tr><td style="text-align: right"><b>{point.percentage:.2f} %</b></td></tr>',
footerFormat: '</table>',
valueDecimals: 2
//pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
}
};

HighCharts.chart('pieChart', options);
};

export {
drawLineChartH,
drawPieChartH
};
6 changes: 6 additions & 0 deletions src/js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,9 @@ startDate.setAttribute('value', moment().format('DD/MM/YYYY'));

setUpExtraPayments(document.getElementById('addExtraPayment'));
setUpCalc(document.getElementById('calcBtn'));

// window.onresize = doALoadOfStuff;

// function doALoadOfStuff() {
// //do a load of stuff
// }

0 comments on commit 86e3dd8

Please sign in to comment.