diff options
author | 2022-02-15 18:02:23 +0000 | |
---|---|---|
committer | 2022-02-16 15:26:38 +0000 | |
commit | 770049ea162573d5afa1aaefed6131fe5e0a77f7 (patch) | |
tree | f702a09afd7b18879a562674c760c682c78895c0 /gui-editors/gui-editor-apex/src/main/webapp/js/ApexTaskEditForm.js | |
parent | 29df248caa234bc0dff3c20875bdaecfeba127e0 (diff) |
Refactor apex-editor frontend build
Moved frontend from src/main/resources/webapp to src/main/webapp
Moved static resources such as jquery-ui to webapp/dist folder
Configured jest to exclude webapp/dist from coverage report
Removed unused ZIP file assembly
Cleaned up POM
Issue-ID: POLICY-3896
Signed-off-by: danielhanrahan <daniel.hanrahan@est.tech>
Change-Id: Ia006eb94a39586219029866eef94aef38912ad65
Diffstat (limited to 'gui-editors/gui-editor-apex/src/main/webapp/js/ApexTaskEditForm.js')
-rw-r--r-- | gui-editors/gui-editor-apex/src/main/webapp/js/ApexTaskEditForm.js | 1024 |
1 files changed, 1024 insertions, 0 deletions
diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexTaskEditForm.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexTaskEditForm.js new file mode 100644 index 0000000..4932de6 --- /dev/null +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexTaskEditForm.js @@ -0,0 +1,1024 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2021 Bell Canada. 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========================================================= + */ + +import {taskTab_reset} from "./ApexTaskTab"; +import {dropdownList} from "./dropdownList"; +import { ajax_delete, ajax_getWithKeyInfo, ajax_post, ajax_put, ajax_get } from "./ApexAjax"; +import { formUtils_generateDescription, formUtils_generateUUID } from "./ApexFormUtils"; +import { apexUtils_removeElement, apexUtils_emptyElement, apexUtils_areYouSure, createAddFormButton, scrollToTop } from "./ApexUtils"; +import { showHideTextarea } from "./showhideTextarea"; +import {keyInformationTab_reset} from "./ApexKeyInformationTab"; + +function editTaskForm_createTask(formParent) { + // Get all contextSchemas too for task input/outputfields + var requestURL = window.restRootURL + "/ContextSchema/Get?name=&version="; + var contextSchemas = new Array(); + ajax_get(requestURL, function(data2) { + for (let value of data2.messages.message) { + var contextSchema = JSON.parse(value).apexContextSchema; + var dt = { + "name" : contextSchema.key.name, + "version" : contextSchema.key.version, + "displaytext" : contextSchema.key.name + ":" + contextSchema.key.version, + "contextSchema" : contextSchema + }; + contextSchemas.push(dt); + } + // Get all contextAlbums too for task context album references + requestURL = window.restRootURL + "/ContextAlbum/Get?name=&version="; + var contextAlbums = new Array(); + ajax_get(requestURL, function(data3) { + for (let value of data3.messages.message) { + var contextAlbum = JSON.parse(value).apexContextAlbum; + var ca = { + "name" : contextAlbum.key.name, + "version" : contextAlbum.key.version, + "displaytext" : contextAlbum.key.name + ":" + contextAlbum.key.version, + "contextAlbum" : contextAlbum + }; + contextAlbums.push(ca); + } + editTaskForm_activate(formParent, "CREATE", null, contextSchemas, contextAlbums); + }); + }); +} + +function editTaskForm_deleteTask(parent, name, version) { + var message = "Are you sure you want to delete Task \"" + name + ":" + version + "\"?"; + if (apexUtils_areYouSure(message)) { + var requestURL = window.restRootURL + "/Task/Delete?name=" + name + "&version=" + version; + ajax_delete(requestURL, function(data) { + apexUtils_removeElement("editTaskFormDiv"); + taskTab_reset(); + keyInformationTab_reset() + }); + } +} + +function editTaskForm_viewTask(formParent, name, version) { + editTaskForm_editTask_inner(formParent, name, version, "VIEW"); +} + +function editTaskForm_editTask(formParent, name, version) { + editTaskForm_editTask_inner(formParent, name, version, "EDIT"); +} + +function editTaskForm_editTask_inner(formParent, name, version, viewOrEdit) { + var requestURL = window.restRootURL + "/Task/Get?name=" + name + "&version=" + version; + ajax_getWithKeyInfo(requestURL, "apexTask", function(task) { + // Get all contextSchemas too for task inputfields + requestURL = window.restRootURL + "/ContextSchema/Get?name=&version="; + var contextSchemas = new Array(); + ajax_get(requestURL, function(data2) { + for (let value of data2.messages.message) { + var contextSchema = JSON.parse(value).apexContextSchema; + contextSchemas.push({ + "name" : contextSchema.key.name, + "version" : contextSchema.key.version, + "displaytext" : contextSchema.key.name + ":" + contextSchema.key.version, + "contextSchema" : contextSchema + }); + } + // Get all contextAlbums too for task context album references + requestURL = window.restRootURL + "/ContextAlbum/Get?name=&version="; + var contextAlbums = new Array(); + ajax_get(requestURL, function(data3) { + for (let value of data3.messages.message) { + var contextAlbum = JSON.parse(value).apexContextAlbum; + var ca = { + "name" : contextAlbum.key.name, + "version" : contextAlbum.key.version, + "displaytext" : contextAlbum.key.name + ":" + contextAlbum.key.version, + "contextAlbum" : contextAlbum + }; + contextAlbums.push(ca); + } + editTaskForm_activate(formParent, viewOrEdit, task, contextSchemas, contextAlbums); + }); + }); + }); +} + +function editTaskForm_activate(parent, operation, task, contextSchemas, contextAlbums) { + apexUtils_removeElement("editTaskFormDiv"); + var formParent = document.getElementById(parent); + + //Testing purposes + if(formParent === null) { + formParent = document.createElement('testFormParent'); + } + apexUtils_emptyElement(parent); + + var createEditOrView = ""; + + if (!operation) { + console.warn("No operation specified for TaskForm form") + } else { + createEditOrView = operation.toUpperCase(); + } + + if (createEditOrView == "EDIT" || createEditOrView == "VIEW") { + + if (!task) { + console.warn("Invalid value (\"" + task + "\") passed as a value for \"task\" for TaskForm form."); + } else { + if (!task.key || !task.key.name || task.key.name == "") { + console.warn("Invalid value (\"" + task.key.name + + "\") passed as a value for \"name\" for TaskForm form."); + } + if (!task.key || !task.key.version || task.key.version == "") { + console.warn("Invalid value (\"" + task.key.version + + "\") passed as a value for \"version\" for TaskForm form."); + } + if (!task.uuid || task.uuid == "") { + console.warn("Invalid value (\"" + task.uuid + "\") passed as a value for \"uuid\" for TaskForm form."); + } + } + } else { + console.warn("Invalid operation (\"" + operation + + "\") specified for TaskForm form. Only \"Create\", \"Edit\" and \"View\" operations are supported"); + } + + var contentelement = document.createElement("editTaskFormDiv"); + var formDiv = document.createElement("div"); + contentelement.appendChild(formDiv); + formDiv.setAttribute("id", "editTaskFormDiv"); + formDiv.setAttribute("class", "editTaskFormDiv"); + + var headingSpan = document.createElement("h2"); + formDiv.appendChild(headingSpan); + headingSpan.innerHTML = "Task Editor"; + + var form = document.createElement("editTaskForm"); + formDiv.appendChild(form); + + form.setAttribute("id", "editTaskForm"); + form.setAttribute("class", "form-style-1"); + form.setAttribute("method", "post"); + form.setAttribute("createEditOrView", createEditOrView); + + var formul = document.createElement("ul"); + form.appendChild(formul); + + var nameLI = document.createElement("li"); + formul.appendChild(nameLI); + var nameLabel = document.createElement("label"); + nameLI.appendChild(nameLabel); + nameLabel.setAttribute("for", "editTaskFormNameInput"); + nameLabel.innerHTML = "Name: "; + var nameLabelSpan = document.createElement("span"); + nameLabel.appendChild(nameLabelSpan); + nameLabelSpan.setAttribute("class", "required"); + nameLabelSpan.innerHTML = "*"; + var nameInput = document.createElement("input"); + nameLI.appendChild(nameInput); + nameInput.setAttribute("id", "editTaskFormNameInput"); + nameInput.setAttribute("type", "text"); + nameInput.setAttribute("name", "editTaskFormNameInput"); + nameInput.setAttribute("class", "field ebInput"); + nameInput.setAttribute("placeholder", "name"); + if (task && task.key && task.key.name) { + nameInput.value = task.key.name; + } + if (createEditOrView != "CREATE") { + nameInput.readOnly = true; + } + + var versionLI = document.createElement("li"); + formul.appendChild(versionLI); + var versionLabel = document.createElement("label"); + versionLI.appendChild(versionLabel); + versionLabel.setAttribute("for", "editTaskFormVersionInput"); + versionLabel.innerHTML = "Version: "; + var versionInput = document.createElement("input"); + versionLI.appendChild(versionInput); + versionInput.setAttribute("id", "editTaskFormVersionInput"); + versionInput.setAttribute("type", "text"); + versionInput.setAttribute("name", "editTaskFormVersionInput"); + versionInput.setAttribute("class", "field ebInput"); + versionInput.setAttribute("placeholder", "0.0.1"); + if (task && task.key && task.key.version) { + versionInput.value = task.key.version; + } + if (createEditOrView != "CREATE") { + versionInput.readOnly = true; + } + + var uuidLI = document.createElement("li"); + formul.appendChild(uuidLI); + var uuidLabel = document.createElement("label"); + uuidLI.appendChild(uuidLabel); + uuidLabel.setAttribute("for", "editTaskFormUuidInput"); + uuidLabel.innerHTML = "UUID: "; + var uuidInput = document.createElement("input"); + uuidLI.appendChild(uuidInput); + uuidInput.setAttribute("id", "editTaskFormUuidInput"); + uuidInput.setAttribute("type", "text"); + uuidInput.setAttribute("name", "editTaskFormUuidInput"); + uuidInput.setAttribute("class", "field-long ebInput ebInput_width_full"); + uuidInput.setAttribute("placeholder", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"); + if (task && task.uuid) { + uuidInput.value = task.uuid; + } + if (createEditOrView != "CREATE") { + uuidInput.readOnly = true; + } + + var edit_disabled = (createEditOrView != "CREATE" && createEditOrView != "EDIT"); + + // description + var descriptionLI = document.createElement("li"); + formul.appendChild(descriptionLI); + var descriptionLabel = document.createElement("label"); + descriptionLI.appendChild(descriptionLabel); + descriptionLabel.setAttribute("for", "editTaskFormDescriptionTextArea"); + descriptionLabel.innerHTML = "Description: "; + var descriptionTextArea = document.createElement("textarea"); + descriptionLI.appendChild(descriptionTextArea); + descriptionTextArea.setAttribute("id", "editTaskFormDescriptionTextArea"); + descriptionTextArea.setAttribute("name", "editTaskFormDescriptionTextArea"); + descriptionTextArea.setAttribute("class", "field-long field-textarea ebTextArea ebTextArea_width_full"); + if (task && task.description) { + descriptionTextArea.value = task.description; + } + descriptionTextArea.readOnly = edit_disabled; + + // input fields + var inputfieldsLI = document.createElement("li"); + formul.appendChild(inputfieldsLI); + var inputfieldsLabel = document.createElement("label"); + inputfieldsLI.appendChild(inputfieldsLabel); + inputfieldsLabel.setAttribute("for", "editTaskFormInputFieldsTable"); + inputfieldsLabel.innerHTML = "Task Input Fields: "; + var inputfieldstable = document.createElement("table"); + inputfieldstable.setAttribute("id", "editTaskFormInputFieldsTable"); + inputfieldstable.setAttribute("name", "editTaskFormInputFieldsTable"); + inputfieldstable.setAttribute("class", "table-taskinputfield"); + inputfieldsLI.appendChild(inputfieldstable); + var inputfieldstable_head = document.createElement("thead"); + inputfieldstable.appendChild(inputfieldstable_head); + var inputfieldstable_head_tr = document.createElement("tr"); + inputfieldstable_head.appendChild(inputfieldstable_head_tr); + inputfieldstable_head_tr.appendChild(document.createElement("th")); // empty, + // for + // delete + // button + var inputfieldstable_head_th = document.createElement("th"); + inputfieldstable_head_tr.appendChild(inputfieldstable_head_th); + inputfieldstable_head_th.innerHTML = "Input Field Name: "; + inputfieldstable_head_th.setAttribute("class", "table-taskinputfield-heading form-heading"); + inputfieldstable_head_th = document.createElement("th"); + inputfieldstable_head_tr.appendChild(inputfieldstable_head_th); + inputfieldstable_head_th.innerHTML = "Input Field Type/Schema: "; + inputfieldstable_head_th.setAttribute("class", "table-taskinputfield-heading form-heading"); + inputfieldstable_head_th = document.createElement("th"); + inputfieldstable_head_tr.appendChild(inputfieldstable_head_th); + inputfieldstable_head_th.innerHTML = "Optional: "; + inputfieldstable_head_th.setAttribute("class", "table-eventparam-heading form-heading"); + var inputfieldstable_body = document.createElement("tbody"); + inputfieldstable.appendChild(inputfieldstable_body); + // Add the inputfields + if (task && task.inputFields && task.inputFields.entry) { + for (let inputfieldEntry of task.inputFields.entry) { + var contextSchema = inputfieldEntry.value.fieldSchemaKey; + contextSchema["displaytext"] = contextSchema.name + ":" + contextSchema.version; + editTaskForm_addTaskInputField(inputfieldstable_body, (createEditOrView == "VIEW"), inputfieldEntry.key, + inputfieldEntry.value.optional, contextSchema, contextSchemas); + } + } + // add the New Input Field button + if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { + var inputfieldTR = document.createElement("tr"); + inputfieldTR.setAttribute("class", "field-taskinputfield-tr.new"); + inputfieldstable_body.appendChild(inputfieldTR); + var inputfieldTD = document.createElement("td"); + inputfieldTD.setAttribute("colspan", "3"); + inputfieldTR.appendChild(inputfieldTD); + var addInputFieldInput = createAddFormButton(); + inputfieldTD.appendChild(addInputFieldInput); + addInputFieldInput.onclick = function() { + editTaskForm_addTaskInputField(inputfieldstable_body, false, null, false, null, contextSchemas); + }; + } + + // output fields + var outputfieldsLI = document.createElement("li"); + formul.appendChild(outputfieldsLI); + var outputfieldsLabel = document.createElement("label"); + outputfieldsLI.appendChild(outputfieldsLabel); + outputfieldsLabel.setAttribute("for", "editTaskFormOutputFieldsTable"); + outputfieldsLabel.innerHTML = "Task Output Fields: "; + var outputfieldstable = document.createElement("table"); + outputfieldstable.setAttribute("id", "editTaskFormOutputFieldsTable"); + outputfieldstable.setAttribute("name", "editTaskFormOutputFieldsTable"); + outputfieldstable.setAttribute("class", "table-taskoutputfield"); + outputfieldsLI.appendChild(outputfieldstable); + var outputfieldstable_head = document.createElement("thead"); + outputfieldstable.appendChild(outputfieldstable_head); + var outputfieldstable_head_tr = document.createElement("tr"); + outputfieldstable_head.appendChild(outputfieldstable_head_tr); + outputfieldstable_head_tr.appendChild(document.createElement("th")); // empty, + // for + // delete + // button + var outputfieldstable_head_th = document.createElement("th"); + outputfieldstable_head_tr.appendChild(outputfieldstable_head_th); + outputfieldstable_head_th.innerHTML = "Output Field Name: "; + outputfieldstable_head_th.setAttribute("class", "table-taskoutputfield-heading form-heading"); + outputfieldstable_head_th = document.createElement("th"); + outputfieldstable_head_tr.appendChild(outputfieldstable_head_th); + outputfieldstable_head_th.innerHTML = "Output Field Type/Schema: "; + outputfieldstable_head_th.setAttribute("class", "table-taskoutputfield-heading form-heading"); + outputfieldstable_head_th = document.createElement("th"); + outputfieldstable_head_tr.appendChild(outputfieldstable_head_th); + outputfieldstable_head_th.innerHTML = "Optional: "; + outputfieldstable_head_th.setAttribute("class", "table-eventparam-heading form-heading"); + var outputfieldstable_body = document.createElement("tbody"); + outputfieldstable.appendChild(outputfieldstable_body); + // Add the outputfields + if (task && task.outputFields && task.outputFields.entry) { + for (let outputfieldEntry of task.outputFields.entry) { + contextSchema = outputfieldEntry.value.fieldSchemaKey; + contextSchema["displaytext"] = contextSchema.name + ":" + contextSchema.version; + editTaskForm_addTaskOutputField(outputfieldstable_body, (createEditOrView == "VIEW"), outputfieldEntry.key, + outputfieldEntry.value.optional, contextSchema, contextSchemas); + } + } + // add the New Output Field button + if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { + var outputfieldTR = document.createElement("tr"); + outputfieldTR.setAttribute("class", "field-taskoutputfield-tr.new"); + outputfieldstable_body.appendChild(outputfieldTR); + var outputfieldTD = document.createElement("td"); + outputfieldTD.setAttribute("colspan", "3"); + outputfieldTR.appendChild(outputfieldTD); + var addOutputFieldInput = createAddFormButton(); + outputfieldTD.appendChild(addOutputFieldInput); + addOutputFieldInput.onclick = function() { + editTaskForm_addTaskOutputField(outputfieldstable_body, false, null, false, null, contextSchemas); + }; + } + + // tasklogic + var tasklogicLI = document.createElement("li"); + formul.appendChild(tasklogicLI); + var tasklogicLabel = document.createElement("label"); + tasklogicLI.appendChild(tasklogicLabel); + tasklogicLabel.setAttribute("for", "editTaskFormTaskLogicTextArea"); + tasklogicLabel.innerHTML = "Task Logic: "; + var tlogic = null; + if (task && task.taskLogic && task.taskLogic.logic) { + tlogic = task.taskLogic.logic; + } + // showHideTextarea(id_prefix, content, initialshow, editable, disabled) + var textarea = showHideTextarea("editTaskFormTaskLogicTextArea", tlogic, false, !edit_disabled, false); + + tasklogicLI.appendChild(textarea); + + // tasklogic type + var taskLogicTypeLI = document.createElement("li"); + formul.appendChild(taskLogicTypeLI); + var taskLogicTypeLabel = document.createElement("label"); + taskLogicTypeLI.appendChild(taskLogicTypeLabel); + taskLogicTypeLabel.setAttribute("for", "editTaskFormTaskLogicTypeInput"); + taskLogicTypeLabel.innerHTML = "Task Logic Type / Flavour: "; + var taskLogicTypeInput = document.createElement("input"); + taskLogicTypeLI.appendChild(taskLogicTypeInput); + taskLogicTypeInput.setAttribute("id", "editTaskFormTaskLogicTypeInput"); + taskLogicTypeInput.setAttribute("type", "text"); + taskLogicTypeInput.setAttribute("name", "editTaskFormTaskLogicTypeInput"); + taskLogicTypeInput.setAttribute("class", "field-taskLogicType ebInput"); + taskLogicTypeInput.setAttribute("placeholder", "MVEL"); + if (task && task.taskLogic && task.taskLogic.logicFlavour) { + taskLogicTypeInput.value = task.taskLogic.logicFlavour; + } + if (createEditOrView != "CREATE" && createEditOrView != "EDIT") { + taskLogicTypeInput.readOnly = true; + } + + // parameters + var paramsLI = document.createElement("li"); + formul.appendChild(paramsLI); + var paramsLabel = document.createElement("label"); + paramsLI.appendChild(paramsLabel); + paramsLabel.setAttribute("for", "editTaskFormParamsTable"); + paramsLabel.innerHTML = "Task Parameters: "; + var paramstable = document.createElement("table"); + paramstable.setAttribute("id", "editTaskFormParamsTable"); + paramstable.setAttribute("name", "editTaskFormParamsTable"); + paramstable.setAttribute("class", "table-taskparam"); + paramsLI.appendChild(paramstable); + var paramstable_head = document.createElement("thead"); + paramstable.appendChild(paramstable_head); + var paramstable_head_tr = document.createElement("tr"); + paramstable_head.appendChild(paramstable_head_tr); + paramstable_head_tr.appendChild(document.createElement("th")); // empty, + // for + // delete + // button + var paramstable_head_th = document.createElement("th"); + paramstable_head_tr.appendChild(paramstable_head_th); + paramstable_head_th.innerHTML = "Task Parameter Name: "; + paramstable_head_th.setAttribute("class", "table-taskparam-heading form-heading"); + paramstable_head_th = document.createElement("th"); + paramstable_head_tr.appendChild(paramstable_head_th); + paramstable_head_th.innerHTML = "Task Parameter Value: "; + paramstable_head_th.setAttribute("class", "table-taskparam-heading form-heading"); + var paramstable_body = document.createElement("tbody"); + paramstable.appendChild(paramstable_body); + // Add the params + if (task && task.taskParameters && task.taskParameters.entry) { + for (let paramEntry of task.taskParameters.entry) { + var paramName = paramEntry.key; + var paramValue = paramEntry.value.defaultValue; + editTaskForm_addTaskParameter(paramstable_body, (createEditOrView == "VIEW"), paramName, paramValue); + } + } + // add the Task Parameter button + if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { + var paramTR = document.createElement("tr"); + paramTR.setAttribute("class", "field-taskparam-tr.new"); + paramstable_body.appendChild(paramTR); + var paramTD = document.createElement("td"); + paramTD.setAttribute("colspan", "3"); + paramTR.appendChild(paramTD); + var addParamInput = createAddFormButton(); + paramTD.appendChild(addParamInput); + addParamInput.onclick = function() { + editTaskForm_addTaskParameter(paramstable_body, false, null, null); + }; + } + + // Context Albums references + var contextsLI = document.createElement("li"); + formul.appendChild(contextsLI); + var contextsLabel = document.createElement("label"); + contextsLI.appendChild(contextsLabel); + contextsLabel.setAttribute("for", "editTaskFormContextsTable"); + contextsLabel.innerHTML = "Context Albums used in Task Logic: "; + var contextstable = document.createElement("table"); + contextstable.setAttribute("id", "editTaskFormContextsTable"); + contextstable.setAttribute("name", "editTaskFormContextsTable"); + contextstable.setAttribute("class", "table-taskcontext"); + 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-taskcontext-heading form-heading"); + var contextstable_body = document.createElement("tbody"); + contextstable.appendChild(contextstable_body); + // Add the contexts + if (task && task.contextAlbumReference && $.isArray(task.contextAlbumReference)) { + for (let contextEntry of task.contextAlbumReference) { + var contextName = contextEntry.name + ":" + contextEntry.version; + var ce = { + "name" : contextEntry.name, + "version" : contextEntry.version, + "displaytext" : contextName + }; + editTaskForm_addTaskContext(contextstable_body, (createEditOrView == "VIEW"), contextName, ce, + contextAlbums); + } + } + // add the Task Context button + if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { + var contextTR = document.createElement("tr"); + contextTR.setAttribute("class", "field-taskcontext-tr.new"); + contextstable_body.appendChild(contextTR); + var contextTD = document.createElement("td"); + contextTD.setAttribute("colspan", "2"); + contextTR.appendChild(contextTD); + var addContextInput = createAddFormButton(); + contextTD.appendChild(addContextInput); + addContextInput.onclick = function() { + editTaskForm_addTaskContext(contextstable_body, false, null, null, contextAlbums); + }; + } + + // buttons + var inputLI = document.createElement("li"); + formul.appendChild(inputLI); + if (createEditOrView == "CREATE") { + var generateUUIDInput = document.createElement("button"); + inputLI.appendChild(generateUUIDInput); + generateUUIDInput.setAttribute("id", "generateUUID"); + generateUUIDInput.setAttribute("class", "ebBtn ebBtn_large"); + generateUUIDInput.setAttribute("type", "submit"); + generateUUIDInput.setAttribute("value", "Generate UUID"); + generateUUIDInput.onclick = editTaskForm_generateUUIDPressed; + generateUUIDInput.innerHTML = generateUUIDInput.getAttribute("value"); + var inputSpan0 = document.createElement("span"); + inputLI.appendChild(inputSpan0); + inputSpan0.setAttribute("class", "required"); + inputSpan0.innerHTML = " "; + + var generateDescriptionInput = document.createElement("button"); + inputLI.appendChild(generateDescriptionInput); + generateDescriptionInput.setAttribute("id", "generateDescription"); + generateDescriptionInput.setAttribute("class", "ebBtn ebBtn_large"); + generateDescriptionInput.setAttribute("type", "submit"); + generateDescriptionInput.setAttribute("value", "Generate Description"); + generateDescriptionInput.onclick = editTaskForm_generateDescriptionPressed; + generateDescriptionInput.innerHTML = generateDescriptionInput.getAttribute("value"); + var inputSpan1 = document.createElement("span"); + inputLI.appendChild(inputSpan1); + inputSpan1.setAttribute("class", "required"); + inputSpan1.innerHTML = " "; + } + + var cancelInput = document.createElement("button"); + inputLI.appendChild(cancelInput); + cancelInput.setAttribute("id", "cancel"); + cancelInput.setAttribute("class", "ebBtn ebBtn_large"); + cancelInput.setAttribute("type", "submit"); + cancelInput.setAttribute("value", "Cancel"); + cancelInput.onclick = editTaskForm_cancelPressed; + cancelInput.innerHTML = cancelInput.getAttribute("value"); + + if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { + var inputSpan2 = document.createElement("span"); + inputLI.appendChild(inputSpan2); + inputSpan2.setAttribute("class", "required"); + inputSpan2.innerHTML = " "; + var submitInput = document.createElement("button"); + inputLI.appendChild(submitInput); + submitInput.setAttribute("id", "submit"); + submitInput.setAttribute("class", "ebBtn ebBtn_large"); + submitInput.setAttribute("type", "submit"); + submitInput.setAttribute("value", "Submit"); + submitInput.onclick = editTaskForm_submitPressed; + submitInput.innerHTML = submitInput.getAttribute("value"); + } + + formParent.appendChild(contentelement); + scrollToTop(); +} + +function editTaskForm_addTaskInputField(parentTBody, disabled, name, optional, contextSchema, contextSchemas) { + var random_suffix = formUtils_generateUUID(); + + var inputfieldTR = parentTBody.insertRow(parentTBody.rows.length - 1); + inputfieldTR.setAttribute("inputfield_id", random_suffix); + inputfieldTR.setAttribute("class", "field-taskinputfield-tr"); + if (name == null && contextSchema == null && !disabled) { + inputfieldTR.setAttribute("class", "field-taskinputfield-tr.new field-add-new"); + $(inputfieldTR).show("fast"); + } + + var deleteTD = document.createElement("td"); + inputfieldTR.appendChild(deleteTD); + var deleteDiv = document.createElement("div"); + deleteTD.appendChild(deleteDiv); + if (!disabled) { + deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete"); + deleteDiv.onclick = function(event) { + $(inputfieldTR).hide("fast", function() { + inputfieldTR.parentNode.removeChild(inputfieldTR); + }); + } + } else { + deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled"); + } + var nameTD = document.createElement("td"); + inputfieldTR.appendChild(nameTD); + var nameInput = document.createElement("input"); + nameTD.appendChild(nameInput); + nameInput.setAttribute("id", "editTaskFormInputFieldName" + "_" + random_suffix); + nameInput.setAttribute("type", "text"); + nameInput.setAttribute("name", "editTaskFormInputFieldName" + "_" + random_suffix); + nameInput.setAttribute("class", "field-taskinputfield-name ebInput ebInput_width_xLong"); + if (name == null && contextSchema == null && !disabled) { + nameInput.setAttribute("class", "field-taskinputfield-name.new ebInput ebInput_width_xLong"); + } + nameInput.setAttribute("placeholder", "Input Field Name"); + if (name) { + nameInput.value = name; + } + nameInput.readOnly = disabled; + + var contextSchemaTD = document.createElement("td"); + inputfieldTR.appendChild(contextSchemaTD); + + var selectDiv = dropdownList("editTaskFormInputFieldContextSchema" + "_" + random_suffix, contextSchemas, + contextSchema, disabled, null) + contextSchemaTD.appendChild(selectDiv); + + var inputOptionalTD = document.createElement("td"); + inputOptionalTD.setAttribute("class", "field-checkbox-center"); + inputfieldTR.appendChild(inputOptionalTD); + var inputOptional = document.createElement("input"); + inputOptional.setAttribute("type", "checkbox"); + inputOptional.setAttribute("id", "editTaskFormInputFieldOptional" + "_" + random_suffix); + inputOptional.setAttribute("name", "editTaskFormInputFieldOptional" + "_" + random_suffix); + inputOptional.setAttribute("class", "field-eventparam-optional"); + if (name == null && contextSchema == null && !disabled) { + inputOptional.setAttribute("class", "field-eventparam-optional.new"); + } + if (optional) { + inputOptional.checked = true; + } else { + inputOptional.checked = false; + } + inputOptional.disabled = disabled; + inputOptionalTD.appendChild(inputOptional); +} + +function editTaskForm_addTaskOutputField(parentTBody, disabled, name, optional, contextSchema, contextSchemas) { + var random_suffix = formUtils_generateUUID(); + + var outputfieldTR = parentTBody.insertRow(parentTBody.rows.length - 1); + outputfieldTR.setAttribute("outputfield_id", random_suffix); + outputfieldTR.setAttribute("class", "field-taskoutputfield-tr"); + if (name == null && contextSchema == null && !disabled) { + outputfieldTR.setAttribute("class", "field-taskoutputfield-tr.new field-add-new"); + $(outputfieldTR).show("fast"); + } + + var deleteTD = document.createElement("td"); + outputfieldTR.appendChild(deleteTD); + var deleteDiv = document.createElement("div"); + deleteTD.appendChild(deleteDiv); + if (!disabled) { + deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete"); + deleteDiv.onclick = function(event) { + $(outputfieldTR).hide("fast", function() { + outputfieldTR.parentNode.removeChild(outputfieldTR); + }); + } + } else { + deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon ebIcon_disabled"); + } + var nameTD = document.createElement("td"); + outputfieldTR.appendChild(nameTD); + var nameInput = document.createElement("input"); + nameTD.appendChild(nameInput); + nameInput.setAttribute("id", "editTaskFormOutputFieldName" + "_" + random_suffix); + nameInput.setAttribute("type", "text"); + nameInput.setAttribute("name", "editTaskFormOutputFieldName" + "_" + random_suffix); + nameInput.setAttribute("class", "field-taskoutputfield-name ebInput ebInput_width_xLong"); + if (name == null && contextSchema == null && !disabled) { + nameInput.setAttribute("class", "field-taskoutputfield-name.new ebInput ebInput_width_xLong"); + } + nameInput.setAttribute("placeholder", "Output Field Name"); + if (name) { + nameInput.value = name; + } + nameInput.readOnly = disabled; + + var contextSchemaTD = document.createElement("td"); + outputfieldTR.appendChild(contextSchemaTD); + + var selectDiv = dropdownList("editTaskFormOutputFieldContextSchema" + "_" + random_suffix, contextSchemas, + contextSchema, disabled, null) + contextSchemaTD.appendChild(selectDiv); + + var outputOptionalTD = document.createElement("td"); + outputOptionalTD.setAttribute("class", "field-checkbox-center"); + outputfieldTR.appendChild(outputOptionalTD); + var outputOptional = document.createElement("input"); + outputOptional.setAttribute("type", "checkbox"); + outputOptional.setAttribute("id", "editTaskFormOutputFieldOptional" + "_" + random_suffix); + outputOptional.setAttribute("name", "editTaskFormOutputFieldOptional" + "_" + random_suffix); + outputOptional.setAttribute("class", "field-eventparam-optional"); + if (name == null && contextSchema == null && !disabled) { + outputOptional.setAttribute("class", "field-eventparam-optional.new"); + } + if (optional) { + outputOptional.checked = true; + } else { + outputOptional.checked = false; + } + outputOptional.disabled = disabled; + outputOptionalTD.appendChild(outputOptional); +} + +function editTaskForm_addTaskParameter(parentTBody, disabled, name, value) { + var random_suffix = formUtils_generateUUID(); + + var paramTR = parentTBody.insertRow(parentTBody.rows.length - 1); + paramTR.setAttribute("param_id", random_suffix); + paramTR.setAttribute("class", "field-taskparam-tr"); + if (name == null && value == null && !disabled) { + paramTR.setAttribute("class", "field-taskparam-tr.new field-add-new"); + $(paramTR).show("fast"); + } + + var deleteTD = document.createElement("td"); + paramTR.appendChild(deleteTD); + var deleteDiv = document.createElement("div"); + deleteTD.appendChild(deleteDiv); + if (!disabled) { + deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete"); + deleteDiv.onclick = function(event) { + $(paramTR).hide("fast", function() { + paramTR.parentNode.removeChild(paramTR); + }); + } + } else { + deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled"); + } + var nameTD = document.createElement("td"); + paramTR.appendChild(nameTD); + var nameInput = document.createElement("input"); + nameTD.appendChild(nameInput); + nameInput.setAttribute("id", "editTaskFormParamName" + "_" + random_suffix); + nameInput.setAttribute("type", "text"); + nameInput.setAttribute("name", "editTaskFormParamName" + "_" + random_suffix); + nameInput.setAttribute("class", "field-taskparam-name ebInput ebInput_width_xLong"); + if (name == null && value == null && !disabled) { + nameInput.setAttribute("class", "field-taskparam-name.new ebInput ebInput_width_xLong"); + } + nameInput.setAttribute("placeholder", "Task Parameter Name"); + if (name) { + nameInput.value = name; + } + nameInput.readOnly = disabled; + + var valueTD = document.createElement("td"); + paramTR.appendChild(valueTD); + var paramInput = document.createElement("input"); + valueTD.appendChild(paramInput); + paramInput.setAttribute("id", "editTaskFormParamValue" + "_" + random_suffix); + paramInput.setAttribute("type", "text"); + paramInput.setAttribute("name", "editTaskFormParamValue" + "_" + random_suffix); + paramInput.setAttribute("class", "field-taskparam-value ebInput ebInput_width_xLong"); + if (name == null && value == null && !disabled) { + paramInput.setAttribute("class", "field-taskparam-value.new ebInput ebInput_width_xLong"); + } + paramInput.setAttribute("placeholder", "Task Parameter Value"); + if (value) { + paramInput.value = value; + } + paramInput.readOnly = disabled; +} + +function editTaskForm_addTaskContext(parentTBody, disabled, name, albumreference, contextAlbums) { + var random_suffix = formUtils_generateUUID(); + + var contextTR = parentTBody.insertRow(parentTBody.rows.length - 1); + contextTR.setAttribute("context_id", random_suffix); + contextTR.setAttribute("class", "field-taskcontext-tr"); + if (name == null && albumreference == null && !disabled) { + contextTR.setAttribute("class", "field-taskcontext-tr.new field-add-new"); + $(contextTR).show("fast"); + } + + 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"); + } + var valueTD = document.createElement("td"); + contextTR.appendChild(valueTD); + + var selectDiv = dropdownList("editTaskFormContextValue" + "_" + random_suffix, contextAlbums, albumreference, + disabled, null); + valueTD.appendChild(selectDiv); +} + +function editTaskForm_generateUUIDPressed() { + document.getElementById("editTaskFormUuidInput").value = formUtils_generateUUID(); +} + +function editTaskForm_generateDescriptionPressed() { + document.getElementById("editTaskFormDescriptionTextArea").value = formUtils_generateDescription(document + .getElementById("editTaskFormNameInput").value, document.getElementById("editTaskFormVersionInput").value, + document.getElementById("editTaskFormUuidInput").value); +} + +function editTaskForm_cancelPressed() { + apexUtils_removeElement("editTaskFormDiv"); + taskTab_reset(); +} + +function editTaskForm_submitPressed() { + var createEditOrView = document.getElementById("editTaskForm").getAttribute("createEditOrView"); + if (!createEditOrView || createEditOrView == "" || (createEditOrView != "CREATE" && createEditOrView != "EDIT")) { + console.error("Invalid operation \"" + createEditOrView + + "\" passed to editTaskForm_submitPressed function. Edit failed"); + apexUtils_removeElement("editTaskFormDiv"); + taskTab_reset(); + return; + } + + var name = document.getElementById('editTaskFormNameInput').value; + var version = document.getElementById('editTaskFormVersionInput').value; + + // get the task inputfields + var taskbean_inputfields = null; + var inputfieldstablerows = document.getElementById("editTaskFormInputFieldsTable").rows; + if (inputfieldstablerows && inputfieldstablerows.length > 2) { + taskbean_inputfields = new Object(); + for (var i = 1; i < inputfieldstablerows.length - 1; i++) { + var inputfieldTR = inputfieldstablerows[i]; + if (inputfieldTR && inputfieldTR.getAttribute("inputfield_id")) { + var inputfield_id = inputfieldTR.getAttribute("inputfield_id"); + var inputfieldname = document.getElementById("editTaskFormInputFieldName" + "_" + inputfield_id).value; + var inputfield_optional = document.getElementById("editTaskFormInputFieldOptional" + "_" + + inputfield_id).checked; + var inputfield_dt = document.getElementById("editTaskFormInputFieldContextSchema" + "_" + inputfield_id + + "_dropdownList").selectedOption; + if (taskbean_inputfields[inputfieldname]) { + alert("Task \"" + name + "\" contains more than one Input Field called \"" + inputfieldname + "\""); + return false; + } + if (inputfield_dt == null) { + alert("Task \"" + name + "\" has no selected Context Item Schema for the Input Field called \"" + + inputfieldname + "\""); + return false; + } + var inputfield_dt_name = inputfield_dt.name; + var inputfield_dt_version = inputfield_dt.version; + taskbean_inputfields[inputfieldname] = { + "localName" : inputfieldname, + "name" : inputfield_dt_name, + "version" : inputfield_dt_version, + "optional" : inputfield_optional + }; + } + } + } + // get the task outputfields + var taskbean_outputfields = null; + var outputfieldstablerows = document.getElementById("editTaskFormOutputFieldsTable").rows; + if (outputfieldstablerows && outputfieldstablerows.length > 2) { + taskbean_outputfields = new Object(); + for (var g = 1; g < outputfieldstablerows.length - 1; g++) { + var outputfieldTR = outputfieldstablerows[g]; + if (outputfieldTR && outputfieldTR.getAttribute("outputfield_id")) { + var outputfield_id = outputfieldTR.getAttribute("outputfield_id"); + var outputfieldname = document.getElementById("editTaskFormOutputFieldName" + "_" + outputfield_id).value; + var outputfield_optional = document.getElementById("editTaskFormOutputFieldOptional" + "_" + + outputfield_id).checked; + var outputfield_dt = document.getElementById("editTaskFormOutputFieldContextSchema" + "_" + + outputfield_id + "_dropdownList").selectedOption; + if (taskbean_outputfields[outputfieldname]) { + alert("Task \"" + name + "\" contains more than one Output Field called \"" + outputfieldname + + "\""); + return false; + } + if (outputfield_dt == null) { + alert("Task \"" + name + "\" has no selected Context Item Schema for the Output Field called \"" + + outputfieldname + "\""); + return false; + } + var outputfield_dt_name = outputfield_dt.name; + var outputfield_dt_version = outputfield_dt.version; + taskbean_outputfields[outputfieldname] = { + "localName" : outputfieldname, + "name" : outputfield_dt_name, + "version" : outputfield_dt_version, + "optional" : outputfield_optional + }; + } + } + } + // get the logic fields + var logicfield = document.getElementById("editTaskFormTaskLogicTextArea_textarea").value; + var logictype = document.getElementById("editTaskFormTaskLogicTypeInput").value; + if (logictype == null || logictype == "") { + alert("Task \"" + name + "\" has no Task Logic Type"); + return false; + } + var tasklogic = { + "logic" : logicfield, + "logicFlavour" : logictype + }; + // get the task parameters + var taskbean_parameters = null; + var paramstablerows = document.getElementById("editTaskFormParamsTable").rows; + if (paramstablerows && paramstablerows.length > 2) { + taskbean_parameters = new Object(); + for (var h = 1; h < paramstablerows.length - 1; h++) { + var paramTR = paramstablerows[h]; + if (paramTR && paramTR.getAttribute("param_id")) { + var param_id = paramTR.getAttribute("param_id"); + var paramname = document.getElementById("editTaskFormParamName" + "_" + param_id).value; + var paramvalue = document.getElementById("editTaskFormParamValue" + "_" + param_id).value; + if (taskbean_parameters[paramname]) { + alert("Task \"" + name + "\" contains more than one Task Parameters called \"" + paramname + "\""); + return false; + } + taskbean_parameters[paramname] = { + "parameterName" : paramname, + "defaultValue" : paramvalue + }; + } + } + } + // get the context album references + var taskbean_context = null; + var contextstablerows = document.getElementById("editTaskFormContextsTable").rows; + if (contextstablerows && contextstablerows.length > 2) { + taskbean_context = new Array(); + for (var s = 1; s < contextstablerows.length - 1; s++) { + var contextTR = contextstablerows[s]; + if (contextTR && contextTR.getAttribute("context_id")) { + var context_id = contextTR.getAttribute("context_id"); + var contextalbumvalue = document.getElementById("editTaskFormContextValue" + "_" + context_id + + "_dropdownList").selectedOption; + if (contextalbumvalue == null) { + alert("Task \"" + name + "\" has Context Album reference, but no Context Album is selected"); + return false; + } + var contextalbumname = contextalbumvalue.displaytext; + for (let value of taskbean_context) { + if (value != null && value.name == contextalbumvalue.name + && value.version == contextalbumvalue.version) { + alert("Task \"" + name + "\" references Context Album \"" + contextalbumname + + "\" more than once"); + return false; + } + } + taskbean_context.push({ + "name" : contextalbumvalue.name, + "version" : contextalbumvalue.version + }); + } + } + } + + // generate an task bean to json-ify and send in rest request + var taskbean = { + "name" : name, + "version" : version, + "uuid" : document.getElementById('editTaskFormUuidInput').value, + "description" : document.getElementById('editTaskFormDescriptionTextArea').value, + "taskLogic" : tasklogic, + "inputFields" : taskbean_inputfields, + "outputFields" : taskbean_outputfields, + "parameters" : taskbean_parameters, + "contexts" : taskbean_context + } + var jsonString = JSON.stringify(taskbean); + + if (createEditOrView == "CREATE") { + var requestURL = window.restRootURL + "/Task/Create"; + ajax_post(requestURL, jsonString, function(resultData) { + apexUtils_removeElement("editTaskFormDiv"); + taskTab_reset(); + keyInformationTab_reset() + }); + } else if (createEditOrView == "EDIT") { + requestURL = window.restRootURL + "/Task/Update"; + ajax_put(requestURL, jsonString, function(resultData) { + apexUtils_removeElement("editTaskFormDiv"); + taskTab_reset(); + keyInformationTab_reset() + }); + } + +} + +export { + editTaskForm_activate, + editTaskForm_addTaskContext, + editTaskForm_addTaskInputField, + editTaskForm_addTaskOutputField, + editTaskForm_addTaskParameter, + editTaskForm_cancelPressed, + editTaskForm_createTask, + editTaskForm_deleteTask, + editTaskForm_editTask, + editTaskForm_editTask_inner, + editTaskForm_generateDescriptionPressed, + editTaskForm_generateUUIDPressed, + editTaskForm_submitPressed, + editTaskForm_viewTask +} |