<html>
<head>
  <title>job-trigger-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="/res/common/js/common.js"></script>
  <script src="/res/imp/bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <script type="text/javascript" charset="utf-8">
    // Mock out sk.post() to fake contact with the server.
    sk.post = function(url, body) {
      return new Promise(function (resolve, reject) {
        var data = JSON.parse(body);
        setTimeout(function() {
          if (data.length < 1) {
            reject("No jobs specified!");
          }
          var jobs = [];
          for (var i = 0; i < data.length; i++) {
            if (!data[i].commit) {
              reject("No commit specified!");
            }
            if (!data[i].name) {
              reject("No job name specified!")
            }
            jobs.push("id" + i);
          }
          resolve(JSON.stringify(jobs));
        }, 3000);
      });
    }
  </script>
  <link rel="import" href="job-trigger-sk.html">
  <link rel="import" href="/res/common/imp/error-toast-sk.html">
</head>
<body>
<dom-module id="job-trigger-demo">
  <template>
    <job-trigger-sk></job-trigger-sk>
  </template>
  <script>
  Polymer({
    is: 'job-trigger-demo',
  });
  </script>
</dom-module>
  <h1>job-trigger-sk demo</h1>
  <job-trigger-demo></job-trigger-demo>
  <error-toast-sk></error-toast-sk>

  <h1>immediate trigger demo</h1>
  <a href="/job-trigger-sk-demo.html?job=Build-Mac-Clang-Arm7-Debug-Android&commit=1d20258360a7fc0fac86a8a1ec8ad5016100f7d6&submit=true" target="_blank">Click here to trigger a job</a>
</body>
</html>
