<html>
<head>
  <title>paramset-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 src="/res/imp/bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <link rel=import href="/res/imp/bower_components/polymer/polymer.html">
  <link rel="stylesheet" href="res/common/css/md.css" type="text/css" media="all" />
  <link rel=import href="paramset.html">
  <style is="custom-style">
    body {
      font-family: sans-serif;
    }

    paramset-sk {
      display: block;
      margin: 3em;
    }

    #set1 {
      --paramset-highlight-color: red;
    }
  </style>
</head>
<body>
  <h1>Params</h1>

  <button class=action id=highlight>Highlight</button>
  <button class=action id=clear>Clear</button>

  <paramset-sk id=set1></paramset-sk>

  <paramset-sk clickable id=set2></paramset-sk>

  <paramset-sk clickable-values id=set3></paramset-sk>

  <table>
    <tr><th>paramset-key-click</th>      <td id=key  ></td></tr>
    <tr><th>paramset-key-value-click</th><td id=value></td></tr>
  </table>

  <script type="text/javascript" charset="utf-8">
    var paramset = {
      "arch":       ["Arm7", "Arm64", "x86_64", "x86"],
      "bench_type": ["micro", "playback", "recording"],
      "compiler":   ["GCC", "MSVC", "Clang"],
      "cpu_or_gpu": ["GPU", "CPU"],
    };

    var paramset2 = {
      "arch":       ["Arm7", ],
      "bench_type": ["playback", "recording"],
      "compiler":   [],
      "cpu_or_gpu": ["GPU"],
    };

    var set1 = $$$('#set1');
    var set2 = $$$('#set2');
    var set3 = $$$('#set3');

    set1.setParamSets([paramset]);
    set2.setParamSets([paramset, paramset2], ["Set 1", "Set 2"]);
    set3.setParamSets([paramset], ["Clickable Values Only"]);

    set2.addEventListener('paramset-key-click', function(e) {
      $$$('#key').textContent = JSON.stringify(e.detail);
    });

    set2.addEventListener('paramset-key-value-click', function(e) {
      $$$('#value').textContent = JSON.stringify(e.detail);
    });

    set3.addEventListener('paramset-key-value-click', function(e) {
      $$$('#value').textContent = JSON.stringify(e.detail);
    });

    $$$('#highlight').addEventListener('click', function() {
      set1.setHighlight({"arch": "Arm7", "cpu_or_gpu": "GPU"});
      set2.setHighlight({"arch": "Arm7", "cpu_or_gpu": "GPU"});
      set3.setHighlight({"arch": "Arm7", "cpu_or_gpu": "GPU"});
    });

    $$$('#clear').addEventListener('click', function() {
      set1.clearHighlight();
      set2.clearHighlight();
    });
  </script>

</body>
</html>
