aboutsummaryrefslogtreecommitdiffstats
path: root/vnfmarket/app/modules/home/serviceDetails
diff options
context:
space:
mode:
Diffstat (limited to 'vnfmarket/app/modules/home/serviceDetails')
-rw-r--r--vnfmarket/app/modules/home/serviceDetails/serviceDetails-test.js89
-rw-r--r--vnfmarket/app/modules/home/serviceDetails/serviceDetails.html101
-rw-r--r--vnfmarket/app/modules/home/serviceDetails/serviceDetailsCtrl.js63
-rw-r--r--vnfmarket/app/modules/home/serviceDetails/serviceDetailsService.js54
4 files changed, 307 insertions, 0 deletions
diff --git a/vnfmarket/app/modules/home/serviceDetails/serviceDetails-test.js b/vnfmarket/app/modules/home/serviceDetails/serviceDetails-test.js
new file mode 100644
index 00000000..0c6edc27
--- /dev/null
+++ b/vnfmarket/app/modules/home/serviceDetails/serviceDetails-test.js
@@ -0,0 +1,89 @@
+/*
+ * Copyright 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('Home - serviceDetailsCtrl', function() {
+ var controller = null,
+ $scope = null,
+ $location, stateParams, httpBackend, config, state, blah;
+ var data = {
+ "csarId": "26b4d6c4-a157-43c0-8ebc-9d6af1d6c40c",
+ "name": "clearwater_vnf",
+ "downloadUri": "null/files/catalog-http/NFAR/Canonical/clearwater_vnf/v1.0/clearwater_vnf.csar",
+ "report": "/Demo/reports/b3232e0c-3843-4df8-88e7-734cf2d7a97c/report.html",
+ "size": "1.8 MB",
+ "version": "v1.0",
+ "provider": "Canonical",
+ "type": "NFAR",
+ "format": "yaml",
+ "deletionPending": false,
+ "createTime": "2017-02-22 08:59:06",
+ "modifyTime": "2017-02-22 08:59:06",
+ "shortDesc": "",
+ "details": "",
+ "remarks": ""
+ };
+
+ beforeEach(function() {
+ module('vnfmarket');
+ });
+ beforeEach(module('ui.router'));
+ beforeEach(module('md.data.table'));
+ beforeEach(module('pascalprecht.translate'));
+
+ beforeEach(inject(function($controller, $rootScope, $stateParams, $httpBackend, vnfConfig) {
+ $scope = $rootScope.$new();
+ stateParams = $stateParams;
+ httpBackend = $httpBackend;
+ config = vnfConfig;
+ stateParams.serviceDetails = data;
+ controller = $controller('serviceDetailsCtrl', {
+ $scope: $scope
+ });
+ }));
+
+ it('Should serviceDetailsCtrl must be defined', function() {
+ expect(controller).toBeDefined();
+ });
+
+ it('Receving state param service details', function() {
+ expect(stateParams.serviceDetails.csarId).toBeDefined();
+ expect(stateParams.serviceDetails.name).toBeDefined();
+ expect(stateParams.serviceDetails.downloadUri).toBeDefined();
+ expect(stateParams.serviceDetails.report).toBeDefined();
+ expect(stateParams.serviceDetails.size).toBeDefined();
+ expect(stateParams.serviceDetails.version).toBeDefined();
+ expect(stateParams.serviceDetails.provider).toBeDefined();
+ expect(stateParams.serviceDetails.type).toBeDefined();
+ expect(stateParams.serviceDetails.format).toBeDefined();
+ expect(stateParams.serviceDetails.deletionPending).toBeDefined();
+ expect(stateParams.serviceDetails.createTime).toBeDefined();
+ expect(stateParams.serviceDetails.modifyTime).toBeDefined();
+ expect(stateParams.serviceDetails.shortDesc).toBeDefined();
+ expect(stateParams.serviceDetails.details).toBeDefined();
+ expect(stateParams.serviceDetails.remarks).toBeDefined();
+ });
+ });
+})(); \ No newline at end of file
diff --git a/vnfmarket/app/modules/home/serviceDetails/serviceDetails.html b/vnfmarket/app/modules/home/serviceDetails/serviceDetails.html
new file mode 100644
index 00000000..446a5cd5
--- /dev/null
+++ b/vnfmarket/app/modules/home/serviceDetails/serviceDetails.html
@@ -0,0 +1,101 @@
+<!--
+ Copyright 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-card>
+ <main class="mdl-layout__content service-details-page">
+ <div class="mdl-grid">
+ <!-- Start Top Description -->
+ <div class="mdl-card mdl-cell mdl-cell--12-col page-header-container">
+ <div class="mdl-card__title">
+ <h1 class="mdl-card__title-text">
+ {{'module.marketplace.serviceDetails.title' | translate}} {{vm.service.name}}
+ </h1>
+ <div class="mdl-layout-spacer"></div>
+ <!-- <a href="testFile.txt" download="testFile" class="show-install mdl-button mdl-js-button mdl-button--primary"><i class="material-icons">get_app</i>Download</a> -->
+ <button class="show-deploy mdl-button mdl-js-button mdl-button--primary" data-toggle="modal" data-target="#upload-service" data-uplsubmitbtn="update" ng-click="vm.downloadService(vm.service.csarId)">
+ <md-tooltip md-direction="top">{{'common.actions.download' | translate}} </md-tooltip>
+ <i class="material-icons">{{'common.actions.getApp' | translate}}</i>{{'common.actions.download' | translate}}</button>
+ <button class="show-deploy mdl-button mdl-js-button mdl-button--primary" data-toggle="modal" data-target="#upload-service" data-uplsubmitbtn="update">
+ <md-tooltip md-direction="top">{{'common.actions.update' | translate}}</md-tooltip>
+ <i class="material-icons">{{'common.actions.fileUpload' | translate}}</i>{{'common.actions.update' | translate}}</button>
+ <button id="delete-service-button" class="show-deploy mdl-button mdl-js-button mdl-button--primary" data-toggle="modal" data-target="#delete-service-modal" ng-click="vm.serviceDelete(vm.service)">
+ <md-tooltip md-direction="top">{{'common.actions.delete' | translate}}</md-tooltip>
+ <i class="fa fa-times serviceDelete"></i>{{'common.actions.delete' | translate}}</button>
+ </div>
+ <div class="mdl-card__supporting-text service-details-page-header-text">
+ <div class="row service-actions">
+ <div class="col-md-6">
+ <div class="panel panel-default">
+ <div class="panel-heading">{{'module.marketplace.serviceDetails.info.details' | translate}}</div>
+ <div class="panel-body ng-binding">{{vm.service.details}}</div>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">{{'module.marketplace.serviceDetails.info.remarks' | translate}}</div>
+ <div class="panel-body ng-binding">{{vm.service.remarks}}</div>
+ </div>
+ </div>
+ <div class="col-md-6">
+ <div class="row">
+ <div class="col-md-6">
+ <div class="panel panel-default">
+ <div class="panel-heading ng-binding">{{'module.marketplace.serviceDetails.info.provider' | translate}}</div>
+ <div class="panel-body">{{vm.service.provider}}</div>
+ </div>
+ </div>
+ <div class="col-md-6">
+ <div class="panel panel-default">
+ <div class="panel-heading ng-binding">{{'module.marketplace.serviceDetails.info.serviceType' | translate}}</div>
+ <div class="panel-body">{{vm.service.type}}</div>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-6">
+ <div class="panel panel-default">
+ <div class="panel-heading ng-binding">{{'module.marketplace.serviceDetails.info.csarId' | translate}}</div>
+ <div class="panel-body">{{vm.service.csarId}}</div>
+ </div>
+ </div>
+ <div class="col-md-6">
+ <div class="panel panel-default">
+ <div class="panel-heading ng-binding">{{'module.marketplace.serviceDetails.info.fileSize' | translate}}</div>
+ <div class="panel-body">{{vm.service.size}}</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row service-actions">
+ <div class="col-md-6">
+ <div class="panel panel-default">
+ <div class="panel-heading">{{'module.marketplace.serviceDetails.info.funcTestReport' | translate}}</div>
+ <div class="panel-body ng-binding">
+ <a href="{{vm.service.funcTestReportUrl}}" target="_blank">{{'common.actions.clickHere' | translate}}</a>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- End top Description -->
+ <div class="mdl-layout__tab-panel is-active" id="overview">
+
+ </div>
+
+ </main>
+ <!-- main ends -->
+</md-card> \ No newline at end of file
diff --git a/vnfmarket/app/modules/home/serviceDetails/serviceDetailsCtrl.js b/vnfmarket/app/modules/home/serviceDetails/serviceDetailsCtrl.js
new file mode 100644
index 00000000..3ec6b58a
--- /dev/null
+++ b/vnfmarket/app/modules/home/serviceDetails/serviceDetailsCtrl.js
@@ -0,0 +1,63 @@
+/*
+ * Copyright 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('serviceDetailsCtrl', ServiceDetail);
+
+ ServiceDetail.$inject = ['serviceDetailsService', '$state', '$stateParams', 'vnfConfig', 'homeService'];
+
+ /*
+ * recommend
+ * Using function declarations
+ * and bindable members up top.
+ */
+
+ function ServiceDetail(serviceDetailsService, $state, $stateParams, vnfConfig, homeService) {
+ var vm = this;
+ if (!$stateParams.serviceDetails) {
+ $state.go('home.marketplace');
+ return;
+ }
+
+ vm.service = $stateParams.serviceDetails;
+ vm.service.funcTestReportUrl = vnfConfig.common.baseUrl + vm.service.report;
+
+ vm.downloadService = function(csarId) {
+ homeService.downloadServiceFile(csarId);
+ }
+
+ vm.onDeleteCompletion = function() {
+ $state.go('home.marketplace', {}, {
+ reload: true
+ });
+ }
+
+ vm.serviceDelete = function(serviceDetails) {
+ homeService.openDeleteDialog(serviceDetails, vm.onDeleteCompletion);
+ };
+ }
+})(); \ No newline at end of file
diff --git a/vnfmarket/app/modules/home/serviceDetails/serviceDetailsService.js b/vnfmarket/app/modules/home/serviceDetails/serviceDetailsService.js
new file mode 100644
index 00000000..843d3eb6
--- /dev/null
+++ b/vnfmarket/app/modules/home/serviceDetails/serviceDetailsService.js
@@ -0,0 +1,54 @@
+/*
+ * Copyright 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('serviceDetailsService', ServiceDetails);
+
+ ServiceDetails.$inject = ['$q', 'vnfConfig', 'httpService'];
+
+ function ServiceDetails($q, vnfConfig, httpService) {
+ return {
+ serviceDetails: serviceDetails
+ };
+
+ function serviceDetails(csarId) {
+ var url = vnfConfig.common.baseUrl + vnfConfig.api.home.serviceDetails.url,
+ method = vnfConfig.api.home.serviceDetails.method;
+
+ url = url.replace(":csarId", csarId)
+
+ var defer = $q.defer()
+ httpService.apiRequest(url, method)
+ .then(function(response) {
+ defer.resolve(response);
+ }, function(error) {
+ defer.reject(error);
+ });
+ return defer.promise;
+ }
+ }
+
+})(); \ No newline at end of file