aboutsummaryrefslogtreecommitdiffstats
path: root/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPolicyEditForm_State.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_State.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_State.js')
-rw-r--r--gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPolicyEditForm_State.js1129
1 files changed, 1129 insertions, 0 deletions
diff --git a/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPolicyEditForm_State.js b/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPolicyEditForm_State.js
new file mode 100644
index 0000000..77e8814
--- /dev/null
+++ b/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPolicyEditForm_State.js
@@ -0,0 +1,1129 @@
+/*
+ * ============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_State_generateStateDiv(createEditOrView, policy, statename, state, tasks, events,
+ contextAlbums, contextItemSchemas) {
+ var retDiv = document.createElement("div");
+ retDiv.setAttribute("id", "editPolicyFormStateDiv_" + statename);
+ retDiv.setAttribute("class", "editPolicyFormStateDiv");
+ var divUL = document.createElement("ul");
+ retDiv.appendChild(divUL);
+
+ // input event
+ var triggerLI = document.createElement("li");
+ divUL.appendChild(triggerLI);
+ var triggerLabel = document.createElement("label");
+ triggerLI.appendChild(triggerLabel);
+ triggerLabel.setAttribute("for", "editPolicyFormTrigger" + "_" + statename);
+ triggerLabel.innerHTML = "Input Event for State: ";
+ var eventselected = null;
+ if (state != null && state.trigger != null) {
+ eventselected = {
+ "name" : state.trigger.name,
+ "version" : state.trigger.version,
+ "displaytext" : state.trigger.name + ":" + state.trigger.version
+ };
+ }
+ var ineventSelectDiv = dropdownList("editPolicyFormTrigger" + "_" + statename, events, eventselected,
+ (createEditOrView == "VIEW"), function() {
+ return editPolicyForm_updateTriggerEventOptions(events)
+ });
+ triggerLI.appendChild(ineventSelectDiv);
+
+ // Context Albums references
+ var contextsLI = document.createElement("li");
+ divUL.appendChild(contextsLI);
+ var contextsLabel = document.createElement("label");
+ contextsLI.appendChild(contextsLabel);
+ contextsLabel.setAttribute("for", "editPolicyFormContextsTable" + "_" + statename);
+ contextsLabel.innerHTML = "Context Albums used in Task Selection Logic / State Output Logic: ";
+ var contextstable = document.createElement("table");
+ contextstable.setAttribute("id", "editPolicyFormContextsTable" + "_" + statename);
+ contextstable.setAttribute("name", "editPolicyFormContextsTable" + "_" + statename);
+ contextstable.setAttribute("class", "table-policycontext");
+ contextsLI.appendChild(contextstable);
+ // var contextstable_head = document.createElement("thead");
+ // contextstable.appendChild(contextstable_head);
+ // var contextstable_head_tr = document.createElement("tr");
+ // contextstable_head.appendChild(contextstable_head_tr);
+ // contextstable_head_tr.appendChild(document.createElement("th")); //empty,
+ // for delete button
+ // var contextstable_head_th = document.createElement("th");
+ // contextstable_head_tr.appendChild(contextstable_head_th);
+ // contextstable_head_th.innerHTML = "Context Album: ";
+ // contextstable_head_th.setAttribute("class",
+ // "table-policycontext-heading");
+ var contextstable_body = document.createElement("tbody");
+ contextstable.appendChild(contextstable_body);
+ // Add the contexts
+ if (state && state.contextAlbumReference && $.isArray(state.contextAlbumReference)) {
+ for (var p = 0; p < state.contextAlbumReference.length; p++) {
+ var contextEntry = state.contextAlbumReference[p];
+ var contextName = contextEntry.name + ":" + contextEntry.version;
+ var ce = {
+ "name" : contextEntry.name,
+ "version" : contextEntry.version,
+ "displaytext" : contextName
+ };
+ editPolicyForm_State_addPolicyContext(contextstable_body, (createEditOrView == "VIEW"), statename,
+ contextName, ce, contextAlbums);
+ }
+ }
+ // add the Policy Context button
+ if (createEditOrView == "CREATE" || createEditOrView == "EDIT") {
+ var contextTR = document.createElement("tr");
+ contextTR.setAttribute("class", "field-policycontext-tr.new");
+ contextstable_body.appendChild(contextTR);
+
+ var contextTD = document.createElement("td");
+ contextTD.setAttribute("colspan", "2");
+ contextTR.appendChild(contextTD);
+ var addContextInput = createAddFormButton("Add New Policy Logic Context");
+ contextTD.appendChild(addContextInput);
+ // addContextInput.setAttribute("id", "addContextButton");
+ // addContextInput.setAttribute("class", "ebBtn ebBtn_large");
+ // addContextInput.setAttribute("type", "submit");
+ // addContextInput.setAttribute("value", "Add New Policy Logic
+ // Context");
+ // addContextInput.innerHTML = addContextInput.getAttribute("value");
+ addContextInput.onclick = function() {
+ return editPolicyForm_State_addPolicyContext(contextstable_body, false, statename, null, null,
+ contextAlbums);
+ };
+ }
+
+ // Task references
+ var tasksLI = document.createElement("li");
+ divUL.appendChild(tasksLI);
+ var tasksLabel = document.createElement("label");
+ tasksLI.appendChild(tasksLabel);
+ tasksLabel.setAttribute("for", "editPolicyFormTasksTable" + "_" + statename);
+ tasksLabel.innerHTML = "State Tasks:";
+ var taskstable = document.createElement("table");
+ taskstable.setAttribute("id", "editPolicyFormTasksTable" + "_" + statename);
+ taskstable.setAttribute("name", "editPolicyFormTasksTable" + "_" + statename);
+ taskstable.setAttribute("class", "table-policytask");
+ tasksLI.appendChild(taskstable);
+ var taskstable_head = document.createElement("thead");
+ taskstable.appendChild(taskstable_head);
+ var taskstable_head_tr = document.createElement("tr");
+ taskstable_head.appendChild(taskstable_head_tr);
+ taskstable_head_tr.appendChild(document.createElement("th")); // empty,
+ // for
+ // delete
+ // button
+ var taskstable_isdefault_head_th = document.createElement("th");
+ taskstable_head_tr.appendChild(taskstable_isdefault_head_th);
+ taskstable_isdefault_head_th.innerHTML = "Default Task? ";
+ taskstable_isdefault_head_th.setAttribute("class", "table-policytask-heading form-heading");
+ var taskstable_localname_head_th = document.createElement("th");
+ taskstable_head_tr.appendChild(taskstable_localname_head_th);
+ taskstable_localname_head_th.innerHTML = "Local Name for Task: ";
+ taskstable_localname_head_th.setAttribute("class", "table-policytask-heading form-heading");
+ var taskstable_head_th = document.createElement("th");
+ taskstable_head_tr.appendChild(taskstable_head_th);
+ taskstable_head_th.innerHTML = "Task: ";
+ taskstable_head_th.setAttribute("class", "table-policytask-heading form-heading");
+ var taskstable_outputtype_head_th = document.createElement("th");
+ taskstable_head_tr.appendChild(taskstable_outputtype_head_th);
+ taskstable_outputtype_head_th.innerHTML = "Output Mapping type: ";
+ taskstable_outputtype_head_th.setAttribute("class", "table-policytask-heading form-heading");
+ taskstable_outputtype_head_th.setAttribute("colspan", "2");
+ var taskstable_outputsel_head_th = document.createElement("th");
+ taskstable_head_tr.appendChild(taskstable_outputsel_head_th);
+ taskstable_outputsel_head_th.innerHTML = "Output Mapping: ";
+ taskstable_outputsel_head_th.setAttribute("class", "table-policytask-heading form-heading");
+ var taskstable_body = document.createElement("tbody");
+ taskstable.appendChild(taskstable_body);
+ var defaulttask = null;
+ if (state && state.defaultTask && state.defaultTask.name && state.defaultTask.version) {
+ defaulttask = state.defaultTask.name + ":" + state.defaultTask.version;
+ }
+ // Add the tasks
+ if (state && state.taskReferences && $.isArray(state.taskReferences.entry)) {
+ for (var p = 0; p < state.taskReferences.entry.length; p++) {
+ var taskEntry = state.taskReferences.entry[p];
+ var taskName = taskEntry.key.name + ":" + taskEntry.key.version;
+ var taskselected = {
+ "name" : taskEntry.key.name,
+ "version" : taskEntry.key.version,
+ "displaytext" : taskName
+ };
+ var taskreference = taskEntry.value;
+ editPolicyForm_State_addPolicyTask(taskstable_body, (createEditOrView == "VIEW"),
+ (defaulttask == taskName), state, statename, taskreference, taskselected, tasks);
+ }
+ }
+ // add the Policy Task button
+ if (createEditOrView == "CREATE" || createEditOrView == "EDIT") {
+ var taskTR = document.createElement("tr");
+ taskTR.setAttribute("class", "field-policytask-tr.new");
+ taskstable_body.appendChild(taskTR);
+ var taskTD = document.createElement("td");
+ taskTD.setAttribute("colspan", "4");
+ taskTR.appendChild(taskTD);
+ var addTaskInput = createAddFormButton("Add New Task");
+ taskTD.appendChild(addTaskInput);
+ // addTaskInput.setAttribute("id", "addTaskButton");
+ // addTaskInput.setAttribute("class", "ebBtn ebBtn_large");
+ // addTaskInput.setAttribute("type", "submit");
+ // addTaskInput.setAttribute("value", "Add New Task");
+ // addTaskInput.innerHTML = addTaskInput.getAttribute("value");
+ addTaskInput.onclick = function() {
+ return editPolicyForm_State_addPolicyTask(taskstable_body, false, false, state, statename, null, null,
+ tasks);
+ };
+ }
+
+ // tasksellogic
+ var tasksellogicLI = document.createElement("li");
+ divUL.appendChild(tasksellogicLI);
+ var tasksellogicLabel = document.createElement("label");
+ tasksellogicLI.appendChild(tasksellogicLabel);
+ tasksellogicLabel.setAttribute("for", "editEventFormTaskSelLogicDiv" + "_" + statename);
+ tasksellogicLabel.innerHTML = "Task Selection Logic: ";
+ var tasksellogicdiv = document.createElement("div");
+ tasksellogicdiv.setAttribute("id", "editEventFormTaskSelLogicDiv" + "_" + statename);
+
+ var logic = "";
+ if (state && state.taskSelectionLogic && state.taskSelectionLogic.logic && state.taskSelectionLogic.logic != "") {
+ logic = state.taskSelectionLogic.logic;
+ }
+ var edit_disabled = false;
+ if (createEditOrView != "CREATE" && createEditOrView != "EDIT") {
+ edit_disabled = true;
+ }
+ var textarea = showHideTextarea("editEventFormTaskSelLogicInput" + "_" + statename, logic, false, !edit_disabled,
+ false);
+
+ tasksellogicLI.appendChild(textarea);
+
+ // tasksellogic type
+ var tasksellogicTypeLabel = document.createElement("label");
+ tasksellogicdiv.appendChild(tasksellogicTypeLabel);
+ tasksellogicTypeLabel.setAttribute("for", "editPolicyFormTaskSelLogicTypeInput" + "_" + statename);
+ tasksellogicTypeLabel.innerHTML = "Task Selection Logic Type / Flavour: ";
+ var tasksellogicTypeInput = document.createElement("input");
+ tasksellogicdiv.appendChild(tasksellogicTypeInput);
+ tasksellogicTypeInput.setAttribute("id", "editPolicyFormTaskSelLogicTypeInput" + "_" + statename);
+ tasksellogicTypeInput.setAttribute("type", "text");
+ tasksellogicTypeInput.setAttribute("name", "editPolicyFormTaskSelLogicTypeInput" + "_" + statename);
+ tasksellogicTypeInput.setAttribute("class", "field-taskSelLogicType ebInput ebInput_width_xLong");
+ tasksellogicTypeInput.setAttribute("placeholder", "MVEL");
+ if (state && state.taskSelectionLogic && state.taskSelectionLogic.logicFlavour != null
+ && state.taskSelectionLogic.logicFlavour != ""
+ && state.taskSelectionLogic.logicFlavour.toUpperCase() != "UNDEFINED") {
+ tasksellogicTypeInput.value = state.taskSelectionLogic.logicFlavour;
+ }
+ tasksellogicTypeInput.readOnly = (createEditOrView != "CREATE" && createEditOrView != "EDIT");
+
+ divUL.appendChild(tasksellogicdiv);
+
+ // Output mappings
+ var outputsLI = document.createElement("li");
+ divUL.appendChild(outputsLI);
+ var outputsLabel = document.createElement("label");
+ outputsLI.appendChild(outputsLabel);
+ outputsLabel.innerHTML = "State Output Mappings: ";
+ outputsLabel.setAttribute("for", "editPolicyFormOutputsUL" + "_" + statename);
+ var outsUL = document.createElement("ul");
+ outsUL.setAttribute("id", "editPolicyFormOutputsUL" + "_" + statename);
+ outputsLI.appendChild(outsUL);
+ // Direct Output Mappings
+ var dir_outputsLI = document.createElement("li");
+ outsUL.appendChild(dir_outputsLI);
+ var dir_outputsLabel = document.createElement("label");
+ dir_outputsLI.appendChild(dir_outputsLabel);
+ dir_outputsLI.innerHTML = "Direct State Output Mappings: ";
+ dir_outputsLabel.setAttribute("for", "editPolicyFormDirOutputsTable" + "_" + statename);
+ var dir_outputstable = document.createElement("table");
+ dir_outputstable.setAttribute("id", "editPolicyFormDirOutputsTable" + "_" + statename);
+ dir_outputstable.setAttribute("name", "editPolicyFormDirOutputsTable" + "_" + statename);
+ dir_outputstable.setAttribute("class", "table-policyoutput");
+ dir_outputsLI.appendChild(dir_outputstable);
+ var dir_outputstable_head = document.createElement("thead");
+ dir_outputstable.appendChild(dir_outputstable_head);
+ var dir_outputstable_head_tr = document.createElement("tr");
+ dir_outputstable_head.appendChild(dir_outputstable_head_tr);
+ dir_outputstable_head_tr.appendChild(document.createElement("th")); // empty,
+ // for
+ // delete
+ // button
+ var dir_outputstable_name_head_th = document.createElement("th");
+ dir_outputstable_head_tr.appendChild(dir_outputstable_name_head_th);
+ dir_outputstable_name_head_th.innerHTML = "Local Name for Output Mapping: ";
+ dir_outputstable_name_head_th.setAttribute("class", "table-policyoutput-heading form-heading");
+ var dir_outputstable_nextstate_head_th = document.createElement("th");
+ dir_outputstable_head_tr.appendChild(dir_outputstable_nextstate_head_th);
+ dir_outputstable_nextstate_head_th.innerHTML = "Next State: ";
+ dir_outputstable_nextstate_head_th.setAttribute("class", "table-policyoutput-heading form-heading");
+ var dir_outputstable_event_head_th = document.createElement("th");
+ dir_outputstable_head_tr.appendChild(dir_outputstable_event_head_th);
+ dir_outputstable_event_head_th.innerHTML = "State Output Event: ";
+ dir_outputstable_event_head_th.setAttribute("class", "table-policyoutput-heading form-heading");
+ var dir_outputstable_body = document.createElement("tbody");
+ dir_outputstable.appendChild(dir_outputstable_body);
+ var stateNextStateOptions = new Array();
+ stateNextStateOptions.push({
+ "name" : "NULL",
+ "displaytext" : "None",
+ "state" : null
+ });
+ if (policy && policy.state && policy.state.entry && $.isArray(policy.state.entry)) {
+ for (var s = 0; s < policy.state.entry.length; s++) {
+ var st = policy.state.entry[s];
+ if (statename != st.key) { // state cannot have itself as nextstate
+ stateNextStateOptions.push({
+ "name" : st.key,
+ "displaytext" : st.key,
+ "state" : st.value
+ });
+ }
+ }
+ }
+ if (state && state.stateOutputs && $.isArray(state.stateOutputs.entry)) {
+ for (var p = 0; p < state.stateOutputs.entry.length; p++) {
+ var outputEntry = state.stateOutputs.entry[p];
+ var outputName = outputEntry.key;
+ var nextState = null;
+ var nxtst = outputEntry.value.nextState.localName;
+ if (nxtst != null && nxtst.toUpperCase() != "NULL") {
+ nextState = {
+ "name" : nxtst,
+ "displaytext" : nxtst
+ };
+ }
+ if (nxtst != null && nxtst.toUpperCase() == "NULL") {
+ nextState = {
+ "name" : "NULL",
+ "displaytext" : "None"
+ };
+ }
+ var outEvent = null;
+ var oute = outputEntry.value.outgoingEvent;
+ if (oute != null && oute.name != null && oute.version != null) {
+ outEvent = {
+ "name" : oute.name,
+ "version" : oute.version,
+ "displaytext" : oute.name + ":" + oute.version
+ };
+ }
+ editPolicyForm_State_addStateDirectOutput(dir_outputstable_body, (createEditOrView == "VIEW"), statename,
+ state, outputName, nextState, outEvent, stateNextStateOptions, events);
+ }
+ }
+ // add the new Direct output button
+ if (createEditOrView == "CREATE" || createEditOrView == "EDIT") {
+ var dir_outputTR = document.createElement("tr");
+ dir_outputTR.setAttribute("class", "field-policyoutput-tr.new");
+ dir_outputstable_body.appendChild(dir_outputTR);
+ var dir_outputTD = document.createElement("td");
+ dir_outputTD.setAttribute("colspan", "4");
+ dir_outputTR.appendChild(dir_outputTD);
+ var addStateDirOutput = createAddFormButton("Add New Direct State Output Mapping")
+ dir_outputTD.appendChild(addStateDirOutput);
+ // addStateDirOutput.setAttribute("id",
+ // "editPolicyFormDirOutputsAddOutput"+"_"+statename);
+ // addStateDirOutput.setAttribute("class", "ebBtn ebBtn_large");
+ // addStateDirOutput.setAttribute("type", "submit");
+ // addStateDirOutput.setAttribute("value", Add New Direct State Output
+ // Mapping);
+ // addStateDirOutput.innerHTML =
+ // addStateDirOutput.getAttribute("value");
+ addStateDirOutput.onclick = function() {
+ return editPolicyForm_State_addStateDirectOutput(dir_outputstable_body, false, statename, state, null,
+ null, null, stateNextStateOptions, events);
+ };
+ }
+ // Logic-based Output Mappings
+ var logic_outputsLI = document.createElement("li");
+ outsUL.appendChild(logic_outputsLI);
+ var logic_outputsLabel = document.createElement("label");
+ logic_outputsLI.appendChild(dir_outputsLabel);
+ logic_outputsLI.innerHTML = "Logic-based State Output Mappings / Finalizers: ";
+ logic_outputsLabel.setAttribute("for", "editPolicyFormLogicOutputsTable" + "_" + statename);
+ var logic_outputstable = document.createElement("table");
+ logic_outputstable.setAttribute("id", "editPolicyFormLogicOutputsTable" + "_" + statename);
+ logic_outputstable.setAttribute("name", "editPolicyFormLogicOutputsTable" + "_" + statename);
+ logic_outputstable.setAttribute("class", "table-policyoutput");
+ logic_outputsLI.appendChild(logic_outputstable);
+ var logic_outputstable_head = document.createElement("thead");
+ logic_outputstable.appendChild(logic_outputstable_head);
+ var logic_outputstable_head_tr = document.createElement("tr");
+ logic_outputstable_head.appendChild(logic_outputstable_head_tr);
+ logic_outputstable_head_tr.appendChild(document.createElement("th")); // empty,
+ // for
+ // delete
+ // button
+ var logic_outputstable_name_head_th = document.createElement("th");
+ logic_outputstable_head_tr.appendChild(logic_outputstable_name_head_th);
+ logic_outputstable_name_head_th.innerHTML = "Local Name for Output Mapping: ";
+ logic_outputstable_name_head_th.setAttribute("class", "table-policyoutput-heading form-heading");
+ var logic_outputstablelogic_head_th = document.createElement("th");
+ logic_outputstable_head_tr.appendChild(logic_outputstablelogic_head_th);
+ logic_outputstablelogic_head_th.style.textAlign = "left";
+ logic_outputstablelogic_head_th.innerHTML = "Output Mapping / Finalizer Logic: ";
+ logic_outputstablelogic_head_th.setAttribute("class", "table-policyoutput-heading form-heading");
+ var logic_outputstable_body = document.createElement("tbody");
+ logic_outputstable.appendChild(logic_outputstable_body);
+ if (state && state.stateFinalizerLogicMap && $.isArray(state.stateFinalizerLogicMap.entry)) {
+ for (var p = 0; p < state.stateFinalizerLogicMap.entry.length; p++) {
+ var outputEntry = state.stateFinalizerLogicMap.entry[p];
+ var outputName = outputEntry.key;
+ var logic = null;
+ if (outputEntry.value != null && outputEntry.value.logic != null) {
+ logic = outputEntry.value.logic;
+ }
+ var flavour = null;
+ if (outputEntry.value != null && outputEntry.value.logicFlavour != null) {
+ flavour = outputEntry.value.logicFlavour;
+ }
+ editPolicyForm_State_addStateLogicOutput(logic_outputstable_body, (createEditOrView == "VIEW"), statename,
+ state, outputName, logic, flavour);
+ }
+ }
+ // add the new Logic output button
+ if (createEditOrView == "CREATE" || createEditOrView == "EDIT") {
+ var logic_outputTR = document.createElement("tr");
+ logic_outputTR.setAttribute("class", "field-policyoutput-tr.new");
+ logic_outputstable_body.appendChild(logic_outputTR);
+ var logic_outputTD = document.createElement("td");
+ logic_outputTD.setAttribute("colspan", "3");
+ logic_outputTR.appendChild(logic_outputTD);
+ var addStateLogicOutput = createAddFormButton("Add New Logic-based State Output Mapping / Finalizer");
+ logic_outputTD.appendChild(addStateLogicOutput);
+ // addStateLogicOutput.setAttribute("id",
+ // "editPolicyFormLogicOutputsAddOutput"+"_"+statename);
+ // addStateLogicOutput.setAttribute("class", "ebBtn ebBtn_large");
+ // addStateLogicOutput.setAttribute("type", "submit");
+ // addStateLogicOutput.setAttribute("value", "Add New Logic-based State
+ // Output Mapping / Finalizer");
+ // addStateLogicOutput.innerHTML =
+ // addStateLogicOutput.getAttribute("value");
+ addStateLogicOutput.onclick = function() {
+ return editPolicyForm_State_addStateLogicOutput(logic_outputstable_body, false, statename, state, null,
+ null, null);
+ };
+ }
+ return retDiv;
+}
+function editPolicyForm_State_addStateLogicOutput(parentTBody, disabled, statename, state, outputName, logic, flavour) {
+ var random_suffix = formUtils_generateUUID();
+ var outputTR = parentTBody.insertRow(parentTBody.rows.length - 1);
+ outputTR.style.verticalAlign = "top";
+ outputTR.style.textAlign = "left";
+ outputTR.setAttribute("finalizer_id", random_suffix);
+ outputTR.setAttribute("class", "field-policyoutput-tr");
+ if (outputName == null && !disabled) {
+ outputTR.setAttribute("class", "field-policyoutput-tr.new");
+ }
+ // delete
+ var deleteTD = document.createElement("td");
+ outputTR.appendChild(deleteTD);
+ var deleteDiv = document.createElement("div");
+ deleteTD.appendChild(deleteDiv);
+ if (!disabled) {
+ deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete");
+ deleteDiv.onclick = function(event) {
+ $(outputTR).hide("fast", function() {
+ outputTR.parentNode.removeChild(outputTR);
+ });
+ };
+ } else {
+ deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled");
+ }
+ // name
+ var nameTD = document.createElement("td");
+ nameTD.style.whiteSpace = "nowrap";
+ outputTR.appendChild(nameTD);
+ var nameInput = document.createElement("input");
+ nameTD.appendChild(nameInput);
+ nameInput.setAttribute("id", "editPolicyFormLogicOutputNameValue" + "_" + statename + "_" + random_suffix);
+ nameInput.setAttribute("type", "text");
+ nameInput.setAttribute("name", "editPolicyFormLogicOutputNameValue" + "_" + statename + "_" + random_suffix);
+ nameInput.setAttribute("class", "field-policy-outputname");
+ if (outputName == null && logic == null && flavour == null && !disabled) {
+ nameInput.setAttribute("class", "field-policy-outputname.new ebInput ebInput_width_xLong");
+ }
+ nameInput.setAttribute("placeholder", "A name for this Output mapper");
+ if (outputName) {
+ nameInput.value = outputName;
+ }
+ nameInput.readOnly = disabled;
+ // logic
+ var logicTD = document.createElement("td");
+ logicTD.style.width = "99%";
+ logicTD.style.whiteSpace = "nowrap";
+ outputTR.appendChild(logicTD);
+ var finalizerlogicdiv = document.createElement("div");
+ logicTD.appendChild(finalizerlogicdiv);
+ finalizerlogicdiv.setAttribute("id", "editEventFormFinalizerLogicDiv" + "_" + statename + "_" + random_suffix);
+ var finalizerlogicLabel = document.createElement("label");
+ finalizerlogicdiv.appendChild(finalizerlogicLabel);
+ finalizerlogicLabel.setAttribute("for", "editEventFormfinalizerLogicInput" + "_" + statename + "_" + random_suffix);
+ finalizerlogicLabel.innerHTML = "Logic: ";
+
+ var logicString = "";
+ if (logic != null) {
+ logicString = logic;
+ }
+ var edit_readOnly = disabled;
+ var textarea = showHideTextarea("editEventFormfinalizerLogicInput" + "_" + statename + "_" + random_suffix, logic,
+ false, !edit_readOnly, false);
+ finalizerlogicdiv.appendChild(textarea);
+
+ // finalizerlogic type
+ var finalizerlogicTypeLabel = document.createElement("label");
+ finalizerlogicdiv.appendChild(finalizerlogicTypeLabel);
+ finalizerlogicTypeLabel.setAttribute("for", "editPolicyFormFinalizerLogicTypeInput" + "_" + statename + "_"
+ + random_suffix);
+ finalizerlogicTypeLabel.innerHTML = "Type / Flavour: ";
+ var finalizerlogicTypeInput = document.createElement("input");
+ finalizerlogicdiv.appendChild(finalizerlogicTypeInput);
+ finalizerlogicTypeInput.setAttribute("id", "editPolicyFormFinalizerLogicTypeInput" + "_" + statename + "_"
+ + random_suffix);
+ finalizerlogicTypeInput.setAttribute("type", "text");
+ finalizerlogicTypeInput.setAttribute("name", "editPolicyFormFinalizerLogicTypeInput" + "_" + statename + "_"
+ + random_suffix);
+ finalizerlogicTypeInput.setAttribute("class", "field-finalizerLogicType ebInput ebInput_width_xLong");
+ finalizerlogicTypeInput.setAttribute("placeholder", "MVEL");
+ if (flavour != null) {
+ finalizerlogicTypeInput.value = flavour;
+ }
+ finalizerlogicTypeInput.readOnly = disabled;
+
+ logicTD.appendChild(finalizerlogicdiv);
+}
+
+function editPolicyForm_State_addStateDirectOutput(parentTBody, disabled, stateName, state, outputName, nextState,
+ outEvent, stateNextStateOptions, events) {
+ var random_suffix = formUtils_generateUUID();
+ var outputTR = parentTBody.insertRow(parentTBody.rows.length - 1);
+ outputTR.setAttribute("output_id", random_suffix);
+ outputTR.setAttribute("class", "field-policyoutput-tr");
+ if (outputName == null && nextState == null && nextState == null && !disabled) {
+ outputTR.setAttribute("class", "field-policyoutput-tr.new");
+ }
+ // delete
+ var deleteTD = document.createElement("td");
+ outputTR.appendChild(deleteTD);
+ var deleteDiv = document.createElement("div");
+ deleteTD.appendChild(deleteDiv);
+ if (!disabled) {
+ deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete");
+ deleteDiv.onclick = function(event) {
+ $(outputTR).hide("fast", function() {
+ outputTR.parentNode.removeChild(outputTR);
+ });
+ }
+ } else {
+ deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled");
+ }
+ // name
+ var nameTD = document.createElement("td");
+ outputTR.appendChild(nameTD);
+ var nameInput = document.createElement("input");
+ nameTD.appendChild(nameInput);
+ nameInput.setAttribute("id", "editPolicyFormDirectOutputNameValue" + "_" + stateName + "_" + random_suffix);
+ nameInput.setAttribute("type", "text");
+ nameInput.setAttribute("name", "editPolicyFormDirectOutputNameValue" + "_" + stateName + "_" + random_suffix);
+ nameInput.setAttribute("class", "field-policy-outputname ebInput ebInput_width_xLong");
+ if (outputName == null && nextState == null && nextState == null && !disabled) {
+ nameInput.setAttribute("class", "field-policy-outputname.new ebInput ebInput_width_xLong");
+ }
+ nameInput.setAttribute("placeholder", "A name for this Output mapper");
+ if (outputName) {
+ nameInput.value = outputName;
+ }
+ nameInput.readOnly = disabled;
+ // outputEvent
+ var outeventTD = document.createElement("td");
+ var outeventSelectDiv = dropdownList("editPolicyFormOutputEventValue" + "_" + stateName + "_" + random_suffix,
+ events, outEvent, disabled, null);
+ outeventTD.appendChild(outeventSelectDiv);
+ // nextstate
+ var nextstateTD = document.createElement("td");
+ var nextstateSelectDiv = dropdownList("editPolicyFormOutputNextStateValue" + "_" + stateName + "_" + random_suffix,
+ stateNextStateOptions, nextState, disabled, null, function() {
+ return editPolicyForm_getNextStateOptions();
+ });
+ nextstateTD.appendChild(nextstateSelectDiv);
+
+ outputTR.appendChild(nextstateTD);
+ outputTR.appendChild(outeventTD);
+
+}
+
+function editPolicyForm_State_addPolicyContext(parentTBody, disabled, stateName, contextName, contextreference,
+ contextAlbums) {
+ var random_suffix = formUtils_generateUUID();
+ var contextTR = parentTBody.insertRow(parentTBody.rows.length - 1);
+ contextTR.setAttribute("context_id", random_suffix);
+ contextTR.setAttribute("class", "field-policycontext-tr");
+ if (contextName == null && contextreference == null && !disabled) {
+ contextTR.setAttribute("class", "field-policycontext-tr.new");
+ }
+ // delete
+ var deleteTD = document.createElement("td");
+ contextTR.appendChild(deleteTD);
+ var deleteDiv = document.createElement("div");
+ deleteTD.appendChild(deleteDiv);
+ if (!disabled) {
+ deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete");
+ deleteDiv.onclick = function(event) {
+ $(contextTR).hide("fast", function() {
+ contextTR.parentNode.removeChild(contextTR);
+ });
+ }
+ } else {
+ deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled");
+ }
+ // context
+ var valueTD = document.createElement("td");
+ contextTR.appendChild(valueTD);
+ var selectDiv = dropdownList("editPolicyFormContextValue" + "_" + stateName + "_" + random_suffix, contextAlbums,
+ contextreference, disabled, null);
+ valueTD.appendChild(selectDiv);
+}
+
+function editPolicyForm_State_addPolicyTask(parentTBody, disabled, isdefault, state, stateName, taskreference,
+ taskSelected, taskOptions) {
+ var random_suffix = formUtils_generateUUID();
+ var taskTR = parentTBody.insertRow(parentTBody.rows.length - 1);
+ taskTR.setAttribute("task_id", random_suffix);
+ taskTR.setAttribute("class", "field-policytask-tr");
+ if (taskreference && taskSelected == null && !disabled) {
+ taskTR.setAttribute("class", "field-policytask-tr.new");
+ }
+ // delete
+ var deleteTD = document.createElement("td");
+ taskTR.appendChild(deleteTD);
+ var deleteDiv = document.createElement("div");
+ deleteTD.appendChild(deleteDiv);
+ if (!disabled) {
+ deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete");
+ deleteDiv.onclick = function(event) {
+ $(taskTR).hide("fast", function() {
+ taskTR.parentNode.removeChild(taskTR);
+ });
+ }
+ } else {
+ deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled");
+ }
+ // default
+ var defaulttaskTD = document.createElement("td");
+ taskTR.appendChild(defaulttaskTD);
+ var defaulttaskInput = document.createElement("input");
+ defaulttaskTD.appendChild(defaulttaskInput);
+ defaulttaskInput.setAttribute("id", "editPolicyFormTaskIsDefault" + "_" + stateName + "_" + random_suffix);
+ defaulttaskInput.setAttribute("value", "editPolicyFormTaskIsDefault" + "_" + stateName + "_" + random_suffix);
+ defaulttaskInput.setAttribute("type", "radio");
+ defaulttaskInput.setAttribute("name", "editPolicyFormTaskIsDefault" + "_" + stateName); // group
+ // name
+ defaulttaskInput.setAttribute("class", "field-policy-taskisdefault");
+ if (taskreference == null && taskSelected == null && !disabled) {
+ defaulttaskInput.setAttribute("class", "field-policy-taskisdefault.new");
+ }
+ defaulttaskInput.checked = isdefault;
+ defaulttaskInput.readOnly = disabled;
+ // localname
+ var localnameTD = document.createElement("td");
+ taskTR.appendChild(localnameTD);
+ var localnameInput = document.createElement("input");
+ localnameTD.appendChild(localnameInput);
+ localnameInput.setAttribute("id", "editPolicyFormTaskLocalNameValue" + "_" + stateName + "_" + random_suffix);
+ localnameInput.setAttribute("type", "text");
+ localnameInput.setAttribute("name", "editPolicyFormTaskLocalNameValue" + "_" + stateName + "_" + random_suffix);
+ localnameInput.setAttribute("class", "field-policy-tasklocalname ebInput ebInput_width_xLong");
+ if (taskreference == null && taskSelected == null && !disabled) {
+ localnameInput.setAttribute("class", "field-policy-tasklocalname.new ebInput ebInput_width_xLong");
+ }
+ localnameInput.setAttribute("placeholder", "Task's Local Name");
+ if (taskreference != null && taskreference.key != null && taskreference.key.localName != null) {
+ localnameInput.value = taskreference.key.localName;
+ }
+ localnameInput.readOnly = disabled;
+ // task
+ var valueTD = document.createElement("td");
+ taskTR.appendChild(valueTD);
+ var selectDiv = dropdownList("editPolicyFormTaskValue" + "_" + stateName + "_" + random_suffix, taskOptions,
+ taskSelected, disabled, null);
+ valueTD.appendChild(selectDiv);
+ // output type
+ var outputTypeDirectTD = document.createElement("td");
+ taskTR.appendChild(outputTypeDirectTD);
+ var outputTypeDirectLabel = document.createElement("label");
+ outputTypeDirectTD.appendChild(outputTypeDirectLabel);
+ outputTypeDirectLabel.setAttribute("for", "editPolicyFormTaskOutputType" + "_" + stateName + "_" + random_suffix
+ + "_DIRECT");
+ outputTypeDirectLabel.setAttribute("class", "label-policy-taskoutputtype");
+ outputTypeDirectLabel.innerHTML = " DIRECT";
+ var outputTypeDirectInput = document.createElement("input");
+ outputTypeDirectLabel.appendChild(outputTypeDirectInput);
+ outputTypeDirectInput.setAttribute("id", "editPolicyFormTaskOutputType" + "_" + stateName + "_" + random_suffix
+ + "_DIRECT");
+ outputTypeDirectInput.setAttribute("value", "DIRECT");
+ outputTypeDirectInput.setAttribute("type", "radio");
+ outputTypeDirectInput.setAttribute("name", "editPolicyFormTaskOutputType" + "_" + stateName + "_" + random_suffix); // group
+ // name
+ outputTypeDirectInput.setAttribute("class", "field-policy-taskoutputtype");
+ if (taskreference == null && taskSelected == null && !disabled) {
+ outputTypeDirectInput.setAttribute("class", "field-policy-taskoutputtype.new");
+ }
+ if (taskreference != null && taskreference.outputType != null && taskreference.outputType.toUpperCase() == "DIRECT") {
+ outputTypeDirectInput.checked = true;
+ }
+ outputTypeDirectInput.readOnly = disabled;
+ var outputTypeLogicTD = document.createElement("td");
+ taskTR.appendChild(outputTypeLogicTD);
+ var outputTypeLogicLabel = document.createElement("label");
+ outputTypeLogicTD.appendChild(outputTypeLogicLabel);
+ outputTypeLogicLabel.setAttribute("for", "editPolicyFormTaskOutputType" + "_" + stateName + "_" + random_suffix
+ + "_LOGIC");
+ outputTypeLogicLabel.setAttribute("class", "label-policy-taskoutputtype");
+ outputTypeLogicLabel.innerHTML = " LOGIC";
+ var outputTypeLogicInput = document.createElement("input");
+ outputTypeLogicLabel.appendChild(outputTypeLogicInput);
+ outputTypeLogicInput.setAttribute("id", "editPolicyFormTaskOutputType" + "_" + stateName + "_" + random_suffix
+ + "_LOGIC");
+ outputTypeLogicInput.setAttribute("value", "LOGIC");
+ outputTypeLogicInput.setAttribute("type", "radio");
+ outputTypeLogicInput.setAttribute("name", "editPolicyFormTaskOutputType" + "_" + stateName + "_" + random_suffix); // group
+ // name
+ outputTypeLogicInput.setAttribute("class", "field-policy-taskoutputtype");
+ if (taskreference && taskSelected == null && !disabled) {
+ outputTypeLogicInput.setAttribute("class", "field-policy-taskoutputtype.new");
+ }
+ if (taskreference != null && taskreference.outputType != null && taskreference.outputType.toUpperCase() == "LOGIC") {
+ outputTypeLogicInput.checked = true;
+ }
+ outputTypeLogicInput.readOnly = disabled;
+ // output selected
+ var outputSelectionTD = document.createElement("td");
+ taskTR.appendChild(outputSelectionTD);
+ var dir_outputselected = null;
+ var logic_outputselected = null;
+ if (taskreference != null && taskreference.output != null && taskreference.output.localName != null
+ && taskreference.outputType != null && taskreference.outputType.toUpperCase() == "DIRECT") {
+ dir_outputselected = {
+ "name" : taskreference.output.localName,
+ "displaytext" : taskreference.output.localName
+ };
+ } else if (taskreference != null && taskreference.output != null && taskreference.output.localName != null
+ && taskreference.outputType != null && taskreference.outputType.toUpperCase() == "LOGIC") {
+ logic_outputselected = {
+ "name" : taskreference.output.localName,
+ "displaytext" : taskreference.output.localName
+ };
+ }
+ var dir_outputOptions = new Array();
+ if (state != null && state.stateOutputs != null && $.isArray(state.stateOutputs.entry)) {
+ for (var p = 0; p < state.stateOutputs.entry.length; p++) {
+ var outputEntry = state.stateOutputs.entry[p].key;
+ dir_outputOptions.push({
+ "name" : outputEntry,
+ "displaytext" : outputEntry
+ });
+ }
+ }
+ var logic_outputOptions = new Array();
+ if (state != null && state.stateFinalizerLogicMap != null && $.isArray(state.stateFinalizerLogicMap.entry)) {
+ for (var p = 0; p < state.stateFinalizerLogicMap.entry.length; p++) {
+ var outputEntry = state.stateFinalizerLogicMap.entry[p].key;
+ logic_outputOptions.push({
+ "name" : outputEntry,
+ "displaytext" : outputEntry
+ });
+ }
+ }
+ var dir_selectDiv = document.createElement("div");
+ dir_selectDiv.appendChild(new dropdownList("editPolicyFormTaskDirectOutputSelection" + "_" + stateName + "_"
+ + random_suffix, dir_outputOptions, dir_outputselected, disabled, null, function() {
+ return editPolicyForm_State_getDirectOutputMappingOptions(stateName);
+ }));
+ outputSelectionTD.appendChild(dir_selectDiv);
+ var logic_selectDiv = document.createElement("div");
+ logic_selectDiv.appendChild(dropdownList("editPolicyFormTaskLogicOutputSelection" + "_" + stateName + "_"
+ + random_suffix, logic_outputOptions, logic_outputselected, disabled, null, function() {
+ return editPolicyForm_State_getLogicOutputMappingOptions(stateName);
+ }));
+ outputSelectionTD.appendChild(logic_selectDiv);
+ if (outputTypeLogicInput.checked) {
+ dir_selectDiv.style.display = "none";
+ logic_selectDiv.style.display = "inline";
+ } else if (outputTypeDirectInput.checked) {
+ dir_selectDiv.style.display = "inline";
+ logic_selectDiv.style.display = "none";
+ } else {
+ dir_selectDiv.style.display = "none";
+ logic_selectDiv.style.display = "none";
+ }
+ outputTypeDirectInput.onclick = function() {
+ if (this.checked) {
+ dir_selectDiv.style.display = "inline";
+ logic_selectDiv.style.display = "none";
+ } else {
+ dir_selectDiv.style.display = "none";
+ logic_selectDiv.style.display = "inline";
+ }
+ };
+ outputTypeLogicInput.onclick = function() {
+ if (this.checked) {
+ dir_selectDiv.style.display = "none";
+ logic_selectDiv.style.display = "inline";
+ } else {
+ dir_selectDiv.style.display = "inline";
+ logic_selectDiv.style.display = "none";
+ }
+ };
+}
+
+function editPolicyForm_State_getLogicOutputMappingOptions(statename) {
+ var outputoptions = new Array();
+ var finalizerstablerows = document.getElementById("editPolicyFormLogicOutputsTable_" + statename).rows;
+ if (finalizerstablerows && finalizerstablerows.length > 2) { // has head
+ // so just
+ // ignore
+ // (2) top
+ // row and
+ // bottom
+ // row
+ for (var i = 1; i < finalizerstablerows.length - 1; i++) {
+ var finalizerTR = finalizerstablerows[i];
+ if (finalizerTR && finalizerTR.getAttribute("finalizer_id")) {
+ var finalizer_id = finalizerTR.getAttribute("finalizer_id");
+ var finalizerlocalname = document.getElementById("editPolicyFormLogicOutputNameValue_" + statename
+ + "_" + finalizer_id).value;
+ if (finalizerlocalname != null && finalizerlocalname != "") {
+ outputoptions.push({
+ "name" : finalizerlocalname,
+ "displaytext" : finalizerlocalname
+ });
+ }
+ }
+ }
+ }
+ return outputoptions;
+}
+
+function editPolicyForm_State_getDirectOutputMappingOptions(statename) {
+ var outputoptions = new Array();
+ var outputstablerows = document.getElementById("editPolicyFormDirOutputsTable_" + statename).rows;
+ if (outputstablerows && outputstablerows.length > 2) { // has head so just
+ // ignore (2) top
+ // row and bottom
+ // row
+ for (var i = 1; i < outputstablerows.length - 1; i++) {
+ var outputTR = outputstablerows[i];
+ if (outputTR && outputTR.getAttribute("output_id")) {
+ var output_id = outputTR.getAttribute("output_id");
+ var outputlocalname = document.getElementById("editPolicyFormDirectOutputNameValue_" + statename + "_"
+ + output_id).value;
+ if (outputlocalname != null && outputlocalname != "") {
+ outputoptions.push({
+ "name" : outputlocalname,
+ "displaytext" : outputlocalname
+ });
+ }
+ }
+ }
+ }
+ return outputoptions;
+}
+
+function editPolicyForm_State_getStateBean(statename) {
+ if (statename == null || statename == "") {
+ console.error("Request for '" + statename + "' state!");
+ alert("Request for '" + statename + "' state!");
+ return null;
+ }
+ var div = document.getElementById("editPolicyFormStateDiv_" + statename);
+ if (div == null) {
+ console.error("State information requested for state " + statename + ", but that state does not exist!")
+ alert("State information requested for state " + statename + ", but that state does not exist!");
+ return null;
+ }
+ var ret = new Object();
+ // name
+ ret["name"] = statename;
+ // trigger
+ var triggervalue = document.getElementById("editPolicyFormTrigger_" + statename + "_dropdownList").selectedOption;
+ ret["trigger"] = null;
+ if (triggervalue != null && triggervalue.event != null) {
+ ret.trigger = {
+ "name" : triggervalue.event.key.name,
+ "version" : triggervalue.event.key.version
+ };
+ }
+ // context
+ var statebean_context = new Array();
+ var contextstablerows = document.getElementById("editPolicyFormContextsTable_" + statename).rows;
+ if (contextstablerows && contextstablerows.length > 1) { // no head so
+ // just ignore
+ // (1) bottom
+ // row
+ for (var i = 0; i < contextstablerows.length - 1; i++) {
+ var contextTR = contextstablerows[i];
+ if (contextTR && contextTR.getAttribute("context_id")) {
+ var context_id = contextTR.getAttribute("context_id");
+ var contextvalue = document.getElementById("editPolicyFormContextValue_" + statename + "_" + context_id
+ + "_dropdownList").selectedOption;
+ if (contextvalue != null && contextvalue.album != null) {
+ statebean_context.push({
+ "name" : contextvalue.album.key.name,
+ "version" : contextvalue.album.key.version
+ });
+ }
+ }
+ }
+ }
+ ret["contexts"] = statebean_context;
+ // outputs
+ var statebean_outputs = new Object();
+ var outputstablerows = document.getElementById("editPolicyFormDirOutputsTable_" + statename).rows;
+ if (outputstablerows && outputstablerows.length > 2) { // has head so just
+ // ignore (2) top
+ // row and bottom
+ // row
+ for (var i = 1; i < outputstablerows.length - 1; i++) {
+ var outputTR = outputstablerows[i];
+ if (outputTR && outputTR.getAttribute("output_id")) {
+ var output_id = outputTR.getAttribute("output_id");
+ var outputlocalname = document.getElementById("editPolicyFormDirectOutputNameValue_" + statename + "_"
+ + output_id).value;
+ if (outputlocalname == null || outputlocalname == "") {
+ console.error("No Local Name entered for Direct Output Mapping #" + i + " for state " + statename);
+ alert("No Local Name entered for Direct Output Mapping #" + i + " for state " + statename);
+ return null;
+ }
+ var nextstatevalue = document.getElementById("editPolicyFormOutputNextStateValue_" + statename + "_"
+ + output_id + "_dropdownList").selectedOption;
+ var nextstatename;
+ if (nextstatevalue == null) {
+ console.error("An option must be selected for Next State for Direct Output Mapping "
+ + outputlocalname + " for state " + statename);
+ alert("An option must be selected for Next State for Direct Output Mapping " + outputlocalname
+ + " for state " + statename);
+ return null;
+ } else if (nextstatevalue.name.toUpperCase() == "NULL") {
+ nextstatename = null;
+ } else {
+ nextstatename = nextstatevalue.name;
+ }
+
+ var nexteventvalue = document.getElementById("editPolicyFormOutputEventValue_" + statename + "_"
+ + output_id + "_dropdownList").selectedOption;
+ if (nexteventvalue == null || nexteventvalue.event == null || nexteventvalue.event.key == null) {
+ console.error("No Output Event selected for Direct Output Mapping " + outputlocalname
+ + " for state " + statename);
+ alert("No Output Event selected for Direct Output Mapping " + outputlocalname + " for state "
+ + statename);
+ return null;
+ }
+ var nextevent = {
+ "name" : nexteventvalue.event.key.name,
+ "version" : nexteventvalue.event.key.version
+ };
+ statebean_outputs[outputlocalname] = {
+ "event" : nextevent,
+ "nextState" : nextstatename
+ };
+ }
+ }
+ }
+ ret["stateOutputs"] = statebean_outputs;
+ // finalizers
+ var statebean_finalizers = new Object();
+ var finalizerstablerows = document.getElementById("editPolicyFormLogicOutputsTable_" + statename).rows;
+ if (finalizerstablerows && finalizerstablerows.length > 2) { // has head
+ // so just
+ // ignore
+ // (2) top
+ // row and
+ // bottom
+ // row
+ for (var i = 1; i < finalizerstablerows.length - 1; i++) {
+ var finalizerTR = finalizerstablerows[i];
+ if (finalizerTR && finalizerTR.getAttribute("finalizer_id")) {
+ var finalizer_id = finalizerTR.getAttribute("finalizer_id");
+ var finalizerlocalname = document.getElementById("editPolicyFormLogicOutputNameValue_" + statename
+ + "_" + finalizer_id).value;
+ if (finalizerlocalname == null || finalizerlocalname == "") {
+ console.error("No Local Name entered for Logic-based Output Mapping #" + i + " for state "
+ + statename);
+ alert("No Local Name entered for Logic-based Output Mapping #" + i + " for state " + statename);
+ return null;
+ }
+
+ var finalizerlogicvalue = document.getElementById("editEventFormfinalizerLogicInput_" + statename + "_"
+ + finalizer_id + "_textarea").value;
+ if (finalizerlogicvalue == null || finalizerlogicvalue == "") {
+ console.error("No Logic is specified for Logic-based Output Mapping " + finalizerlocalname
+ + " for state " + statename);
+ alert("No Logic is specified for Logic-based Output Mapping " + finalizerlocalname + " for state "
+ + statename);
+ return null;
+ }
+
+ var finalizerlogictypevalue = document.getElementById("editPolicyFormFinalizerLogicTypeInput_"
+ + statename + "_" + finalizer_id).value;
+ if (finalizerlogictypevalue == null || finalizerlogictypevalue == "") {
+ console.error("No Logic Type is specified for Logic-based Output Mapping " + finalizerlocalname
+ + " for state " + statename);
+ alert("No Logic Type is specified for Logic-based Output Mapping " + finalizerlocalname
+ + " for state " + statename);
+ return null;
+ }
+ statebean_finalizers[finalizerlocalname] = {
+ "logic" : finalizerlogicvalue,
+ "logicFlavour" : finalizerlogictypevalue
+ };
+ }
+ }
+ }
+ ret["finalizers"] = statebean_finalizers;
+ // tasks & defaulttask
+ var statebean_tasks = new Object();
+ var statebean_defaultTask = null;
+ var taskstablerows = document.getElementById("editPolicyFormTasksTable_" + statename).rows;
+ if (taskstablerows == null || taskstablerows.length <= 2) {
+ alert("No tasks selected for state " + statename);
+ console.error("No tasks selected for state " + statename);
+ return null;
+ } else { // has head so just ignore (2) top row and bottom row
+ for (var i = 1; i < taskstablerows.length - 1; i++) {
+ var taskTR = taskstablerows[i];
+ if (taskTR && taskTR.getAttribute("task_id")) {
+ var task_id = taskTR.getAttribute("task_id");
+ var tasklocalname = document.getElementById("editPolicyFormTaskLocalNameValue_" + statename + "_"
+ + task_id).value;
+ if (tasklocalname == "") {
+ console.error("No Local Name entered for task #" + i + " for state " + statename);
+ alert("No Local Name entered for task #" + i + " for state " + statename);
+ return null;
+ }
+ if (statebean_tasks[tasklocalname] != null) {
+ console.error("There cannot be more than one task called " + tasklocalname + " for state "
+ + statename);
+ alert("There cannot be more than one task called " + tasklocalname + " for state " + statename);
+ return null;
+ }
+ var taskvalue = document.getElementById("editPolicyFormTaskValue_" + statename + "_" + task_id
+ + "_dropdownList").selectedOption;
+ if (taskvalue == null || taskvalue.task == null) {
+ console.error("No Task selected for task " + tasklocalname + " for state " + statename);
+ alert("No Task selected for task " + tasklocalname + " for state " + statename);
+ return null;
+ }
+ var task = taskvalue.task;
+ var r = document.querySelector('input[name="editPolicyFormTaskOutputType_' + statename + '_' + task_id
+ + '"]:checked');
+ if (r == null) {
+ console.error("No Output Mapping type selected for task " + tasklocalname + " for state "
+ + statename);
+ alert("No Output Mapping type selected for task " + tasklocalname + " for state " + statename);
+ return null;
+ }
+ var outputtype = r.value;
+ var outputname = null;
+ if (outputtype == "DIRECT") {
+ var diroutput = document.getElementById("editPolicyFormTaskDirectOutputSelection_" + statename
+ + "_" + task_id + "_dropdownList").selectedOption;
+ if (diroutput == null) {// } || diroutput.output == null){
+ console.error("No DIRECT Output Mapping selected for task " + tasklocalname + " for state "
+ + statename);
+ alert("No DIRECT Output Mapping selected for task " + tasklocalname + " for state " + statename);
+ }
+ outputname = diroutput.name;
+ } else if (outputtype == "LOGIC") {
+ var logoutput = document.getElementById("editPolicyFormTaskLogicOutputSelection_" + statename + "_"
+ + task_id + "_dropdownList").selectedOption;
+ if (logoutput == null || logoutput.name == null) {
+ console.error("No LOGIC Output Mapping selected for task " + tasklocalname + " for state "
+ + statename);
+ alert("No LOGIC Output Mapping selected for task " + tasklocalname + " for state " + statename);
+ }
+ outputname = logoutput.name;
+ } else {
+ console.error("Unknown Output Mapping type ('" + outputtype + "') selected for task "
+ + tasklocalname + " for state " + statename);
+ alert("Unknown Output Mapping type ('" + outputtype + "') selected for task " + tasklocalname
+ + " for state " + statename);
+ return null;
+ }
+ statebean_tasks[tasklocalname] = {
+ "task" : {
+ "name" : task.key.name,
+ "version" : task.key.version
+ },
+ "outputType" : outputtype,
+ "outputName" : outputname
+ };
+
+ var r2 = document.getElementById("editPolicyFormTaskIsDefault_" + statename + "_" + task_id);
+ if (taskstablerows.length <= 3 || (r2 != null && r2.checked == true)) { // default
+ // is
+ // checked
+ // or
+ // there
+ // is
+ // only
+ // one
+ // task
+ statebean_defaultTask = {
+ "name" : task.key.name,
+ "version" : task.key.version
+ };
+ }
+
+ }
+ }
+ }
+ ret["tasks"] = statebean_tasks;
+ ret["defaultTask"] = statebean_defaultTask;
+ // tasksellogic
+ var tsl = document.getElementById("editEventFormTaskSelLogicInput_" + statename + "_textarea").value;
+ var tsl_type = document.getElementById("editPolicyFormTaskSelLogicTypeInput_" + statename).value;
+ if (tsl == null || tsl == "" || tsl_type == null || tsl_type == "") {
+ if (statebean_tasks != null && taskstablerows.length > 3) { // there is
+ // more than
+ // 1 task
+ console
+ .error("State "
+ + statename
+ + " has more than one task reference so Task Selection Logic and Task Selection Logic type must be specified");
+ alert("State "
+ + statename
+ + " has more than one task reference so Task Selection Logic and Task Selection Logic type must be specified");
+ return null;
+ }
+ } else if ((tsl == null || tsl == "") && (tsl_type == null || tsl_type == "")) {
+ ret["taskSelectionLogic"] = null;
+ } else {
+ ret["taskSelectionLogic"] = {
+ "logic" : tsl,
+ "logicFlavour" : tsl_type
+ };
+ }
+
+ return ret;
+
+}