<html>
<head>
  <title>quartiles-sk demo</title>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
  <script src="/res/common/js/common.js"></script>
  <script type="text/javascript" charset="utf-8">
    // Mock out sk.get() to return the commit info.
    sk.post = function(url) {
      return new Promise(function (resolve, reject) {
        reject('Shortcuts do not work in the demo.');
        });
    };
  </script>
  <script src="/res/imp/bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <link rel="import" href="/res/imp/bower_components/polymer/polymer.html">
  <link rel=import href="quartile.html">
  <link rel=import href="/res/common/imp/error-toast-sk.html">
  <link rel="stylesheet" href="/res/common/css/md.css">
</head>
<body>
  <h1>Quartiles</h1>

  <quartile-sk id=quar name=Regressions></quartile-sk>

  <h2>Event details</h2>
  <pre id=events></pre>

  <error-toast-sk></error-toast-sk>
  <script type="text/javascript" charset="utf-8">
    $$$('#quar').quartile = {
      centers: [
      {
        ids: [
          "Arm7:GCC:GPU:Adreno330:Nexus5:Android:GM_multipicturedraw_rectclip_simple_180_286:msaa4",
          "Arm7:GCC:GPU:Adreno330:Nexus5:Android:GM_varied_text_clipped_no_lcd_640_480:msaa4",
          "Arm7:GCC:GPU:Adreno330:Nexus5:Android:GM_radial_gradient3_nodither_500_500:msaa4",
          "Arm7:GCC:GPU:Adreno330:Nexus5:Android:GM_dashing5_aa_400_200:msaa4",
          "Arm7:GCC:GPU:Mali400MP2:AndroidOne:Android:GM_multipicturedraw_rectclip_tiled_180_286:msaa4",
          "Arm7:GCC:GPU:Adreno330:Nexus5:Android:GM_blurcircles_950_950:msaa4",
          "Arm7:GCC:GPU:Adreno330:Nexus5:Android:GM_multipicturedraw_sierpinski_simple_180_286:msaa4"
        ],
        size: 21,
        wordcloud: [
          [{Value: "Android", Weight: 26}],
          [{Value: "Arm7", Weight: 26}],
          [{Value: "GCC", Weight: 26}],
          [{Value: "GPU", Weight: 26}],
          [{Value: "gm", Weight: 26}],
          [{Value: "micro", Weight: 26}],
          [{Value: "min_ms", Weight: 26}],
          [{Value: "msaa4", Weight: 26}],
          [{Value: "Qualcomm", Weight: 25}, {Value: "ARM", Weight: 12}]
        ],
      },
      {
        ids: [
          "Arm7:GCC:GPU:Adreno330:Nexus5:Android:GM_convex_poly_clip_870_540:gpu",
          "x86_64:Clang:GPU:HD4000:MacMini6.2:Mac10.9:GM_multipicturedraw_pathclip_simple_180_286:gpu",
          "x86_64:Clang:GPU:HD4000:MacMini6.2:Mac10.9:GM_blurcircles_950_950:gpu",
          "x86_64:Clang:CPU:AVX:MacMini6.2:Mac10.9:GM_convex_poly_clip_870_540:8888",
          "Arm7:GCC:GPU:Adreno330:Nexus5:Android:GM_dashing5_aa_400_200:gpu",
          "Arm7:GCC:GPU:Adreno330:Nexus5:Android:GM_blurcircles_950_950:gpu",
          "x86_64:Clang:GPU:HD4000:MacMini6.2:Mac10.9:GM_multipicturedraw_biglayer_simple_180_286:gpu",
          "Arm7:GCC:GPU:Adreno330:Nexus5:Android:GM_radial_gradient3_500_500:gpu"
        ],
        size: 13,
        wordcloud: [
          [{Value: "gm", Weight: 26}],
          [{Value: "micro", Weight: 26}],
          [{Value: "min_ms", Weight: 26}],
          [{Value: "GPU", Weight: 24}, {Value: "CPU", Weight: 13}],
          [{Value: "gpu", Weight: 24}, {Value: "8888", Weight: 13}],
          [{Value: "Android", Weight: 21}, {Value: "Mac10.9", Weight: 16}],
          [{Value: "Arm7", Weight: 21}, {Value: "x86_64", Weight: 16}],
          [{Value: "GCC", Weight: 21}, {Value: "Clang", Weight: 16}],
          [{Value: "Qualcomm", Weight: 21}, {Value: "Intel Inc.", Weight: 15}],
        ],
      },
      ],
      percent: 0.041025641025641026
    }

    document.body.addEventListener("view-traces", function(e) {
      $$$('#events').textContent = JSON.stringify(e.detail, null, 2);
    });
  </script>
</body>
</html>
