<html>
<head>
  <title>query-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.get = function(url) {
      return new Promise(function (resolve, reject) {
        resolve('<pre>Details about the commits goes here.</pre>');
        });
    };
  </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="trace-details.html">
  <style type="text/css" media="screen">
    trace-details-sk {
      display: block;
      margin: 3em;
    }
  </style>
</head>
<body>
  <h1>Trace Details</h1>

  <div>
    <button class=action id=set>Set</button>
    <button class=action id=blank>Blank</button>
  </div>
  <div>
    <b>Event: </b> <span id=event></span>
  </div>

  <trace-details-sk id=trace></trace-details-sk>

  <script type="text/javascript" charset="utf-8">
    function logEvent(e) {
      $$$('#event').textContent = e.type + " -- " + JSON.stringify(e.detail);
    };

    var params = {
        "config": "565",
        "type": "CPU",
        "units": "ms",
      };

    var trace = $$$('#trace');
    trace.setParams('my-trace-id', params);
    trace.displayRange('aaa', 'bbb');
    trace.addEventListener('only', logEvent);
    trace.addEventListener('remove', logEvent);
    trace.addEventListener('group', logEvent);
    trace.addEventListener('highlightGroup', logEvent);

    $$$('#blank').addEventListener('click', function() {
      trace.blank();
    });

    $$$('#set').addEventListener('click', function() {
      trace.setParams('my-trace-id', params);
    });
  </script>
</body>
</html>
