Tuesday, September 6, 2016

Counting the number of one-letter words, two-letter words, three-letter words, etc. appearing in the text.

<!--
   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