aboutsummaryrefslogtreecommitdiffstats
path: root/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPolicyEditForm.js
diff options
context:
space:
mode:
authorliamfallon <liam.fallon@est.tech>2020-07-16 10:24:08 +0100
committerliamfallon <liam.fallon@est.tech>2020-07-17 14:46:26 +0100
commit2de08a64e959788f288d82cd4410fee9424a11bc (patch)
tree93d90b4de43e6e52c7059e842cf8c5ba4d10ecca /gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPolicyEditForm.js
parentee41415476b6ea1775a2f689eecb8713abf81f0c (diff)
Move apex policy editor to policy-gui
This review moves the code for the apex policy editor from the apex repo to the GUI repo. The docker part of the build will be moved in the next review because it is intertwined with the other two legacy apex GUIs and needs to be disentangled. Subsequent reviews on the apex repo will remove this code from there. Issue-ID: POLICY-2621 Change-Id: Ib9a43f463b839201656208a48ab48869a19f963a Signed-off-by: liamfallon <liam.fallon@est.tech>
Diffstat (limited to 'gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPolicyEditForm.js')
-rw-r--r--gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPolicyEditForm.js802
1 files changed, 802 insertions, 0 deletions
diff --git a/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPolicyEditForm.js b/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPolicyEditForm.js
new file mode 100644
index 0000000..93c672c
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPolicyEditForm.js
@@ -0,0 +1,802 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * Modifications Copyright (C) 2020 Nordix Foundation.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+function editPolicyForm_createPolicy(formParent) {
+ editPolicyForm_editPolicy_inner(formParent, null, "CREATE");
+}
+
+function editPolicyForm_deletePolicy(parent, name, version) {
+ var message = "Are you sure you want to delete Policy \"" + name + ":" + version + "\"?";
+ if (apexUtils_areYouSure(message)) {
+ var requestURL = restRootURL + "/Policy/Delete?name=" + name + "&version=" + version;
+ ajax_delete(requestURL, function(data) {
+ apexUtils_removeElement("editPolicyFormDiv");
+ policyTab_reset();
+ keyInformationTab_reset()
+ });
+ }
+}
+
+function editPolicyForm_viewPolicy(formParent, name, version) {
+ // get the policy
+ var requestURL = restRootURL + "/Policy/Get?name=" + name + "&version=" + version;
+ ajax_getWithKeyInfo(requestURL, "apexPolicy", function(policy) {
+ editPolicyForm_editPolicy_inner(formParent, policy, "VIEW");
+ }, "policyKey");
+}
+
+function editPolicyForm_editPolicy(formParent, name, version) {
+ // get the policy
+ var requestURL = restRootURL + "/Policy/Get?name=" + name + "&version=" + version;
+ ajax_getWithKeyInfo(requestURL, "apexPolicy", function(policy) {
+ editPolicyForm_editPolicy_inner(formParent, policy, "EDIT");
+ }, "policyKey");
+}
+
+function editPolicyForm_editPolicy_inner(formParent, policy, viewOrEdit) {
+ // Get all contextSchemas too
+ requestURL = restRootURL + "/ContextSchema/Get?name=&version=";
+ var contextSchemas = new Array();
+ ajax_get(requestURL, function(data2) {
+ for (var i = 0; i < data2.messages.message.length; i++) {
+ var contextSchema = JSON.parse(data2.messages.message[i]).apexContextSchema;
+ contextSchemas.push({
+ "name" : contextSchema.key.name,
+ "version" : contextSchema.key.version,
+ "displaytext" : contextSchema.key.name + ":" + contextSchema.key.version,
+ "contextSchema" : contextSchema
+ });
+ }
+ // Get all tasks
+ requestURL = restRootURL + "/Task/Get?name=&version=";
+ var tasks = new Array();
+ ajax_get(requestURL, function(data3) {
+ for (var j = 0; j < data3.messages.message.length; j++) {
+ var task = JSON.parse(data3.messages.message[j]).apexTask;
+ tasks.push({
+ "name" : task.key.name,
+ "version" : task.key.version,
+ "displaytext" : task.key.name + ":" + task.key.version,
+ "task" : task
+ });
+ }
+ // Get all ContextAlbums
+ requestURL = restRootURL + "/ContextAlbum/Get?name=&version=";
+ var albums = new Array();
+ ajax_get(requestURL, function(data4) {
+ for (var k = 0; k < data4.messages.message.length; k++) {
+ var album = JSON.parse(data4.messages.message[k]).apexContextAlbum;
+ albums.push({
+ "name" : album.key.name,
+ "version" : album.key.version,
+ "displaytext" : album.key.name + ":" + album.key.version,
+ "album" : album
+ });
+ }
+ // Get all Events
+ requestURL = restRootURL + "/Event/Get?name=&version=";
+ var events = new Array();
+ ajax_get(requestURL, function(data5) {
+ for (var m = 0; m < data5.messages.message.length; m++) {
+ var event = JSON.parse(data5.messages.message[m]).apexEvent;
+ events.push({
+ "name" : event.key.name,
+ "version" : event.key.version,
+ "displaytext" : event.key.name + ":" + event.key.version,
+ "event" : event
+ });
+ }
+ editPolicyForm_activate(formParent, viewOrEdit, policy, tasks, events, albums, contextSchemas);
+ });
+ });
+ });
+ });
+}
+
+function editPolicyForm_activate(parent, operation, policy, tasks, events, contextAlbums, contextItemSchemas) {
+ apexUtils_removeElement("editPolicyFormDiv");
+ var formParent = document.getElementById(parent);
+ apexUtils_emptyElement(parent);
+
+ var isedit = false;
+ var createEditOrView = "";
+
+ if (!operation) {
+ console.warn("No operation specified for PolicyForm form")
+ } else {
+ createEditOrView = operation.toUpperCase();
+ }
+
+ if (createEditOrView == "CREATE") {
+ isedit = true;
+ } else if (createEditOrView == "EDIT" || createEditOrView == "VIEW") {
+ if (createEditOrView == "EDIT") {
+ isedit = true;
+ }
+
+ if (!policy) {
+ console.warn("Invalid value (\"" + policy + "\") passed as a value for \"policy\" for PolicyForm form.");
+ } else {
+ if (!policy.policyKey || !policy.policyKey.name || policy.policyKey.name == "") {
+ console.warn("Invalid value (\"" + policy.policyKey.name
+ + "\") passed as a value for \"name\" for PolicyForm form.");
+ }
+ if (!policy.policyKey || !policy.policyKey.version || policy.policyKey.version == "") {
+ console.warn("Invalid value (\"" + policy.policyKey.version
+ + "\") passed as a value for \"version\" for PolicyForm form.");
+ }
+ if (!policy.uuid || policy.uuid == "") {
+ console.warn("Invalid value (\"" + policy.uuid
+ + "\") passed as a value for \"uuid\" for PolicyForm form.");
+ }
+ }
+ } else {
+ console.warn("Invalid operation (\"" + operation
+ + "\") specified for PolicyForm form. Only \"Create\", \"Edit\" and \"View\" operations are supported");
+ }
+
+ var contentelement = document.createElement("editPolicyFormDiv");
+ var formDiv = document.createElement("div");
+ contentelement.appendChild(formDiv);
+ formDiv.setAttribute("id", "editPolicyFormDiv");
+ formDiv.setAttribute("class", "editPolicyFormDiv");
+
+ var headingSpan = document.createElement("h2");
+ formDiv.appendChild(headingSpan);
+ headingSpan.innerHTML = "Policy Editor";
+
+ var form = document.createElement("editPolicyForm");
+ formDiv.appendChild(form);
+
+ form.setAttribute("id", "editPolicyForm");
+ form.setAttribute("class", "form-style-1");
+ form.setAttribute("method", "post");
+ form.setAttribute("createEditOrView", createEditOrView);
+
+ var formul = document.createElement("ul");
+ form.appendChild(formul);
+
+ // name
+ var nameLI = document.createElement("li");
+ formul.appendChild(nameLI);
+ var nameLabel = document.createElement("label");
+ nameLI.appendChild(nameLabel);
+ nameLabel.setAttribute("for", "editPolicyFormNameInput");
+ nameLabel.innerHTML = "Name: ";
+ var nameLabelSpan = document.createElement("span");
+ nameLabel.appendChild(nameLabelSpan);
+ nameLabelSpan.setAttribute("class", "required");
+ nameLabelSpan.innerHTML = "*";
+ var nameInput = document.createElement("input");
+ nameLI.appendChild(nameInput);
+ nameInput.setAttribute("id", "editPolicyFormNameInput");
+ nameInput.setAttribute("type", "text");
+ nameInput.setAttribute("name", "editPolicyFormNameInput");
+ nameInput.setAttribute("class", "field ebInput");
+ nameInput.setAttribute("placeholder", "name");
+ if (policy != null && policy.policyKey != null && policy.policyKey.name != null) {
+ nameInput.value = policy.policyKey.name;
+ }
+ if (createEditOrView != "CREATE") {
+ nameInput.readOnly = true;
+ }
+
+ // version
+ var versionLI = document.createElement("li");
+ formul.appendChild(versionLI);
+ var versionLabel = document.createElement("label");
+ versionLI.appendChild(versionLabel);
+ versionLabel.setAttribute("for", "editPolicyFormVersionInput");
+ versionLabel.innerHTML = "Version: ";
+ var versionInput = document.createElement("input");
+ versionLI.appendChild(versionInput);
+ versionInput.setAttribute("id", "editPolicyFormVersionInput");
+ versionInput.setAttribute("type", "text");
+ versionInput.setAttribute("name", "editPolicyFormVersionInput");
+ versionInput.setAttribute("class", "field ebInput");
+ versionInput.setAttribute("placeholder", "0.0.1");
+ if (policy != null && policy.policyKey != null && policy.policyKey.version != null) {
+ versionInput.value = policy.policyKey.version;
+ }
+ if (createEditOrView != "CREATE") {
+ versionInput.readOnly = true;
+ }
+
+ // uuid
+ var uuidLI = document.createElement("li");
+ formul.appendChild(uuidLI);
+ var uuidLabel = document.createElement("label");
+ uuidLI.appendChild(uuidLabel);
+ uuidLabel.setAttribute("for", "editPolicyFormUuidInput");
+ uuidLabel.innerHTML = "UUID: ";
+ var uuidInput = document.createElement("input");
+ uuidLI.appendChild(uuidInput);
+ uuidInput.setAttribute("id", "editPolicyFormUuidInput");
+ uuidInput.setAttribute("type", "text");
+ uuidInput.setAttribute("name", "editPolicyFormUuidInput");
+ uuidInput.setAttribute("class", "field-long ebInput ebInput_width_full");
+ uuidInput.setAttribute("placeholder", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
+ if (policy != null && policy.uuid != null) {
+ uuidInput.value = policy.uuid;
+ }
+ if (createEditOrView != "CREATE") {
+ uuidInput.readOnly = true;
+ }
+
+ var edit_disabled = (createEditOrView != "CREATE" && createEditOrView != "EDIT");
+
+ // description
+ var descriptionLI = document.createElement("li");
+ formul.appendChild(descriptionLI);
+ var descriptionLabel = document.createElement("label");
+ descriptionLI.appendChild(descriptionLabel);
+ descriptionLabel.setAttribute("for", "editPolicyFormDescriptionTextArea");
+ descriptionLabel.innerHTML = "Description: ";
+ var descriptionTextArea = document.createElement("textarea");
+ descriptionLI.appendChild(descriptionTextArea);
+ descriptionTextArea.setAttribute("id", "editPolicyFormDescriptionTextArea");
+ descriptionTextArea.setAttribute("name", "editPolicyFormDescriptionTextArea");
+ descriptionTextArea.setAttribute("class", "field-long ebTextArea ebTextArea_width_full");
+ if (policy != null && policy.description != null) {
+ descriptionTextArea.value = policy.description;
+ }
+ descriptionTextArea.readOnly = edit_disabled;
+
+ // template type
+ var templateTypeLI = document.createElement("li");
+ formul.appendChild(templateTypeLI);
+ var templateTypeLabel = document.createElement("label");
+ templateTypeLI.appendChild(templateTypeLabel);
+ templateTypeLabel.setAttribute("for", "editEventFormTemplateTypeInput");
+ templateTypeLabel.innerHTML = "Policy Type / Flavour: ";
+ var templateTypeInput = document.createElement("input");
+ templateTypeLI.appendChild(templateTypeInput);
+ templateTypeInput.setAttribute("id", "editEventFormTemplateTypeInput");
+ templateTypeInput.setAttribute("type", "text");
+ templateTypeInput.setAttribute("name", "editEventFormTemplateTypeInput");
+ templateTypeInput.setAttribute("class", "field-policyTemplateType ebInput");
+ templateTypeInput.setAttribute("placeholder", "FREEFORM");
+ if (policy != null && policy.template != null) {
+ templateTypeInput.value = policy.template;
+ } else {
+ templateTypeInput.value = "FREEFORM";
+ }
+ if (createEditOrView != "CREATE" && createEditOrView != "EDIT") {
+ templateTypeInput.readOnly = true;
+ }
+
+ // first state
+ var firstStateLI = document.createElement("li");
+ formul.appendChild(firstStateLI);
+ var firstStateLabel = document.createElement("label");
+ firstStateLI.appendChild(firstStateLabel);
+ firstStateLabel.setAttribute("for", "editEventFormSelectFirstState_dropdownList");
+ firstStateLabel.innerHTML = "First State: ";
+ var firststateoptions = new Array();
+ var firststateselected = null;
+ if (policy != null && policy.state != null) {
+ for (i = 0; i < policy.state.entry.length; i++) {
+ if (policy.state.entry[i] != null && policy.state.entry[i].key != null) {
+ var statename = policy.state.entry[i].key;
+ firststateoptions.push({
+ "name" : statename,
+ "displaytext" : statename
+ });
+ }
+ }
+ }
+ if (policy != null && policy.firstState != null && policy.firstState != "") {
+ firststateselected = {
+ "name" : policy.firstState,
+ "displaytext" : policy.firstState
+ }
+ }
+ var firstStateSelectDiv = dropdownList("editEventFormSelectFirstState", firststateoptions, firststateselected,
+ (createEditOrView != "CREATE" && createEditOrView != "EDIT"), function() {
+ return editPolicyForm_updateTriggerEventOptions(events);
+ }, function() {
+ return editPolicyForm_getStateOptions();
+ });
+ firstStateLI.appendChild(firstStateSelectDiv);
+
+ // Trigger event
+ var triggerLI = document.createElement("li");
+ formul.appendChild(triggerLI);
+ var triggerLabel = document.createElement("label");
+ triggerLI.appendChild(triggerLabel);
+ triggerLabel.setAttribute("for", "editEventFormSelectTrigger_dropdownList");
+ triggerLabel.innerHTML = "Policy Trigger Event: ";
+ var triggerevent = null;
+ if (policy != null && policy.firstState != null && policy.firstState != "" && policy.state != null) {
+ for (i = 0; i < policy.state.entry.length; i++) {
+ if (policy.state.entry[i] != null && policy.state.entry[i].key != null) {
+ var statename = policy.state.entry[i].key;
+ var state = policy.state.entry[i].value;
+ if (statename != null && statename == policy.firstState) {
+ triggerevent = {
+ "name" : state.trigger.name,
+ "version" : state.trigger.version,
+ "displaytext" : state.trigger.name + ":" + state.trigger.version
+ };
+ }
+ }
+ }
+ }
+ // var triggerSelectDiv = dropdownList("editEventFormSelectTrigger", events,
+ // triggerevent, true, null); // ewatkmi: replaced dropdown with label
+ var triggerSelectDiv = document.createElement("label");
+ triggerSelectDiv.setAttribute("class", "policy-trigger-event");
+ triggerSelectDiv.setAttribute("id", "editEventFormSelectTrigger_dropdownList");
+ triggerSelectDiv.innerHTML = triggerevent ? triggerevent.displaytext : "No Event Selected";
+ triggerLI.appendChild(triggerSelectDiv);
+ var triggerPeriodicEventCheckbox = document.createElement("input");
+ triggerPeriodicEventCheckbox.setAttribute("type", "checkbox");
+ triggerPeriodicEventCheckbox.setAttribute("id", "periodicEventsCheckbox");
+ triggerPeriodicEventCheckbox.setAttribute("class", "field-checkbox-center periodic-events-checkbox");
+ triggerPeriodicEventCheckbox.disabled = createEditOrView != "EDIT";
+ triggerPeriodicEventCheckbox.onclick = function() {
+ var firstState = document.getElementById("editEventFormSelectFirstState_dropdownList_display").innerHTML;
+ var firstStateDropdown = document.getElementById("editPolicyFormTrigger_" + firstState + "_dropdownList");
+ if ($(triggerPeriodicEventCheckbox).is(":checked")) {
+ var periodicEvent = undefined;
+ var tmpEvents = $.merge([], events);
+ for ( var e in events) {
+ if (events[e].name.indexOf("PeriodicEvent") !== -1) {
+ periodicEvent = events[e];
+ break;
+ }
+ }
+ if (!periodicEvent) {
+ periodicEvent = {
+ name : "PeriodicEvent",
+ version : "0.0.1",
+ displaytext : "PeriodicEvent:0.0.1",
+ event : {
+ description : "",
+ key : {
+ name : "PeriodicEvent",
+ version : "0.0.1"
+ },
+ nameSpace : "org.onap.policy.apex.domains.aadm.events",
+ parameter : {
+ entry : [ {
+ key : "PERIODIC_EVENT_COUNT",
+ value : {
+ key : "PERIODIC_EVENT_COUNT",
+ optional : false,
+ fieldSchemaKey : {
+ name : "PeriodicEventCount",
+ version : "0.0.1"
+ }
+ }
+ } ]
+ },
+ source : "System",
+ target : "Apex",
+ uuid : "44236da1-3d47-4988-8033-b6fee9d6a0f4"
+ },
+ };
+ tmpEvents.push(periodicEvent);
+ }
+
+ dropdownList_ChangeOptions(firstStateDropdown, tmpEvents, periodicEvent, false);
+ editPolicyForm_updateTriggerEventOptions(tmpEvents);
+ } else {
+ dropdownList_ChangeOptions(firstStateDropdown, events, events[0], false);
+ editPolicyForm_updateTriggerEventOptions(events);
+ }
+ }
+
+ triggerLI.appendChild(triggerPeriodicEventCheckbox);
+
+ triggerPeriodicEventLabel = document.createElement("label");
+ triggerPeriodicEventLabel.setAttribute("class", "periodic-events-label");
+ triggerPeriodicEventLabel.innerHTML = "is Periodic Event";
+ triggerLI.appendChild(triggerPeriodicEventLabel);
+
+ // states
+ var statesLI = document.createElement("li");
+ formul.appendChild(statesLI);
+ var statesLabel = document.createElement("label");
+ statesLI.appendChild(statesLabel);
+ statesLabel.setAttribute("for", "editEventFormStates");
+ statesLabel.innerHTML = "States: ";
+ var statesUL = document.createElement("ul");
+ statesUL.setAttribute("id", "editEventFormStates");
+ statesLI.appendChild(statesUL);
+ if (policy && policy.state) {
+ var states = policy.state.entry;
+ for ( var s in states) {
+ var state = states[s];
+ if (state.key == policy.firstState) {
+ states.splice(s, 1);
+ states.unshift(state);
+ break;
+ }
+ }
+ for (i = 0; i < policy.state.entry.length; i++) {
+ stateEntry = policy.state.entry[i];
+ var statename = stateEntry.key;
+ var state = stateEntry.value;
+ var stateLI = editPolicyForm_addState(statename, state, createEditOrView, policy, tasks, events,
+ contextAlbums, contextItemSchemas);
+ statesUL.appendChild(stateLI);
+ }
+ }
+
+ // add new state
+ if (createEditOrView == "CREATE" || createEditOrView == "EDIT") {
+ var newStateLI = document.createElement("li");
+ statesUL.appendChild(newStateLI);
+ var newStateLabel = document.createElement("label");
+ newStateLI.appendChild(newStateLabel);
+ newStateLabel.setAttribute("for", "editPolicyFormStateDiv_");
+ newStateLabel.innerHTML = "Add a new State: ";
+ var newStDiv = document.createElement("div");
+ newStateLI.appendChild(newStDiv);
+ newStDiv.setAttribute("id", "editPolicyFormStateDiv_");
+ newStDiv.setAttribute("class", "editPolicyFormStateDiv");
+ var newStateInput = document.createElement("input");
+ newStDiv.appendChild(newStateInput);
+ newStateInput.setAttribute("id", "editEventFormNewStateInput");
+ newStateInput.setAttribute("type", "text");
+ newStateInput.setAttribute("name", "editEventFormTemplateTypeInput");
+ newStateInput.setAttribute("class", "field-policyTemplateType ebInput ebInput_width_xLong");
+ newStateInput.setAttribute("placeholder", "Name for new State ... ");
+ var addState = document.createElement("button");
+ newStDiv.appendChild(addState);
+ addState.setAttribute("id", "addStateButton");
+ addState.setAttribute("class", "ebBtn");
+ addState.setAttribute("type", "submit");
+ addState.setAttribute("value", "Add a new State");
+ addState.style["margin-left"] = "10px";
+ addState.onclick = function() {
+ return editPolicyForm_addNewState(statesUL, createEditOrView, policy, tasks, events, contextAlbums,
+ contextItemSchemas);
+ };
+ addState.innerHTML = addState.getAttribute("value");
+ }
+
+ // buttons
+ var inputLI = document.createElement("li");
+ formul.appendChild(inputLI);
+ if (createEditOrView == "CREATE") {
+ var generateUUIDInput = document.createElement("button");
+ inputLI.appendChild(generateUUIDInput);
+ generateUUIDInput.setAttribute("id", "generateUUID");
+ generateUUIDInput.setAttribute("class", "ebBtn ebBtn_large");
+ generateUUIDInput.setAttribute("type", "submit");
+ generateUUIDInput.setAttribute("value", "Generate UUID");
+ generateUUIDInput.onclick = editPolicyForm_generateUUIDPressed;
+ generateUUIDInput.innerHTML = generateUUIDInput.getAttribute("value");
+
+ var inputSpan0 = document.createElement("span");
+ inputLI.appendChild(inputSpan0);
+ inputSpan0.setAttribute("class", "required");
+ inputSpan0.innerHTML = " ";
+
+ var generateDescriptionInput = document.createElement("button");
+ inputLI.appendChild(generateDescriptionInput);
+ generateDescriptionInput.setAttribute("id", "generateDescription");
+ generateDescriptionInput.setAttribute("class", "ebBtn ebBtn_large");
+ generateDescriptionInput.setAttribute("type", "submit");
+ generateDescriptionInput.setAttribute("value", "Generate Description");
+ generateDescriptionInput.onclick = editPolicyForm_generateDescriptionPressed;
+ generateDescriptionInput.innerHTML = generateDescriptionInput.getAttribute("value");
+
+ var inputSpan1 = document.createElement("span");
+ inputLI.appendChild(inputSpan1);
+ inputSpan1.setAttribute("class", "required");
+ inputSpan1.innerHTML = " ";
+ }
+
+ var cancelInput = document.createElement("button");
+ inputLI.appendChild(cancelInput);
+ cancelInput.setAttribute("id", "cancel");
+ cancelInput.setAttribute("class", "ebBtn ebBtn_large");
+ cancelInput.setAttribute("type", "submit");
+ cancelInput.setAttribute("value", "Cancel");
+ cancelInput.onclick = editPolicyForm_cancelPressed;
+ cancelInput.innerHTML = cancelInput.getAttribute("value");
+
+ if (createEditOrView == "CREATE" || createEditOrView == "EDIT") {
+ var inputSpan2 = document.createElement("span");
+ inputLI.appendChild(inputSpan2);
+ inputSpan2.setAttribute("class", "required");
+ inputSpan2.innerHTML = " ";
+ var submitInput = document.createElement("button");
+ inputLI.appendChild(submitInput);
+ submitInput.setAttribute("id", "submit");
+ submitInput.setAttribute("class", "ebBtn ebBtn_large");
+ submitInput.setAttribute("type", "submit");
+ submitInput.setAttribute("value", "Submit");
+ submitInput.onclick = editPolicyForm_submitPressed;
+ submitInput.innerHTML = submitInput.getAttribute("value");
+ }
+
+ formParent.appendChild(contentelement);
+ scrollToTop();
+}
+
+function editPolicyForm_addNewState(statesUL, createEditOrView, policy, tasks, events, contextAlbums,
+ contextItemSchemas) {
+ var statename = document.getElementById("editEventFormNewStateInput").value;
+ if (statename == null || statename == "") {
+ alert("Please enter a value for the name of the new state\"" + paramname + "\"");
+ document.getElementById("editEventFormNewStateInput").focus();
+ return false;
+ } else if (statename.toUpperCase() == "NULL" || statename.toUpperCase() == "NONE") {
+ alert("Please enter a valid value for the name of the new state\"" + paramname
+ + "\". Values \"NULL\" and \"None\" are not allowed");
+ document.getElementById("editEventFormNewStateInput").focus();
+ return false;
+ } else {
+ document.getElementById("editEventFormNewStateInput").value = "";
+ }
+ if (policy && policy.state) {
+ for (i = 0; i < policy.state.entry.length; i++) {
+ if (statename.toUpperCase() == policy.state.entry[i].key.toUpperCase()) {
+ alert("Policy " + policy.policyKey.name + ":" + policy.policyKey.version
+ + " already contains a state called \"" + statename + "\".");
+ document.getElementById("editEventFormNewStateInput").focus();
+ return false;
+ }
+ }
+ }
+ var stateLI = editPolicyForm_addState(statename, null, createEditOrView, policy, tasks, events, contextAlbums,
+ contextItemSchemas);
+ statesUL.insertBefore(stateLI, statesUL.lastElementChild);
+ editPolicyForm_updateTriggerEventOptions(events);
+}
+
+function editPolicyForm_getStateOptions() {
+ var stateoptions = new Array();
+ var stateslis = document.getElementById("editEventFormStates").querySelectorAll(
+ "#editEventFormStates > li[stateName]"); // get li direct child
+ // elements with an
+ // attribute "stateName"
+ for (var i = 0; i < stateslis.length; i++) {
+ if (stateslis != null && stateslis[i] != null && stateslis[i].getAttribute("stateName") != null) {
+ stateoptions.push({
+ "name" : stateslis[i].getAttribute("stateName"),
+ "displaytext" : stateslis[i].getAttribute("stateName")
+ });
+ }
+ }
+ return stateoptions;
+}
+
+function editPolicyForm_getNextStateOptions() {
+ var stateoptions = editPolicyForm_getStateOptions();
+ stateoptions.push({
+ "name" : "NULL",
+ "displaytext" : "None"
+ });
+ return stateoptions;
+}
+
+function editPolicyForm_updateTriggerEventOptions(events) {
+ var stateevent = null;
+ var triggerSelectDiv = document.getElementById("editEventFormSelectTrigger_dropdownList");
+ var firstStateSelectDiv = document.getElementById("editEventFormSelectFirstState_dropdownList");
+ var firststate = firstStateSelectDiv.selectedOption;
+ var createEditOrView = document.getElementById("editPolicyForm").getAttribute("createEditOrView");
+ if (firststate != null && firststate.name != null) {
+ var statename = firststate.name;
+ var stateeventselect = document.getElementById("editPolicyFormTrigger_" + statename + "_dropdownList");
+ if (stateeventselect != null && stateeventselect.selectedOption) {
+ stateevent = stateeventselect.selectedOption;
+ }
+ if (createEditOrView == "CREATE") {
+ var periodicCheckbox = document.getElementById("periodicEventsCheckbox");
+ if (periodicCheckbox.hasAttribute("disabled")) {
+ periodicCheckbox.removeAttribute("disabled");
+ }
+ }
+ } else {
+ var triggerSelectDiv = document.getElementById("editEventFormSelectTrigger_dropdownList");
+ triggerSelectDiv.innerHTML = "No Event Selected";
+ var periodicEventsCheckbox = $("#periodicEventsCheckbox");
+ if (periodicEventsCheckbox.is(":checked")) {
+ periodicEventsCheckbox.attr("checked", false);
+ }
+ if (createEditOrView == "CREATE") {
+ var periodicCheckbox = document.getElementById("periodicEventsCheckbox");
+ if (!periodicCheckbox.hasAttribute("disabled")) {
+ periodicCheckbox.disabled = true;
+ }
+ }
+ }
+ if (stateevent) {
+ triggerSelectDiv.innerHTML = stateevent.displaytext;
+ if (stateevent.displaytext.indexOf("PeriodicEvent") == -1) {
+ var periodicEventsCheckbox = $("#periodicEventsCheckbox");
+ if (periodicEventsCheckbox.is(":checked")) {
+ periodicEventsCheckbox.attr("checked", false);
+ }
+ }
+ }
+}
+
+function editPolicyForm_addState(statename, state, createEditOrView, policy, tasks, events, contextAlbums,
+ contextItemSchemas) {
+ var stateLI = document.createElement("li");
+ stateLI.setAttribute("stateName", statename);
+ var deleteDiv = document.createElement("div");
+ if (createEditOrView == "CREATE" || createEditOrView == "EDIT") {
+ deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete");
+ deleteDiv.onclick = function(event) {
+ $(stateLI)
+ .hide(
+ "fast",
+ function() {
+ stateLI.parentNode.removeChild(stateLI);
+ var firstState = document
+ .getElementById("editEventFormSelectFirstState_dropdownList_display").innerHTML;
+ var selected = (statename !== firstState) ? {
+ name : firstState,
+ displaytext : firstState
+ } : undefined;
+ dropdownList_ChangeOptions(document
+ .getElementById("editEventFormSelectFirstState_dropdownList"),
+ editPolicyForm_getStateOptions(), selected, false,
+ editPolicyForm_getStateOptions);
+ editPolicyForm_updateTriggerEventOptions();
+ });
+ }
+ } else {
+ deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled");
+ }
+ deleteDiv.style["vertical-align"] = "baseline";
+ stateLI.appendChild(deleteDiv);
+ var stateLabel = document.createElement("label");
+ stateLabel.style.display = "inline-block";
+ stateLabel.style["min-width"] = "120px";
+ stateLabel.style["padding-left"] = "10px";
+ stateLabel.style["vertical-align"] = "middle";
+ stateLabel.innerHTML = statename;
+ stateLI.appendChild(stateLabel);
+ var stateDiv = editPolicyForm_State_generateStateDiv(createEditOrView, policy, statename, state, tasks, events,
+ contextAlbums, contextItemSchemas);
+ var showhideDIV = showHideElement("editEventFormStates_" + statename, stateDiv, true, "Show " + statename + " ...",
+ "Hide " + statename + " ...", "showhide_div_show", "showhide_div_hide", "showhide_button_show",
+ "showhide_button_hide");
+ showhideDIV.style.display = "inline-block";
+ showhideDIV.style["vertical-align"] = "middle";
+ stateLabel.setAttribute("for", stateDiv.id);
+ stateLI.appendChild(showhideDIV);
+ stateLI.appendChild(stateDiv);
+ return stateLI;
+}
+
+function editPolicyForm_generateUUIDPressed() {
+ document.getElementById("editPolicyFormUuidInput").value = formUtils_generateUUID();
+}
+
+function editPolicyForm_generateDescriptionPressed() {
+ document.getElementById("editPolicyFormDescriptionTextArea").value = formUtils_generateDescription(document
+ .getElementById("editPolicyFormNameInput").value,
+ document.getElementById("editPolicyFormVersionInput").value, document
+ .getElementById("editPolicyFormUuidInput").value);
+}
+
+function editPolicyForm_cancelPressed() {
+ apexUtils_removeElement("editPolicyFormDiv");
+ policyTab_reset();
+}
+
+function editPolicyForm_submitPressed() {
+ var createEditOrView = document.getElementById("editPolicyForm").getAttribute("createEditOrView");
+ if (!createEditOrView || createEditOrView == "" || (createEditOrView != "CREATE" && createEditOrView != "EDIT")) {
+ console.error("Invalid operation \"" + createEditOrView
+ + "\" passed to editPolicyForm_submitPressed function. Edit failed");
+ apexUtils_removeElement("editPolicyFormDiv");
+ policyTab_reset();
+ return;
+ }
+
+ var policybean = editPolicyForm_getPolicyBean();
+ if (policybean == null) {
+ return false;
+ }
+ var jsonString = JSON.stringify(policybean);
+
+ if (createEditOrView == "CREATE") {
+ var requestURL = restRootURL + "/Policy/Create";
+ ajax_post(requestURL, jsonString, function(resultData) {
+ apexUtils_removeElement("editPolicyFormDiv");
+ policyTab_reset();
+ keyInformationTab_reset();
+ });
+ } else if (createEditOrView == "EDIT") {
+ var firstStatePeriodic = $("#periodicEventsCheckbox").is(":checked")
+ var requestURL = restRootURL + "/Policy/Update?firstStatePeriodic=" + firstStatePeriodic;
+ ajax_put(requestURL, jsonString, function(resultData) {
+ apexUtils_removeElement("editPolicyFormDiv");
+ policyTab_reset();
+ keyInformationTab_reset();
+ });
+ }
+
+}
+
+function editPolicyForm_getPolicyBean() {
+
+ var name = document.getElementById('editPolicyFormNameInput').value;
+ if (name == null || name == "") {
+ console.error("No Name is specified for the policy");
+ alert("No Name is specified for the policy");
+ return null;
+ }
+ var version = document.getElementById('editPolicyFormVersionInput').value;
+ if (version == null || version == "") {
+ console.error("No Version is specified for the policy");
+ alert("No Version is specified for the policy");
+ return null;
+ }
+ var uuid = document.getElementById('editPolicyFormUuidInput').value;
+ if (uuid == null || uuid == "") {
+ console.error("No UUID is specified for the policy");
+ alert("No UUID is specified for the policy");
+ return null;
+ }
+ var desc = document.getElementById('editPolicyFormDescriptionTextArea').value;
+ if (desc == null) {
+ desc = "";
+ }
+ var template = document.getElementById('editEventFormTemplateTypeInput').value;
+ if (template == null) {
+ template = "";
+ }
+ var firststateselectedoption = document.getElementById("editEventFormSelectFirstState" + "_dropdownList").selectedOption;
+ if (firststateselectedoption == null) {
+ console.error("Please select an option for First State");
+ alert("Please select an option for First State");
+ return null;
+ }
+ var states = new Object();
+ var stateslis = document.getElementById("editEventFormStates").querySelectorAll(
+ "#editEventFormStates > li[stateName]"); // get li direct child
+ // elements with an
+ // attribute "stateName"
+ for (var i = 0; i < stateslis.length; i++) { // ignore last li ... it has
+ // the new state button etc.
+ if (stateslis != null && stateslis[i] != null && stateslis[i].getAttribute("stateName") != null) {
+ var statename = stateslis[i].getAttribute("stateName");
+ var state = editPolicyForm_State_getStateBean(statename);
+ if (state == null) {
+ return null;
+ }
+ states[statename] = state;
+ }
+ }
+
+ var policybean = {
+ "name" : name,
+ "version" : version,
+ "uuid" : uuid,
+ "description" : desc,
+ "template" : template,
+ "firstState" : firststateselectedoption.name,
+ "states" : states
+ };
+ return policybean;
+}