diff options
Diffstat (limited to 'client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm_State.js')
-rw-r--r-- | client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm_State.js | 1128 |
1 files changed, 1128 insertions, 0 deletions
diff --git a/client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm_State.js b/client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm_State.js new file mode 100644 index 000000000..968d2da9a --- /dev/null +++ b/client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm_State.js @@ -0,0 +1,1128 @@ +/* + * ============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_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; + +} |