<html>
<head>
  <title>triagelog-page-sk demo</title>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
  <script src="../../node_modules/native-promise-only/npo.js"></script>
  <script src="bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <script src="bower_components/page/page.js"></script>
  <script src="bower_components/d3/d3.js"></script>
  <script src="../common/js/common.js"></script>
  <script src="../js/gold.js"></script>
  <script src="bower_components/sinonjs/sinon.js"></script>
  <script src="testdata.js"></script>
  <script>
    var server = sinon.fakeServer.create();
    server.autoRespond = true;
    server.autoRespondAfter = 1000;

    server.respondWith("GET", /\/json\/triagelog.*/, function(request) {
      request.respond(200, {"Content-Type":"application/json"},
        JSON.stringify(testdata.triageLogResults));
    });

    server.respondWith(/\/json\/triagelog\/undo.*/, function(request, id) {
      request.respond(200, {"Content-Type":"application/json"},
        JSON.stringify(testdata.triageLogResults));
    });

  </script>

  <link rel="import" href="triagelog-page-sk.html">

</head>
<body>
  <triagelog-page-sk></triagelog-page-sk>
  <script type="text/javascript" charset="utf-8">
      $$$('triagelog-page-sk').pageSelected(new page.Context(window.location.pathname));
  </script>
</body>
</html>
