summaryrefslogtreecommitdiffstats
path: root/testapi/opnfv_testapi/ui
diff options
context:
space:
mode:
Diffstat (limited to 'testapi/opnfv_testapi/ui')
-rw-r--r--testapi/opnfv_testapi/ui/app.js5
-rw-r--r--testapi/opnfv_testapi/ui/components/pods/pods.html13
-rw-r--r--testapi/opnfv_testapi/ui/components/projects/project/testCases/testCases.html11
-rw-r--r--testapi/opnfv_testapi/ui/components/projects/projects.html13
-rw-r--r--testapi/opnfv_testapi/ui/components/results/result/result.html115
-rw-r--r--testapi/opnfv_testapi/ui/components/results/result/resultController.js74
-rw-r--r--testapi/opnfv_testapi/ui/components/results/results.html2
-rw-r--r--testapi/opnfv_testapi/ui/components/results/resultsController.js5
-rw-r--r--testapi/opnfv_testapi/ui/index.html1
9 files changed, 216 insertions, 23 deletions
diff --git a/testapi/opnfv_testapi/ui/app.js b/testapi/opnfv_testapi/ui/app.js
index 2a34838..3da12b1 100644
--- a/testapi/opnfv_testapi/ui/app.js
+++ b/testapi/opnfv_testapi/ui/app.js
@@ -89,6 +89,11 @@
templateUrl: 'testapi-ui/components/results/results.html',
controller: 'ResultsController as ctrl'
}).
+ state('result', {
+ url: '/result/:_id',
+ templateUrl: 'testapi-ui/components/results/result/result.html',
+ controller: 'ResultController as ctrl'
+ }).
state('profile', {
url: '/profile',
templateUrl: 'testapi-ui/components/profile/profile.html',
diff --git a/testapi/opnfv_testapi/ui/components/pods/pods.html b/testapi/opnfv_testapi/ui/components/pods/pods.html
index 02f4a48..e092699 100644
--- a/testapi/opnfv_testapi/ui/components/pods/pods.html
+++ b/testapi/opnfv_testapi/ui/components/pods/pods.html
@@ -48,11 +48,11 @@
<thead>
<tr style="
text-align: center;">
- <th>Bulk Select</th>
+ <th style="width:1%">Bulk Select</th>
<th>Name</th>
<th>Role</th>
<th>Mode</th>
- <th>Operation</th>
+ <th ng-class="{ 'hidden': !auth.isAuthenticated }">Operation</th>
</tr>
</thead>
<tbody>
@@ -62,16 +62,15 @@
<input type="checkbox" value="{{pod.name}}" ng-model="ctrl.checkBox[index]" >
</div>
</td>
- <td>{{pod.name}}</td>
+ <td><a class="text-info" ng-click="ctrl.viewPod(pod.name)">{{pod.name}}</a></td>
<td>{{pod.role}}</td>
<td>{{pod.mode}}</td>
- <td>
+ <td ng-class="{ 'hidden': !auth.isAuthenticated }">
<span class="podsTable-col">
- <a class="text-warning" title="Edit" ng-class="{ 'hidden': !auth.isAuthenticated }" >
+ <a class="text-warning" title="Edit">
<i class="fa fa-pencil-square-o"></i></a>
- <a class="text-danger" ng-click="ctrl.openDeleteModal(pod.name)" title="Delete" ng-class="{ 'hidden': !auth.isAuthenticated }">
+ <a class="text-danger" ng-click="ctrl.openDeleteModal(pod.name)" title="Delete">
<i class="fa fa-trash-o"></i></a>
- <a class="text-info" ng-click="ctrl.viewPod(pod.name)"><i class="fa fa-eye"></i></a>
</span>
</td>
</tr>
diff --git a/testapi/opnfv_testapi/ui/components/projects/project/testCases/testCases.html b/testapi/opnfv_testapi/ui/components/projects/project/testCases/testCases.html
index 34656f3..00dd0f1 100644
--- a/testapi/opnfv_testapi/ui/components/projects/project/testCases/testCases.html
+++ b/testapi/opnfv_testapi/ui/components/projects/project/testCases/testCases.html
@@ -32,7 +32,7 @@
<th style="width: 20%;">Tier</th>
<th style="width: 20%;">Blocking</th>
<th style="width: 20%;">CI&nbsp;Loop</th>
- <th style="width: 20%;">Operations</th>
+ <th style="width: 20%;" ng-class="{'hidden': ! ((auth.projectNames.length>0) && auth.isAuthenticated)}">Operations</th>
</tr>
</thead>
<tbody>
@@ -50,15 +50,12 @@
<td>{{ ctrl.data.tier}}</td>
<td>{{ctrl.data.blocking}}</td>
<td>{{ctrl.data.ci_loop}}</td>
- <td>
+ <td ng-class="{'hidden': ! ((auth.projectNames.length>0) && auth.isAuthenticated)}">
<span class="podsTable-col">
- <a class="text-warning" ng-click="testCasesCtrl.openUpdateTestModal(testcase.name)" title="Edit" ng-class="{'hidden': ! ((auth.projectNames.length>0) &&
- auth.isAuthenticated)}" >
+ <a class="text-warning" ng-click="testCasesCtrl.openUpdateTestModal(testcase.name)" title="Edit">
<i class="fa fa-pencil-square-o"></i></a>
- <a class="text-danger" ng-click="testCasesCtrl.openDeleteTestModal(testcase.name)" title="Delete" ng-class="{'hidden': ! ((auth.projectNames.length>0) &&
- auth.isAuthenticated)}">
+ <a class="text-danger" ng-click="testCasesCtrl.openDeleteTestModal(testcase.name)" title="Delete">
<i class="fa fa-trash-o"></i></a>
- <a class="text-info" ng-click="testCasesCtrl.viewTestCase(testcase.name, testcase.project_name)"><i class="fa fa-eye"></i></a>
</span>
</td>
</tr>
diff --git a/testapi/opnfv_testapi/ui/components/projects/projects.html b/testapi/opnfv_testapi/ui/components/projects/projects.html
index e8bb947..8a27a57 100644
--- a/testapi/opnfv_testapi/ui/components/projects/projects.html
+++ b/testapi/opnfv_testapi/ui/components/projects/projects.html
@@ -40,7 +40,7 @@
<th style="width: 1%;">Bulk Select</th>
<th style="width: 19%;">Name</th>
<th style="width: 70%;">Description</th>
- <th style="width: 10%;">Operations</th>
+ <th style="width: 10%;" ng-class="{'hidden': ! ((auth.projectNames.length>0) && auth.isAuthenticated)}">Operations</th>
</tr>
</thead>
<tbody>
@@ -50,17 +50,14 @@
<input type="checkbox" value="{{project.name}}" ng-model="ctrl.checkBox[index]" >
</div>
</td>
- <td>{{project.name}}</td>
+ <td><a class="text-info" ng-click="ctrl.viewProject(project.name)">{{project.name}}</a></td>
<td>{{project.description}}</td>
- <td>
+ <td ng-class="{'hidden': ! ((auth.projectNames.length>0) && auth.isAuthenticated)}">
<span class="podsTable-col">
- <a class="text-warning" ng-click="ctrl.openUpdateModal(project.name)" title="Edit" ng-class="{'hidden': ! ((auth.projectNames.length>0) &&
- auth.isAuthenticated)}" >
+ <a class="text-warning" ng-click="ctrl.openUpdateModal(project.name)" title="Edit" >
<i class="fa fa-pencil-square-o"></i></a>
- <a class="text-danger" ng-click="ctrl.openDeleteModal(project.name)" title="Delete" ng-class="{'hidden': ! ((auth.projectNames.length>0) &&
- auth.isAuthenticated)}">
+ <a class="text-danger" ng-click="ctrl.openDeleteModal(project.name)" title="Delete" >
<i class="fa fa-trash-o"></i></a>
- <a class="text-info" ng-click="ctrl.viewProject(project.name)"><i class="fa fa-eye"></i></a>
</span>
</td>
</tr>
diff --git a/testapi/opnfv_testapi/ui/components/results/result/result.html b/testapi/opnfv_testapi/ui/components/results/result/result.html
new file mode 100644
index 0000000..b435dce
--- /dev/null
+++ b/testapi/opnfv_testapi/ui/components/results/result/result.html
@@ -0,0 +1,115 @@
+<legend>Result</legend>
+<div style="padding-right:0px">
+ <div class="table-responsive">
+ <table class="table" ng-data="ctrl.data.pods">
+ <tbody>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Id&nbsp;:</td>
+ <td class="podsTableLeftTd">{{ctrl.data._id}}</td>
+ </tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Pod&nbsp;Name:</td>
+ <td width="90%" class="podsTableLeftTd">{{ctrl.data.pod_name}}</td>
+ </tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Project&nbsp;Name:</td>
+ <td width="90%" class="podsTableLeftTd">{{ctrl.data.project_name}}</td>
+ </tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Case&nbsp;Name&nbsp;:</td>
+ <td width="90%" class="podsTableLeftTd">{{ctrl.data.case_name}}</td>
+ </tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Installer&nbsp;:</td>
+ <td width="90%" class="podsTableLeftTd">{{ctrl.data.installer}}</td>
+ </tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Version&nbsp;:</td>
+ <td width="90%" class="podsTableLeftTd">{{ctrl.data.version}}</td>
+ </tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Scenario&nbsp;:</td>
+ <td width="90%" class="podsTableLeftTd">{{ctrl.data.scenario}}</td>
+ </tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Build&nbsp;tag&nbsp;:</td>
+ <td width="90%" class="podsTableLeftTd">{{ctrl.data['build_tag']}}</td>
+ </tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Criteria&nbsp;:</td>
+ <td width="90%" class="podsTableLeftTd">{{ctrl.data.criteria}}</td>
+ </tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Start&nbsp;Date:</td>
+ <td width="90%" class="podsTableLeftTd">{{ctrl.data.start_date}}</td>
+ </tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Stop&nbsp;Date&nbsp;:</td>
+ <td width="90%" class="podsTableLeftTd">{{ctrl.data.stop_date}}</td>
+ </tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Trust&nbsp;Indicator&nbsp;:</td>
+ <td width="90%" class="podsTableLeftTd">
+ <a ng-click="ctrl.showTrustIndicator()">
+ <p ng-if="ctrl.trust_indicator">Hide</p>
+ <p ng-if="!ctrl.trust_indicator">Show</p>
+ </a>
+ <table class="table" ng-class="{'hidden' : !ctrl.trust_indicator}" style="margin:10px">
+ <tbody>
+ <tr style="padding:9px"></tr>
+ <tr style="padding:9px" >
+ <td class="podsTableTd">Current&nbsp;:</td>
+ <td width="90%" class="podsTableLeftTd">{{ctrl.data.trust_indicator.current}}</td>
+ </tr>
+ <tr style="padding:9px" >
+ <td class="podsTableTd">Histories&nbsp;:</td>
+ <td width="90%" class="podsTableLeftTd">{{ctrl.data.trust_indicator.histories}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Details&nbsp;:</td>
+ <td width="90%" class="podsTableLeftTd">
+ <a ng-click="ctrl.showDetails()">
+ <p ng-if="ctrl.details">Hide</p>
+ <p ng-if="!ctrl.details">Show</p>
+ </a>
+ <table class="table" ng-class="{'hidden' : !ctrl.details}" style="margin:10px">
+ <tbody>
+ <tr style="padding:9px"></tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Failures&nbsp;:</td>
+ <td width="90%" class="podsTableLeftTd">{{ctrl.data.details.failures}}</td>
+ </tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Details&nbsp;:</td>
+ <td width="90%" class="podsTableLeftTd">{{ctrl.data.details.errors}}</td>
+ </tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">Stream&nbsp;:</td>
+ <td width="90%" class="podsTableLeftTd"><p>{{ctrl.data.details.stream}}</p></td>
+ </tr>
+ <tr style="padding:9px">
+ <td class="podsTableTd">TestsRun&nbsp;:</td>
+ <td width="90%" class="podsTableLeftTd"><p>{{ctrl.data.details.testsRun}}</p></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+</div>
+<div class="col-md-12">
+ <div ng-show="ctrl.showError" class="col-md-12 alert alert-danger" role="alert">
+ <span class="pull-right">&nbsp;{{ctrl.error}}</span>
+ <span class="glyphicon glyphicon-exclamation-sign pull-right" aria-hidden="true" >Error:</span>
+ </div>
+ <div ng-show="ctrl.showSuccess" class="col-md-12 alert alert-success" role="alert">
+ <span class="pull-right">&nbsp;{{ctrl.success}}</span>
+ <span class="glyphicon glyphicon-ok pull-right" aria-hidden="true"></span>
+ </div>
+ </div> \ No newline at end of file
diff --git a/testapi/opnfv_testapi/ui/components/results/result/resultController.js b/testapi/opnfv_testapi/ui/components/results/result/resultController.js
new file mode 100644
index 0000000..028e5d8
--- /dev/null
+++ b/testapi/opnfv_testapi/ui/components/results/result/resultController.js
@@ -0,0 +1,74 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function () {
+ 'use strict';
+
+ angular
+ .module('testapiApp')
+ .controller('ResultController', ResultController);
+
+ ResultController.$inject = [
+ '$scope', '$http', '$filter', '$state', '$window', '$uibModal', 'testapiApiUrl','raiseAlert',
+ 'confirmModal'
+ ];
+
+ /**
+ * TestAPI ResultController
+ * This controller is for the '/result/:_id' page where a user can browse
+ * through result declared in TestAPI.
+ */
+ function ResultController($scope, $http, $filter, $state, $window, $uibModal, testapiApiUrl,
+ raiseAlert, confirmModal) {
+ var ctrl = this;
+ ctrl.url = testapiApiUrl + '/results';
+ ctrl._id = $state.params['_id'];
+ ctrl.loadDetails = loadDetails
+ ctrl.showTrustIndicator = showTrustIndicator
+ ctrl.showDetails = showDetails
+
+ /**
+ *Contact the testapi and retrevie the result details
+ */
+ function loadDetails(){
+ var resultUrl = ctrl.url + '/' + ctrl._id;
+ ctrl.showError = false;
+ ctrl.podsRequest =
+ $http.get(resultUrl).success(function (data) {
+ ctrl.data = data;
+ }).catch(function (error) {
+ ctrl.data = null;
+ ctrl.showError = true;
+ ctrl.error = error.statusText;
+ });
+ }
+
+ function showTrustIndicator(){
+ if(ctrl.trust_indicator){
+ ctrl.trust_indicator = false
+ }else{
+ ctrl.trust_indicator = true
+ }
+ }
+
+ function showDetails(){
+ if(ctrl.details){
+ ctrl.details = false
+ }else{
+ ctrl.details = true
+ }
+ }
+ ctrl.loadDetails();
+ }
+})(); \ No newline at end of file
diff --git a/testapi/opnfv_testapi/ui/components/results/results.html b/testapi/opnfv_testapi/ui/components/results/results.html
index 0e7b8d5..7809065 100644
--- a/testapi/opnfv_testapi/ui/components/results/results.html
+++ b/testapi/opnfv_testapi/ui/components/results/results.html
@@ -110,7 +110,7 @@
<tbody>
<tr ng-repeat-start="(index, result) in ctrl.data.results">
- <td>{{ result._id }}</td>
+ <td><a ng-click="ctrl.viewResult(result._id)">{{ result._id }}</a></td>
<td>{{ result.pod_name }}</td>
<td>{{ result.project_name }}</td>
<td>{{ result.case_name }}</td>
diff --git a/testapi/opnfv_testapi/ui/components/results/resultsController.js b/testapi/opnfv_testapi/ui/components/results/resultsController.js
index e9b4443..55bf0ba 100644
--- a/testapi/opnfv_testapi/ui/components/results/resultsController.js
+++ b/testapi/opnfv_testapi/ui/components/results/resultsController.js
@@ -62,6 +62,7 @@
ctrl.deleteTag = deleteTag;
ctrl.filterList= filterList;
ctrl.testFilter = testFilter
+ ctrl.viewResult = viewResult;
ctrl.tagArray = {}
@@ -127,6 +128,10 @@
ctrl.filterList();
}
+ function viewResult(_id){
+ $state.go('result', {'_id':_id}, {reload: true});
+ }
+
function deleteTag(index){
delete ctrl.tagArray[index];
ctrl.filterList();
diff --git a/testapi/opnfv_testapi/ui/index.html b/testapi/opnfv_testapi/ui/index.html
index 98f1ed8..5e69e87 100644
--- a/testapi/opnfv_testapi/ui/index.html
+++ b/testapi/opnfv_testapi/ui/index.html
@@ -48,6 +48,7 @@
<script src="testapi-ui/components/projects/projectsController.js"></script>
<script src="testapi-ui/components/projects/project/projectController.js"></script>
<script src="testapi-ui/components/results/resultsController.js"></script>
+ <script src="testapi-ui/components/results/result/resultController.js"></script>
<script src="testapi-ui/components/profile/profileController.js"></script>
<script src="testapi-ui/components/auth-failure/authFailureController.js"></script>
<script src="testapi-ui/components/logout/logoutController.js"></script>