"use strict";

var app = angular.module("grades", []);

app.controller("MainCtrl", function ($scope) {
  /*
  $scope.name = "Josh";
  $scope.score = 17;
  $scope.possible = 22;
  */

  $scope.gradeInfo = null;

  var lettersAndComments = [
    {
      "percent": 100,
      "letter": "A+",
      "comments": "Wow! Perfect score"
    },
    {
      "percent": 90,
      "letter": "A",
      "comments": "Great job!"
    },
    {
      "percent": 80,
      "letter": "B",
      "comments": "Not bad."
    },
    {
      "percent": 70,
      "letter": "C",
      "comments": "Well, at least you passed."
    },
    {
      "percent": 60,
      "letter": "D",
      "comments": "You failed, but it could've been worse!"
    }
  ];

  $scope.calculateGrade = function () {
    var percent = $scope.score / $scope.possible * 100;

    var letter;
    var comments;
    var i;
    
    for (i=0; i<lettersAndComments.length; i+=1) {
      var letterAndComments = lettersAndComments[i];
      if (percent >= letterAndComments.percent) {
        letter = letterAndComments.letter;
        comments = letterAndComments.comments;
        break;
      }
    }
    if (! letter) {
      letter = "F";
      comments = "You failed. Did you study?";
    }

    $scope.gradeInfo = {
      "percent": percent,
      "letter": letter,
      "comments": comments
    };
  };

  $scope.$watch("[name,score,possible]", function (newValue, oldValue) {
    $scope.gradeInfo = null;
  });

});
<!DOCTYPE html>
<html>

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <link rel="stylesheet" href="style.css" />
    <link href='https://fonts.googleapis.com/css?family=Oleo+Script' rel='stylesheet' type='text/css'>
    <link href='https://fonts.googleapis.com/css?family=Raleway:100' rel='stylesheet' type='text/css'>
    <script data-require="angular.js@1.5.x" src="https://code.angularjs.org/1.5.9/angular.js" data-semver="1.5.9"></script>
    <script src="app.js"></script>
  </head>

  <body ng-app="grades" ng-controller="MainCtrl">
    What is your name?<br>
    <input type="text" ng-model="name">
    
    <div ng-show="name.length">
      <h1>Hello, {{name}}!</h1>
      
      <p>What was your score?<br>
      <input type="number" min="0" step="0.01"  ng-model="score"></p>
      
      <div ng-hide="score == null">
        <p>And how many points were possible?<br>
        <input type="number" min="0" step="0.01" ng-model="possible"></p>
        
        <p ng-hide="possible == null">
          I can 
          <button ng-click="calculateGrade()">tell you about your grade</button>.
        </p>
      </div>
      
    </div>
    
    <div class="results" ng-show="gradeInfo">
      <p>{{ name }}, you scored {{ gradeInfo.percent | number:2 }}% for a letter grade {{ gradeInfo.letter }}.</p>
      <p>My comments: <span class="handwritten">{{ gradeInfo.comments }}</span></p>
    </div>
    
  </body>

</html>
/* Put your css in here */

h1 {
  font-family: 'Raleway';
  color: blue;
}

.handwritten {
  font-family: 'Oleo Script';
}

.results {
  margin: 2em;
  padding: 1em 2em;
  background-color: #ede5ce;
}