The Code for APP NAME
//Controller function
function getValue() {
//put input values to vars
let loanAmount = document.getElementById("loanAmount").value;
let payments = document.getElementById("payments").value;
let rate = document.getElementById("rate").value;
loanAmount = parseFloat(loanAmount);
payments = parseFloat(payments);
rate = parseFloat(rate) / 100;
//parse vars to intergers
let returnObj = calculateVars(loanAmount, payments, rate);
display(returnObj);
}
//logic function
function calculateVars(loanAmount, payments, rate) {
let returnObj = {};
let monthlyPayment = (loanAmount * (rate / 12) * ((1 + rate / 12) ** payments)) / (((1 + rate / 12) ** payments) - 1);
returnObj.month = [];
returnObj.month[0] = 0;
returnObj.monthlyPayment = [];
returnObj.monthlyPayment[0] = monthlyPayment;
returnObj.principal = [];
returnObj.principal[0] = 0;
returnObj.interest = [];
returnObj.interest[0] = 0;
returnObj.totalInterest = [];
returnObj.totalInterest[0] = 0;
returnObj.balance = [];
returnObj.balance[0] = loanAmount;
for (let i = 1; i <= payments; i++) {
returnObj.month[i] = i;
returnObj.monthlyPayment[i] = parseFloat(monthlyPayment);
returnObj.interest[i] = parseFloat((returnObj.balance[i - 1] * (rate / 12)));
returnObj.principal[i] = parseFloat((returnObj.monthlyPayment[i] - returnObj.interest[i]));
returnObj.totalInterest[i] = parseFloat((returnObj.totalInterest[i - 1] + returnObj.interest[i]));
returnObj.balance[i] = (returnObj.balance[i - 1] - returnObj.principal[i]);
}
//calcuate total principal and add that key to returnObj
let totalPrincipal = 0
for (let i = 0; i < returnObj.principal.length; i++) {
totalPrincipal += returnObj.principal[i];
}
returnObj.totalPrincipal = totalPrincipal;
returnObj.displayTotalInterest = returnObj.totalInterest[[returnObj.month.length - 1]];
returnObj.totalCost = returnObj.totalPrincipal + parseFloat(returnObj.displayTotalInterest);
return returnObj;
}
//display function
function display(returnObj) {
//display monthly payments
monthlyPayment = parseFloat(returnObj.monthlyPayment).toFixed(2)
document.getElementById("yourMonthlyPayment").innerHTML = `$${monthlyPayment}`;
//display main-right details
document.getElementById("totalPrincipal").innerHTML = `$${returnObj.totalPrincipal.toFixed(2)}`;
document.getElementById("totalInterest").innerHTML = `$${returnObj.displayTotalInterest.toFixed(2)}`;
document.getElementById("totalCost").innerHTML = `$${returnObj.totalCost.toFixed(2)}`
//assign vars to tableBody and TemplateRow elements
let tableBody = document.getElementById("tableResults");
let templateRow = document.getElementById("templateRow")
//clear table-body
tableBody.innerHTML = "";
//add rows to the table
//let i runs from 1 because the first row of the data table is not displayed
for (let i = 1; i < returnObj.month.length; i += 1) {
let tableRow = document.importNode(templateRow.content, true);
let rowCols = tableRow.querySelectorAll("td");
rowCols[0].textContent = returnObj.month[i];
rowCols[1].textContent = returnObj.monthlyPayment[i].toFixed(2);
rowCols[2].textContent = returnObj.principal[i].toFixed(2);
rowCols[3].textContent = returnObj.interest[i].toFixed(2);
rowCols[4].textContent = returnObj.totalInterest[i].toFixed(2);
rowCols[5].textContent = returnObj.balance[i].toFixed(2);
tableBody.appendChild(tableRow);
}
}
The code is structed in one function.
Hello World
Hello World is a function that displays and alert with a message of "hello World"