<!--
  This in an HTML Import-able file that contains the definition
  of the following elements:

    <fuzzer-roll-sk>

  To use this file import it:

    <link href="/res/imp/fuzzer-roll-sk.html" rel="import" />

  Usage:

    <fuzzer-roll-sk></fuzzer-roll-sk>

  This is a top level element.

  Properties:
    None.

  Methods:
    None.

  Events:
    None.
-->
<link rel="import" href="/res/imp/bower_components/iron-flex-layout/iron-flex-layout-classes.html">
<link rel="import" href="/res/imp/bower_components/paper-input/paper-input.html">
<link rel="import" href="/res/imp/bower_components/paper-button/paper-button.html">
<link rel="import" href="/res/common/imp/app-sk.html" />
<link rel="import" href="/res/common/imp/error-toast-sk.html" />
<link rel="import" href="fuzzer-menu-sk.html" />
<link rel="import" href="fuzzer-status-sk.html" />

<dom-module id="fuzzer-roll-sk">
  <template>
    <style include="iron-positioning">
      app-sk {
        --app-sk-main: {
          background-color: #FFFFFF;
          font-family: sans-serif;
        };
        --app-sk-toolbar: {
          background-color: #8be1b8;
        };
        login-sk{
          --login-sk-color: white;
        };
      }
      .title {
        padding:2px;
        margin-top:5px;
      }
      .title {
        display:inline;
        font-size: 1.5em;
        -webkit-margin-before: 0.83em;
        -webkit-margin-after: 0.83em;
        -webkit-margin-start: 0px;
        -webkit-margin-end: 0px;
        font-weight: bold;
      }
      .count {
        max-width:420px;
      }

      .submit {
        max-width: 300px;
      }
    </style>
    <app-sk class="fit" header_height="60px">
      <img header id="logo" src="/res/img/skia_fuzz.png">
      <fuzzer-status-sk rtoolbar></fuzzer-status-sk>
      <fuzzer-menu-sk navigation></fuzzer-menu-sk>

      <h2>Update revision to fuzz at</h2>
      <paper-input label="revision" value="{{revision}}"></paper-input>
      <paper-button class="submit" raised on-click="roll">Roll fuzzer forward to this revision</paper-button>
    </app-sk>

    <error-toast-sk></error-toast-sk>
  </template>
  <script>
    Polymer({
      is: 'fuzzer-roll-sk',

      properties: {
        revision: {
          type: String,
        }
      },

      roll: function(){
        if (this.revision){
          sk.post("/roll/revision", JSON.stringify({
            "revision": this.revision,
          })).then(function(){
            sk.errorMessage("Successfully rolled forward");
          }, function(a){
            sk.errorMessage("Could not roll forward: "+a);
          });
          sk.errorMessage("Posted... waiting");
        }
      }
    });
  </script>
</dom-module>
