Paul Van Eck 539bf16aa4 Add additional columns to user results table
This will allow the table to display some more
pertinent info regarding each test run.

Also, the public Catalog header button was disabled
for now as we ease in new features.

Change-Id: Ibb8a4eec216a383a346f5a58fa20010bc1d60689
2016-12-07 15:02:27 -08:00

248 lines
12 KiB
HTML

<h3>{{ctrl.pageHeader}}</h3>
<p>{{ctrl.pageParagraph}}</p>
<div class="result-filters">
<h4>Filters</h4>
<div class="row">
<div class="col-md-3">
<label for="cpid">Start Date</label>
<p class="input-group">
<input type="text" class="form-control"
uib-datepicker-popup="{{ctrl.format}}"
ng-model="ctrl.startDate" is-open="ctrl.startOpen"
close-text="Close" />
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="ctrl.open($event, 'startOpen')">
<i class="glyphicon glyphicon-calendar"></i>
</button>
</span>
</p>
</div>
<div class="col-md-3">
<label for="cpid">End Date</label>
<p class="input-group">
<input type="text" class="form-control"
uib-datepicker-popup="{{ctrl.format}}"
ng-model="ctrl.endDate" is-open="ctrl.endOpen"
close-text="Close" />
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="ctrl.open($event, 'endOpen')">
<i class="glyphicon glyphicon-calendar"></i>
</button>
</span>
</p>
</div>
<div class="col-md-3" style="margin-top:24px;">
<button type="submit" class="btn btn-primary" ng-click="ctrl.update()">Filter</button>
<button type="submit" class="btn btn-primary btn-danger" ng-click="ctrl.clearFilters()">Clear</button>
</div>
</div>
</div>
<div cg-busy="{promise:ctrl.authRequest,message:'Loading'}"></div>
<div cg-busy="{promise:ctrl.resultsRequest,message:'Loading'}"></div>
<div ng-show="ctrl.data" class="results-table">
<table ng-show="ctrl.data" class="table table-striped table-hover">
<thead>
<tr>
<th ng-if="ctrl.isUserResults"></th>
<th>Upload Date</th>
<th>Test Run ID</th>
<th ng-if="ctrl.isUserResults">Vendor</th>
<th ng-if="ctrl.isUserResults">Product (version)</th>
<th ng-if="ctrl.isUserResults">Target Program</th>
<th ng-if="ctrl.isUserResults">Guideline</th>
<th ng-if="ctrl.isUserResults">Verified</th>
<th ng-if="ctrl.isUserResults">Shared</th>
</tr>
</thead>
<tbody>
<tr ng-repeat-start="(index, result) in ctrl.data.results">
<td ng-if="ctrl.isUserResults">
<a ng-if="!result.expanded"
class="glyphicon glyphicon-plus"
ng-click="result.expanded = true">
</a>
<a ng-if="result.expanded"
class="glyphicon glyphicon-minus"
ng-click="result.expanded = false">
</a>
</td>
<td>{{result.created_at}}</td>
<td><a ui-sref="resultsDetail({testID: result.id})">
{{result.id.slice(0, 8)}}...{{result.id.slice(-8)}}
</a>
</td>
<td ng-if="ctrl.isUserResults">
{{ctrl.vendors[result.product_version.product_info.organization_id].name || '-'}}
</td>
<td ng-if="ctrl.isUserResults">{{result.product_version.product_info.name || '-'}}
<span ng-if="result.product_version.version">
({{result.product_version.version}})
</span>
</td>
<td ng-if="ctrl.isUserResults">{{ctrl.targetMappings[result.meta.target] || '-'}}</td>
<td ng-if="ctrl.isUserResults">{{result.meta.guideline.slice(0, -5) || '-'}}</td>
<td ng-if="ctrl.isUserResults">
<span ng-if="result.verification_status" class="glyphicon glyphicon-ok"></span>
<span ng-if="!result.verification_status">-</span>
</td>
<td ng-if="ctrl.isUserResults">
<span ng-show="result.meta.shared" class="glyphicon glyphicon-share"></span>
</td>
</tr>
<tr ng-if="result.expanded" ng-repeat-end>
<td></td>
<td colspan="3">
<strong>Publicly Shared:</strong>
<span ng-if="result.meta.shared == 'true' && !result.sharedEdit">Yes</span>
<span ng-if="!result.meta.shared && !result.sharedEdit">
<em>No</em>
</span>
<select ng-if="result.sharedEdit"
ng-model="result.meta.shared"
class="form-inline">
<option value="true">Yes</option>
<option value="">No</option>
</select>
<a ng-if="!result.sharedEdit"
ng-click="result.sharedEdit = true"
title="Edit"
class="glyphicon glyphicon-pencil"></a>
<a ng-if="result.sharedEdit"
ng-click="ctrl.associateMeta(index,'shared',result.meta.shared)"
title="Save"
class="glyphicon glyphicon-floppy-disk"></a>
<br />
<strong>Associated Guideline:</strong>
<span ng-if="!result.meta.guideline && !result.guidelineEdit">
<em>None</em>
</span>
<span ng-if="result.meta.guideline && !result.guidelineEdit">
{{result.meta.guideline.slice(0, -5)}}
</span>
<select ng-if="result.guidelineEdit"
ng-model="result.meta.guideline"
ng-options="o as o.slice(0, -5) for o in ctrl.versionList"
class="form-inline">
<option value="">None</option>
</select>
<a ng-if="!result.guidelineEdit"
ng-click="ctrl.getVersionList();result.guidelineEdit = true"
title="Edit"
class="glyphicon glyphicon-pencil"></a>
<a ng-if="result.guidelineEdit"
ng-click="ctrl.associateMeta(index, 'guideline', result.meta.guideline)"
title="Save"
class="glyphicon glyphicon-floppy-disk">
</a>
<br />
<strong>Associated Target Program:</strong>
<span ng-if="!result.meta.target && !result.targetEdit">
<em>None</em>
</span>
<span ng-if="result.meta.target && !result.targetEdit">
{{ctrl.targetMappings[result.meta.target]}}</span>
<select ng-if="result.targetEdit"
ng-model="result.meta.target"
class="form-inline">
<option value="">None</option>
<option value="platform">OpenStack Powered Platform</option>
<option value="compute">OpenStack Powered Compute</option>
<option value="object">OpenStack Powered Object Storage</option>
</select>
<a ng-if="!result.targetEdit"
ng-click="result.targetEdit = true;"
title="Edit"
class="glyphicon glyphicon-pencil">
</a>
<a ng-if="result.targetEdit"
ng-click="ctrl.associateMeta(index, 'target', result.meta.target)"
title="Save"
class="glyphicon glyphicon-floppy-disk">
</a>
<br />
<strong>Associated Product:</strong>
<span ng-if="!result.product_version && !result.productEdit">
<em>None</em>
</span>
<span ng-if="result.product_version && !result.productEdit">
<span ng-if="ctrl.products[result.product_version.product_info.id].product_type == 0">
<a ui-sref="distro({id: result.product_version.product_info.id})">
{{ctrl.products[result.product_version.product_info.id].name}}
<small ng-if="result.product_version.version">
({{result.product_version.version}})
</small>
</a>
</span>
<span ng-if="ctrl.products[result.product_version.product_info.id].product_type != 0">
<a ui-sref="cloud({id: result.product_version.product_info.id})">
{{ctrl.products[result.product_version.product_info.id].name}}
<small ng-if="result.product_version.version">
({{result.product_version.version}})
</small>
</a>
</span>
</span>
<select ng-if="result.productEdit"
ng-options="product as product.name for product in ctrl.products | arrayConverter | orderBy: 'name' track by product.id"
ng-model="result.selectedProduct"
ng-change="ctrl.getProductVersions(result)">
<option value="">-- No Product --</option>
</select>
<span ng-if="result.productVersions.length && result.productEdit">
<span class="glyphicon glyphicon-arrow-right" style="padding-right:3px;color:#303030;"></span>
Version:
<select ng-options="version as version.version for version in result.productVersions | orderBy: 'version' track by version.id"
ng-model="result.selectedVersion">
</select>
</span>
<a ng-if="!result.productEdit"
ng-click="ctrl.prepVersionEdit(result)"
title="Edit"
class="glyphicon glyphicon-pencil">
</a>
<a ng-if="result.productEdit"
ng-click="ctrl.associateProductVersion(result)"
confirm="Once you associate this test to this product, ownership
will be transferred to the product's vendor admins.
Continue?"
title="Save"
class="glyphicon glyphicon-floppy-disk">
</a>
<br />
</td>
</tr>
</tbody>
</table>
<div class="pages">
<uib-pagination
total-items="ctrl.totalItems"
ng-model="ctrl.currentPage"
items-per-page="ctrl.itemsPerPage"
max-size="ctrl.maxSize"
class="pagination-sm"
boundary-links="true"
rotate="false"
num-pages="ctrl.numPages"
ng-change="ctrl.update()">
</uib-pagination>
</div>
</div>
<div ng-show="ctrl.showError" class="alert alert-danger" role="alert">
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
<span class="sr-only">Error:</span>
{{ctrl.error}}
</div>