From 09762dc92a06fb885f7055796db390a3a1baa535 Mon Sep 17 00:00:00 2001 From: "Kotagiri, Ramprasad (rp5662)" Date: Fri, 7 Aug 2020 15:54:10 -0400 Subject: CCSDK DCAE dashboard feature changes Issue-ID: DCAEGEN2-1857 Issue-ID: DCAEGEN2-2074 Issue-ID: DCAEGEN2-2364 Change-Id: I97f5ec4599512ed848136971b11d4c2a137a4999 Signed-off-by: Kotagiri, Ramprasad (rp5662) --- .../src/main/webapp/app/ccsdk/home/api_view.html | 5 + .../src/main/webapp/app/ccsdk/home/app-router.js | 105 ++++ .../app/ccsdk/home/executions-view-controller.js | 415 +++++++++++++ .../webapp/app/ccsdk/home/executions_view.html | 377 ++++++++++++ .../src/main/webapp/app/ccsdk/home/oom-style.css | 658 +++++++++++++++++++++ .../src/main/webapp/app/ccsdk/home/oom_spa.html | 151 +++++ .../src/main/webapp/app/ccsdk/images/ecomp.png | Bin 0 -> 107597 bytes .../main/webapp/app/ccsdk/images/onap_16x16.ico | Bin 0 -> 1406 bytes .../main/webapp/app/ccsdk/images/onap_32x32.ico | Bin 0 -> 5882 bytes .../webapp/app/ccsdk/images/onap_logo_2257x496.png | Bin 0 -> 54348 bytes .../ds2/css/digital-ng-library/ecomp-ionicons.css | 4 +- 11 files changed, 1713 insertions(+), 2 deletions(-) create mode 100644 ccsdk-app-os/src/main/webapp/app/ccsdk/home/api_view.html create mode 100644 ccsdk-app-os/src/main/webapp/app/ccsdk/home/app-router.js create mode 100644 ccsdk-app-os/src/main/webapp/app/ccsdk/home/executions-view-controller.js create mode 100644 ccsdk-app-os/src/main/webapp/app/ccsdk/home/executions_view.html create mode 100644 ccsdk-app-os/src/main/webapp/app/ccsdk/home/oom-style.css create mode 100644 ccsdk-app-os/src/main/webapp/app/ccsdk/home/oom_spa.html create mode 100644 ccsdk-app-os/src/main/webapp/app/ccsdk/images/ecomp.png create mode 100644 ccsdk-app-os/src/main/webapp/app/ccsdk/images/onap_16x16.ico create mode 100644 ccsdk-app-os/src/main/webapp/app/ccsdk/images/onap_32x32.ico create mode 100644 ccsdk-app-os/src/main/webapp/app/ccsdk/images/onap_logo_2257x496.png (limited to 'ccsdk-app-os/src/main/webapp/app') diff --git a/ccsdk-app-os/src/main/webapp/app/ccsdk/home/api_view.html b/ccsdk-app-os/src/main/webapp/app/ccsdk/home/api_view.html new file mode 100644 index 0000000..7561c73 --- /dev/null +++ b/ccsdk-app-os/src/main/webapp/app/ccsdk/home/api_view.html @@ -0,0 +1,5 @@ +
+ +
\ No newline at end of file diff --git a/ccsdk-app-os/src/main/webapp/app/ccsdk/home/app-router.js b/ccsdk-app-os/src/main/webapp/app/ccsdk/home/app-router.js new file mode 100644 index 0000000..10337ba --- /dev/null +++ b/ccsdk-app-os/src/main/webapp/app/ccsdk/home/app-router.js @@ -0,0 +1,105 @@ +/******************************************************************************* + * =============LICENSE_START========================================================= + * + * ================================================================================= + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + * + *******************************************************************************/ +appDS2.config(function($routeProvider) { + $routeProvider + .when('/api', { + templateUrl: 'app/ccsdk/home/api_view.html', + controller : '' + }) + .when('/api-spec', { + templateUrl: 'app/ccsdk/home/rest-api-spec.html', + controller : 'apiDocsController' + }) + .when('/ibp', { + templateUrl: 'app/ccsdk/inventory/inventory_blueprint_table.html', + controller : 'inventoryBlueprintTableController' + }) + .when('/ibp/:bpId', { + templateUrl: 'app/ccsdk/inventory/inventory_blueprint_table.html', + controller : 'inventoryBlueprintTableController' + }) + .when('/idep', { + templateUrl: 'app/ccsdk/cloudify/deployment_table.html', + controller : 'deploymentTableController' + }) + .when('/idep/:depId', { + templateUrl: 'app/ccsdk/cloudify/deployment_table.html', + controller : 'deploymentTableController' + }) + .when('/iplug', { + templateUrl: 'app/ccsdk/cloudify/plugin_table.html', + controller : 'PluginsTableController' + }) + .when('/sh', { + templateUrl: 'app/ccsdk/consul/service_health_table.html', + controller : 'serviceHealthTableController' + }) + .when('/nh', { + templateUrl: 'app/ccsdk/consul/node_table.html', + controller : 'nodeTableController' + }) + .when('/dc', { + templateUrl: 'app/ccsdk/consul/datacenter_table.html', + controller : 'datacenterTableController' + }) + .when('/profile/:profileId', { + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-profile/self_profile.html', + controller: 'selfProfileController' + }) + .when('/profile_search', { + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-profile/profile_searchDS2.html', + controller : "profileSearchCtrlDS2" + }) + .when('/post_search', { + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-profile/post.html', + controller: 'postController' + }) + .when('/self_profile', { + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-profile/self_profile.html', + controller: 'selfProfileController' + }) + .when('/role_list', { + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-admin/role_list.html', + controller : 'adminController' + }) + .when('/role_function_list', { + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-admin/role-function.html', + controller : "adminController" + }) + .when('/jcs_admin', { + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-admin/jcs_admin.html', + controller: 'adminController' + }) + .when('/admin_menu_edit', { + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-admin/admin-menu-edit.html', + controller: 'AdminMenuEditController' + }) + .when('/usage_list', { + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-admin/usage.html', + controller: 'usageListControllerDS2' + }) + .otherwise({ + templateUrl: 'app/ccsdk/home/executions_view.html', + controller : 'executionsViewController' + }) + ; + +}); \ No newline at end of file diff --git a/ccsdk-app-os/src/main/webapp/app/ccsdk/home/executions-view-controller.js b/ccsdk-app-os/src/main/webapp/app/ccsdk/home/executions-view-controller.js new file mode 100644 index 0000000..fd2dd79 --- /dev/null +++ b/ccsdk-app-os/src/main/webapp/app/ccsdk/home/executions-view-controller.js @@ -0,0 +1,415 @@ +appDS2.controller('executionsViewController', + function($scope, $rootScope, ControllerService, $modal, ExecutionService, + InventoryDeploymentService, DeploymentService, InventoryBlueprintService, + InventoryExecutionService, localStorageService, $log, $interval) { + + var coll = document.getElementsByClassName("collapsible"); + var i; + for (i = 0; i < coll.length; i++) { + coll[i].addEventListener("click", function() { + this.classList.toggle("active"); + var content = this.nextElementSibling; + if (content.style.display === "" || content.style.display === "block") { + content.style.display = "none"; + content.style.maxHeight = null; + } else { + content.style.display = "block"; + content.style.maxHeight = content.scrollHeight + "px"; + } + }); + } + var stop; + $scope.ecdapp = {}; + $scope.ecdapp.isDataLoading = false; + $scope.ecdapp.appLabel = ""; + $scope.ecdapp.bpCount = 0; + $scope.ecdapp.depCount = 0; + $scope.ecdapp.pluginCount = 0; + $scope.ecdapp.filterByUser = true; + $scope.ecdapp.searchByBp = 'owner:' + $scope.userId + ';'; + $scope.ecdapp.searchByDep = 'owner:' + $scope.userId + ';'; + $scope.ecdapp.bpObjList = []; + $scope.ecdapp.depObjList = []; + $scope.ecdapp.currentBpId = ''; + $scope.ecdapp.currentDep; + $scope.ecdapp.isBpDataLoading = false; + $scope.ecdapp.isDepDataLoading = false; + $scope.ecdapp.isPluginDataLoading = false; + $scope.ecdapp.isExecDataLoading = false; + $scope.ecdapp.level_options = { + "off":"Group", + "on":"User" + }; + $scope.ecdapp.inv_query_options = { + "off":"Off", + "on":"On" + }; + + $scope.ecdapp.showingMoreFilters = false; + + $scope.ecdapp.toggleMoreFilters = function() { + $scope.ecdapp.showingMoreFilters = !$scope.ecdapp.showingMoreFilters; + }; + $scope.ecdapp.availableStatus = + ['pending','started','cancelling','force_cancelling','cancelled','terminated','failed']; + $scope.ecdapp.selectedStatus = 'started'; + $scope.ecdapp.level_switch = { + value: true + }; + $scope.ecdapp.inv_load = { + value: false + }; + + $scope.ecdapp.currentPage = 1; + $scope.ecdapp.viewPerPage = 10; + $scope.ecdapp.selectedTenant = ''; + $scope.ecdapp.execId = ''; + + var debug = false; + + $scope.ecdapp.resetFilters = function() { + $scope.ecdapp.selectedTenant = ''; + $scope.ecdapp.selectedStatus = ''; + }; + + $scope.ecdapp.extendedfilterSrch = function() { + $scope.ecdapp.showingMoreFilters = !$scope.ecdapp.showingMoreFilters; + $scope.ecdapp.searchExecTable(); + }; + + $scope.ecdapp.searchExecTable = function() { + $scope.ecdapp.currentPage = 1; + $scope.ecdapp.viewPerPage = 10; + if ($scope.ecdapp.execId != '') { + getExecutionForId(); + } else { + if ($scope.ecdapp.selectedTenant == '') { + getActiveExecutions(); + } else { + getPerTenantExecutions(); + } + } + }; + + $scope.ecdapp.toggleUserFilt = function() { + if ($scope.ecdapp.level_switch.value) { + $scope.ecdapp.searchByBp = 'owner:' + $scope.userId + ';'; + $scope.ecdapp.searchByDep = 'owner:' + $scope.userId + ';'; + } else { + $scope.ecdapp.searchByBp = null; + $scope.ecdapp.searchByDep = null; + } + getBlueprintsCount(); + getDeploymentsCount(); + }; + + $scope.$watch('ecdapp.inv_load["value"]', function(newValue,oldValue,scope) { + if (newValue != oldValue) { + if (newValue === true) { + $scope.ecdapp.toggleUserFilt(); + $scope.ecdapp.searchExecTable(); + stop = $interval( function(){ $scope.ecdapp.toggleUserFilt(); $scope.ecdapp.searchExecTable(); }, 60000, 100, false); + } else { + $scope.ecdapp.stopLoading(); + } + } + }, true); + + $scope.ecdapp.stopLoading = function() { + if (angular.isDefined(stop)) { + $interval.cancel(stop); + stop = undefined; + } + }; + + var getTenants = function() { + var tenantStr = localStorageService.get('tenants'); + if (!tenantStr) { + ControllerService.getTenants() + .then(function(jsonObj) { + if (jsonObj.error) { + $log.error("executionsViewController.getTenants failed: " + jsonObj.error); + $scope.ecdapp.isRequestFailed = true; + $scope.ecdapp.errMsg = jsonObj.error; + } else { + var tenants = []; + for (var tenIndx = 0; tenIndx < jsonObj.items.length; tenIndx++) { + tenants.push(jsonObj.items[tenIndx].name); + } + localStorageService.set('tenants', JSON.stringify(tenants)); + $scope.ecdapp.availableTenants = tenants; + } + }, function(error) { + $log.error("executionsViewController.loadTable failed: " + error); + $scope.ecdapp.isRequestFailed = true; + $scope.ecdapp.errMsg = error; + }); + } else { + $scope.ecdapp.availableTenants = JSON.parse(tenantStr); + } + getActiveExecutions(); + }; + + var getAppLabel = function() { + var label = localStorageService.get('appLabel'); + if (!label) { + ControllerService.getAppLabel().then(function(jsonObj) { + if (debug) { + $log.debug("Controller.getAppLabel succeeded: " + JSON.stringify(jsonObj)); + } + localStorageService.set('appLabel', JSON.stringify(jsonObj)); + $scope.ecdapp.appLabel = jsonObj; + }, function(error) { + $log.error("Controller.getAppLabel failed: " + error); + }); + } else { + $scope.ecdapp.appLabel = JSON.parse(label); + } + }; + + var getBlueprintsCount = function() { + $scope.ecdapp.bpObjList = []; + $scope.ecdapp.currentBpId = ''; + $scope.ecdapp.isBpDataLoading = true; + InventoryBlueprintService.getBlueprintIdsList($scope.ecdapp.searchByBp).then( + function(jsonObj) { + if (jsonObj.error) { + $log.error("execViewCtlr.getBlueprintsCount failed: " + + jsonObj.error); + $scope.ecdapp.bpCount = 0; + $scope.ecdapp.isBpDataLoading = false; + $scope.ecdapp.bpObjList = []; + } else { + $scope.ecdapp.bpCount = jsonObj.totalItems; + $scope.ecdapp.bpObjList = jsonObj.items; + $scope.ecdapp.isBpDataLoading = false; + } + }, + function(error) { + $log.error("execViewCtlr.getBlueprintsCount failed: " + + error); + $scope.ecdapp.bpCount = 0; + $scope.ecdapp.bpObjList = []; + $scope.ecdapp.isBpDataLoading = false; + }); + }; + + $scope.ecdapp.updateDepl = function() { + $scope.ecdapp.currentDep = ''; + if ($scope.ecdapp.currentBpId != '') { + $scope.ecdapp.isDeplDataLoading = true; + $scope.ecdapp.depObjList = []; + $scope.ecdapp.execData = []; + var srvcIds = []; + var srvcTypIds = []; + srvcTypIds.push($scope.ecdapp.currentBpId); + InventoryBlueprintService.getDeploymentForBp(srvcTypIds) + .then(function(jsonObj) { + if (jsonObj.error) { + $scope.ecdapp.depObjList = []; + $scope.ecdapp.isDeplDataLoading = false; + } else { + for (var typIndx = 0; typIndx < jsonObj.length; typIndx++) { + for (var depIndx = 0; depIndx < jsonObj[typIndx].serviceRefList.items.length; depIndx++) { + srvcIds.push(jsonObj[typIndx].serviceRefList.items[depIndx]); + } + } + $scope.ecdapp.depObjList = srvcIds; + //$scope.ecdapp.currentDep = $scope.ecdapp.depObjList[0]; + $scope.ecdapp.isDeplDataLoading = false; + } + }, function(error) { + $log.error("inventoryBlueprintController.updateTable failed: " + error); + bpDepls = []; + $scope.ecdapp.isDeplDataLoading = false; + }); + } + }; + $scope.ecdapp.copyStringToClipboard = function(str) { + // Create new element + var el = document.createElement('textarea'); + // Set value (string to be copied) + el.value = str; + // Set non-editable to avoid focus and move outside of view + el.setAttribute('readonly', ''); + el.style = {position: 'absolute', left: '-9999px'}; + document.body.appendChild(el); + // Select text inside element + el.select(); + // Copy text to clipboard + document.execCommand('copy'); + // Remove temporary element + document.body.removeChild(el); + }; + + $scope.ecdapp.updateExec = function() { + if ($scope.ecdapp.currentDep != '') { + $scope.ecdapp.isExecDataLoading = true; + $scope.ecdapp.resetFilters(); + var currentDeplId = $scope.ecdapp.currentDep.split(":")[0]; + var currentDeplTenant = $scope.ecdapp.currentDep.split(":")[1]; + InventoryExecutionService.getExecutionsByDeployment(currentDeplId, + currentDeplTenant, + 1, + 1000).then( + function(jsonObj) { + if (jsonObj.error) { + $scope.ecdapp.execData = []; + $scope.ecdapp.isExecDataLoading = false; + } else { + $scope.ecdapp.totalPages = jsonObj.totalPages; + $scope.ecdapp.execData = jsonObj.items; + $scope.ecdapp.isExecDataLoading = false; + } + }, function(error) { + $log.error("execViewCtlr.updateExec failed: " + error); + $scope.ecdapp.isExecDataLoading = false; + }); + } + }; + + var getActiveExecutions = function() { + $scope.ecdapp.isExecDataLoading = true; + InventoryExecutionService.getActiveExecutions($scope.ecdapp.currentPage, $scope.ecdapp.viewPerPage) + .then( + function(jsonObj) { + if (jsonObj.error) { + $scope.ecdapp.execData = []; + $scope.ecdapp.isExecDataLoading = false; + } else { + $scope.ecdapp.totalPages = jsonObj.totalPages; + $scope.ecdapp.execData = jsonObj.items; + $scope.ecdapp.isExecDataLoading = false; + } + }, function(error) { + $log.error("execViewCtlr.updateExec failed: " + error); + $scope.ecdapp.isExecDataLoading = false; + }); + }; + + var getPerTenantExecutions = function() { + $scope.ecdapp.isExecDataLoading = true; + InventoryExecutionService.getExecutionsByTenant($scope.ecdapp.selectedTenant, + $scope.ecdapp.selectedStatus, $scope.ecdapp.currentPage, $scope.ecdapp.viewPerPage) + .then( + function(jsonObj) { + if (jsonObj.error) { + $scope.ecdapp.execData = []; + $scope.ecdapp.isExecDataLoading = false; + } else { + $scope.ecdapp.totalPages = jsonObj.totalPages; + $scope.ecdapp.execData = jsonObj.items; + $scope.ecdapp.isExecDataLoading = false; + } + }, function(error) { + $log.error("execViewCtlr.updateExec failed: " + error); + $scope.ecdapp.isExecDataLoading = false; + }); + }; + + var getExecutionForId = function() { + $scope.ecdapp.isExecDataLoading = true; + InventoryExecutionService.getExecutionsById($scope.ecdapp.execId, + $scope.ecdapp.selectedTenant, $scope.ecdapp.currentPage, $scope.ecdapp.viewPerPage) + .then( + function(jsonObj) { + if (jsonObj.error) { + $scope.ecdapp.execData = []; + $scope.ecdapp.isExecDataLoading = false; + } else { + $scope.ecdapp.totalPages = jsonObj.totalPages; + $scope.ecdapp.execData = jsonObj.items; + $scope.ecdapp.isExecDataLoading = false; + } + }, function(error) { + $log.error("execViewCtlr.getExecutionsById failed: " + error); + $scope.ecdapp.isExecDataLoading = false; + }); + }; + /** + * Invoked at first page load AND when + * user clicks on the B2B pagination control. + */ + $scope.pageChangeHandler = function(page) { + $scope.ecdapp.currentPage = page; + if ($scope.ecdapp.selectedTenant != '') { + getPerTenantExecutions(); + } + } + + var getDeploymentsCount = function() { + $scope.ecdapp.isDepDataLoading = true; + $scope.ecdapp.execData = []; + InventoryDeploymentService.getDeploymentCount($scope.ecdapp.searchByDep).then( + function(jsonObj) { + if (jsonObj.error) { + $log.error("execViewCtlr.getDeploymentscount failed: " + + jsonObj.error); + $scope.ecdapp.depCount = 0; + $scope.ecdapp.depObjList = []; + } else { + $scope.ecdapp.depCount = jsonObj.totalItems; + $scope.ecdapp.depObjList = jsonObj.items; + $scope.ecdapp.isDepDataLoading = false; + } + }, + function(error) { + $log.error("execViewCtlr.getDeploymentscount failed: " + + error); + $scope.ecdapp.isDepDataLoading = false; + $scope.ecdapp.depCount = 0; + }); + }; + + var getPluginsCount = function() { + $scope.ecdapp.isPluginDataLoading = true; + ControllerService.getPluginsCount().then( + function(jsonObj) { + if (jsonObj.error) { + $log.error("execViewCtlr.getPluginsCount failed: " + + jsonObj.error); + $scope.ecdapp.isPluginDataLoading = false; + $scope.ecdapp.pluginCount = 0; + } else { + $scope.ecdapp.pluginCount = jsonObj.totalItems; + $scope.ecdapp.isPluginDataLoading = false; + } + }, + function(error) { + $log.error("execViewCtlr.getPluginsCount failed: " + + error); + $scope.ecdapp.pluginCount = 0; + $scope.ecdapp.isPluginDataLoading = false; + }); + }; + var getOwners = function() { + InventoryBlueprintService.getOwnersList().then( + function(jsonObj) { + if (jsonObj.error) { + $log.error("execViewCtlr.getOwnersList failed: " + + jsonObj.error); + $scope.ecdapp.bpOwners = []; + } else { + $scope.ecdapp.bpOwners = jsonObj; + localStorageService.set('bpOwners', JSON.stringify(jsonObj)); + } + }, + function(error) { + $log.error("execViewCtlr.getOwnersList failed: " + + error); + $scope.ecdapp.bpOwners = []; + }); + }; + + // Initialize the page + getTenants(); + getAppLabel(); + getBlueprintsCount(); + getDeploymentsCount(); + getOwners(); + getPluginsCount(); + getActiveExecutions(); + $scope.$on('$destroy', function() { + $scope.ecdapp.stopLoading(); + }); +}); diff --git a/ccsdk-app-os/src/main/webapp/app/ccsdk/home/executions_view.html b/ccsdk-app-os/src/main/webapp/app/ccsdk/home/executions_view.html new file mode 100644 index 0000000..09d9814 --- /dev/null +++ b/ccsdk-app-os/src/main/webapp/app/ccsdk/home/executions_view.html @@ -0,0 +1,377 @@ +
+
+

Dashboard

+
+
+
+ + Access Type +
+
+ +
+ +
+
+
+
+
+ + Auto Refresh +
+
+ +
+ +
+
+
+ +
+
+
+
+
+
+
+ +
+
+ + + + + + + + + + + +
+ + {{ecdapp.bpCount}} +
+
+ BLUEPRINTS +
+
+ +
+ + {{ecdapp.bpCount}} +
+
+ BLUEPRINTS +
+
+
+
+
+
+
+
+ +
+
+ + + + + + + + + + + +
+ + {{ecdapp.depCount}} +
+
+ DEPLOYMENTS +
+
+ +
+ + {{ecdapp.depCount}} +
+
+ DEPLOYMENTS +
+
+
+
+
+
+
+
+ +
+
+ + + + + + + + + + + +
+ + {{ecdapp.pluginCount}} +
+
+ PLUGINS +
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + +
+
+
+
+
+ +
+
+
+
+ + +
+ + + + + + + + + + + + + + +
+
+
+
+
+ + + + + + + + + + + +
+ + +
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
DeploymentWorkflowCreatedEndedTenantStatus
+
ID +
+ + {{rowData.id}} +
+
+
+ + {{rowData.deployment_id}} + + + + + + + + waiting to start + in-progress + cancel in progress + force-cancelling in progress + cancelled + + successful + + failed +
+
+
+
+
\ No newline at end of file diff --git a/ccsdk-app-os/src/main/webapp/app/ccsdk/home/oom-style.css b/ccsdk-app-os/src/main/webapp/app/ccsdk/home/oom-style.css new file mode 100644 index 0000000..df3e489 --- /dev/null +++ b/ccsdk-app-os/src/main/webapp/app/ccsdk/home/oom-style.css @@ -0,0 +1,658 @@ +/* Styles for ECOMP Controller Dashboard */ + +.content-container { + min-height: 650px; + width: calc(100% - 50px); +} + +.ecd-error-message { + font-size: 14px; + font-weight: bold; + color: red; +} + +.ecd-icon-display { + font-size: 18px; +} + +.ecd-icon-action { + font-size: 18px; +} + +.ecd-icon-action:hover { + color: red; + text-decoration: none; +} + +.selected { + background-color:#abb5e6; + color:black; + font-weight:bold; +} +.red-background { + background-color: #ff0000b3; + } +.green-background { + background-color: #bbf0bb; + } +.td-error { + border-top: 2px dotted red; + border-bottom: 2px dotted red; + background-color: rgb(210, 190, 190); + } +.menu { + display: none; + z-index: 1000; + border: 1px dotted; + border-radius: 5px; + padding: 10px; + width: 40%; + background: azure; + position: fixed; + overflow: scroll; + background: slategray; + color: white; + right: 20px; +} + +.show-menu { + z-index: 800; +} + +#show-menu { + display: none; +} + +#show-menu:checked ~ .menu { + display: block; +} + +#show-menu:checked ~ .show-menu { + color: blue; +} + +.menu-off { + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + z-index: 700; + display: none; +} + +.menu-off { + display: none; +} + +#show-menu:checked ~ .menu-off { + display: block; +} + +#show-menu:checked ~ .show-menu { + display: none; +} + +.menu-off input[type=checkbox]:checked ~ .menu { + display: none; +} + +.menu-off input[type=checkbox]:checked ~ .show-menu { + display: block; +} + +.menu-filters { + display: block; + z-index: 1000; + border: 1px dotted; + border-radius: 5px; + padding: 10px; + width: 48%; + background: #ffffff; + position: absolute; + overflow: scroll; +} + +.show-menu-filters { + z-index: 800; + color: blue; +} + +#show-menu-filters[aria-expanded="true"] ~ .menu-filters { + display: block; +} + +#show-menu-filters:checked ~ .show-menu-filters { + color: blue; +} + +.menu-filters-off { + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + z-index: 700; + display: none; +} + +.menu-filters-off { + display: none; +} + +#show-menu-filters:checked ~ .menu-filters-off { + display: block; +} + +#show-menu-filters:checked ~ .show-menu-filters { + display: none; +} + +.menu-filters-off input[type=checkbox]:checked ~ .menu-filters { + display: none; +} + +.menu-filters-off input[type=checkbox]:checked ~ .show-menu-filters { + display: block; +} + +.ui-select-match .btn { + font-size: 1.5rem; + padding: 5px; +} + +.ui-select-multiple.ui-select-bootstrap .ui-select-match .close { + font-size: 1.0em; + margin-left: 10px; +} +.advanced-search { + display: block; + position: relative; +} + +.advanced-search .btn{ + box-shadow: none; + position: absolute; + top: 5px; + right: 3px; + min-width: 10px; + width: 25px; + height: 25px; + padding: 1px 1px 1px 1px; + +} + +.advanced-search i { + position: relative; + top: 0px; + right: 0px; + width: 20px; + height: 20px; + padding: 0px 0px 0px 0px; + margin: 0px 0px 0px 0px; +} + +.advanced-search-input { + padding: 10px 19px 9px 18px; + font-size: 1.5rem; + border-radius: 8px; + width: 100%; +} +td > .btn-group { + min-width: 0; + width: auto; +} + +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + z-index: 1000; + display: none; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + top: 30px; + left: -10px; +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} + +.dropdown-menu li { + margin-bottom: 5px; +} + +.dropdown-menu li div { + padding-left: 5px; +} + +.dropdown-menu li div i { + margin-right: 5px; +} + +td > .btn-group > .btn { + min-width: 0; + color: #0568ae; +} + +td > .btn-group > .btn> i { + font-size: 30px; +} + +li > a.active { + font-weight: bolder; + outline: thin dotted #666; +} + +tr:hover { + background-color: #f2f2f2; +} + +tr:focus { + background-color: #f2f2f2; +} + +.modalwrapper.modal-docked .modal-jumbo { + max-height: 100%; + height: 100%; + overflow: hidden; + top: 0; + width: 100%; + max-width: 100%; +} + +#addAppDiv { + padding-left: 10px; + background: lightgray; + border-radius: 5px; + padding-bottom: 15px; +} + +.field-group.error .error-msg { + color: red; + display: block; + font-size: 14px; + line-height: 14px; + font-family: "Omnes-ATT-W02-Medium"; + position: relative; + padding-left: 18px; + margin-top: 10px; +} + +.heading-page { + margin-bottom: 20px; +} + +.footer-container { + top: 25px; +} +.b2b-dragdrop { + padding: 10px; +} + +.my-tooltip { + position: relative; + display: inline; +} + +.id-tooltip { + position: relative; + display: inline; +} + +.id-tooltip > .id-tooltiptext, .id-tooltip > .wrapper { + display: flex; + visibility: hidden; + width: 400px; + background-color: #dbdde3; + white-space: pre-line; + border-radius: 6px; + padding: 10px; + position: absolute; + bottom: 25%; + left: 80%; + transition: opacity 0.3s; + border: 1px solid gray; +} + +.id-tooltip:hover > .id-tooltiptext, .id-tooltip:hover > .wrapper { + pointer-events: auto; + visibility: visible; + opacity: 1; +} +.wrapper > .id-tooltiptext { + overflow-y: auto; + max-height: 400px; + display: block; + clear: both; +} + +.id-tooltip .id-tooltiptext::after { + content: ""; + position: absolute; + top: 40%; + right: 100%; + margin-left: -5px; + border-width: 5px; + border-style: solid; + border-color: transparent #544f4f transparent transparent; +} + +.wrapper { + position:relative; +} + +.my-tooltip > .my-tooltiptext, .my-tooltip > .wrapper { + visibility: hidden; + width: 600px; + background-color: #647dd6; + color: #fff; + white-space: pre-line; + border-radius: 6px; + padding: 10px; + position: absolute; + z-index: 1; + bottom: 90%; + left: -5%; + opacity: 0; + transition: opacity 0.3s; + overflow: visible; +} + +.my-tooltip .my-tooltiptext::after { + content: ""; + position: absolute; + top: 100%; + left: 50%; + margin-left: -5px; + border-width: 5px; + border-style: solid; + border-color: #555 transparent transparent transparent; +} + +.my-tooltip:hover > .my-tooltiptext, .my-tooltip:hover > .wrapper { + pointer-events: auto; + visibility: visible; + opacity: 1; +} +.wrapper > .my-tooltiptext { + overflow-y: auto; + max-height: 400px; + display: block; + clear: both; +} + +.stat_tooltip { + position: relative; + display: inline-block; + top: -10px; +} + +.gen_tooltip { + display: inline-block; + position: relative; +} + +.gen_tooltip .gen_tooltiptext_r { + visibility: hidden; + width: 250px; + background-color: #647dd6; + color: #000; + text-align: center; + border-radius: 2px; + border: 1px solid rgba(0, 0, 0, .15); + padding: 5px 0; + position: absolute; + z-index: 100; + left: 110%; + top: -50%; +} + +.gen_tooltip .gen_tooltiptext_r::after { + content: ""; + position: absolute; + top: 50%; + right: 100%; /* to the left of tooltip */ + margin-left: -5px; + border-width: 5px; + border-style: solid; + border-color: transparent #fff transparent transparent; +} + +.gen_tooltip:hover .gen_tooltiptext_r { + visibility: visible; +} + +.stat_tooltip .stat_tooltiptext, .stat_tooltip .wrapper { + visibility: hidden; + width: 500px; + background-color: #c8d1f0; + color: #000; + text-align: left; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .15); + padding: 5px 0; + position: absolute; + z-index: 100; + bottom: 100%; + height: 200px; +} + +.stat_tooltip .stat_tooltiptext::after, .stat_tooltip .wrapper::after { + content: ""; + position: absolute; + top: 100%; + left: 4%; + margin-left: -5px; + border-width: 5px; + border-style: solid; + border-color: rgba(0, 0, 0, .15) transparent transparent transparent; +} + +.stat_tooltip:hover .stat_tooltiptext, .stat_tooltip:hover .wrapper { + visibility: visible; +} + +.stat_tooltip .wrapper .clip-btn-div { + display: inline; + left: 50px; + top: 80px; +} + +.b2b-card-container { + background-color: #ffffff; +} + +.b2b-cards { + transition: .5s; + opacity: .7; +} +.b2b-cards a { + text-decoration: none; +} + +.b2b-cards:hover { + box-shadow: 0px 0px 20px 10px #eccc5e; + text-shadow: none !important; + background-color: #ffffff !important; + opacity: 1; + +} + +.b2b-cards .tooltip { + visibility: hidden; +} + +.b2b-cards:hover .tooltip { + visibility: visible; +} + +.b2b-cards .b2b-card-footer-flyout { + visibility: hidden; +} + +.b2b-cards:hover .b2b-card-footer-flyout { + visibility: visible; +} +.b2b-card-header { + text-align: center; +} + +.b2b-card-header i { + font-size: 35px; +} +.b2b-card-container .b2b-title { + font-size: 50px; +} +.b2b-card-content { + text-align: center; +} + +.collapsible { + color: #2196F3; + cursor: pointer; + padding: 18px; + width: 100%; + border: none; + outline: none; + font-size: 25px; + font-weight: bolder; + background-color: #ffffff; + height: 2px; + margin-top: -30px; +} + +.collapsible:after { + content: "\2796"; + color: #2196F3; + float: right; + margin-left: 5px; +} + +.collapsible.active:after { + content: '\02795'; +} + +.content { + padding: 0 18px; + height: auto; + display: block; + transition: max-height 0.2s ease-out; + +} diff --git a/ccsdk-app-os/src/main/webapp/app/ccsdk/home/oom_spa.html b/ccsdk-app-os/src/main/webapp/app/ccsdk/home/oom_spa.html new file mode 100644 index 0000000..378ddfe --- /dev/null +++ b/ccsdk-app-os/src/main/webapp/app/ccsdk/home/oom_spa.html @@ -0,0 +1,151 @@ + + + + + + + + DCAE Dashboard + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+ + +
+ + + diff --git a/ccsdk-app-os/src/main/webapp/app/ccsdk/images/ecomp.png b/ccsdk-app-os/src/main/webapp/app/ccsdk/images/ecomp.png new file mode 100644 index 0000000..b355f10 Binary files /dev/null and b/ccsdk-app-os/src/main/webapp/app/ccsdk/images/ecomp.png differ diff --git a/ccsdk-app-os/src/main/webapp/app/ccsdk/images/onap_16x16.ico b/ccsdk-app-os/src/main/webapp/app/ccsdk/images/onap_16x16.ico new file mode 100644 index 0000000..8eb0495 Binary files /dev/null and b/ccsdk-app-os/src/main/webapp/app/ccsdk/images/onap_16x16.ico differ diff --git a/ccsdk-app-os/src/main/webapp/app/ccsdk/images/onap_32x32.ico b/ccsdk-app-os/src/main/webapp/app/ccsdk/images/onap_32x32.ico new file mode 100644 index 0000000..e434286 Binary files /dev/null and b/ccsdk-app-os/src/main/webapp/app/ccsdk/images/onap_32x32.ico differ diff --git a/ccsdk-app-os/src/main/webapp/app/ccsdk/images/onap_logo_2257x496.png b/ccsdk-app-os/src/main/webapp/app/ccsdk/images/onap_logo_2257x496.png new file mode 100644 index 0000000..36ee1f5 Binary files /dev/null and b/ccsdk-app-os/src/main/webapp/app/ccsdk/images/onap_logo_2257x496.png differ diff --git a/ccsdk-app-os/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css b/ccsdk-app-os/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css index 8a27586..88bab24 100644 --- a/ccsdk-app-os/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css +++ b/ccsdk-app-os/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css @@ -56,7 +56,7 @@ .icon-misc-trash:before, .icon-misc-pen:before, .ion-navicon:before, -.icon-primary-close:before, .close:before, .reset-field:before, +.icon-primary-close:before, .reset-field:before, .icon-datanetwork-softwareasaservice:before, .icon-datanetwork-messaging2:before, .icon-controls-settingsconnectedactivity:before, @@ -184,7 +184,7 @@ .icon-content-star:before { content: "\f24e"; } -.icon-primary-close:before, .close:before, .reset-field:before { content: "\f129"; } +.icon-primary-close:before, .reset-field:before { content: "\f129"; } .icon-datanetwork-softwareasaservice:before { content: "\f40c"; } -- cgit 1.2.3-korg