summaryrefslogtreecommitdiffstats
path: root/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace
diff options
context:
space:
mode:
authorMurali-P <murali.p@huawei.com>2017-07-31 11:06:26 +0530
committerMurali-P <murali.p@huawei.com>2017-07-31 11:06:26 +0530
commitd0e21365a8bf7da9dd87915c52acb0a907dfe59b (patch)
tree06b4f5314b92ca2695bd3dbd9d545df6df242dd3 /vnfmarket-be/portal-marketplace/src/main/webapp/marketplace
parent6bf0d8e793ef1f55808bb54112f4839a18ee582a (diff)
Market place initial code
Resolved:VNFSDK-53 VNF SDK market place Change-Id: Ic9ac5491b4a43d03bce105abb295e10c476e1560 Signed-off-by: Murali-P <murali.p@huawei.com>
Diffstat (limited to 'vnfmarket-be/portal-marketplace/src/main/webapp/marketplace')
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/app.config.js62
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/app.js46
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/assets/images/open_o_diagram.pngbin0 -> 127012 bytes
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/about-test.js48
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/about.html91
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutCtrl.js47
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutModule.js31
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutRoute.js40
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutService.js41
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/dashboard.html100
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/home-test.js55
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/home.html108
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeCtrl.js51
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeModule.js30
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeRoute.js44
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeService.js754
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/main-page/main-page.html76
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/main-page/mainPageCtrl.js115
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/nav-bar/navBarService.js66
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/side-nav/sidenav.html46
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/side-nav/sidenavCtrl.js114
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/side-nav/sidenavService.js66
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplace-test.js48
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplace.html22
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceCtrl.js47
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceModule.js31
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceRoute.js40
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceService.js41
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/user-test.js48
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/user.html74
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userCtrl.js47
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userModule.js31
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userRoute.js40
-rw-r--r--vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userService.js41
34 files changed, 2541 insertions, 0 deletions
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/app.config.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/app.config.js
new file mode 100644
index 00000000..74f2e7b1
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/app.config.js
@@ -0,0 +1,62 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc configuration file
+ * @name app.config:config
+ * @description
+ * # Config and run block
+ * Configutation of the app
+ */
+
+
+ angular
+ .module('vnfmarket')
+ .config(configure)
+ .run(runBlock);
+
+ configure.$inject = ['$stateProvider', '$urlRouterProvider', '$locationProvider', '$httpProvider'];
+
+ function configure($stateProvider, $urlRouterProvider, $locationProvider, $httpProvider) {
+
+ $locationProvider.hashPrefix('!');
+
+ // This is required for Browser Sync to work poperly
+ $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
+
+
+ $urlRouterProvider
+ .otherwise('/dashboard');
+
+ }
+
+ runBlock.$inject = ['$rootScope'];
+
+ function runBlock($rootScope) {
+ 'use strict';
+
+ console.log('AngularJS run() function...');
+ }
+
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/app.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/app.js
new file mode 100644
index 00000000..1b3b63fc
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/app.js
@@ -0,0 +1,46 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc index
+ * @name app
+ * @description
+ * # app
+ *
+ * Main modules of the application.
+ */
+
+ angular.module('vnfmarket', [
+ 'ngResource',
+ 'ngAria',
+ 'ngMaterial',
+ 'ngMdIcons',
+ 'ngCookies',
+ 'ngAnimate',
+ 'ngSanitize',
+ 'ui.router',
+ 'home',
+ 'user',
+ 'marketplace',
+ 'about',
+ ]);
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/assets/images/open_o_diagram.png b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/assets/images/open_o_diagram.png
new file mode 100644
index 00000000..676a6bf8
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/assets/images/open_o_diagram.png
Binary files differ
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/about-test.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/about-test.js
new file mode 100644
index 00000000..04fe198f
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/about-test.js
@@ -0,0 +1,48 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.test:aboutTest
+ * @description
+ * # aboutTest
+ * Test of the app
+ */
+
+ describe('about test', function () {
+ var controller = null, $scope = null;
+
+ beforeEach(function () {
+ module('vnfmarket');
+ });
+
+ beforeEach(inject(function ($controller, $rootScope) {
+ $scope = $rootScope.$new();
+ controller = $controller('AboutCtrl', {
+ $scope: $scope
+ });
+ }));
+
+ it('Should controller must be defined', function () {
+ expect(controller).toBeDefined();
+ });
+
+ });
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/about.html b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/about.html
new file mode 100644
index 00000000..7ee0c1bf
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/about.html
@@ -0,0 +1,91 @@
+<!--
+ Copyright 2016-2017 Huawei Technologies Co., Ltd.
+
+ 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.
+-->
+<div class="md-padding" flex layout-sm="column">
+ <md-card>
+ <md-card-content>
+ <h2 class="md-title">Welcome to Open-O.</h2>
+ </md-card-content>
+ </md-card>
+ <!-- Start About Page -->
+ <md-card>
+ <md-card-content>
+ <div class="row">
+ <div class="col-md-4">
+ <a href="#" data-toggle="modal" data-target="#open-o-diagram">
+ <img class="img-responsive" src="app/assets/images/open_o_diagram.png" alt="open o Architecture">
+ </a>
+ </div>
+ <div class="col-md-8">
+ <div class="row">
+ <div class="col-md-12 content clearfix">
+ <div class="editContent">
+ <h1>Open Orchestrator Project (OPEN-O)</h1>
+ <h3>Any Service Over Any Network</h3>
+ </div>
+ <div class="editContent">
+ <p class="lead">OPEN-O is seeking to offer network operators an incremental path to transform their networks, and OSS/BSS, through adoption of SDN and NFV without scrapping the vast investments in existing equipment and technologies.</p>
+ </div>
+
+ </div>
+
+ </div><!-- /.row-->
+ </div>
+ </div>
+ <div class="col-md-12">
+ <div class="row pad15">
+ <div class="col-xs-2">
+ <span class="fa fa-rocket fa-4x"></span>
+ </div>
+ <div class="col-xs-10">
+ <div class="editContent">
+ <h3>Mission</h3>
+ </div>
+ <div class="editContent">
+ <p>The mission of the OPEN-Orchestrator Project (OPEN-O) is to: enable end-to-end service agility across SDN, NFV, and legacy networks via a unified orchestration platform supporting NFV orchestration (NFVO and VNFM) and SDN orchestration.</p>
+ </div>
+ </div>
+ </div><!-- /.row -->
+ <div class="row pad15">
+ <div class="col-xs-2">
+ <span class="fa fa-users fa-4x"></span>
+ </div>
+ <div class="col-xs-10">
+ <div class="editContent">
+ <h3>Target Customers.</h3>
+ </div>
+ <div class="editContent">
+ <p>OPEN-O is targeting the world’s most important and innovative telecommunications and cable operators, and the OEMs, systems integrators, and software firms who support them.</p>
+ </div>
+ </div>
+ </div><!-- /.row -->
+ <div class="row pad15">
+ <div class="col-xs-2">
+ <span class="fa fa-object-group fa-4x"></span>
+ </div>
+ <div class="col-xs-10">
+ <div class="editContent">
+ <h3>OPEN-O Architecture.</h3>
+ </div>
+ <div class="editContent">
+ <p>The OPEN-O Architecture (shown in the Figure ), enables operators to orchestrate end-to- end composite services, leveraging virtualized (and physical network functions), and SDN and legacy connectivity services. The model-driven service framework uses standard modeling languages including TOSCA and YANG, and a modular approach to integrate with MANO building blocks (such as VIMs and VNFMs), along with Connectivity Services Management, including SDN Controllers, EMS’ and NMS’.</p>
+ </div>
+ </div>
+ </div><!-- /.row -->
+ </div>
+ </md-card-content>
+ </md-card>
+ <!-- End About Page -->
+</div>
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutCtrl.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutCtrl.js
new file mode 100644
index 00000000..c2f097e3
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutCtrl.js
@@ -0,0 +1,47 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.controller:aboutCtrl
+ * @description
+ * # aboutCtrl
+ * Controller of the app
+ */
+
+ angular
+ .module('about')
+ .controller('AboutCtrl', About);
+
+ About.$inject = [];
+
+ /*
+ * recommend
+ * Using function declarations
+ * and bindable members up top.
+ */
+
+ function About() {
+ /*jshint validthis: true */
+ var vm = this;
+
+ }
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutModule.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutModule.js
new file mode 100644
index 00000000..be524046
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutModule.js
@@ -0,0 +1,31 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.module:aboutModule
+ * @description
+ * # aboutModule
+ * Module of the app
+ */
+
+ angular.module('about', []);
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutRoute.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutRoute.js
new file mode 100644
index 00000000..50fb7b2b
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutRoute.js
@@ -0,0 +1,40 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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.
+
+*/
+'use strict';
+
+/**
+ * @ngdoc function
+ * @name app.route:aboutRoute
+ * @description
+ * # aboutRoute
+ * Route of the app
+ */
+
+angular.module('about')
+ .config(['$stateProvider', function ($stateProvider) {
+
+ $stateProvider
+ .state('home.about', {
+ url:'/about',
+ templateUrl: 'app/modules/about/about.html',
+ controller: 'AboutCtrl',
+ controllerAs: 'vm'
+ });
+
+
+ }]);
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutService.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutService.js
new file mode 100644
index 00000000..fb8770c5
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/about/aboutService.js
@@ -0,0 +1,41 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.service:aboutService
+ * @description
+ * # aboutService
+ * Service of the app
+ */
+
+ angular
+ .module('about')
+ .factory('AboutService', About);
+ // Inject your dependencies as .$inject = ['$http', 'someSevide'];
+ // function Name ($http, someSevide) {...}
+
+ About.$inject = ['$http'];
+
+ function About ($http) {
+
+ }
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/dashboard.html b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/dashboard.html
new file mode 100644
index 00000000..b048c381
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/dashboard.html
@@ -0,0 +1,100 @@
+<!--
+ Copyright 2016-2017 Huawei Technologies Co., Ltd.
+
+ 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.
+-->
+<div class="md-padding" flex layout-sm="column">
+ <md-card class="text-center">
+ <md-card-content>
+ <h1>{{ vm.title }}</h1>
+ <h3>{{ vm.version }}</h3>
+ <p>An Online MarketPlace (or online e-commerce marketplace) is a type of a e-commarce site where product of service information is proviced by multiple third parties,whereas transactions are processed by the marketplace operator.</p>
+ <br>
+ <md-divider class="margin-top-20"></md-divider>
+ <!-- <h1 class="margin-top-50">Features</h1>
+ <ul>
+ <li class=" text-center" ng-repeat="item in vm.listFeatures">
+ <p><ng-md-icon icon="check"></ng-md-icon> {{item.feature}}</p>
+ </li>
+ </ul> -->
+ </md-card-content>
+ </md-card>
+ <!-- Start About Page -->
+ <md-card>
+ <md-card-content>
+ <div class="row">
+ <div class="col-md-4">
+ <a href="#" data-toggle="modal" data-target="#open-o-diagram">
+ <img class="img-responsive" src="app/assets/images/open_o_diagram.png" alt="open o Architecture">
+ </a>
+ </div>
+ <div class="col-md-8">
+ <div class="row">
+ <div class="col-md-12 content clearfix">
+ <div class="editContent">
+ <h1>Open Orchestrator Project (OPEN-O)</h1>
+ <h3>Any Service Over Any Network</h3>
+ </div>
+ <div class="editContent">
+ <p class="lead">OPEN-O is seeking to offer network operators an incremental path to transform their networks, and OSS/BSS, through adoption of SDN and NFV without scrapping the vast investments in existing equipment and technologies.</p>
+ </div>
+
+ </div>
+
+ </div><!-- /.row-->
+ </div>
+ </div>
+ <div class="col-md-12">
+ <div class="row pad15">
+ <div class="col-xs-2">
+ <span class="fa fa-rocket fa-4x"></span>
+ </div>
+ <div class="col-xs-10">
+ <div class="editContent">
+ <h3>Mission</h3>
+ </div>
+ <div class="editContent">
+ <p>The mission of the OPEN-Orchestrator Project (OPEN-O) is to: enable end-to-end service agility across SDN, NFV, and legacy networks via a unified orchestration platform supporting NFV orchestration (NFVO and VNFM) and SDN orchestration.</p>
+ </div>
+ </div>
+ </div><!-- /.row -->
+ <div class="row pad15">
+ <div class="col-xs-2">
+ <span class="fa fa-users fa-4x"></span>
+ </div>
+ <div class="col-xs-10">
+ <div class="editContent">
+ <h3>Target Customers.</h3>
+ </div>
+ <div class="editContent">
+ <p>OPEN-O is targeting the world’s most important and innovative telecommunications and cable operators, and the OEMs, systems integrators, and software firms who support them.</p>
+ </div>
+ </div>
+ </div><!-- /.row -->
+ <div class="row pad15">
+ <div class="col-xs-2">
+ <span class="fa fa-object-group fa-4x"></span>
+ </div>
+ <div class="col-xs-10">
+ <div class="editContent">
+ <h3>OPEN-O Architecture.</h3>
+ </div>
+ <div class="editContent">
+ <p>The OPEN-O Architecture (shown in the Figure ), enables operators to orchestrate end-to- end composite services, leveraging virtualized (and physical network functions), and SDN and legacy connectivity services. The model-driven service framework uses standard modeling languages including TOSCA and YANG, and a modular approach to integrate with MANO building blocks (such as VIMs and VNFMs), along with Connectivity Services Management, including SDN Controllers, EMS’ and NMS’.</p>
+ </div>
+ </div>
+ </div><!-- /.row -->
+ </div>
+ </md-card-content>
+ </md-card>
+</div>
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/home-test.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/home-test.js
new file mode 100644
index 00000000..cc9157ff
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/home-test.js
@@ -0,0 +1,55 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.test:homeTest
+ * @description
+ * # homeTest
+ * Test of the app
+ */
+
+ describe('homeCtrl', function () {
+ var controller = null, $scope = null, $location;
+
+ beforeEach(function () {
+ module('vnfmarket');
+ });
+
+ beforeEach(inject(function ($controller, $rootScope, _$location_) {
+ $scope = $rootScope.$new();
+ $location = _$location_;
+
+ controller = $controller('HomeCtrl', {
+ $scope: $scope
+ });
+ }));
+
+ it('Should HomeCtrl must be defined', function () {
+ expect(controller).toBeDefined();
+ });
+
+ it('Should match the path Module name', function () {
+ $location.path('/home');
+ expect($location.path()).toBe('/home');
+ });
+
+ });
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/home.html b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/home.html
new file mode 100644
index 00000000..2ba4d768
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/home.html
@@ -0,0 +1,108 @@
+<!--
+ Copyright 2016-2017 Huawei Technologies Co., Ltd.
+
+ 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.
+-->
+<md-sidenav layout="column" class="md-sidenav-left md-whiteframe-z2" md-component-id="left" md-is-locked-open="$mdMedia('gt-md')">
+ <div ng-controller="SidenavCtrl as vm" ng-cloak>
+ <md-toolbar class="md-tall md-hue-2">
+ <div layout="column" class="md-toolbar-tools-bottom inset">
+ <div layout="row">
+ <div flex="80" style="margin-top: 10px;">
+ <div>VNF Marketplace</div>
+ </div>
+ </div>
+ </div>
+ </md-toolbar>
+ <md-list>
+ <md-list-item ui-sref="home.dashboard">
+ <div class="inset">
+ <ng-md-icon icon="apps"></ng-md-icon>
+ </div>
+ <p> Dashboard </p>
+ </md-list-item>
+ <md-list-item ng-repeat="item in vm.menu" ng-click="vm.navigateTo('home.' + item.link)">
+ <div class="inset" ng-show="item.icon">
+ <ng-md-icon icon="{{item.icon}}"></ng-md-icon>
+ </div>
+ <p > {{ item.name }}</p>
+ </md-list-item>
+ <md-divider></md-divider>
+ <md-subheader>Admin</md-subheader>
+ <md-list-item ng-repeat="item in vm.admin" ng-click="vm.showSettingsBottom($event)" >
+ <div class="inset">
+ <ng-md-icon icon="{{item.icon}}"></ng-md-icon>
+ </div>
+ <p> {{ item.title }}</p>
+ </md-list-item>
+ </md-list>
+ </div>
+</md-sidenav>
+
+<div layout="column" class="relative" layout-fill role="main" ng-controller="LayoutCtrl as layout" ng-cloak>
+ <md-toolbar ng-show="!showSearch">
+ <div class="md-toolbar-tools">
+ <md-button ng-click="layout.toggleSidenav('left')" hide-gt-md aria-label="Menu">
+ <ng-md-icon icon="menu"></ng-md-icon>
+ </md-button>
+ <h3>VNF Marketplace</h3>
+ <span flex></span>
+ <md-button aria-label="Search" ng-click="showSearch = !showSearch">
+ <ng-md-icon icon="search"></ng-md-icon>
+ </md-button>
+ <md-menu>
+ <md-button aria-label="Open Settings" ng-click="layout.openMenu($mdOpenMenu, $event)">
+ <md-icon> more_vert </md-icon>
+ </md-button>
+ <md-menu-content width="4">
+ <md-menu-item>
+ <md-button ng-click="layout.changeProfile($event)">
+ <md-icon>face</md-icon>
+ Profile
+ </md-button>
+ </md-menu-item>
+ <md-menu-item>
+ <md-button ng-click="layout.changePassword()">
+ <md-icon>lock</md-icon>
+ Password
+ </md-button>
+ </md-menu-item>
+ <md-menu-divider></md-menu-divider>
+ <md-menu-item>
+ <md-button ng-click="layout.logOut()">
+ <md-icon>power_settings_new</md-icon>
+ Logout
+ </md-button>
+ </md-menu-item>
+ </md-menu-content>
+ </md-menu>
+ </div>
+ </md-toolbar>
+ <md-toolbar class="md-hue-1" ng-show="showSearch">
+ <div class="md-toolbar-tools">
+ <md-button ng-click="showSearch = !showSearch" aria-label="Back">
+ <ng-md-icon icon="arrow_back"></ng-md-icon>
+ </md-button>
+ <h3 flex="10">
+ Back
+ </h3>
+ <md-input-container md-theme="input" flex>
+ <label>&nbsp;</label>
+ <input ng-model="search.who" placeholder="Search ...">
+ </md-input-container>
+ </div>
+ </md-toolbar>
+ <md-content layout="column" flex md-scroll-y style="background-color:#DCDCDC">
+ <div ui-view></div>
+ </md-content>
+</div>
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeCtrl.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeCtrl.js
new file mode 100644
index 00000000..a4b88aa0
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeCtrl.js
@@ -0,0 +1,51 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.controller:HomeCtrl
+ * @description
+ * # HomeCtrl
+ * Controller of the app
+ */
+
+ angular
+ .module('vnfmarket')
+ .controller('HomeCtrl', Home);
+
+ Home.$inject = ['homeService'];
+
+ /*
+ * recommend
+ * Using function declarations
+ * and bindable members up top.
+ */
+
+ function Home(homeService) {
+ /*jshint validthis: true */
+ var vm = this;
+ vm.title = "Welcome to VNF Marketplace!";
+ vm.version = "1.0.0";
+ vm.listFeatures = homeService.getFeaturesList();
+ console.log(vm.listFeatures);
+
+ }
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeModule.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeModule.js
new file mode 100644
index 00000000..93624644
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeModule.js
@@ -0,0 +1,30 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.module:homeModule
+ * @description
+ * # homeModule
+ * Module of the app
+ */
+
+ angular.module('home', []);
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeRoute.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeRoute.js
new file mode 100644
index 00000000..286d1ae3
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeRoute.js
@@ -0,0 +1,44 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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.
+
+*/
+'use strict';
+
+ /**
+ * @ngdoc function
+ * @name app.route:HomeRoute
+ * @description
+ * # HomeRoute
+ * Route of the app
+ */
+
+angular.module('vnfmarket')
+ .config(['$stateProvider', function ($stateProvider) {
+ $stateProvider
+
+ .state('home', {
+ url: '',
+ abstract: true,
+ templateUrl: 'app/modules/home/home.html',
+ controller: 'HomeCtrl',
+ controllerAs: 'vm'
+ })
+ .state('home.dashboard', {
+ url:'/dashboard',
+ templateUrl: 'app/modules/home/dashboard.html'
+ });
+
+ }]);
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeService.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeService.js
new file mode 100644
index 00000000..fb3ea3c0
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/home/homeService.js
@@ -0,0 +1,754 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.service:homeService
+ * @description
+ * # homeService
+ * Service of the app
+ */
+
+ angular.module('vnfmarket')
+ .factory('homeService', homeService);
+
+ homeService.$inject = ['$http'];
+
+ function homeService($http) {
+
+ /*var list = [
+ {"feature": "Implemented Best Practices, following: John Papa's Guide"},
+ {"feature": "Using Controller AS syntax"},
+ {"feature": "Wrap Angular components in an Immediately Invoked Function Expression (IIFE)"},
+ {"feature": "Declare modules without a variable using the setter syntax"},
+ {"feature": "Using named functions"},
+ {"feature": "Including Unit test with Karma"},
+ {"feature": "Including UI options for Bootstrap or Angular-Material"},
+ {"feature": "Including Angular-Material-Icons for Angular-Material UI"},
+ {"feature": "Dynamic Menu generator for both themes"},
+ {"feature": "Grunt task for Production and Development"}
+ ];*/
+ var services = [
+ {
+ "name": "vEPC",
+ "vendor": "Huawei",
+ "date": "2016-11-21 23:06",
+ "desc": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed interdum fringilla laoreet. Nulla facilisi. Maecenas consequat tristique odio, in consectetur leo volutpat vitae. Ut porttitor iaculis metus sed tincidunt. Etiam facilisis nec nisi at tempus. Curabitur ultrices molestie dictum. Integer placerat varius lorem, id cursus augue vulputate quis. Nulla pulvinar vel nunc vel lacinia. Aliquam eleifend, ipsum in sodales dictum, mi risus dictum est, non hendrerit neque elit et turpis. Integer lacus massa, pulvinar eget porttitor vel, ultrices in elit. Ut convallis semper gravida. Sed mollis leo est, eget consectetur dui vestibulum a. Phasellus non augue id diam malesuada ultrices. Praesent id nunc vehicula, dapibus quam in, rhoncus lorem. Praesent mattis elit a ex elementum, vel imperdiet risus tempor. Aliquam laoreet mauris nec egestas eleifend.",
+ "downloads": 20,
+ "type":"gs-o",
+ "size":"204800",
+ "down_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 17:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 10:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 00:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:32"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 20:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ],
+ "upl_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 15:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 14:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 10:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:12"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 02:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ]
+ },
+ {
+ "name": "vFirewall",
+ "vendor": "Huawei",
+ "date": "2016-11-23 22:09",
+ "desc": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed interdum fringilla laoreet. Nulla facilisi. Maecenas consequat tristique odio, in consectetur leo volutpat vitae. Ut porttitor iaculis metus sed tincidunt. Etiam facilisis nec nisi at tempus. Curabitur ultrices molestie dictum. Integer placerat varius lorem, id cursus augue vulputate quis. Nulla pulvinar vel nunc vel lacinia. Aliquam eleifend, ipsum in sodales dictum, mi risus dictum est, non hendrerit neque elit et turpis. Integer lacus massa, pulvinar eget porttitor vel, ultrices in elit. Ut convallis semper gravida. Sed mollis leo est, eget consectetur dui vestibulum a. Phasellus non augue id diam malesuada ultrices. Praesent id nunc vehicula, dapibus quam in, rhoncus lorem. Praesent mattis elit a ex elementum, vel imperdiet risus tempor. Aliquam laoreet mauris nec egestas eleifend.",
+ "downloads": 25,
+ "type":"gs-o",
+ "size":"204800",
+ "down_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 17:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 10:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 00:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:32"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 20:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ],
+ "upl_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 15:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 14:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 10:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:12"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 02:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ]
+ },
+ {
+ "name": "vIMS",
+ "vendor": "Huawei",
+ "date": "2016-10-21 12:04",
+ "desc": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed interdum fringilla laoreet. Nulla facilisi. Maecenas consequat tristique odio, in consectetur leo volutpat vitae. Ut porttitor iaculis metus sed tincidunt. Etiam facilisis nec nisi at tempus. Curabitur ultrices molestie dictum. Integer placerat varius lorem, id cursus augue vulputate quis. Nulla pulvinar vel nunc vel lacinia. Aliquam eleifend, ipsum in sodales dictum, mi risus dictum est, non hendrerit neque elit et turpis. Integer lacus massa, pulvinar eget porttitor vel, ultrices in elit. Ut convallis semper gravida. Sed mollis leo est, eget consectetur dui vestibulum a. Phasellus non augue id diam malesuada ultrices. Praesent id nunc vehicula, dapibus quam in, rhoncus lorem. Praesent mattis elit a ex elementum, vel imperdiet risus tempor. Aliquam laoreet mauris nec egestas eleifend.",
+ "downloads": 10,
+ "type":"sdn-o",
+ "size":"104800",
+ "down_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 17:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 10:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 00:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:32"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 20:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ],
+ "upl_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 15:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 14:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 10:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:12"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 02:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ]
+ },
+ {
+ "name": "vLoadbalance",
+ "vendor": "ZTE",
+ "date": "2016-11-20 05:06",
+ "desc": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed interdum fringilla laoreet. Nulla facilisi. Maecenas consequat tristique odio, in consectetur leo volutpat vitae. Ut porttitor iaculis metus sed tincidunt. Etiam facilisis nec nisi at tempus. Curabitur ultrices molestie dictum. Integer placerat varius lorem, id cursus augue vulputate quis. Nulla pulvinar vel nunc vel lacinia. Aliquam eleifend, ipsum in sodales dictum, mi risus dictum est, non hendrerit neque elit et turpis. Integer lacus massa, pulvinar eget porttitor vel, ultrices in elit. Ut convallis semper gravida. Sed mollis leo est, eget consectetur dui vestibulum a. Phasellus non augue id diam malesuada ultrices. Praesent id nunc vehicula, dapibus quam in, rhoncus lorem. Praesent mattis elit a ex elementum, vel imperdiet risus tempor. Aliquam laoreet mauris nec egestas eleifend.",
+ "downloads": 319,
+ "type":"sdn-o",
+ "size":"204800",
+ "down_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 17:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 10:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 00:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:32"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 20:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ],
+ "upl_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 15:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 14:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 10:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:12"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 02:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ]
+ },
+ {
+ "name": "vCPE",
+ "vendor": "ZTE",
+ "date": "2016-11-03 23:06",
+ "desc": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed interdum fringilla laoreet. Nulla facilisi. Maecenas consequat tristique odio, in consectetur leo volutpat vitae. Ut porttitor iaculis metus sed tincidunt. Etiam facilisis nec nisi at tempus. Curabitur ultrices molestie dictum. Integer placerat varius lorem, id cursus augue vulputate quis. Nulla pulvinar vel nunc vel lacinia. Aliquam eleifend, ipsum in sodales dictum, mi risus dictum est, non hendrerit neque elit et turpis. Integer lacus massa, pulvinar eget porttitor vel, ultrices in elit. Ut convallis semper gravida. Sed mollis leo est, eget consectetur dui vestibulum a. Phasellus non augue id diam malesuada ultrices. Praesent id nunc vehicula, dapibus quam in, rhoncus lorem. Praesent mattis elit a ex elementum, vel imperdiet risus tempor. Aliquam laoreet mauris nec egestas eleifend.",
+ "downloads": 234,
+ "type":"nfv-o",
+ "size":"204800",
+ "down_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 17:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 10:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 00:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:32"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 20:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ],
+ "upl_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 15:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 14:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 10:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:12"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 02:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ]
+ },
+ {
+ "name": "openimscore",
+ "vendor": "Intel",
+ "date": "2016-11-20 17:06",
+ "desc": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed interdum fringilla laoreet. Nulla facilisi. Maecenas consequat tristique odio, in consectetur leo volutpat vitae. Ut porttitor iaculis metus sed tincidunt. Etiam facilisis nec nisi at tempus. Curabitur ultrices molestie dictum. Integer placerat varius lorem, id cursus augue vulputate quis. Nulla pulvinar vel nunc vel lacinia. Aliquam eleifend, ipsum in sodales dictum, mi risus dictum est, non hendrerit neque elit et turpis. Integer lacus massa, pulvinar eget porttitor vel, ultrices in elit. Ut convallis semper gravida. Sed mollis leo est, eget consectetur dui vestibulum a. Phasellus non augue id diam malesuada ultrices. Praesent id nunc vehicula, dapibus quam in, rhoncus lorem. Praesent mattis elit a ex elementum, vel imperdiet risus tempor. Aliquam laoreet mauris nec egestas eleifend.",
+ "downloads": 45,
+ "type":"nfv-o",
+ "size":"204800",
+ "down_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 17:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 10:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 00:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:32"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 20:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ],
+ "upl_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 15:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 14:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 10:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:12"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 02:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ]
+ },
+ {
+ "name": "openims",
+ "vendor": "Intel",
+ "date": "2016-11-20 12:06",
+ "desc": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed interdum fringilla laoreet. Nulla facilisi. Maecenas consequat tristique odio, in consectetur leo volutpat vitae. Ut porttitor iaculis metus sed tincidunt. Etiam facilisis nec nisi at tempus. Curabitur ultrices molestie dictum. Integer placerat varius lorem, id cursus augue vulputate quis. Nulla pulvinar vel nunc vel lacinia. Aliquam eleifend, ipsum in sodales dictum, mi risus dictum est, non hendrerit neque elit et turpis. Integer lacus massa, pulvinar eget porttitor vel, ultrices in elit. Ut convallis semper gravida. Sed mollis leo est, eget consectetur dui vestibulum a. Phasellus non augue id diam malesuada ultrices. Praesent id nunc vehicula, dapibus quam in, rhoncus lorem. Praesent mattis elit a ex elementum, vel imperdiet risus tempor. Aliquam laoreet mauris nec egestas eleifend.",
+ "downloads": 21,
+ "type":"sdn-o",
+ "size":"204800",
+ "down_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 17:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 10:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 00:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:32"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 20:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ],
+ "upl_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 15:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 14:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 10:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:12"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 02:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ]
+ },
+ {
+ "name": "vCPE",
+ "vendor": "Huawei",
+ "date": "2016-11-19 23:06",
+ "desc": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed interdum fringilla laoreet. Nulla facilisi. Maecenas consequat tristique odio, in consectetur leo volutpat vitae. Ut porttitor iaculis metus sed tincidunt. Etiam facilisis nec nisi at tempus. Curabitur ultrices molestie dictum. Integer placerat varius lorem, id cursus augue vulputate quis. Nulla pulvinar vel nunc vel lacinia. Aliquam eleifend, ipsum in sodales dictum, mi risus dictum est, non hendrerit neque elit et turpis. Integer lacus massa, pulvinar eget porttitor vel, ultrices in elit. Ut convallis semper gravida. Sed mollis leo est, eget consectetur dui vestibulum a. Phasellus non augue id diam malesuada ultrices. Praesent id nunc vehicula, dapibus quam in, rhoncus lorem. Praesent mattis elit a ex elementum, vel imperdiet risus tempor. Aliquam laoreet mauris nec egestas eleifend.",
+ "downloads": 408,
+ "type":"nfv-o",
+ "size":"204800",
+ "down_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 17:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 10:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 00:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:32"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 20:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ],
+ "upl_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 15:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 14:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 10:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:12"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 02:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ]
+ },
+ {
+ "name": "vCPE",
+ "vendor": "Siemens",
+ "date": "2016-11-20 12:06",
+ "desc": "Dolore ex deserunt aute fugiat aute nulla ea sunt aliqua nisi cupidatat eu. Nostrud in laboris labore nisi amet do dolor eu fugiat consectetur elit cillum esse",
+ "downloads": 120,
+ "type":"sdn-o",
+ "size":"204800",
+ "down_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 17:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 10:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 00:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:32"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 20:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ],
+ "upl_history":[
+ {
+ "user":"user_001",
+ "time": "2016-11-30 15:31"
+ },
+ {
+ "user":"user_002",
+ "time": "2016-11-30 14:31"
+ },
+ {
+ "user":"user_003",
+ "time": "2016-11-30 11:01"
+ },
+ {
+ "user":"user_004",
+ "time": "2016-11-30 14:03"
+ },
+ {
+ "user":"user_005",
+ "time": "2016-11-30 10:31"
+ },
+ {
+ "user":"user_006",
+ "time": "2016-11-29 19:12"
+ },
+ {
+ "user":"user_007",
+ "time": "2016-11-28 02:31"
+ },
+ {
+ "user":"user_008",
+ "time": "2016-11-20 09:11"
+ }
+ ]
+ }
+ ];
+
+ return {
+ getFeaturesList: getFeaturesList
+ };
+
+ function getFeaturesList() {
+ return services;
+ }
+
+ }
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/main-page/main-page.html b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/main-page/main-page.html
new file mode 100644
index 00000000..ec86a647
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/main-page/main-page.html
@@ -0,0 +1,76 @@
+<!--
+ Copyright 2016-2017 Huawei Technologies Co., Ltd.
+
+ 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.
+-->
+ <md-toolbar ng-show="!showSearch">
+ <div class="md-toolbar-tools">
+ <md-button ng-click="layout.toggleSidenav('left')" hide-gt-md aria-label="Menu">
+ <ng-md-icon icon="menu"></ng-md-icon>
+ </md-button>
+ <h3>
+ <a href="/">vnfmarket</a>
+ </h3>
+ <span flex></span>
+ <md-button aria-label="Search" ng-click="showSearch = !showSearch">
+ <ng-md-icon icon="search"></ng-md-icon>
+ </md-button>
+ <md-menu>
+ <md-button aria-label="Open Settings" ng-click="layout.openMenu($mdOpenMenu, $event)">
+ <md-icon> more_vert </md-icon>
+ </md-button>
+ <md-menu-content width="4">
+ <md-menu-item>
+ <md-button ng-click="layout.changeProfile($event)">
+ <md-icon>face</md-icon>
+ Profile
+ </md-button>
+ </md-menu-item>
+ <md-menu-item>
+ <md-button ng-click="layout.changePassword()">
+ <md-icon>lock</md-icon>
+ Password
+ </md-button>
+ </md-menu-item>
+ <md-menu-divider></md-menu-divider>
+ <md-menu-item>
+ <md-button ng-click="layout.logOut()">
+ <md-icon>power_settings_new</md-icon>
+ Logout
+ </md-button>
+ </md-menu-item>
+ </md-menu-content>
+ </md-menu>
+ </div>
+ </md-toolbar>
+ <md-toolbar class="md-hue-1" ng-show="showSearch">
+ <div class="md-toolbar-tools">
+ <md-button ng-click="showSearch = !showSearch" aria-label="Back">
+ <ng-md-icon icon="arrow_back"></ng-md-icon>
+ </md-button>
+ <h3 flex="10">
+ Back
+ </h3>
+ <md-input-container md-theme="input" flex>
+ <label>&nbsp;</label>
+ <input ng-model="search.who" placeholder="Search ...">
+ </md-input-container>
+
+ </div>
+ </md-toolbar>
+ <md-content class="md-blue-grey-theme" flex md-scroll-y>
+ <ui-view layout="column" layout-fill layout-padding>
+
+
+ </ui-view>
+ </md-content>
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/main-page/mainPageCtrl.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/main-page/mainPageCtrl.js
new file mode 100644
index 00000000..24ae3ef2
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/main-page/mainPageCtrl.js
@@ -0,0 +1,115 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.controller:LayoutCtrl
+ * @description
+ * # LayoutCtrl
+ * Controller of the app
+ */
+
+ angular
+ .module('vnfmarket')
+ .controller('LayoutCtrl', Layout);
+
+ Layout.$inject = ['$mdSidenav', '$cookies', '$state', '$mdToast', '$mdDialog'];
+
+ /*
+ * recommend
+ * Using function declarations
+ * and bindable members up top.
+ */
+
+ function Layout($mdSidenav, $cookies, $state, $mdToast, $mdDialog ) {
+ /*jshint validthis: true */
+ var vm = this;
+
+ vm.toggleSidenav = function (menuId) {
+ $mdSidenav(menuId).toggle();
+ };
+
+ vm.changePassword = function () {
+ $mdToast.show(
+ $mdToast.simple()
+ .content('Password clicked!')
+ .position('top right')
+ .hideDelay(2000)
+ );
+ };
+
+ vm.changeProfile = function (ev) {
+ $mdDialog.show({
+ controller: DialogController,
+ templateUrl: 'tabDialog.tmpl.html',
+ parent: angular.element(document.body),
+ targetEvent: ev,
+ clickOutsideToClose:true
+ })
+ .then(function(answer) {
+ $mdToast.show(
+ $mdToast.simple()
+ .content('You said the information was "' + answer + '".')
+ .position('top right')
+ .hideDelay(2000)
+ );
+
+ }, function() {
+ $mdToast.show(
+ $mdToast.simple()
+ .content('You cancelled the dialog.')
+ .position('top right')
+ .hideDelay(2000)
+ );
+ });
+
+ function DialogController($scope, $mdDialog) {
+ $scope.hide = function() {
+ $mdDialog.hide();
+ };
+
+ $scope.cancel = function() {
+ $mdDialog.cancel();
+ };
+
+ $scope.answer = function(answer) {
+ $mdDialog.hide(answer);
+ };
+ }
+ };
+
+
+ vm.logOut = function () {
+
+ alert('Implement your Function Here');
+ // $cookies.put('dev_appserver_login', ' ');
+ //$state.go('out', {}, {reload: true});
+
+ };
+
+ var originatorEv;
+ vm.openMenu = function ($mdOpenMenu, ev) {
+ originatorEv = ev;
+ $mdOpenMenu(ev);
+ };
+
+ }
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/nav-bar/navBarService.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/nav-bar/navBarService.js
new file mode 100644
index 00000000..4fecf269
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/nav-bar/navBarService.js
@@ -0,0 +1,66 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.service:menuService
+ * @description
+ * # menuService
+ * Service of the app
+ */
+
+ angular
+ .module('vnfmarket')
+ .factory('MenuService', Menu);
+ // Inject your dependencies as .$inject = ['$http', 'someSevide'];
+ // function Name ($http, someSevide) {...}
+
+ Menu.$inject = ['$http'];
+
+ function Menu ($http) {
+
+ var menu = [
+
+ {
+ link: 'user',
+ name: 'User'
+ },
+
+ {
+ link: 'marketplace',
+ name: 'Marketplace'
+ },
+
+ {
+ link: 'about',
+ name: 'About'
+ },
+
+ ];
+
+ return {
+ listMenu: function () {
+ return menu;
+ }
+ }
+
+ }
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/side-nav/sidenav.html b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/side-nav/sidenav.html
new file mode 100644
index 00000000..9028bc06
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/side-nav/sidenav.html
@@ -0,0 +1,46 @@
+<!--
+ Copyright 2016-2017 Huawei Technologies Co., Ltd.
+
+ 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.
+-->
+ <md-toolbar class="md-tall md-hue-2">
+ <div layout="column" class="md-toolbar-tools-bottom inset">
+ <div layout="row">
+ <div flex="20">
+ <img style="width: 36px; height: 36px; border-radius: 50%"
+ actual-src="data:image/jpeg;base64,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"
+ showloader="" loader-class="preload" loader-src="app/assets/images/loader.gif"
+ src="data:image/jpeg;base64,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">
+ </div>
+ <div flex="80" style="margin-top: 10px;font-size: 1em;">
+ <div></div>
+ </div>
+ </div>
+ </div>
+ </md-toolbar>
+ <md-list>
+ <md-list-item ng-repeat="item in vm.menu" ng-click="vm.navigateTo(item.link)" >
+ <div class="inset" ng-show="item.icon">
+ <ng-md-icon icon="{{item.icon}}"></ng-md-icon>
+ </div>
+ <p> {{ item.name }}</p>
+ </md-list-item>
+ <md-divider></md-divider>
+ <md-subheader>Admin</md-subheader>
+ <md-list-item ng-repeat="item in vm.admin" ng-click="vm.showSettingsBottom($event)" >
+ <div class="inset">
+ <ng-md-icon icon="{{item.icon}}"></ng-md-icon>
+ </div>
+ <p> {{ item.title }}</p>
+ </md-list-item>
+ </md-list>
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/side-nav/sidenavCtrl.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/side-nav/sidenavCtrl.js
new file mode 100644
index 00000000..41756882
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/side-nav/sidenavCtrl.js
@@ -0,0 +1,114 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.controller:SidenavCtrl
+ * @description
+ * # SidenavCtrl
+ * Controller of the app
+ */
+ angular
+ .module('vnfmarket')
+ .controller('SidenavCtrl', SidenavCtrl)
+ .controller('SettingsCtrl', SettingsCtrl);
+
+ // Injecting Denpendencies
+
+ SidenavCtrl.$inject = ['$mdSidenav', '$state', '$mdBottomSheet', '$mdToast', 'MenuService', '$scope'];
+ SettingsCtrl.$inject = ['$mdBottomSheet'];
+
+ /*
+ * recommend
+ * Using function declarations
+ * and bindable members up top.
+ */
+
+ function SidenavCtrl($mdSidenav, $state, $mdBottomSheet, $mdToast, MenuService, $scope) {
+ /*jshint validthis: true */
+ var vm = this;
+
+ vm.toggleSidenav = function (menuId) {
+ $mdSidenav(menuId).toggle();
+ };
+
+ vm.closeSidenav = function() {
+ $mdSidenav('left').close();
+ };
+
+ // Close menu on small screen after click on menu item.
+ // Only use $scope in controllerAs when necessary; for example, publishing and subscribing events using $emit, $broadcast, $on or $watch.
+ $scope.$on('$stateChangeSuccess', vm.closeSidenav);
+
+ vm.menu = MenuService.listMenu();
+
+ vm.admin = [
+ {
+ link: 'showListBottomSheet($event)',
+ title: 'Settings',
+ icon: 'settings'
+ }
+ ];
+
+ vm.navigateTo = function (target) {
+
+ var page = target;
+
+ $state.go(page);
+
+ };
+
+ vm.showSettingsBottom = function ($event) {
+ vm.alert = '';
+ $mdBottomSheet.show({
+ template: '<md-bottom-sheet class="md-grid" layout="column" ng-cloak><div layout="row" layout-align="center center"><h4>With clickOutsideToClose option, drag down or press ESC to close</h4></div><md-list flex layout="row" layout-align="center center"><md-list-item ng-repeat="item in vm.items"><md-button class="md-grid-item-content" ng-click="vm.listItemClick($index)"><md-icon class="md-48">{{item.icon}}</md-icon><div class="md-grid-text"> {{ item.name }} </div></md-button></md-list-item></md-list></md-bottom-sheet>',
+ controller: 'SettingsCtrl',
+ controllerAs: 'vm',
+ targetEvent: $event
+ }).then(function (clickedItem) {
+ $mdToast.show(
+ $mdToast.simple()
+ .content(clickedItem.name + ' clicked!')
+ .position('top right')
+ .hideDelay(2000)
+ );
+ });
+ };
+
+ }
+
+ function SettingsCtrl($mdBottomSheet) {
+ /*jshint validthis: true */
+ var vm = this;
+
+ vm.items = [
+ {name: 'Roles', icon: 'assignment_ind'},
+ {name: 'Notes', icon: 'speaker_notes'},
+ {name: 'Tasks', icon: 'view_list'},
+ {name: 'Inbox', icon: 'inbox'}
+ ];
+
+ vm.listItemClick = function ($index) {
+ var clickedItem = vm.items[$index];
+ $mdBottomSheet.hide(clickedItem);
+ };
+ }
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/side-nav/sidenavService.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/side-nav/sidenavService.js
new file mode 100644
index 00000000..4fecf269
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/layouts/side-nav/sidenavService.js
@@ -0,0 +1,66 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.service:menuService
+ * @description
+ * # menuService
+ * Service of the app
+ */
+
+ angular
+ .module('vnfmarket')
+ .factory('MenuService', Menu);
+ // Inject your dependencies as .$inject = ['$http', 'someSevide'];
+ // function Name ($http, someSevide) {...}
+
+ Menu.$inject = ['$http'];
+
+ function Menu ($http) {
+
+ var menu = [
+
+ {
+ link: 'user',
+ name: 'User'
+ },
+
+ {
+ link: 'marketplace',
+ name: 'Marketplace'
+ },
+
+ {
+ link: 'about',
+ name: 'About'
+ },
+
+ ];
+
+ return {
+ listMenu: function () {
+ return menu;
+ }
+ }
+
+ }
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplace-test.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplace-test.js
new file mode 100644
index 00000000..1824af38
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplace-test.js
@@ -0,0 +1,48 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.test:marketplaceTest
+ * @description
+ * # marketplaceTest
+ * Test of the app
+ */
+
+ describe('marketplace test', function () {
+ var controller = null, $scope = null;
+
+ beforeEach(function () {
+ module('vnfmarket');
+ });
+
+ beforeEach(inject(function ($controller, $rootScope) {
+ $scope = $rootScope.$new();
+ controller = $controller('MarketplaceCtrl', {
+ $scope: $scope
+ });
+ }));
+
+ it('Should controller must be defined', function () {
+ expect(controller).toBeDefined();
+ });
+
+ });
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplace.html b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplace.html
new file mode 100644
index 00000000..2f4dc9ff
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplace.html
@@ -0,0 +1,22 @@
+<!--
+ Copyright 2016-2017 Huawei Technologies Co., Ltd.
+
+ 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.
+-->
+<div class="md-padding" flex layout-sm="column">
+ <md-card>
+ <md-card-content>
+ <h2 class="md-title">Content from: marketplace page</h2>
+ </md-card-content>
+ </md-card>
+</div>
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceCtrl.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceCtrl.js
new file mode 100644
index 00000000..eaca12b4
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceCtrl.js
@@ -0,0 +1,47 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.controller:marketplaceCtrl
+ * @description
+ * # marketplaceCtrl
+ * Controller of the app
+ */
+
+ angular
+ .module('marketplace')
+ .controller('MarketplaceCtrl', Marketplace);
+
+ Marketplace.$inject = [];
+
+ /*
+ * recommend
+ * Using function declarations
+ * and bindable members up top.
+ */
+
+ function Marketplace() {
+ /*jshint validthis: true */
+ var vm = this;
+
+ }
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceModule.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceModule.js
new file mode 100644
index 00000000..26c5a98f
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceModule.js
@@ -0,0 +1,31 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.module:marketplaceModule
+ * @description
+ * # marketplaceModule
+ * Module of the app
+ */
+
+ angular.module('marketplace', []);
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceRoute.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceRoute.js
new file mode 100644
index 00000000..a7b1dfe0
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceRoute.js
@@ -0,0 +1,40 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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.
+
+*/
+'use strict';
+
+/**
+ * @ngdoc function
+ * @name app.route:marketplaceRoute
+ * @description
+ * # marketplaceRoute
+ * Route of the app
+ */
+
+angular.module('marketplace')
+ .config(['$stateProvider', function ($stateProvider) {
+
+ $stateProvider
+ .state('home.marketplace', {
+ url:'/marketplace',
+ templateUrl: 'app/modules/marketplace/marketplace.html',
+ controller: 'MarketplaceCtrl',
+ controllerAs: 'vm'
+ });
+
+
+ }]);
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceService.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceService.js
new file mode 100644
index 00000000..22fdb7b6
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/marketplace/marketplaceService.js
@@ -0,0 +1,41 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.service:marketplaceService
+ * @description
+ * # marketplaceService
+ * Service of the app
+ */
+
+ angular
+ .module('marketplace')
+ .factory('MarketplaceService', Marketplace);
+ // Inject your dependencies as .$inject = ['$http', 'someSevide'];
+ // function Name ($http, someSevide) {...}
+
+ Marketplace.$inject = ['$http'];
+
+ function Marketplace ($http) {
+
+ }
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/user-test.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/user-test.js
new file mode 100644
index 00000000..20693c1b
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/user-test.js
@@ -0,0 +1,48 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.test:userTest
+ * @description
+ * # userTest
+ * Test of the app
+ */
+
+ describe('user test', function () {
+ var controller = null, $scope = null;
+
+ beforeEach(function () {
+ module('vnfmarket');
+ });
+
+ beforeEach(inject(function ($controller, $rootScope) {
+ $scope = $rootScope.$new();
+ controller = $controller('UserCtrl', {
+ $scope: $scope
+ });
+ }));
+
+ it('Should controller must be defined', function () {
+ expect(controller).toBeDefined();
+ });
+
+ });
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/user.html b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/user.html
new file mode 100644
index 00000000..2fe411b5
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/user.html
@@ -0,0 +1,74 @@
+<!--
+ Copyright 2016-2017 Huawei Technologies Co., Ltd.
+
+ 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.
+-->
+<div class="md-padding" flex layout-sm="column">
+ <md-card>
+ <md-card-content>
+ <h2 class="md-title">Content from: user page</h2>
+ </md-card-content>
+ </md-card>
+ <md-card>
+ <md-card-content>
+ <div class="row-fluid">
+ <div class="col-md-12">
+ <!-- Nav tabs -->
+ <ul class="nav nav-tabs" role="tablist">
+ <li role="presentation" class="active"><a href="#download-hist-tab" aria-controls="download-hist-tab" role="tab" data-toggle="tab">Downloaded Services</a></li>
+ <li role="presentation"><a href="#upload-hist-tab" aria-controls="upload-hist-tab" role="tab" data-toggle="tab">Uploaded History</a></li>
+ </ul>
+ <!-- Tab panes -->
+ <div class="tab-content">
+ <div role="tabpanel" class="tab-pane active" id="download-hist-tab">
+ <table class="table table-striped">
+ <thead>
+ <th>Service Name</th>
+ <th>Last Updated</th>
+ <th>Vendor</th>
+ <th>Type</th>
+ </thead>
+ <tbody>
+ <tr ng-repeat="service in services">
+ <td>{{service.name}}</td>
+ <td>{{service.date}}</td>
+ <td>{{service.vendor}}</td>
+ <td>{{service.type}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div role="tabpanel" class="tab-pane" id="upload-hist-tab">
+ <table class="table table-striped">
+ <thead>
+ <th>Service Name</th>
+ <th>Last Updated</th>
+ <th>Vendor</th>
+ <th>Type</th>
+ </thead>
+ <tbody>
+ <tr ng-repeat="service in services | limitTo: 6">
+ <td>{{service.name}}</td>
+ <td>{{service.date}}</td>
+ <td>{{service.vendor}}</td>
+ <td>{{service.type}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ </div>
+ </md-card-content>
+ </md-card>
+</div>
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userCtrl.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userCtrl.js
new file mode 100644
index 00000000..81de3904
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userCtrl.js
@@ -0,0 +1,47 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.controller:userCtrl
+ * @description
+ * # userCtrl
+ * Controller of the app
+ */
+
+ angular
+ .module('user')
+ .controller('UserCtrl', User);
+
+ User.$inject = [];
+
+ /*
+ * recommend
+ * Using function declarations
+ * and bindable members up top.
+ */
+
+ function User() {
+ /*jshint validthis: true */
+ var vm = this;
+
+ }
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userModule.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userModule.js
new file mode 100644
index 00000000..290c1758
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userModule.js
@@ -0,0 +1,31 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.module:userModule
+ * @description
+ * # userModule
+ * Module of the app
+ */
+
+ angular.module('user', []);
+
+})();
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userRoute.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userRoute.js
new file mode 100644
index 00000000..3986c106
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userRoute.js
@@ -0,0 +1,40 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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.
+
+*/
+'use strict';
+
+/**
+ * @ngdoc function
+ * @name app.route:userRoute
+ * @description
+ * # userRoute
+ * Route of the app
+ */
+
+angular.module('user')
+ .config(['$stateProvider', function ($stateProvider) {
+
+ $stateProvider
+ .state('home.user', {
+ url:'/user',
+ templateUrl: 'app/modules/user/user.html',
+ controller: 'UserCtrl',
+ controllerAs: 'vm'
+ });
+
+
+ }]);
diff --git a/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userService.js b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userService.js
new file mode 100644
index 00000000..a3a8f76c
--- /dev/null
+++ b/vnfmarket-be/portal-marketplace/src/main/webapp/marketplace/modules/user/userService.js
@@ -0,0 +1,41 @@
+/*
+
+ Copyright 2016-2017, Huawei Technologies Co., Ltd.
+
+ 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';
+
+ /**
+ * @ngdoc function
+ * @name app.service:userService
+ * @description
+ * # userService
+ * Service of the app
+ */
+
+ angular
+ .module('user')
+ .factory('UserService', User);
+ // Inject your dependencies as .$inject = ['$http', 'someSevide'];
+ // function Name ($http, someSevide) {...}
+
+ User.$inject = ['$http'];
+
+ function User ($http) {
+
+ }
+
+})();