<!--
    Copyright 2020 The Go Authors. All rights reserved.
    Use of this source code is governed by a BSD-style
    license that can be found in the LICENSE file.
-->
{{define "content"}}
  <section class="NewWorkflow">
    <h2>New Go Release</h2>
    <form class="NewWorkflow-workflowSelect" action="{{baseLink "/workflows/new"}}" method="get">
      <label for="workflow.name">Workflow:</label>
      <select id="workflow.name" name="workflow.name" onchange="this.form.submit()">
        <option value="">Select Workflow</option>
        {{range $name, $definition := .Definitions}}
          <option value="{{$name}}" {{if eq $name $.Name}}selected="selected"{{end}}>
            {{$name}}
          </option>
        {{end}}
      </select>
      <noscript>
        <input name="workflow.new" type="submit" value="New" />
      </noscript>
    </form>
    {{if .Selected}}
      <form action="{{baseLink "/workflows/create"}}" method="post">
        <input type="hidden" id="workflow.name" name="workflow.name" value="{{$.Name}}" />
        {{range $name := .Selected.ParameterNames}}
          <div class="NewWorkflow-parameter">
            <label for="workflow.params.{{$name}}">{{$name}}</label>
            <input id="workflow.params.{{$name}}" name="workflow.params.{{$name}}" value="" />
          </div>
        {{end}}
        <div class="NewWorkflow-workflowCreate">
          <input name="workflow.create" type="submit" value="Create" onclick="return confirm('This will create and immediately run this workflow.\n\nReady to proceed?')" />
        </div>
      </form>
    {{end}}
  </section>
{{end}}
