From c953b91e64b6961f7e52687a6eed086e8adcd587 Mon Sep 17 00:00:00 2001 From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local> Date: Wed, 5 Aug 2020 15:33:54 +0200 Subject: [PATCH] Conditional workflow form fields fix --- .../WorkflowTask_entity.aod | 1 + .../entityfields/formresult/onValueChange.js | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js diff --git a/entity/WorkflowTask_entity/WorkflowTask_entity.aod b/entity/WorkflowTask_entity/WorkflowTask_entity.aod index 3ffbe846c7..938fbcdc99 100644 --- a/entity/WorkflowTask_entity/WorkflowTask_entity.aod +++ b/entity/WorkflowTask_entity/WorkflowTask_entity.aod @@ -31,6 +31,7 @@ </entityField> <entityField> <name>FORMRESULT</name> + <onValueChange>%aditoprj%/entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js</onValueChange> </entityField> <entityField> <name>NAME</name> diff --git a/entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js b/entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js new file mode 100644 index 0000000000..249aba04bb --- /dev/null +++ b/entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js @@ -0,0 +1,25 @@ +import("system.result"); +import("system.vars"); +import("system.workflow"); +import("system.neon"); + +var taskId = vars.get("$field.UID"); +var newResult = vars.get("$local.value"); +var oldResult = vars.get("$field.FORMRESULT"); + +if (newResult && newResult !== oldResult) +{ + /* + * fieldListeners = all fields that are used inside a visibility expression + * -> if one of these fields is changed, set the new FORMDEFINITION + */ + var fieldListeners = JSON.parse(workflow.getFormFieldListeners(taskId)); + newResult = newResult ? JSON.parse(newResult) : {}; + oldResult = oldResult ? JSON.parse(oldResult) : {}; + var isRefreshRequired = fieldListeners.some(function (fieldId) + { + return newResult[fieldId] !== oldResult[fieldId]; + }); + if (isRefreshRequired) + neon.setFieldValue("$field.FORMDEFINITION", workflow.getFormProperties(taskId, newResult)); +} -- GitLab