diff --git a/src/lib/Hydra/Controller/User.pm b/src/lib/Hydra/Controller/User.pm index 7ddfb6e8..66b645b2 100644 --- a/src/lib/Hydra/Controller/User.pm +++ b/src/lib/Hydra/Controller/User.pm @@ -311,4 +311,20 @@ sub my_jobs_tab :Chained('user') :PathPart('my-jobs-tab') :Args(0) { } +sub my_jobsets_tab :Chained('user') :PathPart('my-jobsets-tab') :Args(0) { + my ($self, $c) = @_; + $c->stash->{template} = 'dashboard-my-jobsets-tab.tt'; + + my $jobsets = $c->model('DB::Jobsets')->search( + { "project.enabled" => 1, "me.enabled" => 1, + , owner => $c->stash->{user}->username + }, + { order_by => ["project", "name"] + , join => ["project"] + }); + + $c->stash->{jobsets} = [jobsetOverview_($c, $jobsets)]; +} + + 1; diff --git a/src/lib/Hydra/Helper/Nix.pm b/src/lib/Hydra/Helper/Nix.pm index a7fa06ed..76e10b47 100644 --- a/src/lib/Hydra/Helper/Nix.pm +++ b/src/lib/Hydra/Helper/Nix.pm @@ -17,7 +17,8 @@ our @EXPORT = qw( getPrimaryBuildsForView getPrimaryBuildTotal getViewResult getLatestSuccessfulViewResult - jobsetOverview removeAsciiEscapes getDrvLogPath findLog logContents + jobsetOverview jobsetOverview_ + removeAsciiEscapes getDrvLogPath findLog logContents getMainOutput getEvals getMachines pathIsInsidePrefix @@ -173,9 +174,9 @@ sub findLastJobForBuilds { } -sub jobsetOverview { - my ($c, $project) = @_; - return $project->jobsets->search( isProjectOwner($c, $project) ? {} : { hidden => 0 }, +sub jobsetOverview_ { + my ($c, $jobsets) = @_; + return $jobsets->search({}, { order_by => "name" , "+select" => [ "(select count(*) from Builds as a where a.finished = 0 and me.project = a.project and me.name = a.jobset and a.isCurrent = 1)" @@ -188,6 +189,13 @@ sub jobsetOverview { } +sub jobsetOverview { + my ($c, $project) = @_; + my $jobsets = $project->jobsets->search(isProjectOwner($c, $project) ? {} : { hidden => 0 }); + return jobsetOverview_($c, $jobsets); +} + + sub getViewResult { my ($primaryBuild, $jobs, $finished) = @_; diff --git a/src/root/common.tt b/src/root/common.tt index 0b0b7472..056c9f7e 100644 --- a/src/root/common.tt +++ b/src/root/common.tt @@ -464,4 +464,65 @@ BLOCK makeStar %] [% IF starred; "★"; ELSE; "☆"; END %] [% END; + +BLOCK renderJobsetOverview %] +
+ | Name | +Description | +Last evaluated | +Success | +|
---|---|---|---|---|---|
+ [% IF j.get_column('nrscheduled') > 0 %]
+ |
+ [% IF showProject; INCLUDE renderFullJobsetName project=j.get_column('project') jobset=j.name inRow=1; ELSE; INCLUDE renderJobsetName project=j.get_column('project') jobset=j.name inRow=1; END %] | +[% HTML.escape(j.description) %] | +[% IF j.lastcheckedtime; INCLUDE renderDateTime timestamp = j.lastcheckedtime; ELSE; "-"; END %] | + [% IF j.get_column('nrtotal') > 0 %] + [% successrate = ( j.get_column('nrsucceeded') / j.get_column('nrtotal') )*100 %] + [% IF j.get_column('nrscheduled') > 0 %] + [% class = 'label' %] + [% ELSIF successrate < 25 %] + [% class = 'label label-important' %] + [% ELSIF successrate < 75 %] + [% class = 'label label-warning' %] + [% ELSIF successrate <= 100 %] + [% class = 'label label-success' %] + [% END %] + [% END %] +[% successrate FILTER format('%d') %]% | ++ [% IF j.get_column('nrsucceeded') > 0 %] + [% j.get_column('nrsucceeded') %] + [% END %] + [% IF j.get_column('nrfailed') > 0 %] + [% j.get_column('nrfailed') %] + [% END %] + [% IF j.get_column('nrscheduled') > 0 %] + [% j.get_column('nrscheduled') %] + [% END %] + | +
Below are the most recent builds of the [% builds.size %] jobs of which you ([% HTML.escape(user.emailaddress) %]) are a maintainer.
- + [% INCLUDE renderBuildList %] [% END %] diff --git a/src/root/dashboard-my-jobsets-tab.tt b/src/root/dashboard-my-jobsets-tab.tt new file mode 100644 index 00000000..5d857236 --- /dev/null +++ b/src/root/dashboard-my-jobsets-tab.tt @@ -0,0 +1,12 @@ +[% PROCESS common.tt %] + +[% IF builds.size == 0 %] + +This project has the following jobsets:
- -- | Id | -Description | -Last evaluated | -Success | -|
---|---|---|---|---|---|
- [% IF j.get_column('nrscheduled') > 0 %]
- |
- [% INCLUDE renderJobsetName project=project.name jobset=j.name inRow=1 %] | -[% HTML.escape(j.description) %] | -[% IF j.lastcheckedtime; INCLUDE renderDateTime timestamp = j.lastcheckedtime; ELSE; "-"; END %] | - [% IF j.get_column('nrtotal') > 0 %] - [% successrate = ( j.get_column('nrsucceeded') / j.get_column('nrtotal') )*100 %] - [% IF j.get_column('nrscheduled') > 0 %] - [% class = 'label' %] - [% ELSIF successrate < 25 %] - [% class = 'label label-important' %] - [% ELSIF successrate < 75 %] - [% class = 'label label-warning' %] - [% ELSIF successrate <= 100 %] - [% class = 'label label-success' %] - [% END %] - [% END %] -[% successrate FILTER format('%d') %]% | -- [% IF j.get_column('nrsucceeded') > 0 %] - [% j.get_column('nrsucceeded') %] - [% END %] - [% IF j.get_column('nrfailed') > 0 %] - [% j.get_column('nrfailed') %] - [% END %] - [% IF j.get_column('nrscheduled') > 0 %] - [% j.get_column('nrscheduled') %] - [% END %] - | -
No jobsets have been defined yet.
[% END %]