
This change will modify a number of things about the way we manage guideline sources - it allows the api to pull guidelines from a list of additional guideline sources, as specified in conf - changes the object returned by the guidelines api from a list to a dictionary of lists pertaining to a specific guideline type Change-Id: Ic42197b32d4c9030a35e613cae8cc64dca794c85
250 lines
12 KiB
HTML
250 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>
|
|
<option value="dns">OpenStack with DNS</option>
|
|
<option value="orchestration">OpenStack with Orchestration</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>
|