Add links in prods,projects and results pages 15/50215/2
authorthuva4 <tharma.thuva@gmail.com>
Mon, 8 Jan 2018 09:41:17 +0000 (15:11 +0530)
committerthuva4 <tharma.thuva@gmail.com>
Tue, 9 Jan 2018 08:19:55 +0000 (13:49 +0530)
Add links for the redirection
Created Result page

Change-Id: I7ba80f6a8d774d6fde33280f701c1188cb5c32d9
Signed-off-by: thuva4 <tharma.thuva@gmail.com>
testapi/opnfv_testapi/tests/UI/e2e/testCasesControllerSpec.js
testapi/opnfv_testapi/ui/app.js
testapi/opnfv_testapi/ui/components/pods/pods.html
testapi/opnfv_testapi/ui/components/projects/project/testCases/testCases.html
testapi/opnfv_testapi/ui/components/projects/projects.html
testapi/opnfv_testapi/ui/components/results/result/result.html [new file with mode: 0644]
testapi/opnfv_testapi/ui/components/results/result/resultController.js [new file with mode: 0644]
testapi/opnfv_testapi/ui/components/results/results.html
testapi/opnfv_testapi/ui/components/results/resultsController.js
testapi/opnfv_testapi/ui/index.html

index d6b5b9f..d509c57 100644 (file)
@@ -538,14 +538,6 @@ describe('testing the test cases page for user who is in submitter group', funct
         expect(editOperation.isDisplayed()).toBe(true);
     });
 
-    it('View Operation is visible for  user ', function () {
-        browser.get(baseURL+"#/projects/testproject");
-        var testCases = element(by.linkText('Test Cases'));
-        testCases.click();
-        var viewOperation = element(by.css('a[class=text-info]'));
-        expect(viewOperation.isDisplayed()).toBe(true);
-    });
-
     it('Create the test case', function () {
         browser.get(baseURL+"#/projects/testproject");
         var testCases = element(by.linkText('Test Cases'));
@@ -635,7 +627,7 @@ describe('testing the test cases page for user who is in submitter group', funct
         browser.get(baseURL+"#/projects/testproject");
         var testCases = element(by.linkText('Test Cases'));
         testCases.click();
-        var viewOperation = element(by.css('a[class=text-info]'));
+        var viewOperation = element(by.linkText('testCase'));
         viewOperation.click();
         var name = element(by.model('TestCaseModalCtrl.testcase.name'));
         var EC = browser.ExpectedConditions;
index 2a34838..3da12b1 100644 (file)
                 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',
index 02f4a48..e092699 100644 (file)
         <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>
                     <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>
index 34656f3..00dd0f1 100644 (file)
@@ -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>
             <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>
index e8bb947..8a27a57 100644 (file)
@@ -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>
                     <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 (file)
index 0000000..b435dce
--- /dev/null
@@ -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 (file)
index 0000000..028e5d8
--- /dev/null
@@ -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
index 0e7b8d5..7809065 100644 (file)
 
         <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>
index e9b4443..55bf0ba 100644 (file)
@@ -62,6 +62,7 @@
         ctrl.deleteTag = deleteTag;
         ctrl.filterList= filterList;
         ctrl.testFilter = testFilter
+        ctrl.viewResult = viewResult;
 
         ctrl.tagArray = {}
 
             ctrl.filterList();
         }
 
+        function viewResult(_id){
+            $state.go('result', {'_id':_id}, {reload: true});
+        }
+
         function deleteTag(index){
             delete  ctrl.tagArray[index];
             ctrl.filterList();
index 98f1ed8..5e69e87 100644 (file)
@@ -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>