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=4cee2128d0cbca2d3937744b1ba39653635ead9d;hb=710011b4fb147bf100c52c4b0425160bba88a0fd;hp=dca8e916692d18c485c2e4b3ad4d0eb712170663;hpb=733918bc47b890af057416cdac3c321374acc321;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 dca8e9166..4cee2128d 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 @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP Policy Engine * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 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. @@ -17,6 +17,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$window', '$compile', 'PolicyAppService', 'policyNavigator', 'modalService', '$modal', 'Notification', function ($scope, $window, $compile, PolicyAppService, PolicyNavigator, modalService, $modal, Notification) { $("#dialog").hide(); @@ -32,7 +33,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind policyType : "Config", configPolicyType : "Micro Service" } - }; + } $scope.refresh = function(){ if($scope.refreshCheck){ @@ -170,9 +171,9 @@ 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. addNewChoice = function(value) { - console.log("input value : " + value); + console.log("input key : " + value); + var isFoundInRuleData = false; if(value != undefined){ if (value.startsWith('div.')){ value = value.replace('div.',''); @@ -188,9 +189,15 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind clone.id = ''+value+'@'+addElement; clone.value = ''; 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] || $scope.temp.policy.editPolicy){ // 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]; + isFoundInRuleData = true; + } + console.log(" clone.value :" + clone.value); + console.log(" clone.id :" + clone.id); + if(!isFoundInRuleData && isInitViewEdit){ + return; } if(!clone.className.includes("child_single")){ clone.className += ' child_single'; //here cloned is single element @@ -217,7 +224,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind layer++; if(layer > 4){ layer = 1 - }; + } div.className += ' children_group border' + layer; //here is div with a group of children. } } @@ -246,6 +253,8 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind for(var i=0; i1){ 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; @@ -442,14 +458,11 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind }); if($scope.temp.policy.editPolicy || $scope.temp.policy.readOnly){ // If it's veiw or edit - - if($scope.temp.policy.editPolicy){ - $scope.isInitEditTemplate = true; - } - + isInitViewEdit = true; var checkData = []; var data = []; // If ruleData contains extra elements created by clicked add button + console.log("$scope.temp.policy.ruleData:" + $scope.temp.policy.ruleData); if($scope.temp.policy.ruleData != null){ var propNames = Object.getOwnPropertyNames($scope.temp.policy.ruleData); propNames.forEach(function(name) { @@ -497,33 +510,44 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind } } } + + + for (var i = 0; i < $scope.labelManyKeys.length; i++) { + var label = $scope.labelManyKeys[i]; + if(parentLevelElements){ + for (var k = 0; k < parentLevelElements.length; k++){ + if(label == parentLevelElements[k]){ + addNewChoice(label); + } + } + } + } + //if no layout order info, keep the process as before if(!dataOrderInfo){ - for(var 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); - var index = unique[i].lastIndexOf("@"); - var newKey = unique[i].substring(0, index); - console.log("newKey: " + newKey); - addNewChoice(newKey); - } + for(var i =0; i < unique.length; i++){ + if(unique[i] != "*processed*"){ + var index = unique[i].lastIndexOf("@"); + var newKey = unique[i].substring(0, index); + console.log("newKey: " + newKey); + + var newElement = document.getElementById("div."+unique[j]); + //check weather it has been created already + if(newElement != null){ + continue; + }else{ + newElement = document.getElementById(unique[j]); + if(newElement != null){ + continue; + } + } + + if(newKey){ + addNewChoice(newKey); + } + } + } }else{ - - for (var i = 0; i < $scope.labelManyKeys.length; i++) { - //console.log("dataOrderInfo["+i+"]"+ dataOrderInfo[i]); - var label = $scope.labelManyKeys[i]; - - if(parentLevelElements){ - for (var k = 0; k < parentLevelElements.length; k++){ - if(label == parentLevelElements[k]){ - addNewChoice(label); - } - } - - } - - } - //---reset to default dataOrderInfo = []; $scope.labelManyKeys = []; @@ -561,6 +585,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind var ele = angular.element(document.getElementById("DynamicTemplate")); $compile(ele.contents())($scope); $scope.$apply(); + isInitViewEdit = false; }, error : function(data){ @@ -669,8 +694,6 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind var double = "double"; var boolean = "boolean"; var baseLevel = level; - var list = "list"; - var String = "String"; var attributekey = ""; @@ -729,10 +752,16 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind } else { var attirbuteLabel = label; var defaultValue=''; + var description=''; var isRequired = false; if (layOutData[key].includes('defaultValue-')){ defaultValue = layOutData[key].split('defaultValue-')[1]; } + + if (layOutData[key].includes('description-')){ + description = layOutData[key].split('description-')[1]; + } + if (key==="0"){ array = true; @@ -748,7 +777,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind var subAttributes = $scope.dcaeModelData.sub_attributes; - if(subAttributes){ + if(subAttributes){ var jsonObject = JSON.parse(subAttributes); var lablInfo = findVal(jsonObject, attributekey); @@ -757,6 +786,14 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind if(lablInfo.includes('required-true')){ isRequired = true; } + if(lablInfo.includes('defaultValue-')){ + defaultValue = lablInfo.split('defaultValue-')[1]; + } + + if(lablInfo.includes('description-')){ + description = lablInfo.split('description-')[1]; + } + }else{ var allkeys = Object.keys(jsonObject); if(allkeys){ @@ -769,6 +806,15 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind if (tempObject[key].includes('required-true')){ isRequired = true; } + + if(tempObject[key].includes('defaultValue-')){ + defaultValue = tempObject[key].split('defaultValue-')[1]; + } + + if(tempObject[key].includes('description-')){ + description = tempObject[key].split('description-')[1]; + } + } } } @@ -783,7 +829,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind case string: if($scope.dataOrderInfo){ elementOrderNum++; - elementObject = {"id": elementOrderNum,"attributekey" : attributekey, "array": array, "attirbuteLabel" : attirbuteLabel, "defaultValue": defaultValue, "isRequired": isRequired, "type":"text"}; + elementObject = {"id": elementOrderNum,"attributekey" : attributekey, "array": array, "attirbuteLabel" : attirbuteLabel, "defaultValue": defaultValue, "isRequired": isRequired, "type":"text", "description":description}; $scope.layOutElementList.push(elementObject); }else{ $scope.attributeBox(attributekey, array, attirbuteLabel, defaultValue, isRequired, "text"); @@ -793,7 +839,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind case integerValue: if($scope.dataOrderInfo){ elementOrderNum++; - elementObject = {"id": elementOrderNum,"attributekey" : attributekey, "array": array, "attirbuteLabel" : attirbuteLabel, "defaultValue": defaultValue,"isRequired": isRequired, "type":"number"}; + elementObject = {"id": elementOrderNum,"attributekey" : attributekey, "array": array, "attirbuteLabel" : attirbuteLabel, "defaultValue": defaultValue,"isRequired": isRequired, "type":"number" , "description":description}; $scope.layOutElementList.push(elementObject); }else{ $scope.attributeBox(attributekey, array, attirbuteLabel, defaultValue, isRequired, "number"); @@ -802,7 +848,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind case double: if($scope.dataOrderInfo){ elementOrderNum++; - elementObject = {"id": elementOrderNum,"attributekey" : attributekey, "array": array, "attirbuteLabel" : attirbuteLabel, "defaultValue": defaultValue,"isRequired": isRequired, "type":"double"}; + elementObject = {"id": elementOrderNum,"attributekey" : attributekey, "array": array, "attirbuteLabel" : attirbuteLabel, "defaultValue": defaultValue,"isRequired": isRequired, "type":"double", "description":description}; $scope.layOutElementList.push(elementObject); }else{ $scope.attributeBox(attributekey, array, attirbuteLabel, defaultValue, isRequired, "double"); @@ -811,7 +857,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind case boolean: if($scope.dataOrderInfo){ elementOrderNum++; - elementObject = {"id": elementOrderNum,"attributekey" : attributekey, "array": array, "attirbuteLabel" : attirbuteLabel, "defaultValue": layOutData[key], "list": getBooleanList, "isRequired": isRequired, "type":"dropBox"}; + elementObject = {"id": elementOrderNum,"attributekey" : attributekey, "array": array, "attirbuteLabel" : attirbuteLabel, "defaultValue": defaultValue, "isRequired": isRequired, "type":"boolean", "description":description}; $scope.layOutElementList.push(elementObject); }else{ $scope.dropBoxLayout(attirbuteLabel, attributekey, array, layOutData[key], getBooleanList()); @@ -827,7 +873,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind if (list.length===0){ //not dropdown element if($scope.dataOrderInfo){ elementOrderNum++; - elementObject = {"id": elementOrderNum,"attributekey" : attributekey, "array": array, "attirbuteLabel" : attirbuteLabel, "defaultValue": defaultValue,"isRequired": isRequired, "type":"text"}; + elementObject = {"id": elementOrderNum,"attributekey" : attributekey, "array": array, "attirbuteLabel" : attirbuteLabel, "defaultValue": defaultValue,"isRequired": isRequired, "type":"text", "description":description}; $scope.layOutElementList.push(elementObject); }else{ @@ -836,7 +882,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind }else{ if($scope.dataOrderInfo){ elementOrderNum++; - elementObject = {"id": elementOrderNum, "attributekey" : attributekey, "array": array, "attirbuteLabel" : attirbuteLabel, "defaultValue": layOutData[key],"isRequired": isRequired, "list":list, "type":"dropBox"}; + elementObject = {"id": elementOrderNum, "attributekey" : attributekey, "array": array, "attirbuteLabel" : attirbuteLabel, "defaultValue": defaultValue,"isRequired": isRequired, "list":list, "type":"dropBox", "description":description}; $scope.layOutElementList.push(elementObject); }else{ $scope.dropBoxLayout(attirbuteLabel, attributekey, array, layOutData[key], list, isRequired); @@ -927,15 +973,16 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind var attirbuteLabel = layOutElementList[j].attirbuteLabel.toString().trim(); var defaultValue = layOutElementList[j].defaultValue.toString().trim(); + var description = layOutElementList[j].description; var isRequired = layOutElementList[j].isRequired; console.log("layOutElementList[" +j+ "]: id:" + layOutElementList[j].id + ", attributekey:"+ layOutElementList[j].attributekey + ", attirbuteLabel:" + layOutElementList[j].attirbuteLabel); - console.log("layOutElementList[" +j+ "]: type:" + layOutElementList[j].type); + console.log("layOutElementList[" +j+ "]: type:" + layOutElementList[j].type); if (layOutElementList[j].type == "dropBox"){ - $scope.dropBoxLayout(attirbuteLabel, attributekey, layOutElementList[j].array, defaultValue, layOutElementList[j].list, isRequired); + $scope.dropBoxLayout(attirbuteLabel, attributekey, layOutElementList[j].array, defaultValue, layOutElementList[j].list, isRequired, description); }else{ - $scope.attributeBox(attributekey, layOutElementList[j].array, attirbuteLabel, defaultValue, isRequired, layOutElementList[j].type); + $scope.attributeBox(attributekey, layOutElementList[j].array, attirbuteLabel, defaultValue, isRequired, layOutElementList[j].type, description); } @@ -949,7 +996,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind } - $scope.attributeBox = function(attibuteKey, attributeManyKey, labelValue, defaultValue, isRequired, dataType ){ + $scope.attributeBox = function(attibuteKey, attributeManyKey, labelValue, defaultValue, isRequired, dataType, description){ $scope.temp.policy.ruleGridData.push(attibuteKey); var br = document.createElement("BR"); @@ -983,15 +1030,62 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind textField.setAttribute("class" , "form-control"); if(dataType){ - if(dataType == "double"){ - textField.setAttribute("type" , "number"); - textField.setAttribute("step" , "any"); - }else{ + if(dataType == "double"){ + textField.setAttribute("type" , "number"); + textField.setAttribute("step" , "any"); + + }else if(dataType == "boolean"){ //gw1218 testing boolean + var booleanDiv = document.createElement("div"); + + booleanDiv.setAttribute("class" , "onoffswitch"); + + //var checkField = document.createElement("INPUT"); + textField.setAttribute("type" , "checkbox"); + textField.setAttribute("name" , "onoffswitch"); + textField.setAttribute("class" , "onoffswitch-checkbox"); + textField.setAttribute("id" , ''+labelValue +attibuteKey+''); + if(defaultValue.substring(0,defaultValue.indexOf(":")) == "true") { + textField.setAttribute("checked" , true); + }else{ + textField.removeAttribute("checked"); + } + + var booleanlabel = document.createElement("Label"); + booleanlabel.setAttribute("class" , "onoffswitch-label"); + booleanlabel.setAttribute("for" , ''+labelValue +attibuteKey+''); + + var span1 = document.createElement("span"); + span1.setAttribute("class" , "onoffswitch-inner"); + + var span2 = document.createElement("span"); + span2.setAttribute("class" , "onoffswitch-switch"); + + + booleanlabel.appendChild(span1); + booleanlabel.appendChild(span2); + booleanDiv.appendChild(textField); + booleanDiv.appendChild(booleanlabel); + + document.getElementById(divID).appendChild(label); + document.getElementById(divID).appendChild(booleanDiv); + + //return; + } else{ textField.setAttribute("type" , dataType); } + + + } - textField.setAttribute("style" , "width:300px;"); - textField.setAttribute("ng-disabled" , "temp.policy.readOnly"); + + if(dataType != "boolean"){ + textField.setAttribute("style" , "width:300px;"); + textField.setAttribute("ng-disabled" , "temp.policy.readOnly"); + if(description && description != "null"){ + textField.setAttribute("title", description); + } + } + var checkKey; var id = ""; if(attributeManyKey){ @@ -1022,11 +1116,12 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind textField.className += ' first_child'; if(isRequired){ textField.setAttribute("required", "true"); - } + } + divTag.appendChild(textField); document.getElementById(divID).appendChild(divTag); - }else{ + }else if (dataType != "boolean"){ checkKey = labelValue + attibuteKey; textField.setAttribute("id" , ''+labelValue +attibuteKey+''); if(document.getElementById(divID).hasAttribute('required') || !document.getElementById(divID).hasAttribute('data-conditional')){ @@ -1056,7 +1151,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind } - if(divID.includes("@0") && divID.includes("div.")){ + if(dataType != "boolean" && divID.includes("@0") && divID.includes("div.")){ var firstChild_Id = divID.split("@0")[0]; var firstChild_element = document.getElementById(firstChild_Id); if(firstChild_element){ @@ -1065,7 +1160,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind layer++; if(layer > 4){ layer = 1 - }; + } firstChild_element.className += ' children_group border' + layer; //here is div with a group of children. } } @@ -1073,7 +1168,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind console.log('firstChild_Id: ' + firstChild_Id); console.log('divID: ' + divID); - if (defaultValue.length > 0){ + if(dataType != "boolean" && defaultValue.length > 0){ if(defaultValue.includes(":")){ defaultValue = defaultValue.split(":")[0]; if(defaultValue === "NA") { @@ -1098,18 +1193,18 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind } } } - plainAttributeKeys.push(labelValue + attibuteKey+'*'+attributeManyKey); + + if (dataType != "boolean"){ + plainAttributeKeys.push(labelValue + attibuteKey+'*'+attributeManyKey); + }else{ + plainAttributeKeys.push(labelValue + attibuteKey+'*'+"boolean"); + } }; $scope.labelManyKeys = []; $scope.labelLayout = function(labelValue, lableName, labelManyKey ){ var label = document.createElement("Label") var divID = labelValue; - if (labelValue.endsWith('.')){ - var workingLabel = labelValue.substring(0, labelValue.length-1); - }else { - var workingLabel = labelValue; - } if (labelValue.length < 1){ divID = "DynamicTemplate"; @@ -1167,7 +1262,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind layer++; if(layer > 4){ layer = 1 - }; + } divTag.className += ' children_group border' + layer; //here is div with a group of children. } if(required){ @@ -1188,7 +1283,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind layer++; if(layer > 4){ layer = 1 - }; + } divTag.className += ' children_group border' + layer; //here is div with a group of children. } if(required){ @@ -1201,7 +1296,7 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind } }; - $scope.dropBoxLayout = function(labelLevel, attributeName, many , refValue, listemunerateValues, isRequired){ + $scope.dropBoxLayout = function(labelLevel, attributeName, many , defaultValue, listemunerateValues, isRequired, description){ var br = document.createElement("BR"); if (labelLevel.length < 1){ @@ -1229,7 +1324,6 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind label.appendChild(labeltext); isRequired = true; //set required as true for matching element }else { - var labeltext = document.createTextNode(attributeName); if(isRequired){ var requiredLabName = attributeName+ " * "; labeltext = document.createTextNode(requiredLabName); @@ -1252,118 +1346,188 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind requiredNodeToolTip.textContent = "Conditional Required"; requiredNode.appendChild(requiredNodeToolTip); + } + + var listField = document.createElement("SELECT"); + listField.setAttribute("class" , "form-control"); + listField.setAttribute("style" , "width:300px;"); + listField.setAttribute("ng-disabled" , "temp.policy.readOnly"); + + if(description && description != "null"){ + listField.setAttribute("title", description); + } + + if(isRequired){ + if(document.getElementById(divID).hasAttribute('data-conditional')){ + listField.setAttribute("data-conditional", divID); + listField.setAttribute("ng-blur", "validContionalRequired('"+divID+"')"); + }else{ + listField.setAttribute("required", true); } - - var listField = document.createElement("SELECT"); - listField.setAttribute("class" , "form-control"); - listField.setAttribute("style" , "width:300px;"); - listField.setAttribute("ng-disabled" , "temp.policy.readOnly"); - - if(isRequired){ - if(document.getElementById(divID).hasAttribute('data-conditional')){ - listField.setAttribute("data-conditional", divID); - listField.setAttribute("ng-blur", "validContionalRequired('"+divID+"')"); - }else{ - 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); + } + if( many != true || isRequired != true){ // add an empty option for not required or not multiple select element + var optionFirst = document.createElement('option'); + var optionValue = ""; + if($scope.temp.policy.ruleData != null){ + if($scope.temp.policy.ruleData[labelLevel + attributeName] != undefined && $scope.temp.policy.ruleData[labelLevel + attributeName] != "undefined"){ + optionValue = $scope.temp.policy.ruleData[labelLevel + attributeName]; + } + } + optionFirst.setAttribute('value', optionValue); + optionFirst.appendChild(document.createTextNode(optionValue)); + listField.appendChild(optionFirst); + } + var ruleFormationCheck = false; + if(listemunerateValues.length !== 0 && typeof listemunerateValues[0] == "string" && listemunerateValues[0].includes("dictionary:")) { + var ruleCheck = listemunerateValues[0].split("&"); + var dictParams = ruleCheck[0].split(":"); + var dictParamsSplit = dictParams[1].split("@"); + if (ruleCheck[1] != undefined && ruleCheck[1] == 'Rule') { + ruleFormationCheck = true; } - + PolicyAppService.getData(dictParamsSplit[0]).then(function (data) { + var j = data; + $scope.data = JSON.parse(j.data); + console.log($scope.data); + $scope.listDictionarys = JSON.parse($scope.data[dictParamsSplit[1]]); + for (i=0; i < $scope.listDictionarys.length; i += 1) { + option = document.createElement('option'); + option.setAttribute('value', $scope.listDictionarys[i]); + option.appendChild(document.createTextNode($scope.listDictionarys[i])); + listField.appendChild(option); + } + }, function (error) { + console.log("failed"); + }); + + } + else{ for (i=0; i < listemunerateValues.length; i += 1) { - if(listemunerateValues[i].includes("equal-sign")){ + if(typeof listemunerateValues[i] == "string" && listemunerateValues[i].includes("equal-sign")){ listemunerateValues[i] = listemunerateValues[i].replace('equal-sign','='); } + 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 + ''); - - enumKeyList.push(attributeName); - - document.getElementById(divID).appendChild(label); - document.getElementById(divID).appendChild(br); - - if(many == true){ - document.getElementById(divID).appendChild(listField).multiple = true; - plainAttributeKeys.push(labelLevel + attributeName+'*'+true); - }else { - document.getElementById(divID).appendChild(listField).multiple = false; - plainAttributeKeys.push(labelLevel + attributeName+'*'+false); + } + listField.setAttribute("id" , ''+ labelLevel + attributeName + ''); + + enumKeyList.push(attributeName); + + document.getElementById(divID).appendChild(label); + document.getElementById(divID).appendChild(br); + + if(many == true){ + document.getElementById(divID).appendChild(listField).multiple = true; + plainAttributeKeys.push(labelLevel + attributeName+'*'+true); + }else { + document.getElementById(divID).appendChild(listField).multiple = false; + plainAttributeKeys.push(labelLevel + attributeName+'*'+false); + + if (defaultValue){ + if(defaultValue.includes(':')){ + defaultValue = defaultValue.split(':')[0]; + } + var location = listemunerateValues.indexOf(defaultValue); + document.getElementById(labelLevel +attributeName).options[location+1].selected = true; } - - if($scope.temp.policy.ruleData != null){ - if (many == true){ - document.getElementById(labelLevel +attributeName).options[0].selected = false; - for (i=0; i < listemunerateValues.length; i += 1) { - var testValue = $scope.temp.policy.ruleData[labelLevel +attributeName+'@' + i]; - if (testValue === undefined){ - testValue = $scope.temp.policy.ruleData[labelLevel +attributeName]; - } - var location = listemunerateValues.indexOf(testValue); - if (location!=-1){ - document.getElementById(labelLevel +attributeName).options[location].selected = true; - } - } - }else { - if($scope.temp.policy.ruleData[labelLevel + attributeName] != undefined && $scope.temp.policy.ruleData[labelLevel + attributeName] != "undefined"){ - document.getElementById(labelLevel + attributeName).value = $scope.temp.policy.ruleData[labelLevel + attributeName]; - } + } + + if (ruleFormationCheck) { + var optionInput = document.createElement("INPUT"); + optionInput.setAttribute("type" , "text"); + optionInput.setAttribute("id" , ''+ labelLevel + attributeName + '.input'); + optionInput.setAttribute("name" , "ruleName"); + optionInput.setAttribute("value" , " "); + optionInput.setAttribute("style" , "width:300px;"); + optionInput.setAttribute("ng-disabled" , "temp.policy.readOnly"); + optionInput.removeAttribute("required"); + + document.getElementById(divID).appendChild(optionInput); + + var optionButton = document.createElement("BUTTON"); + optionButton.setAttribute("ng-disabled" , "temp.policy.readOnly"); + var buttonLabel = document.createTextNode("+"); + optionButton.appendChild(buttonLabel); + optionButton.setAttribute("class", "btn btn-add-remove"); + optionButton.setAttribute("onclick" , 'addDynamicOptions("'+ labelLevel + attributeName + '");'); + optionButton.removeAttribute("required"); + + + document.getElementById(divID).appendChild(optionButton); + document.getElementById(divID).appendChild(br); + } + + if($scope.temp.policy.ruleData != null){ + if (many == true){ + document.getElementById(labelLevel +attributeName).options[0].selected = false; + for (i=0; i < listemunerateValues.length; i += 1) { + var testValue = $scope.temp.policy.ruleData[labelLevel +attributeName+'@' + i]; + if (testValue === undefined){ + testValue = $scope.temp.policy.ruleData[labelLevel +attributeName]; + } + var location = listemunerateValues.indexOf(testValue); + if (location!=-1){ + document.getElementById(labelLevel +attributeName).options[location].selected = true; } + } + }else { + if($scope.temp.policy.ruleData[labelLevel + attributeName] != undefined && $scope.temp.policy.ruleData[labelLevel + attributeName] != "undefined"){ + document.getElementById(labelLevel + attributeName).value = $scope.temp.policy.ruleData[labelLevel + attributeName]; } - }; - - function onlyUnique(value, index, self) { - return self.indexOf(value) === index; - }; - - - function checkDictionary(value){ - for (i = 0; i < $scope.microServiceAttributeDictionaryDatas.length; i++) { - if ($scope.microServiceAttributeDictionaryDatas[i].name.localeCompare(value)){ - return true; - } - } - - } - $scope.savePolicy = function(policy){ - if(policy.itemContent != undefined){ - $scope.refreshCheck = true; - $scope.policyNavigator = policy.itemContent; - policy.itemContent = ""; - } - $scope.savebutton = false; - var splitAt = '*'; - var dot ='.'; - var jsonPolicy = {}; - if(plainAttributeKeys != null){ - for(a = 0; a < plainAttributeKeys.length; a++){ - var splitPlainAttributeKey = plainAttributeKeys[a].split(splitAt); - console.log("splitPlainAttributeKey: " + splitPlainAttributeKey); - var searchElement = document.getElementById(splitPlainAttributeKey[0]); - var key = splitPlainAttributeKey[0]; - if(searchElement == null){ - searchElement = document.getElementById(splitPlainAttributeKey[0]+'@0'); - key = splitPlainAttributeKey[0]+'@0'; - }else if (searchElement.nodeName == 'BUTTON'){ - searchElement = document.getElementById(splitPlainAttributeKey[0]+'@0'); - key = splitPlainAttributeKey[0]+'@0'; - } - if(searchElement != null){ - var keySplit = key.split(dot); - var elumentLocation = keySplit.length; - var enumKey = key; - if (elumentLocation > 1){ - enumKey = keySplit[keySplit.length - 1]; - } - //check it is undefined or not - if (enumKeyList != undefined && enumKeyList.indexOf(enumKey) != -1){ + } + } + }; + + addDynamicOptions = function(id) { + var option = document.createElement("option"); + var value = document.getElementById(id+".input").value; + option.setAttribute('value', value); + option.appendChild(document.createTextNode(value)); + document.getElementById(id).options.add(option); + document.getElementById(id+".input").value = ""; + }; + + function onlyUnique(value, index, self) { + return self.indexOf(value) === index; + } + + $scope.savePolicy = function(policy){ + if(policy.itemContent != undefined){ + $scope.refreshCheck = true; + $scope.policyNavigator = policy.itemContent; + policy.itemContent = ""; + } + $scope.savebutton = false; + var splitAt = '*'; + var dot ='.'; + var jsonPolicy = {}; + if(plainAttributeKeys != null){ + for(a = 0; a < plainAttributeKeys.length; a++){ + var splitPlainAttributeKey = plainAttributeKeys[a].split(splitAt); + console.log("splitPlainAttributeKey: " + splitPlainAttributeKey); + var searchElement = document.getElementById(splitPlainAttributeKey[0]); + var key = splitPlainAttributeKey[0]; + if(searchElement == null){ + searchElement = document.getElementById(splitPlainAttributeKey[0]+'@0'); + key = splitPlainAttributeKey[0]+'@0'; + }else if (searchElement.nodeName == 'BUTTON'){ + searchElement = document.getElementById(splitPlainAttributeKey[0]+'@0'); + key = splitPlainAttributeKey[0]+'@0'; + } + if(searchElement != null){ + var keySplit = key.split(dot); + var elumentLocation = keySplit.length; + var enumKey = key; + if (elumentLocation > 1){ + enumKey = keySplit[keySplit.length - 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++) { @@ -1372,12 +1536,30 @@ angular.module('abs').controller('dcaeMicroServiceController', ['$scope', '$wind jsonPolicy[key]= multiSlect; }else{ console.log(" searchElement.value = > " + searchElement.value); - jsonPolicy[key]= searchElement.value; + if(splitPlainAttributeKey[1]!= undefined && splitPlainAttributeKey[1] == "boolean"){ + jsonPolicy[key]= false; + for(var i=0; i " + searchElement.value); - jsonPolicy[key]= searchElement.value; + if(splitPlainAttributeKey[1] == "boolean"){ + jsonPolicy[key]= false; + for(var i=0; i