* Happy Javascript hacking.

[?]
Nov 13, 2008, 5:55 PM
W6DC6K4INJQOJYR553ISCKZV7YIOGHEM3FZQPOLAPSZQ3KSJDMRQC

Dependencies

Change contents

  • edit in src/HydraFrontend/lib/HydraFrontend/Controller/Root.pm at line 64
    [2.478]
    [2.478]
    $project->update;
  • replacement in src/HydraFrontend/lib/HydraFrontend/Controller/Root.pm at line 67
    [2.483][2.483:505]()
    $project->update;
    [2.483]
    [3.0]
    my %jobsetNames;
    foreach my $param (keys %{$c->request->params}) {
    next unless $param =~ /^jobset-(\w+)-name$/;
    my $baseName = $1;
    next if $baseName eq "template";
    my $jobsetName = $c->request->params->{"jobset-$baseName-name"};
    die "Invalid jobset name: $jobsetName" unless $jobsetName =~ /^[[:alpha:]]\w*$/;
    my $nixExprPath = $c->request->params->{"jobset-$baseName-nixexprpath"};
    die "Invalid Nix expression path: $nixExprPath" unless $nixExprPath =~ /^\w++$/; # !!! stricter
    my $nixExprInput = $c->request->params->{"jobset-$baseName-nixexprinput"};
    die "Invalid Nix expression input name: $nixExprInput" unless $nixExprInput =~ /^\w+$/;
    $jobsetNames{$jobsetName} = 1;
    if ($baseName =~ /^\d+$/) { # numeric base name is auto-generated, i.e. a new entry
    my $jobset = $c->model('DB::Jobsets')->create(
    { project => $project->name
    , name => $jobsetName
    , description => $c->request->params->{"jobset-$baseName-description"}
    , nixexprpath => $nixExprPath
    , nixexprinput => $nixExprInput
    });
    } else { # it's an existing jobset
    (my $jobset) = $project->jobsets->search({name => $baseName});
    die unless defined $jobset;
    $jobset->name($jobsetName);
    $jobset->description($c->request->params->{"jobset-$baseName-description"});
    $jobset->nixexprpath($nixExprPath);
    $jobset->nixexprinput($nixExprInput);
    $jobset->update;
    }
    }
    # Get rid of deleted jobsets, i.e., ones that are no longer submitted in the parameters.
    my @jobsets = $project->jobsets->all;
    foreach my $jobset (@jobsets) {
    $jobset->delete unless defined $jobsetNames{$jobset->name};
    }
  • edit in src/HydraFrontend/root/hydra.css at line 19
    [10.8897]
    [10.8897]
    margin-top: 2em;
  • edit in src/HydraFrontend/root/hydra.css at line 24
    [10.8926]
    [10.8926]
    margin-top: 1.5em;
  • edit in src/HydraFrontend/root/hydra.css at line 182
    [11.3711]
    [11.3711]
    }
    div.indent {
    padding-left: 2em;
  • edit in src/HydraFrontend/root/hydra.css at line 188
    [3.1607]
    [11.3714]
    div.template {
    display: none;
    }
  • edit in src/HydraFrontend/root/hydra.css at line 192
    [11.3715]
    [12.251]
  • replacement in src/HydraFrontend/root/project.tt at line 7
    [2.3099][2.3099:3193]()
    <input type='text' class='string' [% HTML.attributes(name => param, value => value) %] />
    [2.3099]
    [2.3193]
    <input type="text" class="string" [% HTML.attributes(id => param, name => param, value => value) %] />
  • edit in src/HydraFrontend/root/project.tt at line 13
    [2.3258][2.3258:3442]()
    [% IF edit %]
    <form action="[% IF create %][% c.uri_for('/createproject/submit') %][% ELSE %][% c.uri_for('/project' curProject.name 'submit') %][% END %]" method="post">
    [% END %]
  • edit in src/HydraFrontend/root/project.tt at line 14
    [2.3443]
    [2.3443]
    [% BLOCK renderJobset %]
  • replacement in src/HydraFrontend/root/project.tt at line 16
    [2.3444][2.3444:3555](),[2.3555][3.1352:1353](),[3.570][3.1352:1353](),[3.1353][2.3556:3585](),[3.570][3.1761:1762](),[3.1353][3.1761:1762](),[2.3585][3.1761:1762](),[3.1761][3.1761:1762](),[3.1762][2.3586:4025](),[3.1420][3.1762:1763](),[2.4025][3.1762:1763](),[3.1762][3.1762:1763](),[3.1763][3.1421:1422](),[3.1422][3.1763:1783](),[3.1763][3.1763:1783](),[3.1783][3.1423:1461]()
    [% IF create %]
    <h1>New Project</h1>
    [% ELSE %]
    <h1>Project <tt>[% curProject.name %]</tt></h1>
    [% END %]
    <h2>General information</h2>
    <table>
    [% IF edit %]
    <tr>
    <th>Identifier:</th>
    <td><tt>[% INCLUDE maybeEditString param="name" value=curProject.name %]</tt></td>
    </tr>
    [% END %]
    <tr>
    <th>Display name:</th>
    <td>[% INCLUDE maybeEditString param="displayname" value=curProject.displayname %]</td>
    </tr>
    <tr>
    <th>Description:</th>
    <td>[% INCLUDE maybeEditString param="description" value=curProject.description %]</td>
    </tr>
    </table>
    <h2>Definition</h2>
    [% IF curProject.jobsets.size > 0 %]
    [2.3444]
    [3.1783]
    <div class="indent jobset">
  • replacement in src/HydraFrontend/root/project.tt at line 18
    [3.1784][3.571:615]()
    [% FOREACH jobset IN curProject.jobsets -%]
    [3.1784]
    [3.1825]
    <h3>Jobset <tt>[% INCLUDE maybeEditString param="jobset-$baseName-name" value=jobset.name %]</tt></h3>
  • replacement in src/HydraFrontend/root/project.tt at line 20
    [3.1826][3.1826:1871]()
    <h3>Jobset <tt>[% jobset.name %]</tt></h3>
    [3.1826]
    [3.1871]
    <div class="indent">
  • edit in src/HydraFrontend/root/project.tt at line 25
    [3.1634][2.4026:4044]()
    [% IF edit %]
  • edit in src/HydraFrontend/root/project.tt at line 26
    [2.4053][2.4053:4176](),[2.4176][3.1634:1643](),[3.1634][3.1634:1643]()
    <th>Identifier:</th>
    <td><tt>[% INCLUDE maybeEditString value=jobset.name %]</tt></td>
    </tr>
    [% END %]
    <tr>
  • replacement in src/HydraFrontend/root/project.tt at line 27
    [3.1671][2.4177:4247]()
    <td>[% INCLUDE maybeEditString value=jobset.description %]</td>
    [3.1671]
    [3.1711]
    <td>[% INCLUDE maybeEditString param="jobset-$baseName-description" value=jobset.description %]</td>
  • replacement in src/HydraFrontend/root/project.tt at line 31
    [3.1761][2.4248:4401]()
    <td><tt>[% INCLUDE maybeEditString value=jobset.nixexprpath %]</tt> in input <tt>[% INCLUDE maybeEditString value=jobset.nixexprinput %]</tt></td>
    [3.1761]
    [3.1854]
    <td>
    <tt>[% INCLUDE maybeEditString param="jobset-$baseName-nixexprpath" value=jobset.nixexprpath %]</tt> in input
    <tt>[% INCLUDE maybeEditString param="jobset-$baseName-nixexprinput" value=jobset.nixexprinput %]</tt>
    </td>
  • replacement in src/HydraFrontend/root/project.tt at line 82
    [3.2661][3.2661:2672]()
    [% END -%]
    [3.2661]
    [3.2672]
    [% IF edit %]
    <p><button onclick='$(this).parents(".jobset").remove()' id="jobset-[% baseName %]-delete">Delete this jobset</button></p>
    [% END %]
    </div>
    </div>
    [% END %]
    [% IF edit %]
    <form action="[% IF create %][% c.uri_for('/createproject/submit') %][% ELSE %][% c.uri_for('/project' curProject.name 'submit') %][% END %]" method="post">
    [% END %]
    [% IF create %]
    <h1>New Project</h1>
    [% ELSE %]
    <h1>Project <tt>[% curProject.name %]</tt></h1>
    [% END %]
    <h2>General information</h2>
    <table>
    [% IF edit %]
    <tr>
    <th>Identifier:</th>
    <td><tt>[% INCLUDE maybeEditString param="name" value=curProject.name %]</tt></td>
    </tr>
    [% END %]
    <tr>
    <th>Display name:</th>
    <td>[% INCLUDE maybeEditString param="displayname" value=curProject.displayname %]</td>
    </tr>
    <tr>
    <th>Description:</th>
    <td>[% INCLUDE maybeEditString param="description" value=curProject.description %]</td>
    </tr>
    </table>
    <h2>Jobsets</h2>
    [% IF curProject.jobsets && curProject.jobsets.size > 0 || edit %]
    [% IF edit %]
    <p><button id="add-jobset">Add a new jobset</button></p>
    <div id="jobset-template" class="template">
    [% INCLUDE renderJobset jobset="" baseName="template" %]
    </div>
    <script>
    var id = 0;
    $("#add-jobset").click(function() {
    var newid = "jobset-" + id++;
    $("#jobset-template").clone(true).attr("id", newid).insertAfter($("#jobset-template")).show();
    $("#jobset-template-name", $("#" + newid)).attr("name", newid + "-name").attr("value", newid);
    $("#jobset-template-description", $("#" + newid)).attr("name", newid + "-description");
    $("#jobset-template-nixexprpath", $("#" + newid)).attr("name", newid + "-nixexprpath");
    $("#jobset-template-nixexprinput", $("#" + newid)).attr("name", newid + "-nixexprinput");
    return false;
    });
    </script>
    [% END %]
  • edit in src/HydraFrontend/root/project.tt at line 149
    [3.2673]
    [3.1462]
    [% FOREACH jobset IN curProject.jobsets -%]
    [% INCLUDE renderJobset jobset=jobset baseName=jobset.name %]
    [% END -%]
  • replacement in src/HydraFrontend/root/project.tt at line 165
    [3.2689][3.1529:1556]()
    [% IF jobNames.size > 0 %]
    [3.2689]
    [3.1556]
    [% IF jobName && jobNames.size > 0 %]
  • edit in src/HydraFrontend/root/project.tt at line 214
    [2.5251]
    [2.5251]
    <hr />
  • replacement in src/HydraFrontend/root/project.tt at line 217
    [2.5252][2.5252:5299]()
    <p><input type="submit" value="Apply" /></p>
    [2.5252]
    [2.5299]
    <p><input type="submit" value="[% IF create %]Create[% ELSE %]Apply changes[% END %]" /></p>
  • replacement in src/HydraFrontend/root/project.tt at line 221
    [2.5311][2.5311:5469]()
    <form action="[% c.uri_for('/project' curProject.name 'delete') %]" method="post">
    <p><input type="submit" value="Delete this project" /></p>
    </form>
    [2.5311]
    [2.5469]
    [% IF !create %]
    <form action="[% c.uri_for('/project' curProject.name 'delete') %]" method="post">
    <p><input id="delete-project" type="submit" value="Delete this project" /></p>
    </form>
  • edit in src/HydraFrontend/root/project.tt at line 227
    [2.5476]
    [2.5476]
    <script>
    $("#delete-project").click(function() {
    return confirm("Are you sure you want to delete this project?");
    });
    </script>
    [% END %]