aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/resources/META-INF/resources/designer/scripts/OperationalPolicyCtrl.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/resources/META-INF/resources/designer/scripts/OperationalPolicyCtrl.js')
-rw-r--r--src/main/resources/META-INF/resources/designer/scripts/OperationalPolicyCtrl.js482
1 files changed, 115 insertions, 367 deletions
diff --git a/src/main/resources/META-INF/resources/designer/scripts/OperationalPolicyCtrl.js b/src/main/resources/META-INF/resources/designer/scripts/OperationalPolicyCtrl.js
index d607a49d..5a1ac538 100644
--- a/src/main/resources/META-INF/resources/designer/scripts/OperationalPolicyCtrl.js
+++ b/src/main/resources/META-INF/resources/designer/scripts/OperationalPolicyCtrl.js
@@ -33,14 +33,11 @@ app
function($scope, $rootScope, $uibModalInstance, data, operationalPolicyService, dialogs) {
console.log("//////operationalPolicyCtrl");
- var parent_policy = {}
- var policy_ids = {}
- var loadingId = false;
+ $scope.policy_ids = []
var allPolicies = {};
- var allPolIds = [];
-
- $scope.guardType="GUARD_MIN_MAX";
- $scope.targetResource="";
+ $scope.guardType = "GUARD_MIN_MAX";
+ $scope.number = 0;
+ $scope.clname="";
function getAllFormId() {
return Array.from(document.getElementsByClassName("formId"));
@@ -68,142 +65,13 @@ app
});
}
}
- // load recipes for a chosen policy
- function disperseConfig(policyObj, id) {
-
- console.log("disperseConfig with id:" + id);
- parent_policy = {};
- // remove old gui forms
- for (var i = 1; i < ($(".formId").length + 1); i++) {
- $("#go_properties_tab" + i).parent().remove();
- }
- $(".formId").remove();
- if (policyObj !== undefined && policyObj[id] !== undefined) {
- var el = policyObj[id][3]['policyConfigurations']
- for (var i = 0; i < el.length; i++) {
- loadingId = true;
- var num = add_one_more();
- console.log("number is=:" + num);
- loadingId = false;
- for (var j = 0; j < el[i].length; j++) {
- console.log("attr:" + el[i][j].name + "; value is:" + el[i][j].value);
- if (el[i][j].hasOwnProperty("name")) {
- $("#formId" + num + " #" + el[i][j].name).val(el[i][j].value);
- if (el[i][j].name === "_id") {
- console.log("formId num:" + num + "; value is:" + el[i][j].value);
- policy_ids["#formId" + num] = el[i][j].value
- }
- if (el[i][j].name === 'parentPolicy')
- parent_policy[num] = el[i][j].value
- if (el[i][j].name === 'recipe' && el[i][j].value.toString() !== '') {
- $("#go_properties_tab" + num).text(el[i][j].value)
- }
- if (el[i][j].name === "targetResourceIdOther" && el[i][j].value.toString() !== '') {
- // Add the entry and set it
- $("#formId" + num + " #targetResourceId").append(
- $('<option></option>').val($("#formId" + num + " #targetResourceIdOther").val()).html(
- $("#formId" + num + " #targetResourceIdOther").val()));
- $("#formId" + num + " #targetResourceId").val(
- $("#formId" + num + " #targetResourceIdOther").val());
- }
- $scope.changeGuardPolicyType();
- }
- }
- }
- // Adding all the ids for parent policy options
- for (var i = 1; i <= $(".formId").length; i++) {
- for (k in policy_ids) {
- if ($("#formId" + i + " #_id").val() !== policy_ids[k].toString()
- && $(k + " #recipe").val() !== undefined && $(k + " #recipe").val() !== "") {
- $("#formId" + i + " #parentPolicy").append(
- "<option value=\"" + policy_ids[k] + "\">" + $(k + " #recipe").val() + "</option>");
- }
- }
- }
- for (k in parent_policy) {
- $("#formId" + k + " #parentPolicy").val(parent_policy[k]);
- if ($("#formId" + k + " #parentPolicy").val() == "") {
- $("#formId" + k + " #parentPolicyConditions").multiselect("disable");
- } else {
- $("#formId" + k + " #parentPolicyConditions").multiselect("enable");
- }
- // force the change event
- $("#formId" + k + " #parentPolicy").change();
- }
- // Now load all component with the right value defined in
- // policyObj JSON
- for (headInd in policyObj[id]) {
- if (!(policyObj[id][headInd].hasOwnProperty("policyConfigurations"))) {
- $("#" + policyObj[id][headInd].name).val(policyObj[id][headInd].value);
- }
- }
- }
- setMultiSelect();
- if (readMOnly) {
- $('select[multiple] option').each(function() {
-
- var input = $('input[value="' + $(this).val() + '"]');
- input.prop('disabled', true);
- input.parent('li').addClass('disabled');
- });
- $('input[value="multiselect-all"]').prop('disabled', true).parent('li').addClass('disabled');
- }
- }
- function addSelectListen(count) {
-
- var onSelectChange = function() {
-
- var opselected = this.selectedOptions[0].text;
- if (this.id == "recipe") {
- if (opselected !== "") {
- var polCount = $(this).closest("[id^='formId']").attr("id").substring(6);
- $(this).closest(".policyPanel").find("#go_properties_tab" + polCount).text(opselected);
- } else {
- $(this).closest("[id^='go_properties_tab']").text("Policy");
- }
- }
- if (this.id == "parentPolicy") {
- var ppCond = $(this).closest("[id^='formId']").find("#parentPolicyConditions");
- if (opselected == "") {
- ppCond.multiselect("clearSelection");
- ppCond.multiselect("disable");
- } else {
- ppCond.multiselect("enable");
- }
- }
- };
- $("#formId" + count + " select").each(function() {
-
- this.change = onSelectChange;
- });
- }
- // This is ensure there are no repeated keys in the map
- function noRepeats(form) {
-
- // triggered per policy.
- var select = {};
- for (var i = 0; i < form.length; i++) {
- if (select[form[i].name] === undefined)
- select[form[i].name] = []
- select[form[i].name].push(form[i].value);
- }
- var arr = []
- for (s in select) {
- var f = {}
- f.name = s
- f.value = select[s]
- arr.push(f)
- }
- return arr
- }
function add_one_more() {
console.log("add one more");
- setPolicyOptions();
$("#nav_Tabs li").removeClass("active");
// FormSpan contains a block of the form that is not being
// displayed. We will create clones of that and add them to tabs
- var form = $($("#formSpan").children()[0]).clone()
+ var form = $("#formSpan").clone(true, true)
var count = 0;
// Each new tab will have the formId class attached to it. This way
// we can track how many forms we currently have out there and
@@ -222,50 +90,18 @@ app
count++;
$("#properties_tab").append('<span class="formId" id="formId1"></span>');
}
- // $(form).find("#policyName").val("Recipe "+makid(2))
- // TODO change up how we auto assign policyName. There could be the
- // case where we do this and it will have repeats
- // alert($(form).find("#_id").val())
- // policyNameChangeListener(form)
$("#add_one_more")
.parent()
.before(
' <li class="active"><a id="go_properties_tab'
+ count
- + '">Policy</a><button id="tab_close'
+ + '">new</a><button id="tab_close'
+ count
+ '" type="button" class="close tab-close-popup" aria-hidden="true" style="margin-top: -30px;margin-right: 5px">&times;</button></li>');
- $("#formId" + count).append(form);
- $(".formId").not($("#formId" + count)).css("display", "none")
- addCustListen(count)
- addSelectListen(count);
- // This is for when the process is not loading from map but being
- // created
- if (!loadingId) {
- var l = makeid()
- $(form).find("#_id").val(l)
- policy_ids["#formId" + count] = l
- var answers = {}
- for (var i = 1; i <= greatestIdNum(); i++) {
- if ($("#formId" + i).length > 0) {
- answers["#formId" + i + " #parentPolicy"] = $("#formId" + i + " #parentPolicy").val();
- $("#formId" + i + " #parentPolicy").empty();
- for (k in policy_ids) {
- if (($("#formId" + i + " #_id").val() !== policy_ids[k].toString())
- && $(k + " #recipe").val() !== undefined && $(k + " #recipe").val() !== "") {
- $("#formId" + i + " #parentPolicy").append(
- "<option value='" + policy_ids[k] + "'>" + $(k + " #recipe").val() + "</option>")
- }
- }
- $("#formId" + i + " #parentPolicy").prepend("<option value=''></option>")
- }
- }
- $("#formId" + count + " #parentPolicyConditions").multiselect("disable");
- // re-populate parent policy with chosen options
- for (k in answers) {
- $(k).val(answers[k])
- }
- }
+ $("#formId" + count).append(form.children());
+ $(".formId").not($("#formId" + count)).css("display", "none");
+ addCustListen(count);
+ $("#formId" + count + " #id").val("new");
return count;
}
function addCustListen(count) {
@@ -277,26 +113,10 @@ app
$("#formId" + count).css("display", "")
$(".formId").not($("#formId" + count)).css("display", "none")
})
- $('#tab_close' + count).click(
- function(event) {
+ $('#tab_close' + count).click(function(event) {
- if (document.getElementById("timeout").disabled) {
- return false;
- }
$(this).parent().remove();
- for (var i = 1; i <= greatestIdNum(); i++) {
- if ($("#formId" + i).length > 0) {
- if (i !== count) {
- if ($("#formId" + i + " #parentPolicy").val() === $("#formId" + count + " #_id").val()
- .toString())
- $("#formId" + i + " #parentPolicy").val("")
- $(
- "#formId" + i + " #parentPolicy option[value='"
- + $("#formId" + count + " #_id").val().toString() + "']").remove();
- }
- }
- }
- delete policy_ids["#formId" + count + " #_id"]
+ $scope.policy_ids.splice($scope.policy_ids.indexOf($("#formId" + count + " #id").val()), 1);
$("#formId" + count).remove();
})
}
@@ -311,70 +131,43 @@ app
}
return greatest;
}
- // Generate random id for each policy
- // Also made sure ids couldnt be repeated
- function makeid(num) {
-
- var text = "";
- var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- if (num == null)
- num = 7;
- for (var i = 0; i < 7; i++)
- text += possible.charAt(Math.floor(Math.random() * possible.length));
- var hasValue = false;
- for (k in policy_ids) {
- if (text === policy_ids[k])
- hasValue = true
- }
- if (hasValue)
- return makeid(num);
- else
- return text
- }
- // var ParentPolicy = function(id, name) {
- //
- // this.id = id
- // this.name = name
- // }
- function saveLastPolicyLocally(lastPolicyId) {
-
- console.log("last policy id is:" + lastPolicyId);
- var polForm = []
- var properties = $(".saveProps").not("#formSpan .saveProps");
- var timeoutForm = $("#Timeoutform").serializeArray();
- for (var i = 0; i < timeoutForm.length; i++) {
- polForm.push(timeoutForm[i]);
- }
- var d = {}
- d["policyConfigurations"] = [];
- for (var i = 0; i < properties.length; i++) {
- var ser = $(properties[i]).serializeArray();
- var s = noRepeats(ser)
- d["policyConfigurations"].push(s);
- }
- polForm.push(d);
- for ( var x in allPolicies) {
- if (x !== lastPolicyId) {
- delete allPolicies[x];
- console.log("remove old policy" + x);
+ function serializeElement(element) {
+
+ var o = {};
+ var a = element.serializeArray();
+ $.each(a, function() {
+
+ if (o[this.name]) {
+ if (!o[this.name].push) {
+ o[this.name] = [ o[this.name] ];
+ }
+ o[this.name].push(this.value || '');
+ } else {
+ o[this.name] = this.value || '';
}
- }
- allPolicies[lastPolicyId] = polForm;
+ });
+ return o;
}
- function startNextItem() {
-
- console.log("start next Item, policyname is:" + $("#pname").val());
- // save last item before transitioning
- var lastItem = $("#policyTable .highlight");
- console.log("start next Item, lastitem is:" + lastItem);
- if (lastItem.length > 0) {
- console.log("start next Item length > 0");
- saveLastPolicyLocally($("#pname").val());
- // lastItem.attr("id", $("#pname").val());
- lastItem.find("td").html($("#pname").val());
- }
+ function savePolicyLocally() {
+
+ var polForm = {}
+ polForm = serializeElement($("#operationalPolicyHeaderForm"));
+ var policiesArray = []
+ allPolicies['guard_policies'] = [];
+ $.each($(".formId"), function() {
+
+ var policyProperties = serializeElement($("#" + this.id + " .policyProperties"));
+ policyProperties["target"] = serializeElement($("#" + this.id + " .policyTarget"))
+ policiesArray.push(policyProperties);
+ // Now get the Guard
+ if ($("#" + this.id + " #enableGuardPolicy").is(':checked')) {
+ allPolicies['guard_policies'].push(serializeElement($("#" + this.id + " .guardProperties")));
+ }
+ });
+ polForm['policies'] = policiesArray;
+ allPolicies['operational_policy'] = polForm;
}
- function add_new_policy(issueNewNames) {
+ function add_new_policy() {
console.log("add new policy");
// remove old gui forms
@@ -382,22 +175,44 @@ app
$("#go_properties_tab" + i).parent().remove();
}
$(".formId").remove();
- $("#pname").val("New_Policy");
- $("#timeout").val(getOperationalPolicyProperty().timeout);
$("#add_one_more").click();
}
- $scope.changeTargetResourceIdOther = function() {
+ function configureComponents(allPolicies) {
- var formItemActive = searchActiveFormId();
- if (formItemActive === undefined)
- return;
- if ($("#" + formItemActive.id + " #targetResourceId").val() === "Other:") {
- $("#" + formItemActive.id + " #targetResourceIdOther").show();
- } else {
- $("#" + formItemActive.id + " #targetResourceIdOther").hide();
- $("#" + formItemActive.id + " #targetResourceIdOther").val("");
- }
+ console.log("load properties to op policy");
+ // Set the header
+ $.each($('#operationalPolicyHeaderForm').find('.form-control'), function() {
+
+ $(this).val(allPolicies['operational_policy'][this.id]);
+ });
+ // Set the sub-policies
+ $.each(allPolicies['operational_policy']['policies'], function(opPolicyElemIndex, opPolicyElemValue) {
+
+ var formNum = add_one_more();
+ $.each($('.policyProperties').find('.form-control'), function(opPolicyPropIndex, opPolicyPropValue) {
+
+ $("#formId"+formNum+" .policyProperties").find("#"+opPolicyPropValue.id).val(
+ allPolicies['operational_policy']['policies'][opPolicyElemIndex][opPolicyPropValue.id]);
+ });
+ // update the current tab label
+ $("#go_properties_tab" + formNum).text(
+ allPolicies['operational_policy']['policies'][opPolicyElemIndex]['id']);
+ // Check if there is a guard set for it
+ $.each(allPolicies['guard_policies'], function(guardElemIndex, guardElemValue) {
+
+ if (guardElemValue.recipe === $($("#formId" + formNum + " #recipe")[0]).val()) {
+ // Found one, set all guard prop
+ $.each($('.guardProperties').find('.form-control'), function(guardPropElemIndex,guardPropElemValue) {
+ $("#formId"+formNum+" .guardProperties").find("#"+guardPropElemValue.id).val(
+ allPolicies['guard_policies'][guardElemIndex][guardPropElemValue.id]);
+ });
+ // And finally enable the flag
+ $("#formId" + formNum + " #enableGuardPolicy").prop("checked", true);
+ }
+ });
+ });
}
+
$scope.changeGuardPolicyType = function() {
var formItemActive = searchActiveFormId();
@@ -411,131 +226,64 @@ app
$("#" + formItemActive.id + " #frequencyLimiterGuardPolicyDiv").show();
}
}
+ $scope.initPolicySelect = function() {
+
+ if (allPolicies['operational_policy'] === undefined || allPolicies['operational_policy'] === null) {
+ allPolicies = getOperationalPolicyProperty();
+ }
+ // Provision all policies ID first
+ if ($scope.policy_ids.length == 0 && allPolicies['operational_policy'] != undefined) {
+ $.each(allPolicies['operational_policy']['policies'], function() {
+
+ $scope.policy_ids.push(this['id']);
+ });
+ }
+ }
$scope.init = function() {
$(function() {
-
+ $scope.clname=getLoopName();
$("#add_one_more").click(function(event) {
console.log("add one more");
event.preventDefault();
- var num = add_one_more();
- setMultiSelect();
+ $scope.policy_ids.push($("#formId" + add_one_more() + " #id").val());
});
- var obj = getOperationalPolicyProperty();
- var loadPolicy;
- console.log("lastElementSelected :" + lastElementSelected);
- if (!($.isEmptyObject(obj))) {
- allPolicies = jQuery.extend({}, obj);
- for ( var x in allPolicies) {
- $("#policyTable").prepend("<tr><td>" + x + "</td></tr>");
- if (allPolicies[x][1]['value']) {
- allPolIds.push(parseInt(allPolicies[x][1]['value']));
- }
- console.log("policies found :" + x);
- loadPolicy = x;
- }
- }
- if (loadPolicy !== undefined && loadPolicy !== null) {
+ if (allPolicies['operational_policy'] !== undefined && allPolicies['operational_policy'] !== null) {
// load properties
console.log("load properties");
- disperseConfig(allPolicies, loadPolicy);
+ configureComponents(allPolicies);
} else {
console.log("create new policy");
add_new_policy();
}
- $("#savePropsBtn").click(
- function(event) {
+ $("#savePropsBtn").click(function(event) {
console.log("save properties triggered");
- if ($("#targetResourceIdOther").is(":visible")) {
- $('#targetResourceId').append(
- $('<option></option>').val($("#targetResourceIdOther").val()).html(
- $("#targetResourceIdOther").val()))
- $("#targetResourceId").val($("#targetResourceIdOther").val());
- }
- $(".idError").hide();
- console.log("save properties triggered2");
- startNextItem();
- console.log("get all policies");
- var finalSaveList = {};
- $("#policyTable td").each(function() {
-
- console.log("enter policy table each loop");
- var tableVal = $(this).text();
- if (tableVal in allPolicies) {
- finalSaveList[tableVal] = allPolicies[tableVal];
- }
- console.log("save properties; add tableVal to policies: " + tableVal);
- });
- var scope = angular.element(document.getElementById('formSpan')).scope();
- scope.submitForm(finalSaveList);
+ savePolicyLocally();
+ angular.element(document.getElementById('formSpan')).scope().submitForm(allPolicies);
$("#close_button").click();
});
- $('#policyTable').on('click', 'tr', function(event) {
-
- console.log("click on policyTable");
- $(".idError").hide();
- if (!(readMOnly)) {
- startNextItem();
- }
- $(this).addClass('highlight').siblings().removeClass('highlight');
- disperseConfig(allPolicies, $(this).find("td").html());
- });
- $('#pname').on('keypress', function(e) {
-
- /*
- * var newVal = $(this).val() +
- * String.fromCharCode(e.which); if ((newVal>99) ||
- * (($(this).val().length>2) && e.keyCode != 46 && e.keyCode
- * !=8)){ e.preventDefault(); }
- */
- if (e.keyCode == 32) {
- $("#spaceError").show();
- e.preventDefault();
- }
- });
- console.log("start next Item on 796");
- startNextItem();
- if (("#policyTable .highlight").length > 0) {
- $('#policyTable tr.highlight').removeClass('highlight');
- }
- $("#policyTable").prepend("<tr class='highlight'><td>New_Policy</td></tr>");
- $("#pid").val(0);
initTargetResourceId();
- // load metrics dropdown
- if (elementMap["global"]) {
- for (var i = 0; i < (elementMap["global"].length); i++) {
- if ((elementMap["global"][i]["name"]) == "actionSet") {
- var asSel = elementMap["global"][i]["value"];
- if (asSel == "vnfRecipe" && vf_Services !== null && vf_Services !== undefined) {
- if (vf_Services["policy"][asSel]) {
- $.each((vf_Services["policy"][asSel]), function(val, text) {
-
- $('#recipe').append($('<option></option>').val(val).html(text));
- });
- }
- break;
- }
- }
- }
- }
});
}
$scope.init();
- $scope.isNumberKey = function(event) {
+ $scope.updateGuardRecipe = function(event) {
- var charCode = (event.which) ? event.which : event.keyCode
- if (charCode > 31 && (charCode < 48 || charCode > 57)) {
- return false;
- }
- return true;
+ var formNum = $(event.target).closest('.formId').attr('id').substring(6);
+ // Get the second recipe (guard one) and update it
+ $($("#formId" + formNum + " #recipe")[1]).val($(event.target).val());
+ }
+ // When we change the name of a policy
+ $scope.updateTabLabel = function(event) {
+
+ // update policy id structure
+ var formNum = $(event.target).closest('.formId').attr('id').substring(6);
+ $scope.policy_ids.splice($scope.policy_ids.indexOf($("#formId" + formNum + " #id").val()), 1);
+ $scope.policy_ids.push($(event.target).val());
+ // Update the tab now
+ $("#go_properties_tab" + formNum).text($(event.target).val());
}
-// setTimeout(function() {
-//
-// console.log("setTimeout");
-// setMultiSelect();
-// }, 100);
$scope.close = function() {
console.log("close");
@@ -543,7 +291,7 @@ app
};
$scope.submitForm = function(obj) {
- var operationalPolicies = JSON.parse(JSON.stringify(getOperationalPolicies()));
+ var operationalPolicies = getOperationalPolicies();
if (obj !== null) {
operationalPolicies[0]["configurationsJson"] = obj;
}