<html>
<head>
  <title>query-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/common/js/common.js"></script>
  <script src="/res/imp/bower_components/wcstamp/src/stamp.js"></script>
  <script type="text/javascript" charset="utf-8">
    // Mock out sk.get() to return random numbers for matches.
    sk.get = function(url) {
      return new Promise(function (resolve, reject) {
        var n = Math.floor(Math.random() * 100);
        resolve('{"matches":' + n + '}');
        });
    };
  </script>
  <script src="/res/imp/bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <link rel=import href="query.html">
  <style type="text/css" media="screen">
    query-sk {
      box-shadow: 10px 10px 17px -2px rgba(0,0,0,0.75);
      display: block;
      width: 100em;
      border: solid 1px lightgray;
      padding: 1em;
      border-radius: 10px;
    }
  </style>
</head>
<body>
  <h1>Query</h1>

  <query-sk whitelist='["config", "type", "test"]' matches="/matches" id=basic></query-sk>
  <p>
    <b>Query String:</b> <code id=q></code>
  </p>

  <script type="text/javascript" charset="utf-8">
    var paramset = {
        "config": ["565", "8888"],
        "type": ["CPU", "GPU"],
        "units": ["ms", "bytes"],
        "test": [
          "DeferredSurfaceCopy_discardable",
          "DeferredSurfaceCopy_nonDiscardable",
          "GLInstancedArraysBench_instance",
          "GLInstancedArraysBench_one_0",
          "GLInstancedArraysBench_one_1",
          "GLInstancedArraysBench_one_2",
          "GLInstancedArraysBench_one_4",
          "GLInstancedArraysBench_one_8",
          "GLInstancedArraysBench_two_0",
          "GLInstancedArraysBench_two_1",
          "GLInstancedArraysBench_two_2",
          "GLInstancedArraysBench_two_4",
          "GLInstancedArraysBench_two_8",
          "GLVec4ScalarBench_scalar_1_stage",
          "GLVec4ScalarBench_scalar_2_stage",
                                    ],
      };
    $$$('#basic').setParamSet(paramset);
    setTimeout(function() {
      $$$('#basic').setSelections("config=565&type=GPU");
      $$$('#q').textContent = $$$('#basic').currentquery;
    }, 1);

    $$$('#basic').addEventListener('query-change', function(e){
      $$$('#q').textContent = e.detail;
    });

  </script>
</body>
</html>
