[cvp-web] Add initial CVP Portal homepage content for release 09/47909/4
authorgrakiss <grakiss.wanglei@huawei.com>
Tue, 28 Nov 2017 07:12:45 +0000 (07:12 +0000)
committerLeo wang <grakiss.wanglei@huawei.com>
Tue, 12 Dec 2017 02:42:44 +0000 (02:42 +0000)
JIRA: DOVETAIL-563

The CVP portal homepage needs to be modified to support launch
activities. An initial iteration between OPNFV marketing has occurred.
Attached is a deck that outlines a basic left navigation menu and home
content.
We can focus on creating the left navigation and content outlined on
slide 7. The links for the left navigation aren't all flushed out.
Please leave Release Information/CVP Registry link href's blank for now
until we define content for those pages.

Change-Id: I84b8cfb996d336ef666d5a5f6aaabc0d5eebc37b
Signed-off-by: grakiss <grakiss.wanglei@huawei.com>
15 files changed:
cvp/3rd_party/static/testapi-ui/assets/css/cvp-style.css
cvp/3rd_party/static/testapi-ui/assets/css/header.css [new file with mode: 0644]
cvp/3rd_party/static/testapi-ui/assets/css/home/home.css [new file with mode: 0644]
cvp/3rd_party/static/testapi-ui/assets/css/index.css [new file with mode: 0644]
cvp/3rd_party/static/testapi-ui/assets/img/icon.png [new file with mode: 0644]
cvp/3rd_party/static/testapi-ui/assets/img/logo.png [new file with mode: 0644]
cvp/3rd_party/static/testapi-ui/components/application/application.html
cvp/3rd_party/static/testapi-ui/components/home/home.html
cvp/3rd_party/static/testapi-ui/components/home/homeController.js
cvp/3rd_party/static/testapi-ui/components/profile/profile.html
cvp/3rd_party/static/testapi-ui/components/results-report/resultsReport.html
cvp/3rd_party/static/testapi-ui/components/results/results.html
cvp/3rd_party/static/testapi-ui/components/sut/sut.html
cvp/3rd_party/static/testapi-ui/index.html
cvp/3rd_party/static/testapi-ui/shared/header/header.html

index 1c4b048..c54310a 100644 (file)
@@ -80,3 +80,12 @@ table .btn.medium {
     font-weight: 700;
     font-size: 12px;
 }
+
+.common-main-container {
+    padding-left: 5%;
+    padding-right: 5%;
+}
+
+a { 
+    cursor: pointer; 
+}
diff --git a/cvp/3rd_party/static/testapi-ui/assets/css/header.css b/cvp/3rd_party/static/testapi-ui/assets/css/header.css
new file mode 100644 (file)
index 0000000..1df040c
--- /dev/null
@@ -0,0 +1,36 @@
+.header-container-1 {
+    height: 80px;
+    background-color: #383A35;
+}
+
+.header-container-row {
+    margin-left: 0px;
+    margin-right: 0px;
+}
+
+.header-container-2 {
+    height: 30px;
+    background-color: #383A35;
+}
+
+.header-logo {
+    height: 80px;
+    padding-left: 15px;
+    padding-top: 20px;
+}
+
+.header-title {
+    font-size: 35px;
+    color: #fff;
+    padding-top: 30px;
+}
+
+.header-login {
+    margin-top: -20px;
+    margin-right: 10px;
+}
+
+.header-splitline {
+    height: 5px;
+    background-color: #27CFC3;
+}
diff --git a/cvp/3rd_party/static/testapi-ui/assets/css/home/home.css b/cvp/3rd_party/static/testapi-ui/assets/css/home/home.css
new file mode 100644 (file)
index 0000000..edad09b
--- /dev/null
@@ -0,0 +1,29 @@
+.home-container {
+    padding-left: 0px;
+    padding-right: 0px;
+}
+
+.home-category {
+    border-right-style:solid;
+    border-left-style:solid;
+    padding-left: 0px;
+    padding-right: 0px;
+}
+
+.home-content-title {
+    margin-top: 40px;
+    margin-bottom: 20px;
+    text-align:center;
+}
+
+.home-content-text {
+    margin-top: 20px;
+    padding-top: 30px;
+    text-align: justify;
+}
+
+.home-content-img {
+    margin-top: 50px;
+    width: 80%;
+    padding-left: 10%;
+}
diff --git a/cvp/3rd_party/static/testapi-ui/assets/css/index.css b/cvp/3rd_party/static/testapi-ui/assets/css/index.css
new file mode 100644 (file)
index 0000000..ccbaf50
--- /dev/null
@@ -0,0 +1,4 @@
+.index-header {
+    padding-left: 0px;
+    padding-right: 0px;
+}
diff --git a/cvp/3rd_party/static/testapi-ui/assets/img/icon.png b/cvp/3rd_party/static/testapi-ui/assets/img/icon.png
new file mode 100644 (file)
index 0000000..444db39
Binary files /dev/null and b/cvp/3rd_party/static/testapi-ui/assets/img/icon.png differ
diff --git a/cvp/3rd_party/static/testapi-ui/assets/img/logo.png b/cvp/3rd_party/static/testapi-ui/assets/img/logo.png
new file mode 100644 (file)
index 0000000..4e9cc04
Binary files /dev/null and b/cvp/3rd_party/static/testapi-ui/assets/img/logo.png differ
index bb79340..5d57fe7 100644 (file)
@@ -8,6 +8,7 @@
 <body id="logo-request">
 
 
+<div class="container-fluid common-main-container">
 <div class="top-site-banner">
     <div class="container">
         <p>
@@ -249,3 +250,4 @@ urpose. Once we understand more about your product or service, we can determine
         </uib-pagination>
     </div>
 </div>
+</div>
index 521c972..27d20ed 100644 (file)
@@ -1,6 +1,99 @@
-<div class="row">
-    <div class="col-lg-12" style="font-size:15px">
-        <ul>
-            <li><a href="http://artifacts.opnfv.org/dovetail/docs/testing_user_certificationworkflow/index.html">OPNFV Compliance Verification Program certification workflow </a></li>
-            <li><a href="http://artifacts.opnfv.org/dovetail/docs/testing_user_userguide/index.html">Dovetail Test Tool User Guide </a></li>
-        </ul>
+<div class="container-fluid">
+    <div class="row">
+        <div class="col-md-2 home-category" ng-style="{'height': ctrl.height}">
+            <div class="panel-group" id="accordion">
+                <div class="panel panel-default">
+                    <div class="panel-heading">
+                        <div class="panel-title">
+                            <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
+                                Governance & Workflow
+                            </a>
+                        </div>
+                    </div>
+                    <div id="collapseOne" class="panel-collapse collapse">
+                        <div class="panel-body">
+                            <div> <a href="https://www.opnfv.org/compliance-verification-program-cvp
+                            " target="_blank">CVP Overview&nbsp<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span></a></div>
+                            <div><a target="_blank">CVP Governance&nbsp<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span></a></div>
+                            <div><a href="http://docs.opnfv.org/en/latest/submodules/dovetail/docs/testing/user/certificationworkflow/index.html
+                            " target="_blank">CVP Process Workflow&nbsp<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span></a></div>
+                            <div><a href="http://docs.opnfv.org/en/latest/submodules/dovetail/docs/testing/user/certificationworkflow/ApplicationForm.html" target="_blank">Application Form&nbsp<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span></a></div>
+                            <div><a target="_blank">Approved 3rd Party Labs&nbsp<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span></a></div>
+                        </div>
+                    </div>
+                </div>
+                <div class="panel panel-default" style="margin-top:0px">
+                    <div class="panel-heading">
+                        <div class="panel-title">
+                            <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
+                                Training Resources
+                            </a>
+                        </div>
+                    </div>
+                    <div id="collapseTwo" class="panel-collapse collapse">
+                        <div class="panel-body">
+                            <div><a href="http://docs.opnfv.org/en/latest/submodules/dovetail/docs/testing/user/userguide/testing_guide.html
+                            " target="_blank">Dovetail Test Tool User Guide&nbsp<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span></a></div>
+                            <div><a href="https://wiki.opnfv.org/download/attachments/11698759/Dovetail%20CVP%20Tutorial.ppt?version=2&modificationDate=1508175962000&api=v2
+                            " target="_blank">CVP / Dovetail Tutorial Slides&nbsp<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span></a></div>
+                            <div><a href="http://docs.opnfv.org/en/latest/submodules/dovetail/docs/testing/user/userguide/cli_reference.html
+                            " target="_blank">Dovetail CLI&nbsp<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span></a></div>
+                            <div><a href="http://docs.opnfv.org/en/latest/submodules/dovetail/docs/testing/user/cvpaddendum/index.html
+                            " target="_blank">CVP Guidelines Addendum&nbsp<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span></a></div>
+                            <div><a href="http://docs.opnfv.org/en/latest/submodules/dovetail/docs/testing/user/testspecification" target="_blank">Test Specifications&nbsp<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span></a></div>
+                        </div>
+                    </div>
+                </div>
+                <div class="panel panel-default" style="margin-top:0px">
+                    <div class="panel-heading">
+                        <div class="panel-title">
+                            <a data-toggle="collapse" data-parent="#accordion" href="#collapseThree">
+                                Release Information
+                            </a>
+                        </div>
+                    </div>
+                    <div id="collapseThree" class="panel-collapse collapse">
+                        <div class="panel-body">
+                            <div><a target="_blank">FAQ</a></div>
+                            <div><a target="_blank">Known issues</a></div>
+                            <div><a target="_blank">Dovetail and dependent container versioning</a></div>
+                            <div><a target="_blank">Other - TBD</a></div>
+                        </div>
+                    </div>
+                </div>
+                <div class="panel panel-default" style="margin-top:0px">
+                    <div class="panel-heading">
+                        <div class="panel-title">
+                            <a data-toggle="collapse" data-parent="#accordion" href="#collapseFour">
+                                CVP Registry
+                            </a>
+                        </div>
+                    </div>
+                    <div id="collapseFour" class="panel-collapse collapse">
+                        <div class="panel-body">
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div class="col-md-10">
+            <div class="common-main-container">
+                <div class="home-content-title">
+                    <h1>OPNFV is offering a Compliance Verification Program (CVP) that verifies products and services with the "OPNFV Verified" mark.</h1>
+                </div>
+                <div>
+                    <h3 class="home-content-text">
+                        The program is intended to demonstrate the readiness and availability of commercial products based on OPNFV.
+                        Verified products submitted by respective vendors are expected to dierentiate themselves with dierent features
+                        and capabilities but remain compliant by implementing explicitly defined interfaces, behaviors, and key features.
+                        Get started with your CVP application today.
+                    </h3>
+                </div>
+                <div>
+                    <img class="home-content-img" src="testapi-ui/assets/img/icon.png" />
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
index bd1ab0f..4a31448 100644 (file)
     function HomeController($scope, $rootScope, $state) {
         var ctrl = this;
 
-       ctrl.gotoApplication = function(){
-               if($rootScope.auth.isAuthenticated){
-                       $state.go('application');
-               }else{
-                       $rootScope.auth.doSignIn('cas');
-               }
-       }
+        ctrl.height = $(document).height() - 115;
+
+        ctrl.gotoApplication = function(){
+            if($rootScope.auth.isAuthenticated){
+                $state.go('application');
+            }else{
+                $rootScope.auth.doSignIn('cas');
+            }
+        }
     }
 })();
index b41a101..98b28df 100644 (file)
@@ -1,3 +1,4 @@
+<div class="container-fluid common-main-container">
 <h3>User profile</h3>
 <div cg-busy="{promise:ctrl.authRequest,message:'Loading'}"></div>
 <div>
@@ -36,3 +37,4 @@
         </table>
     </div>
 </div>
+</div>
index a9753c3..16cfa65 100644 (file)
@@ -1,3 +1,4 @@
+<div class="container-fluid common-main-container">
 <h3>Test Run Results</h3>
 
 <div ng-show="ctrl.testId"  class="container-fluid">
@@ -27,6 +28,7 @@
         <br />
     </uib-accordion>
 </div>
+</div>
 
 <!--
 <div class="loading">
index 1f816ea..8d7e448 100644 (file)
@@ -1,3 +1,4 @@
+<div class="container-fluid common-main-container">
 <h3>{{ctrl.pageHeader}}</h3>
 <p>{{ctrl.pageParagraph}}</p>
 <form class="form-inline" ng-show="ctrl.isUserResults">
@@ -94,6 +95,7 @@
     <span class="sr-only">Error:</span>
     {{ctrl.error}}
 </div>
+</div>
 
 <style>
 .button-disabled {
index d9692b8..3426894 100644 (file)
@@ -3,8 +3,9 @@
 
 <link rel="stylesheet" href="testapi-ui/assets/css/combine.css" />
 
+<div class="container-fluid common-main-container">
 <h2>Endpoints</h2>
-<div  class="results-table" style="margin-top:30px;overflow:scroll">
+<div  class="results-table" style="margin-top:30px">
     <table class="table table-striped table-hover">
         <thead>
             <tr>
@@ -27,7 +28,7 @@
 
 <h2>Hosts</h2>
 <div ng-repeat="(host, info) in ctrl.sutData.hardware_info">
-    <div  class="results-table" style="margin-top:30px;overflow:scroll">
+    <div  class="results-table" style="margin-top:30px;">
         <table class="table table-striped table-hover">
             <tbody style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
                 <tr ng-repeat="record in info">
@@ -38,3 +39,4 @@
         </table>
     </div>
 </div>
+</div>
index b2b891d..6700fc0 100644 (file)
         <link rel="stylesheet" href="testapi-ui/assets/lib/angular-xeditable-0.8.0/css/xeditable.min.css" />
         <link rel="stylesheet" href="testapi-ui/assets/css/cvp-style.css" />
         <link rel="stylesheet" href="testapi-ui/assets/css/ascend.css" />
+        <link rel="stylesheet" href="testapi-ui/assets/css/index.css" />
+        <link rel="stylesheet" href="testapi-ui/assets/css/header.css" />
+        <link rel="stylesheet" href="testapi-ui/assets/css/home/home.css" />
 
         <script src="testapi-ui/assets/lib/jquery/src/jquery.min.js"></script>
+        <script src="testapi-ui/assets/lib/bootstrap/dist/js/bootstrap.min.js"></script>
         <script src="testapi-ui/assets/lib/angular/angular.min.js"></script>
         <script src="testapi-ui/assets/lib/angular-ui-router/release/angular-ui-router.min.js"></script>
         <script src="testapi-ui/assets/lib/angular-resource/angular-resource.min.js"></script>
@@ -63,7 +67,7 @@
 
     </head>
 
-    <body class="container home page-template-default page page-id-6 do-etfw tribe-no-js ascend wpb-js-composer js-comp-ver-5.2.1 vc_responsive">
+    <body class="container-fluid home page-template-default page page-id-6 do-etfw tribe-no-js ascend wpb-js-composer js-comp-ver-5.2.1 vc_responsive index-header">
         <header ng-include src="'testapi-ui/shared/header/header.html'"></header>
 
         <div ui-view></div>
index cf6c8af..8504b58 100644 (file)
@@ -1,59 +1,55 @@
-<div class="heading "><a ui-sref="home"></a>
-  <div class="pull-left left">
-    <img src="testapi-ui/assets/img/opnfv-logo.png" alt="OPNFV">
-  </div>
-  <h2 style="padding-top:25px;">Compliance Verification Program</h2>
-</div>
-<nav class="navbar navbar-default" role="navigation" ng-controller="HeaderController as header">
-    <div class="container-fluid">
-        <!-- Brand and toggle get grouped for better mobile display -->
-        <div class="navbar-header">
-          <button type="button" class="navbar-toggle collapsed" ng-click="header.navbarCollapsed = !header.navbarCollapsed">
-            <span class="sr-only">Toggle navigation</span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
+<div class="header-container-1">
+    <div class="row header-container-row">
+        <div class="col-md-3">
+            <a href="/#/" >
+                <img class="stnd  dark-version header-logo" alt="OPNFV" src="testapi-ui/assets/img/logo.png"  />
+            </a>
+        </div>
+        <div class="col-md-offset-1 header-title">
+            <span class="header-title">Compliance Verification Program</span>
         </div>
 
-        <div class="collapse navbar-collapse" id="navbar" uib-collapse="header.navbarCollapsed">
-          <ul class="nav navbar-nav">
-            <li ng-class="{ active: header.isActive('/')}"><a ui-sref="home">Home</a></li>
-            <!--
-            <li ng-class="{ active: header.isActive('/about')}"><a ui-sref="about">About</a></li>
-            <li ng-class="{ active: header.isActive('/guidelines')}"><a ui-sref="guidelines">OPNFV Ready&#8482; Guidelines</a></li>
-            <li ng-class="{ active: header.isActive('/community_results')}"><a ui-sref="communityResults">Community Results</a></li>
-            
-            <li ng-class="{ active: header.isCatalogActive('public')}" class="dropdown" uib-dropdown>
-                <a role="button" class="dropdown-toggle" uib-dropdown-toggle>
-                    Catalog <strong class="caret"></strong>
-                </a>
-                <ul class="dropdown-menu">
-                    <li><a ui-sref="publicVendors">Vendors</a></li>
-                    <li><a ui-sref="publicProducts">Products</a></li>
-                </ul>
-            </li>
-            -->
-          </ul>
-          <ul class="nav navbar-nav navbar-right">
-            <li ng-class="{ active: header.isActive('/application')}" ng-if="auth.isAuthenticated && auth.currentUser.role.indexOf('administrator') != -1"><a ui-sref="application">Applications</a></li>
-            <li ng-class="{ active: header.isActive('/user_results')}" ng-if="auth.isAuthenticated"><a ui-sref="userResults">My Results</a></li>
-            <!--
-            <li ng-if="auth.isAuthenticated" ng-class="{ active: header.isCatalogActive('user')}" class="dropdown" uib-dropdown>
-                <a role="button" class="dropdown-toggle" uib-dropdown-toggle>
-                    My Catalog <strong class="caret"></strong>
-                </a>
-                <ul class="dropdown-menu">
-                    <li><a ui-sref="userVendors">My Vendors</a></li>
-                    <li><a ui-sref="userProducts">My Products</a></li>
-                </ul>
-            </li>
-            -->
-            <li ng-class="{ active: header.isActive('/profile')}" ng-if="auth.isAuthenticated"><a ui-sref="profile">Profile</a></li>
-            <li ng-if="auth.isAuthenticated"><a href="" ng-click="auth.doSignOut()">Sign Out</a></li>
-            <li ng-if="!auth.isAuthenticated"><a href="" ng-click="auth.doSignIn('cas')">Sign In / Sign Up</a></li>
-          </ul>
+    </div>
+</div>
+
+<div class="header-container-2">
+    <div class="row header-container-row">
+        <div>
+            <ul class="nav navbar-nav navbar-right header-login">
+        <!--
+        <li ng-class="{ active: header.isActive('/about')}"><a ui-sref="about">About</a></li>
+        <li ng-class="{ active: header.isActive('/guidelines')}"><a ui-sref="guidelines">OPNFV Ready&#8482; Guidelines</a></li>
+        <li ng-class="{ active: header.isActive('/community_results')}"><a ui-sref="communityResults">Community Results</a></li>
+        <li ng-class="{ active: header.isCatalogActive('public')}" class="dropdown" uib-dropdown>
+            <a role="button" class="dropdown-toggle" uib-dropdown-toggle>
+                Catalog <strong class="caret"></strong>
+            </a>
+            <ul class="dropdown-menu">
+                <li><a ui-sref="publicVendors">Vendors</a></li>
+                <li><a ui-sref="publicProducts">Products</a></li>
+            </ul>
+        </li>
+        <li ng-if="auth.isAuthenticated" ng-class="{ active: header.isCatalogActive('user')}" class="dropdown" uib-dropdown>
+            <a role="button" class="dropdown-toggle" uib-dropdown-toggle>
+                My Catalog <strong class="caret"></strong>
+            </a>
+            <ul class="dropdown-menu">
+                <li><a ui-sref="userVendors">My Vendors</a></li>
+                <li><a ui-sref="userProducts">My Products</a></li>
+            </ul>
+        </li>
+        -->
+                <li ng-class="{ active: header.isActive('/application')}" ng-if="auth.isAuthenticated && auth.currentUser.role.indexOf('administrator') != -1"><a ui-sref="application">Applications</a></li>
+                <li ng-class="{ active: header.isActive('/user_results')}" ng-if="auth.isAuthenticated"><a ui-sref="userResults">My Results</a></li>
+                <li ng-class="{ active: header.isActive('/profile')}" ng-if="auth.isAuthenticated"><a ui-sref="profile">Profile</a></li>
+                <li ng-if="auth.isAuthenticated" style="margin-right:10px"><a href="" ng-click="auth.doSignOut()">Sign Out</a></li>
+                <li ng-if="!auth.isAuthenticated" style="margin-right:10px;"><a href="" ng-click="auth.doSignIn('cas')"><span class="glyphicon glyphicon-user" aria-hidden="true">&nbsp</span>Sign In / Sign Up</a></li>
+            </ul>
         </div>
     </div>
-</nav>
+</div>
 
+<div class="container-fluid header-splitline">
+    <div class="row header-container-row">
+    </div>
+</div>