Skip to content

Instantly share code, notes, and snippets.

@henideepak
Last active July 29, 2021 12:42
Show Gist options
  • Save henideepak/84d4c9fff5522a402edc826d45afde2e to your computer and use it in GitHub Desktop.
Save henideepak/84d4c9fff5522a402edc826d45afde2e to your computer and use it in GitHub Desktop.
EMI Calculator
<html lang="en" >
<head>
<meta charset="UTF-8">
<title>CodePen - EMI Calculator</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.2.3/animate.min.css">
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<body>
<h2>EMI Calculator</h2>
<div class="container-fluid">
<div class="row">
<div class="col-md-7">
<h4><span class="label label-primary">Loan Amount is <strong><span class="" id="la_value">260000</span></strong></span></h4>
<div id="la"></div>
<h4><span class="label label-danger">No. of Month is <strong><span class="" id="nm_value">36</span></strong></span></h4>
<div id="nm"></div>
<h4><span class="label label-warning">Rate of Interest [ROI] is <strong><span class="" id="roi_value">10.2</span></strong></span></h4>
<div id="roi"></div>
</div>
<div class="col-md-5">
<div class="alert alert-info col-md-5">
<strong>Monthly EMI</strong><br>
<button class="btn btn-success btn-lg" id="emi" type="button">8,413.90</button><br>
</div>
<div class="alert alert-info col-md-5">
<strong>Total Interest</strong><br>
<button class="btn btn-warning btn-lg" id="tbl_int" type="button">42,900.53</button><br>
</div>
<div class="alert alert-info col-md-5">
<strong>Payable Amount</strong><br>
<button class="btn btn-info btn-lg" id="tbl_full" type="button">302,900.53</button><br>
</div>
<div class="alert alert-info col-md-5">
<strong>Interest Percentage</strong><br>
<button class="btn btn-info btn-lg" id="tbl_int_pge" type="button">14.16 %</button><br>
</div>
</div>
</div>
</div>
<div class="box">
<div id="container" class="col-md-5" data-highcharts-chart="0"><div class="highcharts-container" id="highcharts-0" style="position: relative; overflow: hidden; width: 644px; height: 400px; text-align: left; line-height: normal; z-index: 0; left: 0.166626px; top: 0.300049px;"><svg version="1.1" style="font-family:&quot;Lucida Grande&quot;, &quot;Lucida Sans Unicode&quot;, Arial, Helvetica, sans-serif;font-size:12px;" xmlns="http://www.w3.org/2000/svg" width="644" height="400"><desc>Created with Highcharts 4.1.5</desc><defs><clipPath id="highcharts-1"><rect x="0" y="0" width="624" height="338"></rect></clipPath></defs><rect x="0" y="0" width="644" height="400" strokewidth="0" fill="#FFFFFF" class=" highcharts-background"></rect><g class="highcharts-button" style="cursor:default;" stroke-linecap="round" transform="translate(610,10)"><title>Chart context menu</title><rect x="0.5" y="0.5" width="24" height="22" strokewidth="1" fill="white" stroke="none" stroke-width="1" rx="2" ry="2"></rect><path fill="#E0E0E0" d="M 6 6.5 L 20 6.5 M 6 11.5 L 20 11.5 M 6 16.5 L 20 16.5" stroke="#666" stroke-width="3" zindex="1"></path><text x="0" zindex="1" style="color:black;fill:black;" transform="translate(0,12)"></text></g><g class="highcharts-series-group" zindex="3"><path fill="rgba(124,181,236,0.25)" d="M 0 0"></path><g class="highcharts-series highcharts-tracker" visibility="visible" zindex="0.1" transform="translate(10,47) scale(1 1)" style="cursor:pointer;"><path fill="#7cb5ec" d="M 311.9706710586679 25.00000298675974 A 144 144 0 1 1 199.97588563938427 78.52018014098562 L 312 169 A 0 0 0 1 0 312 169 Z" stroke="#FFFFFF" stroke-width="1" stroke-linejoin="round" transform="translate(0,0)"></path><path fill="#434348" d="M 200.06642145621583 78.40820128520187 A 144 144 0 0 1 311.7999868889177 25.000138907166303 L 312 169 A 0 0 0 0 0 312 169 Z" stroke="#FFFFFF" stroke-width="1" stroke-linejoin="round" transform="translate(0,0)"></path></g><g class="highcharts-markers" visibility="visible" zindex="0.1" transform="translate(10,47) scale(1 1)"></g></g><text x="322" text-anchor="middle" class="highcharts-title" zindex="4" style="color:#333333;font-size:18px;fill:#333333;width:580px;" y="24"><tspan>EMI Calculator</tspan></text><g class="highcharts-data-labels highcharts-tracker" visibility="visible" zindex="6" transform="translate(10,47) scale(1 1)" opacity="1" style="cursor:pointer;"><path fill="none" d="M 391.89202528365956 326.0579018989866 C 386.89202528365956 326.0579018989866 383.44871377636485 318.8368489381137 378.71416045383467 308.90790111691337 L 373.9796071313045 298.97895329571304" stroke="#000000" stroke-width="1" visibility="inherit"></path><path fill="none" d="M 232.10797471634044 11.942098101013414 C 237.10797471634044 11.942098101013414 240.55128622363506 19.16315106188636 245.28583954616528 29.09209888308666 L 250.0203928686955 39.02104670428696" stroke="#000000" stroke-width="1" visibility="inherit"></path><g zindex="1" style="cursor:pointer;" transform="translate(397,316)" visibility="inherit"><text x="5" zindex="1" style="font-size: 11px; font-weight: bold; color: rgb(0, 0, 0); fill: rgb(0, 0, 0); text-shadow: 0px 0px 6px rgb(255, 255, 255), 0px 0px 3px rgb(255, 255, 255);" transform="translate(0,16)"><tspan style="font-weight:bold">Loan</tspan><tspan dx="0">: 85.8 %</tspan></text></g><g zindex="1" style="cursor:pointer;" transform="translate(133,2)" visibility="inherit"><text x="0" zindex="1" style="font-size: 11px; font-weight: bold; color: rgb(0, 0, 0); fill: rgb(0, 0, 0); text-shadow: 0px 0px 6px rgb(255, 255, 255), 0px 0px 3px rgb(255, 255, 255);" transform="translate(0,16)"><tspan style="font-weight:bold">Interest</tspan><tspan dx="0">: 14.2 %</tspan></text></g></g><g class="highcharts-legend" zindex="7"><g zindex="1"><g></g></g></g><g class="highcharts-tooltip" zindex="8" style="cursor:default;padding:0;white-space:nowrap;" transform="translate(389,-9999)" opacity="0" visibility="visible"><path fill="none" d="M 3.5 0.5 L 131.5 0.5 C 134.5 0.5 134.5 0.5 134.5 3.5 L 134.5 41.5 C 134.5 44.5 134.5 44.5 131.5 44.5 L 3.5 44.5 C 0.5 44.5 0.5 44.5 0.5 41.5 L 0.5 3.5 C 0.5 0.5 0.5 0.5 3.5 0.5" isshadow="true" stroke="black" stroke-opacity="0.049999999999999996" stroke-width="5" transform="translate(1, 1)" width="134" height="44"></path><path fill="none" d="M 3.5 0.5 L 131.5 0.5 C 134.5 0.5 134.5 0.5 134.5 3.5 L 134.5 41.5 C 134.5 44.5 134.5 44.5 131.5 44.5 L 3.5 44.5 C 0.5 44.5 0.5 44.5 0.5 41.5 L 0.5 3.5 C 0.5 0.5 0.5 0.5 3.5 0.5" isshadow="true" stroke="black" stroke-opacity="0.09999999999999999" stroke-width="3" transform="translate(1, 1)" width="134" height="44"></path><path fill="none" d="M 3.5 0.5 L 131.5 0.5 C 134.5 0.5 134.5 0.5 134.5 3.5 L 134.5 41.5 C 134.5 44.5 134.5 44.5 131.5 44.5 L 3.5 44.5 C 0.5 44.5 0.5 44.5 0.5 41.5 L 0.5 3.5 C 0.5 0.5 0.5 0.5 3.5 0.5" isshadow="true" stroke="black" stroke-opacity="0.15" stroke-width="1" transform="translate(1, 1)" width="134" height="44"></path><path fill="rgba(249, 249, 249, .85)" d="M 3.5 0.5 L 131.5 0.5 C 134.5 0.5 134.5 0.5 134.5 3.5 L 134.5 41.5 C 134.5 44.5 134.5 44.5 131.5 44.5 L 3.5 44.5 C 0.5 44.5 0.5 44.5 0.5 41.5 L 0.5 3.5 C 0.5 0.5 0.5 0.5 3.5 0.5" stroke="#7cb5ec" stroke-width="1"></path><text x="8" zindex="1" style="font-size:12px;color:#333333;fill:#333333;" transform="translate(0,20)"><tspan style="font-size: 10px">Loan</tspan><tspan style="fill:#7cb5ec" x="8" dy="15">●</tspan><tspan dx="0"> Amount: </tspan><tspan style="font-weight:bold" dx="0">260 000</tspan></text></g><text x="634" text-anchor="end" zindex="8" style="cursor:pointer;color:#909090;font-size:9px;fill:#909090;" y="395">Highcharts.com</text></svg></div></div>
<div class="box-body table-responsive" id="datatable">
<table width="100%" class="table table-striped table-bordered" id="illustrate"><thead><tr class="success"><th>Payment No.</th><th>Begining Balance</th><th>EMI</th><th>Principal</th><th>Interest</th><th>Ending Balance</th></tr></thead><tbody><tr><td>1</td><td>260000.00</td><td>8413.90</td><td>6203.90</td><td>2210.00</td><td>253796.10</td></tr><tr><td>2</td><td>253796.10</td><td>8413.90</td><td>6256.63</td><td>2157.27</td><td>247539.47</td></tr><tr><td>3</td><td>247539.47</td><td>8413.90</td><td>6309.81</td><td>2104.09</td><td>241229.66</td></tr><tr><td>4</td><td>241229.66</td><td>8413.90</td><td>6363.45</td><td>2050.45</td><td>234866.21</td></tr><tr><td>5</td><td>234866.21</td><td>8413.90</td><td>6417.54</td><td>1996.36</td><td>228448.67</td></tr><tr><td>6</td><td>228448.67</td><td>8413.90</td><td>6472.09</td><td>1941.81</td><td>221976.58</td></tr><tr><td>7</td><td>221976.58</td><td>8413.90</td><td>6527.10</td><td>1886.80</td><td>215449.48</td></tr><tr><td>8</td><td>215449.48</td><td>8413.90</td><td>6582.58</td><td>1831.32</td><td>208866.90</td></tr><tr><td>9</td><td>208866.90</td><td>8413.90</td><td>6638.53</td><td>1775.37</td><td>202228.37</td></tr><tr><td>10</td><td>202228.37</td><td>8413.90</td><td>6694.96</td><td>1718.94</td><td>195533.41</td></tr><tr><td>11</td><td>195533.41</td><td>8413.90</td><td>6751.87</td><td>1662.03</td><td>188781.54</td></tr><tr><td>12</td><td>188781.54</td><td>8413.90</td><td>6809.26</td><td>1604.64</td><td>181972.28</td></tr><tr><td>13</td><td>181972.28</td><td>8413.90</td><td>6867.14</td><td>1546.76</td><td>175105.14</td></tr><tr><td>14</td><td>175105.14</td><td>8413.90</td><td>6925.51</td><td>1488.39</td><td>168179.63</td></tr><tr><td>15</td><td>168179.63</td><td>8413.90</td><td>6984.37</td><td>1429.53</td><td>161195.26</td></tr><tr><td>16</td><td>161195.26</td><td>8413.90</td><td>7043.74</td><td>1370.16</td><td>154151.52</td></tr><tr><td>17</td><td>154151.52</td><td>8413.90</td><td>7103.61</td><td>1310.29</td><td>147047.91</td></tr><tr><td>18</td><td>147047.91</td><td>8413.90</td><td>7163.99</td><td>1249.91</td><td>139883.92</td></tr><tr><td>19</td><td>139883.92</td><td>8413.90</td><td>7224.89</td><td>1189.01</td><td>132659.03</td></tr><tr><td>20</td><td>132659.03</td><td>8413.90</td><td>7286.30</td><td>1127.60</td><td>125372.73</td></tr><tr><td>21</td><td>125372.73</td><td>8413.90</td><td>7348.23</td><td>1065.67</td><td>118024.50</td></tr><tr><td>22</td><td>118024.50</td><td>8413.90</td><td>7410.69</td><td>1003.21</td><td>110613.81</td></tr><tr><td>23</td><td>110613.81</td><td>8413.90</td><td>7473.68</td><td>940.22</td><td>103140.13</td></tr><tr><td>24</td><td>103140.13</td><td>8413.90</td><td>7537.21</td><td>876.69</td><td>95602.92</td></tr><tr><td>25</td><td>95602.92</td><td>8413.90</td><td>7601.28</td><td>812.62</td><td>88001.64</td></tr><tr><td>26</td><td>88001.64</td><td>8413.90</td><td>7665.89</td><td>748.01</td><td>80335.75</td></tr><tr><td>27</td><td>80335.75</td><td>8413.90</td><td>7731.05</td><td>682.85</td><td>72604.70</td></tr><tr><td>28</td><td>72604.70</td><td>8413.90</td><td>7796.76</td><td>617.14</td><td>64807.94</td></tr><tr><td>29</td><td>64807.94</td><td>8413.90</td><td>7863.03</td><td>550.87</td><td>56944.91</td></tr><tr><td>30</td><td>56944.91</td><td>8413.90</td><td>7929.87</td><td>484.03</td><td>49015.04</td></tr><tr><td>31</td><td>49015.04</td><td>8413.90</td><td>7997.27</td><td>416.63</td><td>41017.77</td></tr><tr><td>32</td><td>41017.77</td><td>8413.90</td><td>8065.25</td><td>348.65</td><td>32952.52</td></tr><tr><td>33</td><td>32952.52</td><td>8413.90</td><td>8133.80</td><td>280.10</td><td>24818.72</td></tr><tr><td>34</td><td>24818.72</td><td>8413.90</td><td>8202.94</td><td>210.96</td><td>16615.78</td></tr><tr><td>35</td><td>16615.78</td><td>8413.90</td><td>8272.67</td><td>141.23</td><td>8343.11</td></tr><tr><td>36</td><td>8343.11</td><td>8413.90</td><td>8342.98</td><td>70.92</td><td>0.13</td></tr></tbody></table>
</div>
</div>
<script src="https://cpwebassets.codepen.io/assets/common/stopExecutionOnTimeout-157cd5b220a5c80d4ff8e0e70ac069bffd87a61252088146915e8726e5d9f147.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>
<script id="rendered-js">
$(document).ready(function () {
$("#la").slider({
value: 5000000,
min: 0,
max: 100000000,
step: 1000000,
slide: function(event, data) {
$("#la_value").html(data.value.toFixed(0))
calculateEMI();
}
});
$("#roi").slider({
value: 7,
min: 0,
max: 15,
step: 0.01,
slide: function(event, data) {
$("#nm_value").html(data.value.toFixed(0));
calculateEMI();
}
});
$("#nm").slider({
value: 30,
min: 0,
max: 30,
step: 1,
slide: function(event, data) {
$("#roi_value").html(data.value.toFixed(2));
calculateEMI();
}
});
function calculateEMI() {
var loanAmount = $("#la_value").html();
var numberOfMonths = $("#nm_value").html();
var rateOfInterest = $("#roi_value").html();
var monthlyInterestRatio = rateOfInterest / 100 / 12;
var top = Math.pow(1 + monthlyInterestRatio, numberOfMonths);
var bottom = top - 1;
var sp = top / bottom;
var emi = loanAmount * monthlyInterestRatio * sp;
var full = numberOfMonths * emi;
var interest = full - loanAmount;
var int_pge = interest / full * 100;
$("#tbl_int_pge").html(int_pge.toFixed(2) + " %");
//$("#tbl_loan_pge").html((100-int_pge.toFixed(2))+" %");
var emi_str = emi.toFixed(2).toString().replace(/,/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");
var loanAmount_str = loanAmount.toString().replace(/,/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");
var full_str = full.toFixed(2).toString().replace(/,/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");
var int_str = interest.toFixed(2).toString().replace(/,/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");
$("#emi").html(emi_str);
$("#tbl_emi").html(emi_str);
$("#tbl_la").html(loanAmount_str);
$("#tbl_nm").html(numberOfMonths);
$("#tbl_roi").html(rateOfInterest);
$("#tbl_full").html(full_str);
$("#tbl_int").html(int_str);
var detailDesc = "<thead><tr class='success'><th>Payment No.</th><th>Begining Balance</th><th>EMI</th><th>Principal</th><th>Interest</th><th>Ending Balance</th></thead><tbody>";
var bb = parseInt(loanAmount);
var int_dd = 0;var pre_dd = 0;var end_dd = 0;
for (var j = 1; j <= numberOfMonths; j++) {if (window.CP.shouldStopExecution(0)) break;
int_dd = bb * (rateOfInterest / 100 / 12);
pre_dd = emi.toFixed(2) - int_dd.toFixed(2);
end_dd = bb - pre_dd.toFixed(2);
detailDesc += "<tr><td>" + j + "</td><td>" + bb.toFixed(2) + "</td><td>" + emi.toFixed(2) + "</td><td>" + pre_dd.toFixed(2) + "</td><td>" + int_dd.toFixed(2) + "</td><td>" + end_dd.toFixed(2) + "</td></tr>";
bb = bb - pre_dd.toFixed(2);
}window.CP.exitedLoop(0);
detailDesc += "</tbody>";
$("#illustrate").html(detailDesc);
$('#container').highcharts({
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false },
title: {
text: 'EMI Calculator' },
tooltip: {
//pointFormat: '{series.name}: <b>{point.value}%</b>'
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
// enabled: true,
color: '#000000',
connectorColor: '#000000',
format: '<b>{point.name}</b>: {point.percentage:.1f} %' } } },
series: [{
type: 'pie',
name: 'Amount',
data: [
['Loan', eval(loanAmount)],
['Interest', eval(interest.toFixed(2))]] }] });
}
calculateEMI();
});
//# sourceURL=pen.js
</script>
</body></html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment