X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=POLICY-SDK-APP%2Fsrc%2Fmain%2Fwebapp%2Fapp%2FpolicyApp%2Fpolicy-models%2FEditor%2FPolicyTemplateController%2FDCAEMicroServicePolicyController.js;h=2b3b743d4e3c7dc620d53e7f31bad981065c877e;hb=1148834bc4b10d00c1b1830b087357e63af8293f;hp=fb966430cb4fd86ff9af1d4aa0bc18c4d6ba94de;hpb=fc5c07705edc4dcb7083b39116a43844bb6a1490;p=policy%2Fengine.git diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/DCAEMicroServicePolicyController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/DCAEMicroServicePolicyController.js index fb966430c..2b3b743d4 100644 --- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/DCAEMicroServicePolicyController.js +++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/DCAEMicroServicePolicyController.js @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * ECOMP Policy Engine + * ONAP Policy Engine * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ @@ -25,6 +25,13 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind $scope.savebutton = true; $scope.refreshCheck = false; + if(!$scope.temp.policy.editPolicy && !$scope.temp.policy.readOnly){ + $scope.temp.policy = { + policyType : "Config", + configPolicyType : "Micro Service" + } + }; + $scope.refresh = function(){ if($scope.refreshCheck){ $scope.policyNavigator.refresh(); @@ -37,6 +44,15 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind return $('#' + id).modal(hide ? 'hide' : 'show'); }; + $('#ttlDate').datepicker({ + dateFormat: 'dd/mm/yy', + changeMonth: true, + changeYear: true, + onSelect: function(date) { + angular.element($('#ttlDate')).triggerHandler('input'); + } + }); + if ($scope.temp.policy.editPolicy != undefined|| $scope.temp.policy.readOnly != undefined){ if ($scope.temp.policy.configName == undefined){ $scope.isCheck = false; @@ -47,12 +63,12 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind $scope.isCheck = false; } - PolicyAppService.getData('getDictionary/get_EcompNameDataByName').then(function (data) { + PolicyAppService.getData('getDictionary/get_OnapNameDataByName').then(function (data) { var j = data; $scope.data = JSON.parse(j.data); console.log($scope.data); - $scope.ecompNameDictionaryDatas = JSON.parse($scope.data.ecompNameDictionaryDatas); - console.log($scope.ecompNameDictionaryDatas); + $scope.onapNameDictionaryDatas = JSON.parse($scope.data.onapNameDictionaryDatas); + console.log($scope.onapNameDictionaryDatas); }, function (error) { console.log("failed"); }); @@ -149,7 +165,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind $scope.choices = []; $scope.attributeDatas = [{"attributes" : $scope.choices}]; - + $scope.isInitEditTemplate = true; //just initially create the edit template, didn't click add button yet. $scope.addNewChoice = function(value) { console.log(value); if(value != undefined){ @@ -160,13 +176,28 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind var div = document.getElementById(value+"@0"); if(div != null){ var clone = div.cloneNode(true); - var addElement = parentElement.childElementCount + 1; + var addElement = parentElement.childElementCount; clone.id = ''+value+'@'+addElement; clone.value = ''; - document.getElementById("div."+value).appendChild(clone); - plainAttributeKeys.push(''+value+'@'+addElement); + if($scope.temp.policy.editPolicy || $scope.temp.policy.readOnly){ //if it's view or edit + if($scope.temp.policy.ruleData[clone.id] || ($scope.temp.policy.editPolicy && !$scope.isInitEditTemplate)){ // Only append child if its value found in ruleData or edit mode + if($scope.temp.policy.ruleData[clone.id]){ + clone.value = $scope.temp.policy.ruleData[clone.id]; + } + clone.className += ' child_single'; //here cloned is single element + document.getElementById("div."+value).appendChild(clone); + plainAttributeKeys.push(''+value+'@'+addElement); + } + }else{ //not view or edit + clone.className += ' child_single'; //here cloned is single element + document.getElementById("div."+value).appendChild(clone); + plainAttributeKeys.push(''+value+'@'+addElement); + } }else{ div = document.getElementById("div."+value+"@0"); + + div.className += ' children_group'; //here is div with a group of children. + var childElement = parentElement.firstElementChild; var countParent = parentElement.childElementCount; var childElementString = childElement.innerHTML; @@ -238,6 +269,12 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind $scope.removeChoice = function(value) { console.log(value); if(value != undefined){ + var c = document.getElementById("div."+value).childElementCount; + + if(c == 1){ + Notification.error("The original one is not removable."); + return; + } document.getElementById("div."+value).removeChild(document.getElementById("div."+value).lastChild); } }; @@ -295,9 +332,15 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind var plainAttributeKeys = []; $scope.dcaeModelData = data[0].dcaeModelData; $scope.dcaeJsonDate = data[0].jsonValue; + if(data[0].allManyTrueKeys){ + console.log("$scope.allManyTrueKeys: " + $scope.allManyTrueKeys); + } + console.log("$scope.dcaeJsonDate: " + $scope.dcaeJsonDate); var attributes = $scope.dcaeModelData.attributes; var refAttributes = $scope.dcaeModelData.ref_attributes; - var subAttributes = $scope.dcaeModelData.sub_attributes; + var subAttributes = $scope.dcaeModelData.sub_attributes; + console.log("subAttributes: " + subAttributes); + console.log("refAttributes: " + refAttributes); var enumAttributes = $scope.dcaeModelData.enumValues; var annotation = $scope.dcaeModelData.annotation; var dictionary = $scope.microServiceAttributeDictionaryDatas; @@ -316,25 +359,23 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind } - if (dictionary!= null || dictionary>1){ - if (dictionary!= null || dictionary.length>1){ - for (m=0; m < dictionary.length; m += 1){ - var keyCompare = dictionary[m].name; - var valueCompare = dictionary[m].value; - var valueModel = dictionary[m].modelName; - var conpairService = serviceName; - if (valueModel.includes('-v')){ - conpairService = service; - } - if(valueModel.localeCompare(conpairService) == 0){ - console.log(valueCompare); - dictionaryList.push(dictionary[m]); - if (!dictionaryNameList.includes(dictionary[m].name)){ - dictionaryNameList.push(dictionary[m].name) - } - } - } - } + if (dictionary!= null && dictionary.length>1){ + for (m=0; m < dictionary.length; m += 1){ + var keyCompare = dictionary[m].name; + var valueCompare = dictionary[m].value; + var valueModel = dictionary[m].modelName; + var conpairService = serviceName; + if (valueModel.includes('-v')){ + conpairService = service; + } + if(valueModel.localeCompare(conpairService) == 0){ + console.log(valueCompare); + dictionaryList.push(dictionary[m]); + if (!dictionaryNameList.includes(dictionary[m].name)){ + dictionaryNameList.push(dictionary[m].name) + } + } + } } $scope.temp.policy.ruleGridData = []; @@ -342,29 +383,55 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind $scope.jsonLayout($scope.dcaeJsonDate); }); - if($scope.temp.policy.editPolicy || $scope.temp.policy.readOnly){ + + if($scope.temp.policy.editPolicy || $scope.temp.policy.readOnly){ // If it's veiw or edit + + if($scope.temp.policy.editPolicy){ + $scope.isInitEditTemplate = true; + } + var checkData = []; var data = []; - if($scope.temp.policy.ruleData != null){ - var propNames = Object.getOwnPropertyNames($scope.temp.policy.ruleData); - propNames.forEach(function(name) { - data.push(name); - }); - for(a = 0; a < data.length; a++){ - var splitPlainAttributeKey1 = data[a].split("."); - if(splitPlainAttributeKey1[0].indexOf("@") != -1){ - var key = splitPlainAttributeKey1[0]; - checkData.push(key); - } - } - var unique = checkData.filter(onlyUnique); - for(i =0; i < unique.length; i++){ - if(unique[i].indexOf("@0") == -1){ - var finalkey = unique[i].split("@")[0]; - $scope.addNewChoice(finalkey); - } - } - } + // If ruleData contains extra elements created by clicked add button + if($scope.temp.policy.ruleData != null){ + var propNames = Object.getOwnPropertyNames($scope.temp.policy.ruleData); + propNames.forEach(function(name) { + data.push(name); + }); + + var extraElements = data; + + if(plainAttributeKeys != null){ + for(b = 0; b < plainAttributeKeys.length; b++){ // Remove already populated elements from data array + var newValue = plainAttributeKeys[b].split("*"); + for(a = 0; a < data.length; a++){ + if(data[a] === newValue[0] || data[a] === (newValue[0]+"@0")){ + extraElements.splice(a, 1); + } + } + } + + //--- Populate these extra elements created by clicked add button + for(a = 0; a < extraElements.length; a++){ + if(extraElements[a].includes("@")){ + var n = extraElements[a].lastIndexOf("@"); + if(n > 0){ + var key = extraElements[a].substring(0, n+2); //include @x in key also by n+2 since x can be 1, or 2, or 3 + checkData.push(key); + } + } + } + var unique = checkData.filter(onlyUnique); + for(i =0; i < unique.length; i++){ + //remove @x and let addNewChoice add @1 or @2... + var newKey = unique[i].substring(0, unique[i].length-2); + console.log("newKey: " + newKey); + $scope.addNewChoice(newKey); + } + } + } + //After initially create the edit template, reset it to false. + $scope.isInitEditTemplate = false; } var ele = angular.element(document.getElementById("DynamicTemplate")); $compile(ele.contents())($scope); @@ -442,12 +509,13 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind return Object.prototype.toString.call(arrayTest) === '[object Array]'; } var lableList = []; - function deconstructJSON(dataTest, level , name) { var array = false; var label = level; var stringValue = "java.lang.String"; + var string = "string"; var intValue = "int"; + var integerValue = "integer"; var double = "double"; var boolean = "boolean"; var baseLevel = level; @@ -459,6 +527,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind for (key in dataTest) { array = isArray(dataTest[key]); console.log(key , dataTest[key]); + if (!!dataTest[key] && typeof(dataTest[key])=="object") { if (array==false && key!=="0"){ $scope.labelLayout(label, key, array ); @@ -471,7 +540,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind if (lableList.length > 0){ array = true; } - if ( key=="0"){ + if ( key==="0"){ var newKey = lableList.pop(); $scope.labelLayout(baseLevel, newKey, array ); if (array){ @@ -500,16 +569,43 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind if (dataTest[key].includes('required-true')){ isRequired = true; } - console.log("attirbuteLabel = " + attirbuteLabel); + + var subAttributes = $scope.dcaeModelData.sub_attributes; + + if(subAttributes){ + var jsonObject = JSON.parse(subAttributes); + var allkeys = Object.keys(jsonObject); + if(allkeys){ + for (var k = 0; k < allkeys.length; k++) { + var keyValue = allkeys[k]; + console.log(" keyValue:jsonObject["+keyValue+ "]: " + jsonObject[keyValue]); + if(jsonObject[keyValue]){ + var tempObject = jsonObject[keyValue]; + if(tempObject && tempObject[key]){ + if (tempObject[key].includes('required-true')){ + isRequired = true; + } + } + } + } + } + } + switch (dataTest[key].split(splitcolon)[0]){ case stringValue: - $scope.attributeBox(attributekey, array, attirbuteLabel, defaultValue, isRequired); + $scope.attributeBox(attributekey, array, attirbuteLabel, defaultValue, isRequired, "text"); break; + case string: + $scope.attributeBox(attributekey, array, attirbuteLabel, defaultValue, isRequired, "text"); + break; case intValue: - $scope.attributeBox(attributekey, array, attirbuteLabel, defaultValue, isRequired); + $scope.attributeBox(attributekey, array, attirbuteLabel, defaultValue, isRequired, "number"); break; + case integerValue: + $scope.attributeBox(attributekey, array, attirbuteLabel, defaultValue, isRequired, "number"); + break; case double: - $scope.attributeBox(attributekey, array, attirbuteLabel, defaultValue, isRequired); + $scope.attributeBox(attributekey, array, attirbuteLabel, defaultValue, isRequired, "double"); break; case boolean: $scope.dropBoxLayout(attirbuteLabel, attributekey, array, dataTest[key], getBooleanList()); @@ -518,12 +614,13 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind if (dataTest[key].includes('dictionary-')){ var list = getDictionary(dataTest[key].split('dictionary-')[1]); }else{ + //--- get dropdown values from enumValues var list = getList(dataTest[key]); } - if (list.length===0){ - $scope.attributeBox(attributekey, array, attirbuteLabel, defaultValue, isRequired); + if (list.length===0){ //not dropdown element + $scope.attributeBox(attributekey, array, attirbuteLabel, defaultValue, isRequired, "text"); }else{ - $scope.dropBoxLayout(attirbuteLabel, attributekey, array, dataTest[key], list); + $scope.dropBoxLayout(attirbuteLabel, attributekey, array, dataTest[key], list, isRequired); } break; } @@ -536,7 +633,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind } - $scope.attributeBox = function(attibuteKey, attributeManyKey, labelValue, defaultValue, isRequired){ + $scope.attributeBox = function(attibuteKey, attributeManyKey, labelValue, defaultValue, isRequired, dataType ){ $scope.temp.policy.ruleGridData.push(attibuteKey); var br = document.createElement("BR"); @@ -544,9 +641,9 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind var labeltext = null; var requiredLabName = ""; if (matching.includes(attibuteKey)){ - labeltext = document.createTextNode(attibuteKey + "*!"); + labeltext = document.createTextNode(attibuteKey + "*!"); + isRequired = true; //set required as true for matching element }else { - //var labeltext = document.createTextNode(refattributeLabel); if(isRequired){ requiredLabName = attibuteKey + " *"; labeltext = document.createTextNode(requiredLabName); @@ -569,34 +666,49 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind var textField = document.createElement("INPUT"); textField.setAttribute("class" , "form-control"); - textField.setAttribute("type" , "text"); + if(dataType){ + if(dataType == "double"){ + textField.setAttribute("type" , "number"); + textField.setAttribute("step" , "any"); + }else{ + textField.setAttribute("type" , dataType); + } + } textField.setAttribute("style" , "width:300px;"); textField.setAttribute("ng-disabled" , "temp.policy.readOnly"); var checkKey; if(attributeManyKey){ checkKey = labelValue + attibuteKey+'@0'; - textField.setAttribute("id" , ''+labelValue + attibuteKey+'@0'+''); + textField.setAttribute("id" , ''+labelValue + attibuteKey+'@0'+''); var divTag = document.createElement("div"); divTag.setAttribute("id", "div."+ labelValue +attibuteKey); var addButton = document.createElement("BUTTON"); var buttonaddLabel = document.createTextNode("+"); addButton.appendChild(buttonaddLabel); addButton.setAttribute("id", labelValue + attibuteKey); - addButton.setAttribute("class", "btn btn-default"); + addButton.setAttribute("class", "btn btn-add-remove"); addButton.setAttribute("ng-click" , 'addNewChoice("'+labelValue + attibuteKey+'");'); addButton.setAttribute("ng-disabled" , "temp.policy.readOnly"); var removeButton = document.createElement("BUTTON"); var buttonremoveLabel = document.createTextNode("-"); removeButton.appendChild(buttonremoveLabel); - removeButton.setAttribute("class", "btn btn-default"); + removeButton.setAttribute("class", "btn btn-add-remove"); removeButton.setAttribute("ng-click" , 'removeChoice("'+labelValue + attibuteKey+'");'); removeButton.setAttribute("ng-disabled" , "temp.policy.readOnly"); document.getElementById(divID).appendChild(addButton); document.getElementById(divID).appendChild(removeButton); - document.getElementById(divID).appendChild(label); - document.getElementById(divID).appendChild(textField); - document.getElementById(divID).appendChild(br); + document.getElementById(divID).appendChild(label); + var id = "div."+labelValue+attibuteKey; + var divTag = document.createElement("div"); + divTag.setAttribute("id", id); + document.getElementById(divID).appendChild(divTag); + textField.className += ' first_child'; + if(isRequired){ + textField.setAttribute("required", "true"); + } + divTag.appendChild(textField); document.getElementById(divID).appendChild(divTag); + }else{ checkKey = labelValue + attibuteKey; textField.setAttribute("id" , ''+labelValue +attibuteKey+''); @@ -609,6 +721,16 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind } + if(divID.includes("@0") && divID.includes("div.")){ + var firstChild_Id = divID.split("@0")[0]; + var firstChild_element = document.getElementById(firstChild_Id); + if(firstChild_element){ + firstChild_element.className += ' children_group'; //here is a div with a group of children. + } + } + console.log('firstChild_Id: ' + firstChild_Id); + console.log('divID: ' + divID); + if (defaultValue.length > 0){ if(defaultValue.includes(":")){ defaultValue = defaultValue.split(":")[0]; @@ -624,18 +746,6 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind if (attributeManyKey){ var newCheckKey = checkKey.replace(attibuteKey + '@0',attibuteKey); document.getElementById(newCheckKey +'@0').value = $scope.temp.policy.ruleData[newCheckKey +'@0']; - var i =1 ; - while(true){ - var newValue = $scope.temp.policy.ruleData[newCheckKey+'@'+i]; - if(newValue==null){ - break; - }else{ - $scope.addNewChoice(newCheckKey); - document.getElementById(newCheckKey+'@'+i).value = newValue; - i = i+1; - } - } - }else{ document.getElementById(checkKey).value = $scope.temp.policy.ruleData[checkKey]; } @@ -661,18 +771,20 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind var labeltext = document.createTextNode(lableName); label.appendChild(labeltext); + + var subAttributes = $scope.dcaeModelData.sub_attributes; if(labelManyKey){ var addButton = document.createElement("BUTTON"); var buttonLabel = document.createTextNode("+"); addButton.appendChild(buttonLabel); - addButton.setAttribute("class", "btn btn-default"); + addButton.setAttribute("class", "btn btn-add-remove"); addButton.setAttribute("ng-click" , 'addNewChoice("'+labelValue + lableName+'");'); addButton.setAttribute("ng-disabled" , "temp.policy.readOnly"); var removeButton = document.createElement("BUTTON"); var buttonremoveLabel = document.createTextNode("-"); removeButton.appendChild(buttonremoveLabel); - removeButton.setAttribute("class", "btn btn-default"); + removeButton.setAttribute("class", "btn btn-add-remove"); removeButton.setAttribute("ng-click" , 'removeChoice("'+labelValue +lableName+'");'); removeButton.setAttribute("ng-disabled" , "temp.policy.readOnly"); document.getElementById(divID).appendChild(addButton); @@ -684,17 +796,21 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind document.getElementById(divID).appendChild(divTag); var divTag = document.createElement("div"); - divTag.setAttribute("id", id +'@0'); + divTag.setAttribute("id", id +'@0'); + + divTag.className += ' children_group'; //here is div with a group of children. + document.getElementById(id).appendChild(divTag); }else{ var divTag = document.createElement("div"); divTag.setAttribute("id", "div."+labelValue+lableName); + divTag.className += ' children_group'; //here is div with a group of children. document.getElementById(divID).appendChild(label); - document.getElementById(divID).appendChild(divTag); + document.getElementById(divID).appendChild(divTag); } }; - $scope.dropBoxLayout = function(labelLevel, attributeName, many , refValue, listemunerateValues){ + $scope.dropBoxLayout = function(labelLevel, attributeName, many , refValue, listemunerateValues, isRequired){ var br = document.createElement("BR"); if (labelLevel.length < 1){ @@ -705,10 +821,32 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind var label = document.createElement("Label") + + var refAttributes = $scope.dcaeModelData.ref_attributes; + if(isRequired != true && refAttributes){ //check refAttributes also + var refAttributesList = refAttributes.split(splitComma); + for (k = 0; k < refAttributesList.length; k++){ + var refAttribute = refAttributesList[k].split(splitEqual); + if (attributeName == refAttribute[0].trim() && refAttribute[1].includes("required-true")){ + isRequired = true; + } + } + } + if (matching.includes(attributeName)){ var labeltext = document.createTextNode(attributeName + "*!"); + label.appendChild(labeltext); + isRequired = true; //set required as true for matching element }else { - var labeltext = document.createTextNode(attributeName); + var labeltext = document.createTextNode(attributeName); + if(isRequired){ + requiredLabName = attributeName+ " *"; + labeltext = document.createTextNode(requiredLabName); + }else{ + labeltext = document.createTextNode(attributeName); + } + + label.appendChild(labeltext); } label.appendChild(labeltext); @@ -717,10 +855,20 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind listField.setAttribute("style" , "width:300px;"); listField.setAttribute("ng-disabled" , "temp.policy.readOnly"); + if(isRequired){ + listField.setAttribute("required", true); + } + if( many != true || isRequired != true){ // add an empty option for not required or not multiple select element + var optionFirst = document.createElement('option'); + optionFirst.setAttribute('value', ""); + listField.appendChild(optionFirst); + } + for (i=0; i < listemunerateValues.length; i += 1) { option = document.createElement('option'); option.setAttribute('value', listemunerateValues[i]); option.appendChild(document.createTextNode(listemunerateValues[i])); + option.setAttribute('value', listemunerateValues[i]); listField.appendChild(option); } listField.setAttribute("id" , ''+ labelLevel + attributeName + ''); @@ -784,7 +932,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind if(plainAttributeKeys != null){ for(a = 0; a < plainAttributeKeys.length; a++){ var splitPlainAttributeKey = plainAttributeKeys[a].split(splitAt); - console.log(splitPlainAttributeKey[1]); + console.log("splitPlainAttributeKey: " + splitPlainAttributeKey); var searchElement = document.getElementById(splitPlainAttributeKey[0]); var key = splitPlainAttributeKey[0]; if(searchElement == null){ @@ -801,28 +949,20 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind if (elumentLocation > 1){ enumKey = keySplit[keySplit.length - 1]; } - var aWhiteSpace = " "; - if (enumKeyList.indexOf(enumKey) != -1){ - if (splitPlainAttributeKey[1].indexOf("true") !== -1){ + //check it is undefined or not + if (enumKeyList != undefined && enumKeyList.indexOf(enumKey) != -1){ + if (splitPlainAttributeKey[1]!= undefined && splitPlainAttributeKey[1].indexOf("true") !== -1){ var multiSlect = []; for ( var i = 0; i < searchElement.selectedOptions.length; i++) { multiSlect.push(searchElement.selectedOptions[i].value); } jsonPolicy[key]= multiSlect; }else{ - //set a space due to empty value caused JSON format error in PolicyRestAdapter and remove it in back-end. - if(searchElement.value == ""){ - searchElement.value = aWhiteSpace; - } console.log(" searchElement.value = > " + searchElement.value); jsonPolicy[key]= searchElement.value; } } else { if(searchElement.value != null){ - //set a default value due to empty value caused JSON format error in PolicyRestAdapter - if(searchElement.value == ""){ - searchElement.value = aWhiteSpace; - } console.log(" searchElement.value = > " + searchElement.value); jsonPolicy[key]= searchElement.value; } @@ -894,6 +1034,11 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind }else{ jsonPolicy[key]= searchElement.value; } + if(searchElement.getAttribute("required")){ + if(!searchElement.value){ + return; + } + } } else { if(searchElement.value != null){ jsonPolicy[key]= searchElement.value; @@ -908,6 +1053,32 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind } } var uuu = "policyController/validate_policy.htm"; + + console.log("$scope.isCheck:" + $scope.isCheck); + + if($scope.isCheck == true){ + if(("configName" in policy) == false){ + Notification.error("Validation Failed: configName is required"); + $scope.savebutton = true; + return; + } + if(("location" in policy) == false){ + Notification.error("Validation Failed: location is required"); + $scope.savebutton = true; + return; + } + if(("uuid" in policy) == false){ + Notification.error("Validation Failed: uuid is required"); + $scope.savebutton = true; + return; + } + if(("policyScope" in policy) == false){ + Notification.error("Validation Failed: policyScope is required"); + $scope.savebutton = true; + return; + } + } + var postData={policyData: policy, policyJSON : jsonPolicy}; $.ajax({ type : 'POST',