<!DOCTYPE html>
<html ng-app="app">

  <head>
    <link data-require="bootstrap-css@3.0.0" data-semver="3.0.0" rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" />
    <script data-require="angular.js@1.2.0-rc3-nonmin" data-semver="1.2.0-rc3-nonmin" src="http://code.angularjs.org/1.2.0-rc.3/angular.js"></script>
    <script src="http://code.angularjs.org/1.2.0-rc.3/angular-mocks.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="mock.js"></script>
    <script src="app.js"></script>
  </head>

  <body ng-controller="BodyController">
    <div class="jumbotron">
      <div class="container">
        <h1>Top 100 Games Evah!</h1>
        <p>
          <button class="btn btn-success" ng-click="refresh()">
            <i class="glyphicon glyphicon-refresh"></i>
            <span>refresh</span>
          </button>
        </p>
      </div>
    </div>
    <div class="container">
      <table class="table table-striped">
        <thead>
          <tr>
            <th>#</th>
            <th>Videogame</th>
            <th>Year</th>
            <th>randomScore</th>
          </tr>
        </thead>
        <tbody>
          <tr ng-repeat="game in games | orderBy:'position'">
            <th>{{ game.position }}</th>
            <th>{{ game.name }}</th>
            <th>{{ game.year }}</th>
            <th>{{ game.score }}</th>
          </tr>
        </tbody>
      </table>
    </div>
  </body>

</html>
/* Styles go here */

angular.module('app', ['appMock'])
.controller('BodyController', function ($scope, $http) {
  $scope.games = [];

  // function bound to the refrsh button
  $scope.refresh = function () {
    $http.get('/games').success(function (data, status, headers, config) {
      $scope.games = data;
    });
  };

  $scope.refresh();
});
angular.module('appMock', ['ngMockE2E'])
// Gently stolen from http://www.imdb.com/list/3rOZHHY7HCc/
.constant('gamesArray', [{"name":"The Legend of Zelda: Majora's Mask","year":2000},{"name":"Metal Gear Solid","year":1998},{"name":"Resident Evil 4","year":2005},{"name":"Star Wars: Knights of the Old Republic","year":2003},{"name":"Half-Life 2","year":2004},{"name":"Shenmue II","year":2001},{"name":"Mass Effect 2","year":2010},{"name":"Metal Gear Solid 4: Guns of the Patriots","year":2008},{"name":"Super Mario Galaxy 2","year":2010},{"name":"Kingdom Hearts II","year":2005},{"name":"Heavy Rain","year":2010},{"name":"Fallout 3","year":2008},{"name":"Metal Gear Solid 3: Subsistence","year":2005},{"name":"BioShock","year":2007},{"name":"The Legend of Zelda: Ocarina of Time","year":1998},{"name":"Half-Life 2: Episode Two","year":2007},{"name":"Portal 2","year":2011},{"name":"Yakuza 3","year":2009},{"name":"The Legend of Zelda: Twilight Princess","year":2006},{"name":"Grand Theft Auto V","year":2013},{"name":"Grand Theft Auto: San Andreas","year":2004},{"name":"Mass Effect","year":2007},{"name":"Tomb Raider","year":2013},{"name":"Batman: Arkham City","year":2011},{"name":"Mass Effect 3","year":2012},{"name":"The Last of Us","year":2013},{"name":"Super Smash Bros. Brawl","year":2008},{"name":"Uncharted 2: Among Thieves","year":2009},{"name":"Grand Theft Auto IV","year":2008},{"name":"Metal Gear Solid 2: Sons of Liberty","year":2001},{"name":"Super Smash Bros. Melee","year":2001},{"name":"Star Wars: Knights of the Old Republic II - The Sith Lords","year":2004},{"name":"Gears of War 2","year":2008},{"name":"Silent Hill 3","year":2003},{"name":"Splinter Cell: Chaos Theory","year":2005},{"name":"Super Mario Bros.","year":1985},{"name":"Batman: Arkham Asylum","year":2009},{"name":"The Legend of Zelda","year":1986},{"name":"God of War II","year":2007},{"name":"LittleBigPlanet","year":2008},{"name":"Assassin's Creed II","year":2009},{"name":"Shin Megami Tensei: Persona 4","year":2008},{"name":"The Elder Scrolls V: Skyrim","year":2011},{"name":"Uncharted 3: Drake's Deception","year":2011},{"name":"Portal","year":2007},{"name":"Infamous 2","year":2011},{"name":"Splinter Cell","year":2002},{"name":"Ratchet & Clank: Going Commando","year":2003},{"name":"Gran Turismo 3: A-Spec","year":2001},{"name":"Metroid Prime 3: Corruption","year":2007},{"name":"Tomb Raider II Starring Lara Croft","year":1997},{"name":"Grand Theft Auto IV: The Ballad of Gay Tony","year":2009},{"name":"Beyond: Two Souls","year":2013},{"name":"Halo 3","year":2007},{"name":"The Elder Scrolls IV: Oblivion","year":2006},{"name":"Uncharted: Drake's Fortune","year":2007},{"name":"Devil May Cry","year":2001},{"name":"Ratchet & Clank Future: Tools of Destruction","year":2007},{"name":"LittleBigPlanet 2","year":2011},{"name":"Bully","year":2006},{"name":"Splinter Cell: Conviction","year":2010},{"name":"God of War III","year":2010},{"name":"Half-Life 2: Episode One","year":2006},{"name":"Grand Theft Auto: Vice City","year":2002},{"name":"Prince of Persia: The Sands of Time","year":2003},{"name":"Fallout: New Vegas","year":2010},{"name":"Assassin's Creed","year":2007},{"name":"Jak 3","year":2004},{"name":"Soulcalibur II","year":2003},{"name":"Splinter Cell: Pandora Tomorrow","year":2004},{"name":"Grand Theft Auto 3","year":2001},{"name":"Gears of War 3","year":2011},{"name":"Deus Ex: Human Revolution","year":2011},{"name":"L.A. Noire","year":2011},{"name":"The Simpsons: Hit & Run","year":2003},{"name":"Ratchet & Clank","year":2002},{"name":"Super C","year":1988},{"name":"Saints Row IV","year":2013},{"name":"Max Payne","year":2001},{"name":"Mercenaries: Playground of Destruction","year":2005},{"name":"Pikmin 3","year":2013},{"name":"Call of Duty 4: Modern Warfare","year":2007},{"name":"Grand Theft Auto IV: The Lost and Damned","year":2009},{"name":"God of War: Ghost of Sparta","year":2010},{"name":"Tekken Tag Tournament 2","year":2012},{"name":"Halo 2","year":2004},{"name":"Heavenly Sword","year":2007},{"name":"Crash Bandicoot: Warped","year":1998},{"name":"Max Payne 2: The Fall of Max Payne","year":2003},{"name":"The Legend of Zelda: The Wind Waker","year":2002},{"name":"Red Dead Redemption","year":2010},{"name":"Virtua Fighter 5","year":2007},{"name":"Halo","year":2001},{"name":"Kingdom Hearts","year":2002},{"name":"Resistance: Fall of Man","year":2006},{"name":"Dead or Alive 3","year":2001},{"name":"Ninja Gaiden 3","year":2012},{"name":"Sonic the Hedgehog","year":1991},{"name":"ZombiU","year":2012},{"name":"ESPN NFL 2K5","year":2004}])
// mock backend definitions goes there!
.run(function ($httpBackend, gamesArray) {

  // Defining GET /games
  $httpBackend.whenGET('/games').respond(function (method, url, data, headers) {
    var positions = [],
        randomGames;

    for (var i = 0; i < 100; i++) {
      positions.push(i+1);
    }

    randomGames = gamesArray.map(function (game, index) {
      game.position = positions.splice(Math.floor(Math.random() * positions.length), 1)[0];
      game.score = (1 + Math.random() * 9).toPrecision(3) + '/10';
      return game;
    });

    return [200, randomGames];
  });

});