<html>
<head>
  <title>digest-details2-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 type="text/javascript" charset="utf-8">
    sk.app_config = {
      baseRepoURL: "https://skia.googlesource.com/skia",
      defaultCorpus: "gm",
      showBotProgress: true,
      title: "Skia Gold",
      isPublic: false
    };
  </script>

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

</head>
<body>
  <h1>digest-details2-sk demo</h1>

  <dom-module id="main-document-element">
    <template>
      <h3>Mode: list</h3>
      <div>
        <digest-details2-sk mode="list"
                           details="[[digestDetails]]"
                           commits="[[commits]]">
        </digest-details2-sk>
      </div>
      <h3>Mode: detail</h3>
      <div>
        <digest-details2-sk mode="detail"
                           details="[[digestDetails]]"
                           commits="[[commits]]">
        </digest-details2-sk>
      </div>
      <h3>Mode: diff</h3>
      <div>
        <digest-details2-sk mode="diff"
                           details="[[digestDetails]]"
                           commits="[[commits]]">
        </digest-details2-sk>
      </div>
    </template>

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

          ready: function() {
            var digestDetails = JSON.parse(JSON.stringify(testdata.newSearchDetails[0]));
            this.set('digestDetails', digestDetails);
            this.set('commits', testdata.commits);
          }
        });
      });
    </script>
  </dom-module>

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

</body>
</html>
