diff options
Diffstat (limited to 'testapi/opnfv_testapi/ui')
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 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 :</td> + <td class="podsTableLeftTd">{{ctrl.data._id}}</td> + </tr> + <tr style="padding:9px"> + <td class="podsTableTd">Pod Name:</td> + <td width="90%" class="podsTableLeftTd">{{ctrl.data.pod_name}}</td> + </tr> + <tr style="padding:9px"> + <td class="podsTableTd">Project Name:</td> + <td width="90%" class="podsTableLeftTd">{{ctrl.data.project_name}}</td> + </tr> + <tr style="padding:9px"> + <td class="podsTableTd">Case Name :</td> + <td width="90%" class="podsTableLeftTd">{{ctrl.data.case_name}}</td> + </tr> + <tr style="padding:9px"> + <td class="podsTableTd">Installer :</td> + <td width="90%" class="podsTableLeftTd">{{ctrl.data.installer}}</td> + </tr> + <tr style="padding:9px"> + <td class="podsTableTd">Version :</td> + <td width="90%" class="podsTableLeftTd">{{ctrl.data.version}}</td> + </tr> + <tr style="padding:9px"> + <td class="podsTableTd">Scenario :</td> + <td width="90%" class="podsTableLeftTd">{{ctrl.data.scenario}}</td> + </tr> + <tr style="padding:9px"> + <td class="podsTableTd">Build tag :</td> + <td width="90%" class="podsTableLeftTd">{{ctrl.data['build_tag']}}</td> + </tr> + <tr style="padding:9px"> + <td class="podsTableTd">Criteria :</td> + <td width="90%" class="podsTableLeftTd">{{ctrl.data.criteria}}</td> + </tr> + <tr style="padding:9px"> + <td class="podsTableTd">Start Date:</td> + <td width="90%" class="podsTableLeftTd">{{ctrl.data.start_date}}</td> + </tr> + <tr style="padding:9px"> + <td class="podsTableTd">Stop Date :</td> + <td width="90%" class="podsTableLeftTd">{{ctrl.data.stop_date}}</td> + </tr> + <tr style="padding:9px"> + <td class="podsTableTd">Trust Indicator :</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 :</td> + <td width="90%" class="podsTableLeftTd">{{ctrl.data.trust_indicator.current}}</td> + </tr> + <tr style="padding:9px" > + <td class="podsTableTd">Histories :</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 :</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 :</td> + <td width="90%" class="podsTableLeftTd">{{ctrl.data.details.failures}}</td> + </tr> + <tr style="padding:9px"> + <td class="podsTableTd">Details :</td> + <td width="90%" class="podsTableLeftTd">{{ctrl.data.details.errors}}</td> + </tr> + <tr style="padding:9px"> + <td class="podsTableTd">Stream :</td> + <td width="90%" class="podsTableLeftTd"><p>{{ctrl.data.details.stream}}</p></td> + </tr> + <tr style="padding:9px"> + <td class="podsTableTd">TestsRun :</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"> {{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"> {{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> |