<html>
<head>
  <title>grid-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="../js/gold.js"></script>
  <script src="testdata.js"></script>
  <script src="testdata-grid.js"></script>

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

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

  <dom-module id="main-document-element">
    <template>

      <grid-sk id="gridView"></grid-sk>
      <br>
      <div>
        Event Data:
        <div style="max-width:40em;">
          {{_eventData}}
        </div>
      </div>
    </template>

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

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

          ready: function() {
            this.listen(this.$.gridView, 'diff-click', '_handleEvent');
            this.listen(this.$.gridView, 'diff-dblclick', '_handleEvent');
            this.$.gridView.setValue(testdata.gridData);
          },

          _handleEvent: function(ev) {
            ev.stopPropagation();
            var evStr = ev.type + ": " + JSON.stringify(ev.detail);
            this.set('_eventData', evStr);
          }

        });
      });

    </script>
  </dom-module>

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

</body>
</html>
