From c3096337918bdd510e178bfa1b2e24ce23ca271a Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Tue, 2 Apr 2024 10:58:31 +0200 Subject: [PATCH 1/5] persist values of disabled ecrffield, listentrytag, inquiry --- .../service/proband/ProbandServiceImpl.java | 12 ++++---- .../ctsms/service/trial/TrialServiceImpl.java | 28 +++++++++++-------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/core/src/main/java/org/phoenixctms/ctsms/service/proband/ProbandServiceImpl.java b/core/src/main/java/org/phoenixctms/ctsms/service/proband/ProbandServiceImpl.java index 2f538403f13d..3633b05f30a9 100644 --- a/core/src/main/java/org/phoenixctms/ctsms/service/proband/ProbandServiceImpl.java +++ b/core/src/main/java/org/phoenixctms/ctsms/service/proband/ProbandServiceImpl.java @@ -187,9 +187,10 @@ private void addUpdateInquiryValue(InquiryValueInVO inquiryValueIn, Proband prob InquiryValueJsonVO resultJs = null; JournalEntryDao journalEntryDao = this.getJournalEntryDao(); if (id == null) { - if (inquiry.isDisabled()) { - inquiryValueIn = ServiceUtil.createPresetInquiryInValue(inquiry, proband.getId(), this.getInputFieldSelectionSetValueDao()); - } + // override disabled values with preset: + //if (inquiry.isDisabled()) { + // inquiryValueIn = ServiceUtil.createPresetInquiryInValue(inquiry, proband.getId(), this.getInputFieldSelectionSetValueDao()); + //} checkInquiryValueInput(inquiryValueIn, proband, inquiry); ServiceUtil.addAutocompleteSelectionSetValue(inquiry.getField(), inquiryValueIn.getTextValue(), now, user, this.getInputFieldSelectionSetValueDao(), journalEntryDao); InquiryValue inquiryValue = inquiryValueDao.inquiryValueInVOToEntity(inquiryValueIn); @@ -211,8 +212,9 @@ private void addUpdateInquiryValue(InquiryValueInVO inquiryValueIn, Proband prob } } else { InquiryValue originalInquiryValue = CheckIDUtil.checkInquiryValueId(id, inquiryValueDao); - if (!inquiry.isDisabled() - && !ServiceUtil.inquiryValueEquals(inquiryValueIn, originalInquiryValue.getValue(), force)) { + if (//!inquiry.isDisabled() + // && + !ServiceUtil.inquiryValueEquals(inquiryValueIn, originalInquiryValue.getValue(), force)) { checkInquiryValueInput(inquiryValueIn, proband, inquiry); ServiceUtil.addAutocompleteSelectionSetValue(inquiry.getField(), inquiryValueIn.getTextValue(), now, user, this.getInputFieldSelectionSetValueDao(), journalEntryDao); diff --git a/core/src/main/java/org/phoenixctms/ctsms/service/trial/TrialServiceImpl.java b/core/src/main/java/org/phoenixctms/ctsms/service/trial/TrialServiceImpl.java index 46f32fd95105..f4193431b8b7 100644 --- a/core/src/main/java/org/phoenixctms/ctsms/service/trial/TrialServiceImpl.java +++ b/core/src/main/java/org/phoenixctms/ctsms/service/trial/TrialServiceImpl.java @@ -624,10 +624,11 @@ private void addUpdateEcrfFieldValue(ECRFFieldValueInVO ecrfFieldValueIn, ECRFSt ProbandListEntry listEntry = ecrfStatusEntry.getListEntry(); boolean isAuditTrail = ecrfField.isAuditTrail() && ecrfStatusEntry.getStatus().isAuditTrail(); if (id == null) { - if (ecrfField.isDisabled()) { - ecrfFieldValueIn = ServiceUtil.createPresetEcrfFieldInValue(ecrfField, listEntry.getId(), visit != null ? visit.getId() : null, ecrfFieldValueIn.getIndex(), - this.getInputFieldSelectionSetValueDao()); - } + // override disabled values with preset: + //if (ecrfField.isDisabled()) { + // ecrfFieldValueIn = ServiceUtil.createPresetEcrfFieldInValue(ecrfField, listEntry.getId(), visit != null ? visit.getId() : null, ecrfFieldValueIn.getIndex(), + // this.getInputFieldSelectionSetValueDao()); + //} checkEcrfFieldValueInputUnlockedForFieldStatus(ecrfFieldValueIn, ecrfStatusEntry, visit, ecrfField); checkEcrfFieldValueInput(ecrfFieldValueIn, ecrfStatusEntry, ecrfField); ServiceUtil.addAutocompleteSelectionSetValue(ecrfField.getField(), ecrfFieldValueIn.getTextValue(), now, user, this.getInputFieldSelectionSetValueDao(), @@ -662,9 +663,10 @@ private void addUpdateEcrfFieldValue(ECRFFieldValueInVO ecrfFieldValueIn, ECRFSt ecrfFieldValueIn.getIndex()))) { throw L10nUtil.initServiceException(ServiceExceptionCodes.ENTITY_WAS_MODIFIED_SINCE, originalEcrfFieldValue.getModifiedUser().getName()); } - if (!ecrfField.isDisabled() - && (!CommonUtil.isEmptyString(ecrfFieldValueIn.getReasonForChange()) - || !ServiceUtil.ecrfFieldValueEquals(ecrfFieldValueIn, originalEcrfFieldValue.getValue(), force))) { + if (//!ecrfField.isDisabled() + // && + (!CommonUtil.isEmptyString(ecrfFieldValueIn.getReasonForChange()) + || !ServiceUtil.ecrfFieldValueEquals(ecrfFieldValueIn, originalEcrfFieldValue.getValue(), force))) { checkEcrfFieldValueInputUnlockedForFieldStatus(ecrfFieldValueIn, ecrfStatusEntry, visit, ecrfField); checkEcrfFieldValueInput(ecrfFieldValueIn, ecrfStatusEntry, ecrfField); ServiceUtil.addAutocompleteSelectionSetValue(ecrfField.getField(), ecrfFieldValueIn.getTextValue(), now, user, this.getInputFieldSelectionSetValueDao(), @@ -739,9 +741,10 @@ private void addUpdateProbandListEntryTagValue(ProbandListEntryTagValueInVO prob ProbandListEntryTagValueJsonVO resultJs = null; JournalEntryDao journalEntryDao = this.getJournalEntryDao(); if (id == null) { - if (listEntryTag.isDisabled()) { - probandListEntryTagValueIn = ServiceUtil.createPresetProbandListEntryTagInValue(listEntryTag, listEntry.getId(), this.getInputFieldSelectionSetValueDao()); - } + // override disabled values with preset: + //if (listEntryTag.isDisabled()) { + // probandListEntryTagValueIn = ServiceUtil.createPresetProbandListEntryTagInValue(listEntryTag, listEntry.getId(), this.getInputFieldSelectionSetValueDao()); + //} checkProbandListEntryTagValueInput(probandListEntryTagValueIn, listEntry, listEntryTag); ServiceUtil.addAutocompleteSelectionSetValue(listEntryTag.getField(), probandListEntryTagValueIn.getTextValue(), now, user, this.getInputFieldSelectionSetValueDao(), journalEntryDao); @@ -768,8 +771,9 @@ private void addUpdateProbandListEntryTagValue(ProbandListEntryTagValueInVO prob } } else { ProbandListEntryTagValue originalListEntryTagValue = CheckIDUtil.checkProbandListEntryTagValueId(id, probandListEntryTagValueDao); - if (!listEntryTag.isDisabled() - && !ServiceUtil.probandListEntryTagValueEquals(probandListEntryTagValueIn, originalListEntryTagValue.getValue(), force)) { + if (//!listEntryTag.isDisabled() + // && + !ServiceUtil.probandListEntryTagValueEquals(probandListEntryTagValueIn, originalListEntryTagValue.getValue(), force)) { boolean isEqual = ServiceUtil.probandListEntryTagValueEquals(probandListEntryTagValueIn, originalListEntryTagValue.getValue(), false); checkProbandListEntryTagValueInput(probandListEntryTagValueIn, listEntry, listEntryTag); // access original associations before evict ServiceUtil.addAutocompleteSelectionSetValue(listEntryTag.getField(), probandListEntryTagValueIn.getTextValue(), now, user, From 0a0b9aab9e83200f55dada5686e5549b252b58f9 Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Sat, 6 Apr 2024 10:23:40 +0200 Subject: [PATCH 2/5] submit disabled field values --- .../includes/inputfield/inputFieldDummy.xhtml | 4 ++- .../includes/proband/inquiryValue.xhtml | 4 ++- .../proband/probandEcrfStatusEntry.xhtml | 8 +++-- .../includes/proband/trialParticipation.xhtml | 4 ++- .../includes/trial/inquiryValueDummy.xhtml | 4 ++- .../META-INF/includes/trial/probandList.xhtml | 4 ++- .../includes/trial/trialEcrfStatusEntry.xhtml | 10 +++--- .../resources/js/primefacesOverrides.js | 31 ++++++++++++++++--- web/src/main/webapp/shared/ecrfSection.xhtml | 6 ++-- 9 files changed, 58 insertions(+), 17 deletions(-) diff --git a/web/src/main/webapp/META-INF/includes/inputfield/inputFieldDummy.xhtml b/web/src/main/webapp/META-INF/includes/inputfield/inputFieldDummy.xhtml index 63924f102436..0e01062bb175 100644 --- a/web/src/main/webapp/META-INF/includes/inputfield/inputFieldDummy.xhtml +++ b/web/src/main/webapp/META-INF/includes/inputfield/inputFieldDummy.xhtml @@ -89,7 +89,9 @@ oncomplete="handleUpdateInputFieldTabTitles(xhr, status, args);FieldCalculation.handleInitInputFieldVariables(xhr, status, args)" icon="ui-icon ui-icon-help" ajax="true" disabled="#{!dummyInputFieldValueBean.created}" - update="input_dummy_input" /> + update="input_dummy_input"> + + + update="inquiriestrial,inquiry_input_grid"> + + + update=":tabView:probandecrfstatusentry_form:probandecrfstatus_ecrf_list,:tabView:probandecrfstatusentry_form:section_filter,:tabView:probandecrfstatusentry_form:field_query,:tabView:probandecrfstatusentry_form:ecrf_detail,:tabView:probandecrfstatusentry_form:ecrf_title,:tabView:probandecrfstatusentry_form:ecrffield_input_grid"> + + @@ -636,7 +638,9 @@ oncomplete="FieldCalculation.handleUpdateInputFieldVariables(xhr, status, args);handleUpdateProbandTabTitles(xhr, status, args)" icon="ui-icon ui-icon-disk" ajax="true" rendered="#{probandEcrfStatusEntryBean.ecrfFieldValueBean.editable}" - update="probandecrfstatus_ecrf_list,section_filter,field_query,ecrf_detail,ecrf_title,ecrffield_input_grid" /> + update="probandecrfstatus_ecrf_list,section_filter,field_query,ecrf_detail,ecrf_title,ecrffield_input_grid"> + + diff --git a/web/src/main/webapp/META-INF/includes/proband/trialParticipation.xhtml b/web/src/main/webapp/META-INF/includes/proband/trialParticipation.xhtml index d4c9e6c6178d..b8d61a03686d 100644 --- a/web/src/main/webapp/META-INF/includes/proband/trialParticipation.xhtml +++ b/web/src/main/webapp/META-INF/includes/proband/trialParticipation.xhtml @@ -350,7 +350,9 @@ oncomplete="FieldCalculation.handleUpdateInputFieldVariables(xhr, status, args);trialParticipationList.unselectAllRows();trialParticipationList.filter()" icon="ui-icon ui-icon-disk" ajax="true" disabled="#{!trialParticipationBean.probandListEntryTagValueBean.editable}" - update="tagvalue_input_grid" /> + update="tagvalue_input_grid"> + + + update="inquiry_input_grid"> + + + update="tagvalue_input_grid"> + + - - + update=":tabView:trialecrfstatusentry_form:trialecrfstatus_ecrf_list,:tabView:trialecrfstatusentry_form:section_filter,:tabView:trialecrfstatusentry_form:field_query,:tabView:trialecrfstatusentry_form:ecrf_detail,:tabView:trialecrfstatusentry_form:ecrf_title,:tabView:trialecrfstatusentry_form:ecrffield_input_grid" > + + @@ -737,7 +737,9 @@ oncomplete="FieldCalculation.handleUpdateInputFieldVariables(xhr, status, args);handleUpdateTrialTabTitles(xhr, status, args)" icon="ui-icon ui-icon-disk" ajax="true" rendered="#{trialEcrfStatusEntryBean.ecrfFieldValueBean.editable}" - update="trialecrfstatus_ecrf_list,section_filter,field_query,ecrf_detail,ecrf_title,ecrffield_input_grid" /> + update="trialecrfstatus_ecrf_list,section_filter,field_query,ecrf_detail,ecrf_title,ecrffield_input_grid" > + + diff --git a/web/src/main/webapp/resources/js/primefacesOverrides.js b/web/src/main/webapp/resources/js/primefacesOverrides.js index 9c976896d915..e41c33d0f590 100644 --- a/web/src/main/webapp/resources/js/primefacesOverrides.js +++ b/web/src/main/webapp/resources/js/primefacesOverrides.js @@ -167,12 +167,12 @@ PrimeFaces.ajax.AjaxUtils.send = function(cfg) { var jqProcess = $(PrimeFaces.escapeClientId(item)), componentPostParams = null; if (jqProcess.is('form')) { - componentPostParams = jqProcess.serializeArray(); + componentPostParams = _serializeArray(jqProcess, cfg); hasViewstate = true; } else if (jqProcess.is(':input')) { - componentPostParams = jqProcess.serializeArray(); + componentPostParams = _serializeArray(jqProcess, cfg); } else { - componentPostParams = jqProcess.find(':input').serializeArray(); + componentPostParams = _serializeArray(jqProcess.find(':input'), cfg); } $.merge(postParams, componentPostParams); @@ -188,7 +188,7 @@ PrimeFaces.ajax.AjaxUtils.send = function(cfg) { } } else { - $.merge(postParams, form.serializeArray()); + $.merge(postParams, _serializeArray(form, cfg)); } //serialize @@ -273,6 +273,29 @@ PrimeFaces.ajax.AjaxUtils.send = function(cfg) { $.ajax(xhrOptions); }; +function _serializeArray(jqProcess, cfg) { + var componentPostParams; + var includeDisabled = false; + var i; + if (cfg != null && 'params' in cfg && cfg.params != null) { + for (i = 0; i < cfg.params.length; i++) { + if (cfg.params[i].name == 'includeDisabled') { + includeDisabled = cfg.params[i].value; + break; + } + } + } + if (includeDisabled) { + var fields = jqProcess.filter(':disabled'); + fields.prop('disabled', false); + componentPostParams = jqProcess.serializeArray(); + fields.prop('disabled', true); + } else { + componentPostParams = jqProcess.serializeArray(); + } + return componentPostParams; +} + function _highlightText(jq) { if (jq != null) { diff --git a/web/src/main/webapp/shared/ecrfSection.xhtml b/web/src/main/webapp/shared/ecrfSection.xhtml index 35345ff02534..7f1e392d244c 100644 --- a/web/src/main/webapp/shared/ecrfSection.xhtml +++ b/web/src/main/webapp/shared/ecrfSection.xhtml @@ -5,7 +5,7 @@ xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html"> - team member picker + ecrf section view @@ -170,7 +170,9 @@ oncomplete="FieldCalculation.handleUpdateInputFieldVariables(xhr, status, args)" icon="ui-icon ui-icon-disk" ajax="true" disabled="#{!ecrfSectionBean.ecrfFieldValueBean.editable and !ecrfSectionBean.ecrfFieldValueBean.sectionUnlockValueMap[section]}" - update=":ecrfsection_form:ecrffield_input_grid" /> + update=":ecrfsection_form:ecrffield_input_grid"> + + From 4d74ff2bdfb3065d991451901d95fd74de64f6dd Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Sat, 6 Apr 2024 10:24:41 +0200 Subject: [PATCH 3/5] process disabled field values --- .../includes/shared/inputFieldRow.xhtml | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/web/src/main/webapp/META-INF/includes/shared/inputFieldRow.xhtml b/web/src/main/webapp/META-INF/includes/shared/inputFieldRow.xhtml index d880b8fcca50..cc8a5f8b5f1c 100644 --- a/web/src/main/webapp/META-INF/includes/shared/inputFieldRow.xhtml +++ b/web/src/main/webapp/META-INF/includes/shared/inputFieldRow.xhtml @@ -27,7 +27,7 @@ update="row#{index}" /> + rowClasses="#{fieldInput.multiLineText ? 'ctsms-textarea-row' : (fieldInput.sketch ? 'ctsms-sketchpad-row' : 'ctsms-input-row')},#{fieldInput.hasOutput ? 'ctsms-inputfield-output-row,' : ''}#{!fieldInput.fieldCommentEmpty ? 'ctsms-inputfield-comment-row,' : ''}#{!fieldInput.commentEmpty ? 'ctsms-inputfield-comment-row,' : ''}#{!fieldInput.statusCommentEmpty ? 'ctsms-inputfield-statuscomment-row,' : ''}#{((not (!enabled)) and fieldInput.reasonForChangeRequired and reasonForChangeRequired) ? 'ctsms-inputfield-reasonforchange-row,' : ''}ctsms-toolbar-row"> + @@ -98,7 +99,7 @@ rendered="#{fieldInput.selectOneDropdown}" required="#{!optional and !fieldInput.optional}" requiredMessage="#{fieldInput.requiredMessage}" - disabled="#{!enabled or fieldInput.disabled}" + disabled="#{!enabled or (fieldInput.disabled and facesContext.currentPhaseId.ordinal eq 6)}" styleClass="ctsms-control-larger" onkeyup="#{fieldInput.getEventJSCall('FieldCalculation.selectOneDropdownOnChange')}" onchange="#{fieldInput.getEventJSCall('FieldCalculation.selectOneDropdownOnChange')}"> @@ -124,7 +125,7 @@ rendered="#{fieldInput.selectOneRadio}" required="#{!optional and !fieldInput.optional}" requiredMessage="#{fieldInput.requiredMessage}" - disabled="#{!enabled or fieldInput.disabled}" + disabled="#{!enabled or (fieldInput.disabled and facesContext.currentPhaseId.ordinal eq 6)}" onkeyup="#{fieldInput.getEventJSCall('FieldCalculation.selectOneRadioOnChange')}" onchange="#{fieldInput.getEventJSCall('FieldCalculation.selectOneRadioOnChange')}"> @@ -148,7 +149,7 @@ label="#{fieldInput.label}" rendered="#{fieldInput.selectMany}" required="#{!optional and !fieldInput.optional}" requiredMessage="#{fieldInput.requiredMessage}" - disabled="#{!enabled or fieldInput.disabled}" + disabled="#{!enabled or (fieldInput.disabled and facesContext.currentPhaseId.ordinal eq 6)}" layout="#{fieldInput.selectVertical ? 'pageDirection' : 'lineDirection'}" onkeyup="#{fieldInput.getEventJSCall('FieldCalculation.selectManyOnChange')}" onchange="#{fieldInput.getEventJSCall('FieldCalculation.selectManyOnChange')}"> @@ -170,7 +171,7 @@ rendered="#{fieldInput.autocomplete}" required="#{!optional and !fieldInput.optional}" requiredMessage="#{fieldInput.requiredMessage}" - disabled="#{!enabled or fieldInput.disabled}" + disabled="#{!enabled or (fieldInput.disabled and facesContext.currentPhaseId.ordinal eq 6)}" label="#{fieldInput.label}" styleClass="ctsms-control-larger" autocomplete="off" minQueryLength="#{autoCompleteMinQueryLengthInputField}" @@ -197,7 +198,7 @@ rendered="#{fieldInput.checkBox}" required="#{!optional and !fieldInput.optional}" requiredMessage="#{fieldInput.requiredMessage}" - disabled="#{!enabled or fieldInput.disabled}" + disabled="#{!enabled or (fieldInput.disabled and facesContext.currentPhaseId.ordinal eq 6)}" onchange="#{fieldInput.getEventJSCall('FieldCalculation.checkBoxOnChange')}"> @@ -212,7 +213,7 @@ rendered="#{fieldInput.integer}" required="#{!optional and !fieldInput.optional}" requiredMessage="#{fieldInput.requiredMessage}" - disabled="#{!enabled or fieldInput.disabled}" + disabled="#{!enabled or (fieldInput.disabled and facesContext.currentPhaseId.ordinal eq 6)}" styleClass="ctsms-spinner" autocomplete="off" onkeyup="#{fieldInput.getEventJSCall('FieldCalculation.integerOnChange')}" onchange="#{fieldInput.getEventJSCall('FieldCalculation.integerOnChange')}"> @@ -229,7 +230,7 @@ rendered="#{fieldInput.float}" required="#{!optional and !fieldInput.optional}" requiredMessage="#{fieldInput.requiredMessage}" - disabled="#{!enabled or fieldInput.disabled}" + disabled="#{!enabled or (fieldInput.disabled and facesContext.currentPhaseId.ordinal eq 6)}" styleClass="ctsms-control-float" autocomplete="off" onkeyup="#{fieldInput.getEventJSCall('FieldCalculation.floatOnChange')}" onchange="#{fieldInput.getEventJSCall('FieldCalculation.floatOnChange')}"> @@ -246,7 +247,7 @@ rendered="#{fieldInput.date}" required="#{!optional and !fieldInput.optional}" requiredMessage="#{fieldInput.requiredMessage}" - disabled="#{!enabled or fieldInput.disabled}" + disabled="#{!enabled or (fieldInput.disabled and facesContext.currentPhaseId.ordinal eq 6)}" pattern="#{sessionScopeBean.inputDatePattern}" yearRange="#{applicationScopeBean.calendarYearRange}" showWeek="true" navigator="true" @@ -270,7 +271,7 @@ rendered="#{fieldInput.timestamp}" required="#{!optional and !fieldInput.optional}" requiredMessage="#{fieldInput.requiredMessage}" - disabled="#{!enabled or fieldInput.disabled}" + disabled="#{!enabled or (fieldInput.disabled and facesContext.currentPhaseId.ordinal eq 6)}" pattern="#{sessionScopeBean.inputDateTimePattern}" yearRange="#{applicationScopeBean.calendarYearRange}" showWeek="true" navigator="true" @@ -296,7 +297,7 @@ rendered="#{fieldInput.time}" required="#{!optional and !fieldInput.optional}" requiredMessage="#{fieldInput.requiredMessage}" - disabled="#{!enabled or fieldInput.disabled}" + disabled="#{!enabled or (fieldInput.disabled and facesContext.currentPhaseId.ordinal eq 6)}" timeSeparator="#{applicationScopeBean.timeSeparator}" mode="popup" intervalMinutes="#{applicationScopeBean.timePickerIntervalMinutes}" @@ -351,7 +352,7 @@ value="#{fieldInput.textValue}" required="#{!optional and !fieldInput.optional}" requiredMessage="#{fieldInput.requiredMessage}" - disabled="#{!enabled or fieldInput.disabled}" autoResize="false" + disabled="#{!enabled or (fieldInput.disabled and facesContext.currentPhaseId.ordinal eq 6)}" autoResize="false" styleClass="ctsms-textarea" autocomplete="off" label="#{fieldInput.label}" onkeyup="#{fieldInput.getEventJSCall('FieldCalculation.multiLineTextOnChange')}" @@ -380,7 +381,7 @@ value="#{fieldInput.inkValueWithSelections}" width="#{fieldInput.width}" height="#{fieldInput.height}" regions="#{fieldInput.inkRegions}" - disabled="#{!enabled or fieldInput.disabled}" + disabled="#{!enabled or (fieldInput.disabled and facesContext.currentPhaseId.ordinal eq 6)}" label="#{fieldInput.label}" backgroundImage="#{request.contextPath}/inputfieldimage?#{applicationScopeBean.parameterName('INPUT_FIELD_ID')}=#{fieldInput.inputField.id}" onChange="#{fieldInput.getEventJSCall('FieldCalculation.sketchOnChange')}" /> @@ -417,19 +418,19 @@ + value="#{labels.noencryption_warning_label}#{((not (!enabled)) and fieldInput.reasonForChangeRequired and reasonForChangeRequired) ? labels.audit_trail_reason_for_change_label_required : labels.audit_trail_reason_for_change_label}" /> @@ -437,7 +438,7 @@ @@ -557,7 +558,9 @@ oncomplete="FieldCalculation.handleUpdateInputFieldVariables(xhr, status, args);#{updateOnComplete}" icon="ui-icon ui-icon-disk" rendered="#{!fieldInput.dummy}" ajax="true" disabled="#{!editable or !fieldInput.editable}" - update="row#{index},#{update}" /> + update="row#{index},#{update}" > + + Date: Sat, 6 Apr 2024 10:25:35 +0200 Subject: [PATCH 4/5] info message if eCRF is disabled --- .../ctsms/web/model/shared/EcrfDataEntryBeanBase.java | 4 ++++ .../ctsms/web/model/shared/EcrfFieldValueBean.java | 2 ++ .../web/model/shared/inputfield/EcrfFieldInputModel.java | 8 ++++++++ .../java/org/phoenixctms/ctsms/web/util/MessageCodes.java | 1 + .../org/phoenixctms/ctsms/web/messages.properties | 1 + .../org/phoenixctms/ctsms/web/messages_de.properties | 1 + .../org/phoenixctms/ctsms/web/trial/labels.properties | 8 ++++---- .../org/phoenixctms/ctsms/web/trial/labels_de.properties | 8 ++++---- 8 files changed, 25 insertions(+), 8 deletions(-) diff --git a/web/src/main/java/org/phoenixctms/ctsms/web/model/shared/EcrfDataEntryBeanBase.java b/web/src/main/java/org/phoenixctms/ctsms/web/model/shared/EcrfDataEntryBeanBase.java index 240925df668d..10afa3cb265f 100644 --- a/web/src/main/java/org/phoenixctms/ctsms/web/model/shared/EcrfDataEntryBeanBase.java +++ b/web/src/main/java/org/phoenixctms/ctsms/web/model/shared/EcrfDataEntryBeanBase.java @@ -48,6 +48,8 @@ protected void addMessages() { Messages.addLocalizedMessage(FacesMessage.SEVERITY_WARN, MessageCodes.TRIAL_LOCKED); } else if (probandListEntry != null && !probandListEntry.getTrial().getStatus().getEcrfValueInputEnabled()) { Messages.addLocalizedMessage(FacesMessage.SEVERITY_INFO, MessageCodes.ECRF_VALUE_INPUT_DISABLED_FOR_TRIAL, probandListEntry.getTrial().getStatus().getName()); + } else if (ecrf != null && ecrf.getDisabled()) { + Messages.addLocalizedMessage(FacesMessage.SEVERITY_INFO, MessageCodes.ECRF_VALUE_INPUT_DISABLED_FOR_ECRF); } else if (probandListEntry != null && probandListEntry.getLastStatus() != null && !probandListEntry.getLastStatus().getStatus().getEcrfValueInputEnabled()) { Messages.addLocalizedMessage(FacesMessage.SEVERITY_INFO, MessageCodes.ECRF_VALUE_INPUT_DISABLED_FOR_PROBAND_LIST_ENTRY, probandListEntry.getLastStatus().getStatus() .getName()); @@ -182,6 +184,8 @@ public boolean isEditable() { return false; } else if (WebUtil.isProbandLocked(probandListEntry)) { return false; + } else if (ecrf != null && ecrf.getDisabled()) { + return false; } else if (probandListEntry != null && !probandListEntry.getTrial().getStatus().getEcrfValueInputEnabled()) { return false; } else if (probandListEntry.getLastStatus() != null && !probandListEntry.getLastStatus().getStatus().getEcrfValueInputEnabled()) { diff --git a/web/src/main/java/org/phoenixctms/ctsms/web/model/shared/EcrfFieldValueBean.java b/web/src/main/java/org/phoenixctms/ctsms/web/model/shared/EcrfFieldValueBean.java index 83c025095909..3a2112ad7086 100644 --- a/web/src/main/java/org/phoenixctms/ctsms/web/model/shared/EcrfFieldValueBean.java +++ b/web/src/main/java/org/phoenixctms/ctsms/web/model/shared/EcrfFieldValueBean.java @@ -532,6 +532,8 @@ public boolean getEditable(boolean unlockValue) { return false; } else if (WebUtil.isProbandLocked(probandListEntry)) { return false; + } else if (ecrf.getDisabled()) { + return false; } else if (!probandListEntry.getTrial().getStatus().getEcrfValueInputEnabled()) { return false; } else if (probandListEntry.getLastStatus() != null && !probandListEntry.getLastStatus().getStatus().getEcrfValueInputEnabled()) { diff --git a/web/src/main/java/org/phoenixctms/ctsms/web/model/shared/inputfield/EcrfFieldInputModel.java b/web/src/main/java/org/phoenixctms/ctsms/web/model/shared/inputfield/EcrfFieldInputModel.java index 51e8bfe6be5c..17c9e4b5bd65 100644 --- a/web/src/main/java/org/phoenixctms/ctsms/web/model/shared/inputfield/EcrfFieldInputModel.java +++ b/web/src/main/java/org/phoenixctms/ctsms/web/model/shared/inputfield/EcrfFieldInputModel.java @@ -321,6 +321,14 @@ public boolean isDisabled() { return false; } + @Override + public boolean isEditable() { + if (ecrfField != null) { + return !ecrfField.getEcrf().getDisabled(); + } + return true; + } + @Override public boolean isDummy() { return false; diff --git a/web/src/main/java/org/phoenixctms/ctsms/web/util/MessageCodes.java b/web/src/main/java/org/phoenixctms/ctsms/web/util/MessageCodes.java index 62b7840ca0cd..658a4859b755 100644 --- a/web/src/main/java/org/phoenixctms/ctsms/web/util/MessageCodes.java +++ b/web/src/main/java/org/phoenixctms/ctsms/web/util/MessageCodes.java @@ -72,6 +72,7 @@ public interface MessageCodes { public static final String MASS_MAIL_LOCKED = "mass_mail_locked"; public static final String ECRF_VALUE_INPUT_DISABLED_FOR_PROBAND_LIST_ENTRY = "ecrf_value_input_disabled_for_proband_list_entry"; public static final String ECRF_VALUE_INPUT_DISABLED_FOR_TRIAL = "ecrf_value_input_disabled_for_trial"; + public static final String ECRF_VALUE_INPUT_DISABLED_FOR_ECRF = "ecrf_value_input_disabled_for_ecrf"; public static final String ECRF_FIELD_VALUES_LOCKED_STATUS = "ecrf_field_values_locked_status"; public static final String ECRF_FIELD_STATUS_LOCKED_STATUS = "ecrf_field_status_locked_status"; public static final String CRITERION_LIST_NULL = "criterion_list_null"; diff --git a/web/src/main/resources/org/phoenixctms/ctsms/web/messages.properties b/web/src/main/resources/org/phoenixctms/ctsms/web/messages.properties index 7a283ead1bfd..7d34bacf6c53 100644 --- a/web/src/main/resources/org/phoenixctms/ctsms/web/messages.properties +++ b/web/src/main/resources/org/phoenixctms/ctsms/web/messages.properties @@ -99,6 +99,7 @@ mass_mail_locked=mass mail is locked inquiry_value_input_disabled=inquiry input is disabled ecrf_value_input_disabled_for_proband_list_entry=eCRFs are locked for this proband (enrollment status: {0}) ecrf_value_input_disabled_for_trial=eCRFs are locked for this trial (trial status: {0}) +ecrf_value_input_disabled_for_ecrf=eCRF is disabled ecrf_field_values_locked_status=inputs are locked for this eCRF (eCRF status: {0}) ecrf_field_status_locked_status=issues are locked for this eCRF (eCRF status: {0}) no_new_ecrf_field_status=no new eCRF issues ({0}) to manually create diff --git a/web/src/main/resources/org/phoenixctms/ctsms/web/messages_de.properties b/web/src/main/resources/org/phoenixctms/ctsms/web/messages_de.properties index 19b8b4d8ada0..6b9bc56dc2d7 100644 --- a/web/src/main/resources/org/phoenixctms/ctsms/web/messages_de.properties +++ b/web/src/main/resources/org/phoenixctms/ctsms/web/messages_de.properties @@ -99,6 +99,7 @@ mass_mail_locked=Massenmail ist gesperrt inquiry_value_input_disabled=Eingabe von Erhebungen ist gesperrt ecrf_value_input_disabled_for_proband_list_entry=eCRFs f\u00FCr diesen Probanden sind gesperrt (Enrollment Status\: {0}) ecrf_value_input_disabled_for_trial=eCRFs f\u00FCr diese Studie sind gesperrt (Studienstatus\: {0}) +ecrf_value_input_disabled_for_ecrf=eCRF ist deaktiviert ecrf_field_values_locked_status=Eingaben dieses eCRF''s sind gesperrt (eCRF Status: {0}) ecrf_field_status_locked_status=Issues dieses eCRF''s sind gesperrt (eCRF Status: {0}) no_new_ecrf_field_status=keine neuen eCRF Issues ({0}) manuell erstellbar diff --git a/web/src/main/resources/org/phoenixctms/ctsms/web/trial/labels.properties b/web/src/main/resources/org/phoenixctms/ctsms/web/trial/labels.properties index 14e0f49067ac..2f61c689b750 100644 --- a/web/src/main/resources/org/phoenixctms/ctsms/web/trial/labels.properties +++ b/web/src/main/resources/org/phoenixctms/ctsms/web/trial/labels.properties @@ -817,7 +817,7 @@ proband_list_entry_tag_title=Input field title proband_list_entry_tag_title_tooltip=The input field title can be overridden. proband_list_entry_tag_disabled_label=Disabled: -proband_list_entry_tag_disabled_tooltip=Input is disabled, existing or preset value cannot be edited. +proband_list_entry_tag_disabled_tooltip=Input cannot be edited manually. proband_list_entry_tag_excel_value_label=Excel value: proband_list_entry_tag_excel_value_tooltip=Show attribute (value) in exported proband lists. @@ -921,7 +921,7 @@ inquiry_title=Input field title inquiry_title_tooltip=The input field title can be overridden. inquiry_disabled_label=Disabled: -inquiry_disabled_tooltip=Input is disabled, existing or preset value cannot be edited. +inquiry_disabled_tooltip=Input cannot be edited manually. inquiry_active_label=Display: inquiry_active_tooltip=Show/hide this inquiry in the inquiry form. @@ -994,7 +994,7 @@ ecrf_active_label=Display: ecrf_active_tooltip=Show/hide this eCRF in the data capture tab.
Only the most recent eCRF revision should be visible. ecrf_disabled_label=Disabled: -ecrf_disabled_tooltip=All form inputs are disabled, existing or preset values cannot be edited. +ecrf_disabled_tooltip=All form inputs are readonly. ecrf_groups_label=Groups: ecrf_groups=Groups @@ -1105,7 +1105,7 @@ ecrffield_optional_label=Optional: ecrffield_optional_tooltip=Input is mandatory or not. ecrffield_disabled_label=Disabled: -ecrffield_disabled_tooltip=Input is disabled, existing or preset value cannot be edited. +ecrffield_disabled_tooltip=Input cannot be edited manually. ecrffield_js_variable_name_label=Variable name: ecrffield_js_variable_name=Variable name diff --git a/web/src/main/resources/org/phoenixctms/ctsms/web/trial/labels_de.properties b/web/src/main/resources/org/phoenixctms/ctsms/web/trial/labels_de.properties index 545beff12b54..897b8eaae772 100644 --- a/web/src/main/resources/org/phoenixctms/ctsms/web/trial/labels_de.properties +++ b/web/src/main/resources/org/phoenixctms/ctsms/web/trial/labels_de.properties @@ -817,7 +817,7 @@ proband_list_entry_tag_title=Eingabefeld Titel proband_list_entry_tag_title_tooltip=Den Titel des Eingabefeldes \u00FCberschreiben. proband_list_entry_tag_disabled_label=Deaktiviert: -proband_list_entry_tag_disabled_tooltip=Eingabefeld ist deaktiviert, aktueller Wert bzw. Voreinstellungswert
kann nicht bearbeitet werden. +proband_list_entry_tag_disabled_tooltip=Eingabefeld kann nicht bearbeitet werden. proband_list_entry_tag_js_variable_name_label=Variablenname: proband_list_entry_tag_js_variable_name=Variablenname @@ -921,7 +921,7 @@ inquiry_title=Eingabefeld Titel inquiry_title_tooltip=Den Titel des Eingabefeldes \u00FCberschreiben. inquiry_disabled_label=Deaktiviert: -inquiry_disabled_tooltip=Eingabefeld ist deaktiviert, aktueller Wert bzw. Voreinstellungswert
kann nicht bearbeitet werden. +inquiry_disabled_tooltip=Eingabefeld kann nicht bearbeitet werden. inquiry_active_label=Anzeigen: inquiry_active_tooltip=Eingabefeld im Erhebungsformular ausblenden. @@ -994,7 +994,7 @@ ecrf_active_label=Anzeigen: ecrf_active_tooltip=Das eCRF im Datenerfassungsreiter einblenden/ausblenden.
Nur die aktuelle eCRF Version sollte sichtbar sein. ecrf_disabled_label=Deaktiviert: -ecrf_disabled_tooltip=Alle Eingabefelder sind deaktiviert,
Eingaben k\u00F6nnen nicht bearbeitet werden. +ecrf_disabled_tooltip=Alle Eingabefelder sind schreibgesch\u00FCtzt. ecrf_groups_label=Gruppen: ecrf_groups=Gruppen @@ -1105,7 +1105,7 @@ ecrffield_optional_label=Optional: ecrffield_optional_tooltip=Eingabe zwingend erforderlich oder nicht. ecrffield_disabled_label=Deaktiviert: -ecrffield_disabled_tooltip=Eingabefeld ist deaktiviert, aktueller Wert bzw. Voreinstellungswert
kann nicht bearbeitet werden. +ecrffield_disabled_tooltip=Eingabefeld kann nicht bearbeitet werden. ecrffield_js_variable_name_label=Variablenname: ecrffield_js_variable_name=Variablenname From 2afff5d940f52c1918add448136177752e2d6f97 Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Sat, 6 Apr 2024 10:26:53 +0200 Subject: [PATCH 5/5] fix empty audit trail tab in dialog --- .../org/phoenixctms/ctsms/service/trial/TrialServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/org/phoenixctms/ctsms/service/trial/TrialServiceImpl.java b/core/src/main/java/org/phoenixctms/ctsms/service/trial/TrialServiceImpl.java index f4193431b8b7..23a52a3f2eb9 100644 --- a/core/src/main/java/org/phoenixctms/ctsms/service/trial/TrialServiceImpl.java +++ b/core/src/main/java/org/phoenixctms/ctsms/service/trial/TrialServiceImpl.java @@ -5987,7 +5987,7 @@ protected ECRFFieldValuesOutVO handleGetEcrfFieldValue(AuthenticationVO auth, Lo throws Exception { CheckIDUtil.checkProbandListEntryId(probandListEntryId, this.getProbandListEntryDao()); ECRFField ecrfField = CheckIDUtil.checkEcrfFieldId(ecrfFieldId, this.getECRFFieldDao()); - if (visitId == null) { + if (visitId != null) { CheckIDUtil.checkVisitId(visitId, this.getVisitDao()); } checkEcrfFieldValueIndex(ecrfField, probandListEntryId, visitId, ecrfFieldId, index);