jobset: Add a new "channels" tab.

[?]
Apr 14, 2015, 6:58 AM
RX7USXWQTA3K7KJJZKBEJ5XVCNA6DO7XCDGXNB2LMZ24BEWYKHKQC

Dependencies

  • [2] XU4PKY3U By default, show the first 250 jobs only
  • [3] NGYZCZYX Add a link to the latest finished eval of a jobset
  • [*] 3HZY24CX * Make jobsets viewable under
  • [*] TJPIS3UP hydra: minor improvements in hydra ui
  • [*] D5QIOJGP * Move everything up one directory.
  • [*] ODNCGFQ5 * Improved the navigation bar: don't include all projects (since that
  • [*] OX6NYJDV Split viewing and editing a jobset

Change contents

  • edit in src/lib/Hydra/Controller/Jobset.pm at line 145
    [2.159]
    [6.396]
    }
    # XXX: Pretty much a rip-off of jobs-tab, make it DRY!
    sub channels_tab : Chained('jobsetChain') PathPart('channels-tab') Args(0) {
    my ($self, $c) = @_;
    $c->stash->{template} = 'jobset-channels-tab.tt';
    my @evals = $c->stash->{jobset}->jobsetevals->search(
    { hasnewbuilds => 1},
    { order_by => "id desc", rows => 20 }
    );
    my $evals = {};
    my %channels;
    foreach my $eval (@evals) {
    my @builds = $eval->builds->search(
    { 'buildproducts.type' => 'file'
    , 'buildproducts.subtype' => 'channel' },
    { join => ["buildproducts"]
    , columns => ['id', 'job', 'finished', 'buildstatus'] }
    );
    foreach my $b (@builds) {
    my $jobName = $b->get_column('job');
    $evals->{$eval->id}->{timestamp} = $eval->timestamp;
    $evals->{$eval->id}->{channels}->{$jobName} = {
    id => $b->id,
    finished => $b->finished,
    buildstatus => $b->buildstatus
    };
    $channels{$jobName} = 1;
    }
    }
    $c->stash->{evals} = $evals;
    my @channels = sort (keys %channels);
    $c->stash->{channels} = [@channels];
  • file addition: jobset-channels-tab.tt (----------)
    [7.1486]
    [% PROCESS common.tt %]
    [% IF channels.size == 0 %]
    <div class="alert">There are no channels available.</div>
    [% ELSE %]
    [% evalIds = evals.keys.nsort.reverse %]
    <table class="table table-striped table-condensed table-header-rotated">
    <thead>
    <tr>
    <th style="width: 1em;">Channel</th>
    [% FOREACH eval IN evalIds %]
    <th class="rotate-45">
    <div><span>
    <a href="[% c.uri_for('/eval' eval) %]">[% INCLUDE renderRelativeDate timestamp=evals.$eval.timestamp %]</a>
    </span></div></th>
    [% END %]
    </tr>
    </thead>
    <tbody>
    [% FOREACH chan IN channels-%]
    <tr>
    <th><span>[% INCLUDE renderJobName project=project.name jobset=jobset.name job=chan %]</span></th>
    [% FOREACH eval IN evalIds %]
    <td>[% r = evals.$eval.channels.$chan; IF r.id %]<a href="[% c.uri_for('/build' r.id) %]">[% INCLUDE renderBuildStatusIcon size=16 build=r %]</a>[% END %]</td>
    [% END %]
    </tr>
    [% END %]
    </tbody>
    </table>
    [% END %]
  • edit in src/root/jobset.tt at line 67
    [3.61]
    [9.6981]
    <li><a href="#tabs-channels" data-toggle="tab">Channels</a></li>
  • edit in src/root/jobset.tt at line 169
    [3.270]
    [9.10749]
    [% INCLUDE makeLazyTab tabName="tabs-channels" uri=c.uri_for('/jobset' project.name jobset.name "channels-tab") %]