Au Tax Chart
by paulftw
HTML
<div ng-app ng-controller=TaxCtrl>
<input type=text ng-model='income'></input>
<span>Tax: {{ tax_for(income) | currency}} or
{{ tax_for(income) / parseFloat(income) * 100 | number:1}}%
</span>
</div>
JavaScript
function TaxCtrl($scope) {
// source: http://www.ato.gov.au/content/12333.htm
var medicare = 0.015;
$scope.up_to = [
{
cap: 18200,
rate: 0,
start: 0
},
{
cap: 37000,
rate: 0.19,
start: 0
},
{
cap: 80000,
rate: 0.325,
start: 3572
},
{
cap: 180000,
rate: 0.37,
start: 17547
},
{
cap: 1e100,
rate: 0.45,
start: 54547
}
];
$scope.parseFloat = parseFloat;
$scope.tax_for = function(income) {
income = parseFloat(income);
console.log('get tax for ', income);
for (var i = 0; i < $scope.up_to.length; i++) {
var prev_cap = i ? $scope.up_to[i - 1].cap : 0;
var bracket = $scope.up_to[i];
if (bracket.cap >= income) {
return bracket.start +
bracket.rate * (income - prev_cap);
}
}
return 'Runtime Error';
};
};