[% WRAPPER layout.tt title=(create ? "Create jobset in project $project.name" : clone ? "Cloning jobset $project.name:$jobset.name" : "Editing jobset $project.name:$jobset.name") %] [% PROCESS common.tt %] [% USE format %] [% BLOCK renderJobsetInputAlt %] <button type="button" class="btn btn-warning" onclick='$(this).parents(".inputalt").remove()'><i class="icon-trash icon-white"></i></button> <input type="text" [% HTML.attributes(value => alt.value, name => name) %]/> <br /> [% END %] [% BLOCK renderJobsetInput %] <tr class="input [% extraClass %]" [% IF id %]id="[% id %]"[% END %]> <td> <button type="button" class="btn btn-warning" onclick='$(this).parents(".input").remove()'><i class="icon-trash icon-white"></i></button> <input type="text" id="[% baseName %]-name" name="[% baseName %]-name" [% HTML.attributes(value => input.name) %]/> </td> <td> [% INCLUDE renderSelection curValue=input.type param="$baseName-type" options=inputTypes %] </td> <td class="inputalts" id="[% baseName %]"> [% FOREACH alt IN input.jobsetinputalts %] <span class="inputalt"> [% INCLUDE renderJobsetInputAlt alt=alt name="$baseName-values" %] </span> [% END %] [% IF edit %]<button type="button" class="add-inputalt btn btn-success" onclick='return false'><i class="icon-plus icon-white"></i></button>[% END %] </td> </tr> [% END %] [% BLOCK renderJobsetInputs %] <table class="table table-striped table-condensed"> <thead> <tr><th>Input name</th><th>Type</th><th>Values</th></tr> </thead> <tbody class="inputs"> [% FOREACH input IN jobset.jobsetinputs %] [% INCLUDE renderJobsetInput input=input baseName="input-$input.name" %] [% END %] <tr> <td colspan="3" style="text-align: center;"><button type="button" class="add-input btn btn-success"><i class="icon-plus icon-white"></i> Add a new input</button></td> </tr> </tbody> </table> [% END %] <form class="form-horizontal"> <fieldset> <div class="control-group"> <div class="controls"> <label class="checkbox"> <input type="checkbox" name="enabled" [% IF jobset.enabled; 'checked="checked"'; END %]/>Enabled </label> </div> <div class="controls"> <label class="checkbox"> <input type="checkbox" name="visible" [% IF !jobset.hidden; 'checked="checked"'; END %]/>Visible </label> </div> </div> <div class="control-group"> <label class="control-label">Identifier</label> <div class="controls"> <input type="text" class="span3" name="name" [% HTML.attributes(value => clone ? "" : jobset.name) %]/> </div> </div> <div class="control-group"> <label class="control-label">Description</label> <div class="controls"> <input type="text" class="span3" name="description" [% HTML.attributes(value => jobset.description) %]/> </div> </div> <div class="control-group"> <label class="control-label">Nix expression</label> <div class="controls"> <input type="text" class="span3" name="nixexprpath" [% HTML.attributes(value => jobset.nixexprpath) %]/> in <input type="text" class="span3" name="nixexprinput" [% HTML.attributes(value => jobset.nixexprinput) %]/> </div> </div> <div class="control-group"> <label class="control-label">Check interval</label> <div class="controls"> <div class="input-append"> <input type="number" class="span3" name="checkinterval" [% HTML.attributes(value => jobset.checkinterval) %]/> <span class="add-on">sec</span> </div> <span class="help-inline">(0 to disable polling)</span> </div> </div> <div class="control-group"> <label class="control-label">Scheduling shares</label> <div class="controls"> <div class="input-append"> <input type="number" class="span3" name="schedulingshares" [% HTML.attributes(value => jobset.schedulingshares) %]/> </div> [% IF totalShares %] <span class="help-inline">([% f = format("%.2f"); f(jobset.schedulingshares / totalShares * 100) %]% out of [% totalShares %] shares)</span> [% END %] </div> </div> <div class="control-group"> <div class="controls"> <label class="checkbox"> <input type="checkbox" name="enableemail" [% IF jobset.enableemail; 'checked="checked"'; END %]/>Email notification </label> </div> </div> <div class="control-group"> <label class="control-label">Email override</label> <div class="controls"> <input type="text" class="span3" name="emailoverride" [% HTML.attributes(value => jobset.emailoverride) %]/> </div> </div> <div class="control-group"> <label class="control-label">Number of evaluations to keep</label> <div class="controls"> <input type="number" class="span3" name="keepnr" [% HTML.attributes(value => jobset.keepnr) %]/> </div> </div> [% INCLUDE renderJobsetInputs %] <div class="form-actions"> <button id="submit-jobset" type="submit" class="btn btn-primary"><i class="icon-ok icon-white"></i> [%IF create || clone %]Create jobset[% ELSE %]Apply changes[% END %]</button> </div> </fieldset> <table style="display: none"> [% INCLUDE renderJobsetInput input="" extraClass="template" id="input-template" baseName="input-template" %] </table> <tt class="inputalt" id="inputalt-template" style="display: none"> [% INCLUDE renderJobsetInputAlt alt=alt %] </tt> </form> <script type="text/javascript"> $(document).ready(function() { var id = 0; $(".add-input").click(function() { var newid = "input-" + id++; var x = $("#input-template").clone(true).attr("id", "").insertBefore($(this).parents("tr")).show(); $("#input-template-name", x).attr("name", newid + "-name"); $("#input-template-type", x).attr("name", newid + "-type"); $("#input-template", x).attr("id", newid); return false; }); $(".add-inputalt").click(function() { var x = $("#inputalt-template").clone(true).insertBefore($(this)).attr("id", "").show(); $("input", x).attr("name", x.parents(".inputalts").attr("id") + "-values"); }); }); $("#submit-jobset").click(function() { requestJSON({ [% IF create || clone %] url: "[% c.uri_for('/jobset' project.name '.new') %]", [% ELSE %] url: "[% c.uri_for('/jobset' project.name jobset.name) %]", [% END %] data: $(this).parents("form").serialize(), type: 'PUT', success: function(data) { window.location = data.redirect; }, }); return false; }); </script> [% END %]