From 08b595c863b45e759e57ef419c83dad2b209df9c Mon Sep 17 00:00:00 2001 From: ramverma Date: Fri, 13 Jul 2018 12:32:32 +0100 Subject: Adding client editor module to apex-pdp The size of the review is big because of following: 1. edit_area & jquery are 3PP's used in the client editor 2. ui elements like svg, gifs, png Change-Id: Ib62d8e6dda6e6dc1b6e604298e23505523f77cf2 Issue-ID: POLICY-864 Signed-off-by: ramverma --- .../main/resources/webapp/js/ApexPolicyEditForm.js | 803 +++++++++++++++++++++ 1 file changed, 803 insertions(+) create mode 100644 client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm.js (limited to 'client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm.js') diff --git a/client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm.js b/client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm.js new file mode 100644 index 000000000..fd34f0057 --- /dev/null +++ b/client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm.js @@ -0,0 +1,803 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * 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_get(requestURL, function(data) { + var policy = JSON.parse(data.messages.message[0]).apexPolicy; + editPolicyForm_editPolicy_inner(formParent, policy, "VIEW"); + }); +} + +function editPolicyForm_editPolicy(formParent, name, version) { + // get the policy + var requestURL = restRootURL + "/Policy/Get?name=" + name + "&version=" + version; + ajax_get(requestURL, function(data) { + var policy = JSON.parse(data.messages.message[0]).apexPolicy; + editPolicyForm_editPolicy_inner(formParent, policy, "EDIT"); + }); +} + +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 : "com.ericsson.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; +} -- cgit 1.2.3-korg