<html>
<head>
  <title>cluster-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="../../node_modules/native-promise-only/npo.js"></script>
  <script src="bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <script src="bower_components/d3/d3.js"></script>
  <script src="../common/js/common.js"></script>
  <script src="testdata.js"></script>

  <link rel="import" href="bower_components/polymer/polymer.html">
  <link rel="import" href="cluster-sk.html">

</head>
<body>
  <h1>cluster-sk demo</h1>

  <dom-module id="main-document-element">
    <template>
      <div>
        Event Data: {{_eventData}}
      </div>
      <br><br>

      <cluster-sk id="clusterView"></cluster-sk>
    </template>

    <script>
      HTMLImports.whenReady(function () {
        Polymer({
          is: 'main-document-element',

          properties: {
            _eventData: {
              type: Array,
              value: null
            }
          },

          ready: function() {
            this.listen(this.$.clusterView, 'digest-select', '_handleDigestSelect');
            this.$.clusterView.startUse();
            this.$.clusterView.setData(testdata.clusterDiffResult);
          },

          _handleDigestSelect: function(ev) {
            ev.stopPropagation();
            this.set('_eventData', ev.detail);
          }

        });
      });

    </script>
  </dom-module>

  <!-- Instantite the element defined above -->
  <main-document-element></main-document-element>

</body>
</html>
