<!DOCTYPE html>
<html>

<head>
  <title>fuzzer-summary-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="/res/js/fuzzer.js"></script>
  <script src="/res/common/js/common.js"></script>
  <script src="/res/imp/bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <script src="/res/imp/sinon-1.17.2.js"></script>

  <script type="text/javascript" charset="utf-8">
    var server = sinon.fakeServer.create();
    server.autoRespond = true;
    var responses = [
      [{"category":"skpicture",
        "categoryDisplay":"SkPicture",
        "status": "experimental",
        "groomer": "alice",
        "highPriorityCount": 8322,
        "mediumPriorityCount": 1728,
        "lowPriorityCount": 180,
      },{"category":"api_paeth",
        "categoryDisplay":"API - Paeth",
        "status": "stable",
        "groomer": "bob",
        "highPriorityCount": 0,
        "mediumPriorityCount": 2,
        "lowPriorityCount": 10,
      },{"category":"skcodec",
        "categoryDisplay":"SkCodec",
        "status": "stable",
        "groomer": "carol",
        "highPriorityCount": 1,
        "mediumPriorityCount": 0,
        "lowPriorityCount": 3,
      }
      ],
    ];

    var counter = 0;

    server.respondWith("GET", "/json/fuzz-summary", function(request) {
        request.respond(200, {"Content-Type":"application/json"},
          JSON.stringify(responses[counter]));
        counter++;
      });
  </script>

  <link rel="import" href="fuzzer-summary-sk.html">

</head>

<body>
  <h1>fuzzer-summary-sk demo</h1>

  <fuzzer-summary-sk style="max-width:800px"></fuzzer-summary-sk>

</body>

</html>
