Merge pull request #81 from gabriel403/feature/summaryview
Summary changes
This commit is contained in:
commit
24c761a849
4 changed files with 120 additions and 6 deletions
|
|
@ -33,7 +33,7 @@ class IndexController extends \PHPCI\Controller
|
|||
$projects = $this->_projectStore->getWhere(array(), 50, 0, array(), array('title' => 'ASC'));
|
||||
$summary = $this->_buildStore->getBuildSummary();
|
||||
|
||||
$summaryView = new b8\View('BuildsTable');
|
||||
$summaryView = new b8\View('SummaryTable');
|
||||
$summaryView->builds = $summary['items'];
|
||||
|
||||
$this->view->builds = $this->getLatestBuildsHtml();
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ class BuildStore extends BuildStoreBase
|
|||
$count = 0;
|
||||
}
|
||||
|
||||
$query = 'SELECT b.* FROM build b LEFT JOIN project p on p.id = b.project_id GROUP BY b.project_id ORDER BY p.title ASC, b.id DESC';
|
||||
$query = 'SELECT b.* FROM build b LEFT JOIN project p on p.id = b.project_id ORDER BY p.title ASC, b.id DESC';
|
||||
$stmt = \b8\Database::getConnection('read')->prepare($query);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
|
|
|
|||
|
|
@ -44,11 +44,11 @@
|
|||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Health</th>
|
||||
<th>Project</th>
|
||||
<th>Commit</th>
|
||||
<th>Branch</th>
|
||||
<th>Status</th>
|
||||
<th>Last Success</th>
|
||||
<th>Last Failure</th>
|
||||
<th>Success/Failures</th>
|
||||
<th style="width: 1%"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
|
|||
114
PHPCI/View/SummaryTable.phtml
Normal file
114
PHPCI/View/SummaryTable.phtml
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
<?php
|
||||
// echo "<pre>";
|
||||
// var_dump($builds);
|
||||
// echo "</pre>";
|
||||
|
||||
$maxbuildcount = 5;
|
||||
$projects = array();
|
||||
$prevBuild = null;
|
||||
$health = false;
|
||||
|
||||
foreach($builds as $build):
|
||||
|
||||
if ($build->getStatus() < 2) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( is_null($prevBuild) || $build->getProjectId() !== $prevBuild->getProjectId() ) {
|
||||
$health = false;
|
||||
$projects[$build->getProjectId()]['count'] = 0;
|
||||
$projects[$build->getProjectId()]['health'] = 0;
|
||||
$projects[$build->getProjectId()]['successes'] = 0;
|
||||
$projects[$build->getProjectId()]['failures'] = 0;
|
||||
$projects[$build->getProjectId()]['lastbuildstatus'] = (int)$build->getStatus();
|
||||
}
|
||||
|
||||
if (
|
||||
!is_null($prevBuild) &&
|
||||
$projects[$build->getProjectId()]['count'] >= $maxbuildcount &&
|
||||
$build->getProjectId() === $prevBuild->getProjectId()
|
||||
) {
|
||||
$projects[$build->getProjectId()]['count']++;
|
||||
continue;
|
||||
}
|
||||
|
||||
switch ((int)$build->getStatus()) {
|
||||
case 2:
|
||||
$projects[$build->getProjectId()]['health']++;
|
||||
$projects[$build->getProjectId()]['successes']++;
|
||||
|
||||
if ( empty($projects[$build->getProjectId()]['lastsuccess']) ) {
|
||||
$projects[$build->getProjectId()]['lastsuccess'] = $build;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
$projects[$build->getProjectId()]['health']--;
|
||||
$projects[$build->getProjectId()]['failures']++;
|
||||
|
||||
if ( empty($projects[$build->getProjectId()]['lastfailure']) ) {
|
||||
$projects[$build->getProjectId()]['lastfailure'] = $build;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
$projects[$build->getProjectId()]['count']++;
|
||||
$projects[$build->getProjectId()]['projectname'] = $build->getProject()->getTitle();
|
||||
$prevBuild = $build;
|
||||
endforeach;
|
||||
|
||||
foreach($projects as $projectId => $project):
|
||||
switch($project['lastbuildstatus'])
|
||||
{
|
||||
case 0:
|
||||
$cls = 'info';
|
||||
$status = 'Pending';
|
||||
break;
|
||||
|
||||
case 1:
|
||||
$cls = 'warning';
|
||||
$status = 'Running';
|
||||
break;
|
||||
|
||||
case 2:
|
||||
$cls = 'success';
|
||||
$status = 'Success';
|
||||
break;
|
||||
|
||||
case 3:
|
||||
$cls = 'error';
|
||||
$status = 'Failed';
|
||||
break;
|
||||
}
|
||||
|
||||
$health = ($project['health'] < 0 ? 'Stormy': ($project['health'] < 5? 'Overcast': 'Sunny'));
|
||||
$subcls = ($project['health'] < 0 ? 'important': ($project['health'] < 5? 'warning': 'success'));
|
||||
?>
|
||||
<tr class="<?php print $cls; ?>">
|
||||
<td>
|
||||
<span class='label label-<?= $subcls ?>'>
|
||||
<?= $health ?>
|
||||
</span>
|
||||
</td>
|
||||
<td><a href='<?= PHPCI_URL ?>project/view/<?= $projectId ?>'><?= $project['projectname'] ?></a></td>
|
||||
<td>
|
||||
<?php if (empty($project['lastsuccess'])) {
|
||||
echo "Never";
|
||||
} else { ?>
|
||||
<a href='<?= PHPCI_URL ?>build/view/<?= $project['lastsuccess']->getId() ?>'>
|
||||
<?= $project['lastsuccess']->getStarted()->format("Y-m-d H:i:s") ?>
|
||||
</a>
|
||||
<?php } ?>
|
||||
</td>
|
||||
<td>
|
||||
<?php if (empty($project['lastfailure'])) {
|
||||
echo "Never";
|
||||
} else { ?>
|
||||
<a href='<?= PHPCI_URL ?>build/view/<?= $project['lastfailure']->getId() ?>'>
|
||||
<?= $project['lastfailure']->getStarted()->format("Y-m-d H:i:s") ?>
|
||||
</a>
|
||||
<?php } ?>
|
||||
</td>
|
||||
<td><?= $project['successes'] ?>/<?= $project['failures'] ?></td>
|
||||
<td><a href='<?= PHPCI_URL ?>project/build/<?= $projectId ?>'>build</a></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
Loading…
Add table
Add a link
Reference in a new issue