* Happy Javascript hacking.
[?]
Nov 13, 2008, 5:55 PM
W6DC6K4INJQOJYR553ISCKZV7YIOGHEM3FZQPOLAPSZQ3KSJDMRQCDependencies
- [2]
2AUODJBT - [3]
PBFZEQLZ - [4]
K5BEBWKM - [5]
L2E6EVE2* Merged the Build and Job tables. - [6]
7YBYT2LQ - [7]
LQNBKF3D - [8]
JD27RBKM - [*]
J5UVLXOK* Start of a basic Catalyst web interface. - [*]
B72GLND4 - [*]
UVMFS73T* Some jQuery / CSS hackery.
Change contents
- edit in src/HydraFrontend/lib/HydraFrontend/Controller/Root.pm at line 64
$project->update; - replacement in src/HydraFrontend/lib/HydraFrontend/Controller/Root.pm at line 67
$project->update;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++$/; # !!! strictermy $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 entrymy $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
margin-top: 2em; - edit in src/HydraFrontend/root/hydra.css at line 24
margin-top: 1.5em; - edit in src/HydraFrontend/root/hydra.css at line 182
}div.indent {padding-left: 2em; - edit in src/HydraFrontend/root/hydra.css at line 188
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
<input type='text' class='string' [% HTML.attributes(name => param, value => value) %] /><input type="text" class="string" [% HTML.attributes(id => param, name => param, value => value) %] /> - edit in src/HydraFrontend/root/project.tt at line 13
[% 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
[% 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 %]<div class="indent jobset"> - replacement in src/HydraFrontend/root/project.tt at line 18
[% FOREACH jobset IN curProject.jobsets -%]<h3>Jobset <tt>[% INCLUDE maybeEditString param="jobset-$baseName-name" value=jobset.name %]</tt></h3> - replacement in src/HydraFrontend/root/project.tt at line 20
<h3>Jobset <tt>[% jobset.name %]</tt></h3><div class="indent"> - edit in src/HydraFrontend/root/project.tt at line 25
[% IF edit %] - edit in src/HydraFrontend/root/project.tt at line 26
<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
<td>[% INCLUDE maybeEditString value=jobset.description %]</td><td>[% INCLUDE maybeEditString param="jobset-$baseName-description" value=jobset.description %]</td> - replacement in src/HydraFrontend/root/project.tt at line 31
<td><tt>[% INCLUDE maybeEditString value=jobset.nixexprpath %]</tt> in input <tt>[% INCLUDE maybeEditString value=jobset.nixexprinput %]</tt></td><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
[% END -%][% 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
[% FOREACH jobset IN curProject.jobsets -%][% INCLUDE renderJobset jobset=jobset baseName=jobset.name %][% END -%] - replacement in src/HydraFrontend/root/project.tt at line 165
[% IF jobNames.size > 0 %][% IF jobName && jobNames.size > 0 %] - edit in src/HydraFrontend/root/project.tt at line 214
<hr /> - replacement in src/HydraFrontend/root/project.tt at line 217
<p><input type="submit" value="Apply" /></p><p><input type="submit" value="[% IF create %]Create[% ELSE %]Apply changes[% END %]" /></p> - replacement in src/HydraFrontend/root/project.tt at line 221
<form action="[% c.uri_for('/project' curProject.name 'delete') %]" method="post"><p><input type="submit" value="Delete this project" /></p></form>[% 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
<script>$("#delete-project").click(function() {return confirm("Are you sure you want to delete this project?");});</script>[% END %]