- adapted ui for hydra, more in line with nixos.org website
[?]
Jan 7, 2010, 2:25 PM
QL55ECJ6KMMBUOWQ6LKSOVN7L43CH4S6SPE2AQ3VX3KSGC32RP4ACDependencies
- [2]
VHYWSRIS* Add nix version to footer of hydra pages - [3]
FKK2ZSTL* Split the CSS. - [4]
RBNQKATL* Adding persistant releases. A release is a named set of builds. - [5]
OZ5UBJEK - [6]
4JPNFWRB* Use jquery for the logfile manipulation. - [7]
TQKGQ5R3 - [8]
JRU2LRPZ - [9]
UWVMQIAC* Refactoring. - [10]
75XUS62Y* Added a page to quickly see all failed builds and failed evaluations - [11]
YTSIRIMK* Separate job status and all builds pages. - [12]
FPK5LF53* Put the project-related actions in a separate controller. Put the - [13]
DEMSSSB2* Controller for jobs which inherits all actions in ListBuilds. So - [14]
BTUDUY6F* Provide some redirects to the latest successful build for a job (or - [15]
2AIIYGI5* Show job status and all builds for a project. - [16]
4D4U5IPY* Allow jobsets to be disabled. - [17]
FEMR2C5W - [18]
4S4ZMFJK* Links on trs. - [19]
E74FJWCF* Pass the page number in the URI query string. - [20]
RAKTHYAI* In the job status and error pages, show when the status of a job - [21]
T2232OBS* Add some DB indices to make the /releases page much faster. - [22]
DGVPFNCU* Grabbed a logo. TODO: check copyright status. - [23]
J5UVLXOK* Start of a basic Catalyst web interface. - [24]
UVMFS73T* Some jQuery / CSS hackery. - [25]
GNIEG2GC* Disambiguate jobs by jobset name. I.e. jobs with the same name in - [26]
BA46C5LN* Pretty-print the logs. - [27]
KR7QIG6Z - [28]
7Z3YOKCV* PROCESS -> INCLUDE in most cases. INCLUDE does proper scoping of - [29]
JK2QWPH6 - [30]
CV5HAOSH - [31]
JLDUSNUO* Unify rendering of finished and scheduled builds. - [32]
ODNCGFQ5* Improved the navigation bar: don't include all projects (since that - [33]
S66BOMVU* Added authentication. - [34]
SJN2QPWH* Big speed-up of the job status page and the channel generation (such - [35]
HCKFTNQ6 - [36]
3HZY24CX* Make jobsets viewable under - [*]
IK53RV4V - [*]
IE3SRMWZ* Show global and per-project statistics. - [*]
D5QIOJGP* Move everything up one directory. - [*]
A52HEFHQ* Allow builds to be restarted (if they failed with a transient error,
Change contents
- replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 56
my $resultsPerPage = 50;my $resultsPerPage = 20; - replacement in src/root/all.tt at line 12
[% INCLUDE renderBuildList %][% BLOCK renderNav %] - edit in src/root/all.tt at line 23
[% END %] - edit in src/root/all.tt at line 25
[% INCLUDE renderNav %][% INCLUDE renderBuildList %][% INCLUDE renderNav %] - replacement in src/root/common.tt at line 71
<th>Priority</th><th>P</th> - replacement in src/root/common.tt at line 80
<th>Description</th>[% IF showDescription %]<th>Description</th>[% END %] - edit in src/root/common.tt at line 125
[% IF showDescription %] - edit in src/root/common.tt at line 127
[% END -%] - edit in src/root/common.tt at line 134
[% BLOCK renderLink %]<a href="[% uri %]">[% title %]</a>[% END %] - file addition: contextbar.tt[40.1486]
[% BLOCK makeLinkWrapped %]<li [% IF curUri == uri %]class="active"[% END %]><a href="[% uri %]">[% title %]</a>[% content %]</li>[% END %][% BLOCK makeLink -%][% INCLUDE makeLinkWrapped content="" -%][% END %][% BLOCK makeSubMenu %]<ul class="short-menu" id="context-menu">[% content %]</ul>[% END %][% IF project %][% WRAPPER makeSubMenu %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Project').action_for('view'), [project.name])title = project.name %][% IF jobset %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Jobset').action_for('index'), [project.name, jobset.name])title = jobset.name %][% END %][% IF job %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Job').action_for('index'), [project.name, jobset.name, job.name])title = job.name %][% END %][% END %][% END %] - replacement in src/root/job.tt at line 5
<h1>Job <tt>[% project.name %]:[% jobset.name %]:[% job.name %]</tt></h1><h1>Job <tt>[% INCLUDE renderLinkuri = c.uri_for(c.controller('Project').action_for('view'), [project.name])title = project.name %]:[% INCLUDE renderLinkuri = c.uri_for(c.controller('Jobset').action_for('index'), [project.name, jobset.name])title = jobset.name %]:[% job.name %]</tt></h1> - edit in src/root/jobset.tt at line 3
- replacement in src/root/jobset.tt at line 12
<h1>Jobset <tt>[% project.name %]:[% jobset.name %]</tt></h1><h1>Jobset <tt>[% INCLUDE renderLinkuri = c.uri_for(c.controller('Project').action_for('view'), [project.name])title = project.name %]:[% jobset.name %]</tt></h1> - edit in src/root/layout.tt at line 14
<link rel="stylesheet" href="/static/css/navbar.css" type="text/css" /> - edit in src/root/layout.tt at line 15
<link rel="stylesheet" href="/static/css/nixos-site.css" type="text/css" /> - replacement in src/root/layout.tt at line 74
<div id="container"><div id="leftnavbar"><div id="logo"><a class="no-hover" href="/"><img src="/static/images/hydra.png" alt="Hydra" /></a></div>[% PROCESS navbar.tt %]<div id="page"><div id="header"><div id="logo"><a class="no-hover" href="/"><img src="/static/images/hydra.png" alt="Hydra Logo" /></a></div>[% PROCESS topbar.tt %][% PROCESS contextbar.tt %] - edit in src/root/layout.tt at line 81
<div id="main">[% PROCESS navbar.tt %] - replacement in src/root/layout.tt at line 84[6.4744]→[6.4744:4834](∅→∅),[6.4834]→[2.173:264](∅→∅),[2.264]→[6.2083:2141](∅→∅),[6.2083]→[6.2083:2141](∅→∅),[6.79]→[6.4708:4824](∅→∅),[6.1505]→[6.4708:4824](∅→∅),[6.2141]→[6.4708:4824](∅→∅),[6.615]→[6.4708:4824](∅→∅)
<div id="content">[% content %]<div id="footer"><hr /><em>Hydra [% HTML.escape(version) %] (using [% HTML.escape(nixVersion) %]).</em>Page generated on [% INCLUDE renderDateTime %].[% IF c.user_exists %]You are logged in as <tt>[% c.user.username %]</tt>.[% END %]<div id="content">[% content %] - edit in src/root/layout.tt at line 87
- edit in src/root/layout.tt at line 89
<div id="footer"><div id="last-modified"><em>Hydra [% HTML.escape(version) %] (using [% HTML.escape(nixVersion) %]).</em>Page generated on [% INCLUDE renderDateTime %].[% IF c.user_exists %]You are logged in as <tt>[% c.user.username %]</tt>.[% END %]</div> - edit in src/root/navbar.tt at line 5
</li>[% END %][% BLOCK menuItem %]<li [% IF "${root}${curUri}" == uri %]class="active"[% END %]><a href="[% uri %]">[% title %]</a> - replacement in src/root/navbar.tt at line 21
<li class="submenu"><div class="title [% extra %]"><a class="[% collapsed ? "submenuToggleCollapsed" : "submenuToggleExpanded" %]"href="javascript:">[% HTML.escape(title) %]</a></div><ul class="submenu [% extra %]"><div id="left-title">[% title %]</div><ul id="left-menu"> - replacement in src/root/navbar.tt at line 24
</ul></li></ul> - replacement in src/root/navbar.tt at line 27[6.15749]→[6.15749:16318](∅→∅),[6.16318]→[6.3072:3193](∅→∅),[6.3193]→[6.16318:16330](∅→∅),[6.16318]→[6.16318:16330](∅→∅)
<ul class="menu">[% WRAPPER makeSubMenu title="Hydra" collapsed=0 %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Root').action_for('index'))title = "Overview" %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Root').action_for('queue'))title = "Queue" %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Root').action_for('all'))title = "All builds" %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Root').action_for('jobstatus'))title = "Job status" %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Root').action_for('errors'))title = "Errors" %][% END %][% IF project %] - edit in src/root/navbar.tt at line 29
<div id="left-bar"> - replacement in src/root/navbar.tt at line 33[6.16424]→[6.16424:16591](∅→∅),[6.16591]→[4.3476:3621](∅→∅),[4.3621]→[6.16591:16853](∅→∅),[6.16591]→[6.16591:16853](∅→∅),[6.16853]→[6.3194:3334](∅→∅)
[% INCLUDE makeLinkuri = c.uri_for(c.controller('Project').action_for('view'), [project.name])title = "Overview" %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Project').action_for('releases'), [project.name])title = "Releases" %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Project').action_for('all'), [project.name])title = "All builds" %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Project').action_for('jobstatus'), [project.name])title = "Job status" %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Project').action_for('errors'), [project.name])title = "Errors" %][% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('view'), [project.name]) title = "Overview" %][% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('releases'), [project.name]) title = "Releases" %][% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('all'), [project.name]) title = "All builds" %][% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('jobstatus'), [project.name]) title = "Job status" %][% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('errors'), [project.name]) title = "Errors" %] - replacement in src/root/navbar.tt at line 77
[% WRAPPER makeSubMenu title="Admin" collapsed=0 %][% IF c.user_exists %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Root').action_for('logout'))title = "Logout" %][% ELSE %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Root').action_for('login'))title = "Login" %][% END %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Project').action_for('create'))title = "Create project" %][% END %]</ul></div>[% END %] - edit in src/root/navbar.tt at line 81
<script type="text/javascript">$(document).ready(function() {$('.submenuToggleExpanded').toggle(function () { $(".submenu", $(this).parents(".submenu")).slideUp(); },function () { $(".submenu", $(this).parents(".submenu")).slideDown(); });$('.submenuToggleCollapsed').toggle(function () { $(".submenu", $(this).parents(".submenu")).slideDown(); },function () { $(".submenu", $(this).parents(".submenu")).slideUp(); });});</script> - edit in src/root/overview.tt at line 36
[% IF c.user_exists %]<p>[ [% INCLUDE maybeLinkuri = c.uri_for(c.controller('Project').action_for('create'))content = "Create project" %] ]</p>[% END %] - replacement in src/root/static/css/hydra.css at line 2
width: 11em;width: 8em; - edit in src/root/static/css/hydra.css at line 157[41.2011]
- file addition: nixos-site.css[40.2111]
body {background-color: gray;margin: 0;}/* The main container element. */div#page {max-width: 80em;min-width: 50em;min-height: 20em;margin: 1em auto;background-color: white;/* Put a rounded border around the page. */border: 1px solid black;padding: 1em;border-radius: 1em;-moz-border-radius: 1em;-webkit-border-radius: 1em;-moz-box-shadow: #404040 0px 5px 50px;-webkit-box-shadow: #404040 0px 5px 50px;}/* The header. */div#header {border-bottom: 1px solid black;position: relative;padding-bottom: 1em;}div#logo {display: inline;}ul#top-menu {top: 0em;}ul#context-menu {bottom: 1em;}/* The footer. */div#footer {margin-top: 1em;border-top: 1px solid black;position: relative;}div#last-modified {font-size: 80%;font-style: italic;}ul#bottom-menu {bottom: 0em;}/* The top and bottom menus. */ul.short-menu {display: block;position: absolute;right: 0em;margin: 0;padding: 0;}ul.short-menu li {display: inline;/* Put a ">" in front of the menu item. */margin-left: 0.5em;padding-left: 1.3em;padding-top: 0.5em;padding-bottom: 0.5em;background-image: url(../images/arrow-right.gif);background-repeat: no-repeat;background-position: 0.3em center;}ul.short-menu li a {color: black;text-decoration: none;}ul.short-menu li a:hover {text-decoration: none;border-bottom: 1px dotted black;background: white;}/* The left menu. */div#main {position: relative;min-height: 10em;}div#left-bar {position: absolute;left: 0em;width: 8em;min-height: 10em;}div#left-title {font-weight: bold;padding-bottom: 0.5em;margin-bottom: 0.5em;border-bottom: 1px dotted black;}ul#left-menu {padding: 0 0 0 0;margin: 0 0 0 0;}ul#left-menu li {font-size: 90%;list-style: none;padding-left: 1.3em;margin-bottom: 0.5em;}ul#left-menu li {background-image: url(../images/arrow-right.gif);background-repeat: no-repeat;background-position: 0 center;}ul#left-menu li.active {background-image: url(../images/arrow-right-active.gif);background-color: #eef2ff;font-weight: bold;color: #606060;}/* The content. */div#left-bar + div#content {margin-left: 9em;}/* Inline (floating) images. */img.inline, img.inlineNoBorder {float: right;margin-left: 1em;margin-bottom: 1em;}/* Release tables. */.reldate {font-style: italic;}table.releases td {border: 0px;}/* Screenshot table. */table.screenshots {border-style: hidden;}table.screenshots td {vertical-align: middle;padding-top: 0.5em;padding-bottom: 0.5em;border: 0px;border-bottom: 1px dotted black;} - file addition: topbar.tt[40.1486]
[% BLOCK makeLinkWrapped %]<li [% IF curUri == uri %]class="active"[% END %]><a href="[% uri %]">[% title %]</a>[% content %]</li>[% END %][% BLOCK makeLink -%][% INCLUDE makeLinkWrapped content="" -%][% END %][% BLOCK makeSubMenu %]<ul class="short-menu" id="top-menu">[% content %]</ul></li>[% END %][% WRAPPER makeSubMenu title="Hydra" %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Root').action_for('index'))title = "Overview" %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Root').action_for('queue'))title = "Queue" %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Root').action_for('all'))title = "All builds" %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Root').action_for('jobstatus'))title = "Job status" %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Root').action_for('errors'))title = "Errors" %][% IF c.user_exists %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Root').action_for('logout'))title = "Sign out" %][% ELSE %][% INCLUDE makeLinkuri = c.uri_for(c.controller('Root').action_for('login'))title = "Sign in" %][% END %][% END %]