<!--
Description : A program that reads several lines of text and prints a table indicating the number of one-letter words, two-letter words, three-letter words, etc. appearing in the text.
Language(s) : HTML/Javascript
Author : Jun Y. Ercia
Date Written : 25 August 2016
Date Modified: 25 August 2016
-->
<!DOCTYPE html>
<html lang="en">
<head>
<title>Word Length</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../css/bootstrap.min.css">
<script src="../js/jquery.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
<script src="../js/bootbox.min.js"></script>
<style>
th, td {
text-align: center;
}
</style>
</head>
<body>
<div class="container-fluid">
<div class="panel-group col-sm-12">
<div class = "panel panel-primary">
<div class="panel-heading">Data Entry Form</div>
<div class="panel-body">
<form class="form-horizontal" role="form">
<div class="form-group">
<label class="control-label col-sm-1" for="text">Enter Text</label>
<div class="col-sm-11">
<input type="text" class="form-control" id="text" placeholder="Enter Text">
</div>
</div>
<div class="form-group">
<div class="col-sm-11 col-sm-offset-1">
<button class="btn btn-info" id="clear" onclick="clearFields(event)">Clear</button>
<button class="btn btn-info" id="process" onclick="getWordLengthOccurences(event)">Process</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<div class="container-fluid">
<div class="table-responsive col-sm-3" id="result"></div>
</div>
<script>
/*****************************************************
Purpose : Clears the form/output fields.
Parameters
Input : event object
output : None
Return Value : None
Pre-condition : None
Post-condition : None
*****************************************************/
function clearFields(event) {
document.getElementById("result").innerHTML = "";
document.getElementById("text").value="";
event.preventDefault();
}
/*****************************************************
Purpose : Prints a table indicating the number of one-letter words, two-letter words, three-letter words, etc. appearing in the text. .
Parameters
Input : event object
output : None
Return Value : None
Pre-condition : None
Post-condition : None
*****************************************************/
function getWordLengthOccurences(event) {
var text = document.getElementById("text").value;
if (!/./.test(text)) {
bootbox.alert("Error! Missing Entry");
$(document).on('hidden.bs.modal','.bootbox', function () {
$('#text').focus();
});
event.preventDefault();
return;
}
var wordArray = text.split(" ");
var highestWordLength = wordArray[0].length;
for (var i = 1; i < wordArray.length; i++) {
if (highestWordLength < wordArray[i].length)
highestWordLength = wordArray[i].length;
}
var wordLengthCounter = new Array(highestWordLength + 1);
wordLengthCounter.fill(0);
for (var i = 0; i < wordArray.length; i++) {
wordLengthCounter[wordArray[i].length]++;
}
var output = "<table class='table table-bordered'>";
output += "<tr>";
output += "<th>Word Length</th>";
output += "<th>Occurrences</th>";
output += "</tr>";
for (var i = 1; i <= highestWordLength; i++) {
output += "<tr>";
output += "<td>" + i + "</td>";
output += "<td>" + wordLengthCounter[i] + "</td>";
output += "</tr>";
}
output += "</table>";
document.getElementById("result").innerHTML = output;
event.preventDefault();
}
</script>
<script src="../js/jquery.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
<script src="../js/bootbox.min.js"></script>
</body>
</html>
No comments:
Post a Comment