In JavaScript, Compute Gross Salary Of Salesperson Based On Weekly Sales

<!DOCTYPE html>
<html lang="en-US">
	<head>
		<title>Weekly Salary</title>
		<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
	</head>
	<body onload="showSalaries();">
		<h1>Weekly Salary</h1>
		<form onsubmit="newSale(this);return false;" autocomplete="off">
			<label>Gross Weekly Sales<label>
			<input name="sales" required="" pattern="^\d*$" title="Positive numbers only!" autofocus=""/>
			<button>Submit</button>
		</form>
		<table border="1" cellspacing="0" cellpadding="5" style="margin-top:10px;">
			<thead>
				<tr>
					<th>Salaries</th>
					<th>No# of Salesperson</th>
				</tr>
			</thead>
			<tbody id="out"/>
		</table>
		<script>
			var fixedSalary = 200;
			var commissionRate = 0.09;
			var lastBracket = 1000;
			var rangeLimit = 100;
			var salaries = new Array();
			var out = document.getElementById('out');

			function newSale(form){
				var sales = parseInt(form.sales.value,10);
				if(isNaN(sales) || 0 > sales){
					alert('Invalid sales!');
					return;
				}
				form.sales.value = '';
				var commission = sales * commissionRate;
				var salary = fixedSalary + commission;
				salary = Math.round(salary);
				var index = calcIndex(salary);
				console.log(salary, index);
				var count = 1;
				if(undefined !== salaries[index]){
					count += salaries[index];
				}
				salaries[index] = count;
				showSalaries();
			}

			function calcIndex(salary){
				var curIndex = Math.round((salary-fixedSalary)/rangeLimit);
				var maxIndex = Math.round((lastBracket-fixedSalary)/rangeLimit);
				return Math.min(curIndex, maxIndex);
			}

			function showSalaries(){
				var limit;
				var iHtml = '';
				var count, index;
				for(var salary = fixedSalary; lastBracket >= salary; salary += rangeLimit){
					limit = salary + rangeLimit - 1;
					limit = ' - $' + limit;
					if(salary === lastBracket){
						limit = ' and over';
					}
					limit = salary + limit;
					count = 0;
					index = calcIndex(salary);
					if(undefined !== salaries[index]){
						count = salaries[index];
					}
					iHtml += '<tr><td>$'+limit+'</td><td>'+count+'</td></tr>';
				}
				out.innerHTML = iHtml;
			}
		</script>
	</body>
</html>
Download

Comments

Popular posts from this blog