/*- * ============LICENSE_START======================================================= * VID * ================================================================================ * Copyright (C) 2017 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========================================================= */ "use strict"; appDS2.controller("aaiSubscriberController", ["COMPONENT", "FIELD", "PARAMETER", "DataService", "PropertyService", "$scope", "$http", "$timeout", "$location", "$log", "$route", "VIDCONFIGURATION", "UtilityService", "vidService", "AaiService", function (COMPONENT, FIELD, PARAMETER, DataService, PropertyService, $scope, $http, $timeout, $location, $log, $route, VIDCONFIGURATION, UtilityService, vidService, AaiService) { $scope.showVnfDetails = function (vnf) { console.log("showVnfDetails"); DataService.setVnfInstanceId(COMPONENT.VNF_INSTANCE_ID); DataService .setInventoryItem(aaiResult[FIELD.ID.INVENTORY_RESPONSE_ITEMS][FIELD.ID.INVENTORY_RESPONSE_ITEM][0]); $scope.$broadcast(COMPONENT.SHOW_COMPONENT_DETAILS, { componentId: COMPONENT.VNF, callbackFunction: callbackFunction }); } $scope.popup = new Object(); $scope.isPopupVisible = false; $scope.defaultBaseUrl = ""; $scope.responseTimeoutMsec = 60000; $scope.serviceTypes = [FIELD.PROMPT.SELECT_SERVICE, COMPONENT.UCPE_VMS, COMPONENT.SDN_L3_BONDING, COMPONENT.SDN_ETHERNET_INTERNET]; $scope.defaultSubscriberName = [FIELD.PROMPT.SELECT_SUB]; var callbackFunction = function (response) { alert(response); }; $scope.getSubs = function () { $scope.init(); $scope.fetchSubs(FIELD.PROMPT.FETCHING_SUBS); $scope.fetchServices(); }; $scope.cancelCreateSI = function () { window.location.href = COMPONENT.WELCOME_PATH; }; $scope.getServiceTypes = function (globalCustomerId) { DataService.setGlobalCustomerId(globalCustomerId); DataService.setServiceIdList($scope.customerList) if (globalCustomerId !== "" && globalCustomerId !== undefined) { window.location.href = COMPONENT.SERVICE_TYPE_LIST_PATH + $scope.serviceTypeList; } } $scope.refreshServiceTypes = function (globalCustomerId) { DataService.setGlobalCustomerId(globalCustomerId); $scope.getServiceTypesList(); } $scope.subId = ""; $scope.createSubscriberName = ""; $scope.serviceTypeList = {}; $scope.custSubList = []; $scope.getServiceTypesList = function () { var notFound = true; var globalCustomerId = DataService.getGlobalCustomerId(); $scope.custSubList = DataService.getServiceIdList(); if (globalCustomerId !== "" && globalCustomerId !== undefined) { $scope.subId = globalCustomerId; $scope.init(); $scope.status = FIELD.PROMPT.FETCHING_SERVICE_TYPES; DataService.setGlobalCustomerId(globalCustomerId); AaiService.getSubscriptionServiceTypeList(DataService .getGlobalCustomerId(), function (response) { notFound = false; $scope.setProgress(100); // done $scope.status = FIELD.STATUS.DONE; $scope.isSpinnerVisible = false; $scope.serviceTypeList = response; for (var i = 0; i < $scope.custSubList.length; i++) { if (globalCustomerId === $scope.custSubList[i].globalCustomerId) { $scope.createSubscriberName = $scope.custSubList[i].subscriberName; } } }, function (response) { // failure $scope.showError(FIELD.ERROR.AAI); $scope.errorMsg = FIELD.ERROR.FETCHING_SERVICE_TYPES + response.status; $scope.errorDetails = response.data; }); } else { alert(FIELD.ERROR.SELECT); } }; $scope.subList = []; $scope.getAaiServiceModels = function (selectedServicetype, subName) { DataService.setGlobalCustomerId(selectedServicetype); DataService.setServiceIdList($scope.serviceTypeList) DataService.setSubscriberName(subName); DataService.setSubscribers($scope.custSubList); if (selectedServicetype !== "" && selectedServicetype !== 'undefined') { $location.path(COMPONENT.CREATE_INSTANCE_PATH); } }; $scope.serviceTypeName=""; $scope.getAaiServiceModelsList = function(){ var globalCustomerId=""; var serviceTypeId = DataService.getGlobalCustomerId(); $scope.serviceTypeList = DataService.getServiceIdList(); $scope.createSubscriberName = DataService.getSubscriberName(); $scope.status = FIELD.STATUS.FETCHING_SERVICE_CATALOG; $scope.custSubList = DataService.getSubscribers(); for(var i=0; i<$scope.serviceTypeList.length;i++){ if(parseInt(serviceTypeId) === i ){ $scope.serviceTypeName = $scope.serviceTypeList[i].name; } } ; for(var i=0; i<$scope.custSubList.length;i++){ if($scope.createSubscriberName === $scope.custSubList[i].subscriberName){ globalCustomerId = $scope.custSubList[i].globalCustomerId; globalCustId = globalCustomerId; } } ; var pathQuery =""; if(null !== globalCustomerId && "" !== globalCustomerId && undefined !== globalCustomerId && null !== serviceTypeId && "" !== serviceTypeId && undefined !== serviceTypeId){ pathQuery = COMPONENT.SERVICES_PATH +globalCustomerId+"/"+$scope.serviceTypeName; } var namedQueryId='6e806bc2-8f9b-4534-bb68-be91267ff6c8'; AaiService.getServiceModelsByServiceType(namedQueryId,globalCustomerId,$scope.serviceTypeName,function(response) { // success $scope.services = []; if (angular.isArray(response.data['inventory-response-item'])) { wholeData = response.data['inventory-response-item'][0]['inventory-response-items']['inventory-response-item']; $scope.services = $scope.filterDataWithHigerVersion(response.data['inventory-response-item'][0]['inventory-response-items']['inventory-response-item']); $scope.serviceType = response.data['inventory-response-item'][0]['service-subscription']['service-type']; $scope.viewPerPage=10; $scope.totalPage=$scope.services.length/$scope.viewPerPage; $scope.sortBy="name"; $scope.scrollViewPerPage=2; $scope.currentPage=1; $scope.searchCategory; $scope.searchString=""; $scope.currentPageNum=1; $scope.isSpinnerVisible = false; $scope.isProgressVisible = false; } else { $scope.status = "Failed to get service models from ASDC."; $scope.error = true; $scope.isSpinnerVisible = false; } DataService.setServiceIdList(response); }, function(response) { // failure $scope.showError(FIELD.ERROR.AAI); $scope.errorMsg = FIELD.ERROR.FETCHING_SERVICES+ response.status; $scope.errorDetails = response.data; }); }; var globalCustId;// This value will be assigned only on create new service instance screen-macro $scope.createType = "a la carte"; $scope.deployService = function(service,hideServiceFields) { hideServiceFields = hideServiceFields|| false; var temp = service; service.uuid = service['service-instance']['model-version-id']; console.log("Instantiating ASDC service " + service.uuid); $http.get('rest/models/services/' + service.uuid) .then(function successCallback(getServiceResponse) { getServiceResponse.data['service'].serviceTypeName =$scope.serviceTypeName ; getServiceResponse.data['service'].createSubscriberName =$scope.createSubscriberName ; var serviceModel = getServiceResponse.data; DataService.setServiceName(serviceModel.service.name); DataService.setModelInfo(COMPONENT.SERVICE, { "modelInvariantId": serviceModel.service.invariantUuid, "modelVersion": serviceModel.service.version, "modelNameVersionId": serviceModel.service.uuid, "modelName": serviceModel.service.name, "description": serviceModel.service.description,"serviceType": serviceModel.service.serviceType, "serviceRole": serviceModel.service.serviceRole, "category":serviceModel.service.category, "serviceTypeName":serviceModel.service.serviceTypeName, "createSubscriberName":serviceModel.service.createSubscriberName }); DataService.setHideServiceFields(hideServiceFields); if(hideServiceFields){ DataService.setServiceType($scope.serviceTypeName); DataService.setGlobalCustomerId(globalCustId); } DataService.setALaCarte (true); $scope.createType = "a la carte"; var broadcastType = "createComponent"; if (UtilityService.arrayContains (VIDCONFIGURATION.MACRO_SERVICES, serviceModel.service.invariantUuid )) { DataService.setALaCarte (false); $scope.createType = "Macro"; var convertedAsdcModel = UtilityService.convertModel(serviceModel); //console.log ("display inputs "); //console.log (JSON.stringify ( convertedAsdcModel.completeDisplayInputs)); DataService.setModelInfo(COMPONENT.SERVICE, { "modelInvariantId": serviceModel.service.invariantUuid, "modelVersion": serviceModel.service.version, "modelNameVersionId": serviceModel.service.uuid, "modelName": serviceModel.service.name, "description": serviceModel.service.description, "category":serviceModel.service.category, "serviceEcompNaming": serviceModel.service.serviceEcompNaming, "inputs": serviceModel.service.inputs, "displayInputs": convertedAsdcModel.completeDisplayInputs, "serviceTypeName":serviceModel.service.serviceTypeName, "createSubscriberName":serviceModel.service.createSubscriberName, "serviceType": serviceModel.service.serviceType, "serviceRole": serviceModel.service.serviceRole });} ; $scope.$broadcast(broadcastType, { componentId : COMPONENT.SERVICE, callbackFunction : function(response) { if (response.isSuccessful) { vidService.setModel(serviceModel); var subscriberId = "Not Found"; var serviceType = "Not Found"; var serviceInstanceId = response.instanceId; for (var i = 0; i < response.control.length; i++) { if (response.control[i].id == "subscriberName") { subscriberId = response.control[i].value; } else if (response.control[i].id == "serviceType") { serviceType = response.control[i].value; } } $scope.refreshSubs(subscriberId,serviceType,serviceInstanceId); } } }); }, function errorCallback(response) { console.log("Error: " + response); }); }; $scope.isFiltered=function(arr,obj){ var filtered = false; if(arr.length>0){ for(var i=0;i=parseFloat(serviceData[i]['extra-properties']['extra-property'][6]['property-value']))){ var data = $scope.isThisHigher(fiterDataServices,serviceData[j]); if(data.isHigher){ fiterDataServices[data.index] = serviceData[j]; } } } } } return fiterDataServices; } $scope.isThisHigher = function(arr,obj){ var returnObj = { isHigher:false, index:0 }; if(arr.length>0){ var isNotMatched = true; for(var i=0;i 202) { $scope.showError(FIELD.ERROR.MSO); $scope.status = FIELD.ERROR.AAI_FETCHING_CUST_DATA + response.data.status; return; } $scope.setProgress(100); // done $scope.status = FIELD.STATUS.DONE; $scope.isSpinnerVisible = false; $scope.customer = response.data.customer; // get data from json $scope.customerList = []; angular.forEach($scope.customer, function (subVal, subKey) { var cust = { "globalCustomerId": subVal[FIELD.ID.GLOBAL_CUSTOMER_ID], "subscriberName": subVal[FIELD.ID.SUBNAME], "isPermitted": subVal[FIELD.ID.IS_PERMITTED] }; $scope.customerList.push(cust); }); } catch (error) { $scope.showContentError(error); } } $scope.autoGetSubs = function () { /* * Optionally comment in / out one of these method calls (or add a similar * entry) to auto-invoke an entry when the test screen is redrawn. */ $scope.getSubs(); } $scope.updateLog = function (response) { // $scope.log = UtilityService.getCurrentTime() + " HTTP Status: " + // UtilityService.getHttpStatusText(response.data.status) + "\n" + // angular.toJson(response.data.entity, true) + "\n\n" + $scope.log; // UtilityService.checkUndefined("entity", response.data.entity); // UtilityService.checkUndefined("status", response.data.status); } $scope.handleServerError = function (response, status) { $scope.enableCloseButton(true); var message = UtilityService.getHttpErrorMessage(response); if (message != "") { message = " (" + message + ")"; } $scope.showError(FIELD.ERROR.SYSTEM_ERROR + message); } $scope.showContentError = function (message) { // $log.debug(message); console.log(message); if (UtilityService.hasContents(message)) { $scope.showError("System failure (" + message + ")"); } else { $scope.showError(FIELD.ERROR.SYSTEM_ERROR); } } $scope.showError = function (message) { $scope.isSpinnerVisible = false; $scope.isProgressVisible = false; $scope.error = message; $scope.status = FIELD.STATUS.ERROR; } $scope.close = function () { if ($scope.timer != undefined) { $timeout.cancel($scope.timer); } $scope.isPopupVisible = false; } /* * Consider converting the progress bar mechanism, the disabled button handling * and the following methods to generic Angular directive(s) and/or approach. */ $scope.enableCloseButton = function (isEnabled) { var selector = FIELD.STYLE.MSO_CTRL_BTN; $scope.isCloseEnabled = isEnabled; if (isEnabled) { $(selector).addClass(FIELD.STYLE.BTN_PRIMARY).removeClass(FIELD.STYLE.BTN_INACTIVE).attr(FIELD.STYLE.BTN_TYPE, FIELD.STYLE.PRIMARY); } else { $(selector).removeClass(FIELD.STYLE.BTN_PRIMARY).addClass(FIELD.STYLE.BTN_INACTIVE).attr(FIELD.STYLE.BTN_TYPE, FIELD.STYLE.DISABLED); } } $scope.resetProgress = function () { $scope.percentProgress = 0; $scope.progressClass = FIELD.STYLE.PROGRESS_BAR_INFO; } $scope.setProgress = function (percentProgress) { percentProgress = parseInt(percentProgress); if (percentProgress >= 100) { $scope.progressClass = FIELD.STYLE.PROGRESS_BAR_SUCCESS; } if (percentProgress < $scope.percentProgress) { return; } $scope.percentProgress = percentProgress; $scope.progressWidth = {width: percentProgress + "%"}; if (percentProgress >= 5) { $scope.progressText = percentProgress + " %"; } else { // Hidden since color combination is barely visible when progress portion is narrow. $scope.progressText = ""; } } $scope.reloadRoute = function () { $route.reload(); } $scope.prevPage = function () { $scope.currentPage--; } $scope.nextPage = function () { $scope.currentPage++; } $scope.serviceInstanceses = [{"sinstance": FIELD.NAME.SERVICE_INSTANCE_Id}, {"sinstance": FIELD.NAME.SERVICE_INSTANCE_NAME}] $scope.getSubscriberDet = function (selectedCustomer, selectedserviceinstancetype, selectedServiceInstance) { var sintype = selectedserviceinstancetype; if (selectedServiceInstance != "" && selectedServiceInstance != undefined) { selectedServiceInstance.trim(); // check with A&AI $http.get(COMPONENT.AAI_GET_SERVICE_INSTANCE_PATH + selectedServiceInstance + "/" + sintype + "?r=" + Math.random(), {}, { timeout: $scope.responseTimeoutMsec }).then(function (response) { var notFound = true; if (angular.isArray(response.data[FIELD.ID.RESULT_DATA])) { var item = []; var urlParts = []; item = response.data[FIELD.ID.RESULT_DATA][0]; var url = item[FIELD.ID.RESOURCE_LINK]; var globalCustomerId = ""; var serviceSubscription = ""; // split it and find the customer Id and service-subscription urlParts = url.split("/"); if (urlParts[7] === FIELD.ID.CUSTOMER) { globalCustomerId = urlParts[8]; } if (urlParts[10] === FIELD.ID.SERVICE_SUBSCRIPTION) { serviceSubscription = urlParts[11]; } if (globalCustomerId !== "") { notFound = false; window.location.href = COMPONENT.SELECTED_SERVICE_SUB_PATH + serviceSubscription + COMPONENT.SELECTEDSUBSCRIBER_SUB_PATH + globalCustomerId + COMPONENT.SELECTEDSERVICEINSTANCE_SUB_PATH + selectedServiceInstance; } } if (notFound) { alert(FIELD.ERROR.SERVICE_INST_DNE); } }); // add a failure callback... } else if (selectedCustomer != null) { window.location.href = COMPONENT.SELECTED_SUB_PATH + selectedCustomer; } else { alert(FIELD.ERROR.SELECT); } }; }]).directive('restrictInput', function () { return { restrict: 'A', require: 'ngModel', link: function ($scope, element, attr, ctrl) { ctrl.$parsers.unshift(function (viewValue) { var types = $scope.$eval(attr.restrictInput); if (!types.regex && types.type) { switch (types.type) { case 'Service Instance Name' : types.regex = '^[a-zA-Z0-9-_]*$'; break; default: types.regex = ''; } } var reg = new RegExp(types.regex); if (reg.test(viewValue)) { return viewValue; } else { var overrideValue = (reg.test(viewValue) ? viewValue : ''); element.val(overrideValue); return overrideValue; } }); } }; }); appDS2.controller('TreeCtrl', ['$scope', function ($scope) { $scope.remove = function (scope) { scope.remove(); }; $scope.toggle = function (scope) { scope.toggle(); }; $scope.moveLastToTheBeginning = function () { var a = $scope.data.pop(); $scope.data.splice(0, 0, a); }; $scope.newSubItem = function (scope) { var nodeData = scope.$modelValue; nodeData.nodes.push({ id: nodeData.id * 10 + nodeData.nodes.length, title: nodeData.title + '.' + (nodeData.nodes.length + 1), nodes: [] }); }; $scope.collapseAll = function () { $scope.$broadcast(FIELD.ID.ANGULAR_UI_TREE_COLLAPSEALL); }; $scope.expandAll = function () { $scope.$broadcast(FIELD.ID.ANGULAR_UI_TREE_EXPANDALL); }; }]);