From 66680b1e97ea5737355a07bf6cf098a816c2a2d8 Mon Sep 17 00:00:00 2001 From: cnathe Date: Mon, 11 Aug 2025 12:41:13 -0500 Subject: [PATCH 1/2] Issue 53620: Luminex analyte properties should keep first row input visible when clicking "Same" checkbox for the column --- .../src/org/labkey/luminex/LuminexUploadWizardAction.java | 4 +++- .../luminex/query/NegativeBeadDisplayColumnGroup.java | 7 +++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/luminex/src/org/labkey/luminex/LuminexUploadWizardAction.java b/luminex/src/org/labkey/luminex/LuminexUploadWizardAction.java index c3b2a481e..c161d9800 100644 --- a/luminex/src/org/labkey/luminex/LuminexUploadWizardAction.java +++ b/luminex/src/org/labkey/luminex/LuminexUploadWizardAction.java @@ -442,8 +442,10 @@ public void writeSameCheckboxCell(RenderContext ctx, HtmlWriter out) ).appendTo(out); StringBuilder onchange = new StringBuilder("b = this.checked;"); - for (DisplayColumn col : getColumns()) + // Index starts at 1 -- always leave the first column visible (Issue 53620) + for (int i = 1; i < getColumns().size(); i++) { + DisplayColumn col = getColumns().get(i); onchange.append("document.getElementsByName('").append(col.getFormFieldName(ctx)).append("')[0].style.display = b ? 'none' : 'block';\n"); } onchange.append("if (b) { ").append(groupName).append("Updated(); }"); diff --git a/luminex/src/org/labkey/luminex/query/NegativeBeadDisplayColumnGroup.java b/luminex/src/org/labkey/luminex/query/NegativeBeadDisplayColumnGroup.java index bb25cdd40..7bde52e82 100644 --- a/luminex/src/org/labkey/luminex/query/NegativeBeadDisplayColumnGroup.java +++ b/luminex/src/org/labkey/luminex/query/NegativeBeadDisplayColumnGroup.java @@ -49,7 +49,10 @@ public void writeSameCheckboxCell(RenderContext ctx, HtmlWriter out) InputBuilder.checkbox().name(id).id(id).appendTo(out); StringBuilder onChange = new StringBuilder("b = this.checked;\n"); - getColumns().forEach(col -> { + // Index starts at 1 -- always leave the first column visible (Issue 53620) + for (int i = 1; i < getColumns().size(); i++) + { + DisplayColumn col = getColumns().get(i); if (col.getColumnInfo() != null) { onChange.append("s = document.getElementsByName('") @@ -59,7 +62,7 @@ public void writeSameCheckboxCell(RenderContext ctx, HtmlWriter out) .append(col.getFormFieldName(ctx)) .append("')[0].style.display = b || s == 0 ? 'none' : 'block';\n"); } - }); + } onChange.append(" if (b) { ") .append(inputName) From c8f6b14190a7dcf96898353d92723515248ea66c Mon Sep 17 00:00:00 2001 From: cnathe Date: Mon, 11 Aug 2025 12:41:52 -0500 Subject: [PATCH 2/2] Luminex test case update to use analyte properties "Same" checkbox --- .../org/labkey/test/tests/luminex/LuminexRTransformTest.java | 4 ++-- .../test/src/org/labkey/test/tests/luminex/LuminexTest.java | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexRTransformTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexRTransformTest.java index 9b1aff83f..a2a0ec3a1 100644 --- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexRTransformTest.java +++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexRTransformTest.java @@ -126,6 +126,7 @@ public void uploadRun() setFormElement(Locator.name("stndCurveFitInput"), "FI"); setFormElement(Locator.name("unkCurveFitInput"), "FI-Bkgd-Neg"); setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE4); + scrollIntoView(Locator.lkButton("Next"), true); clickButton("Next", defaultWaitForPage * 2); // make sure the Standard checkboxes are checked @@ -139,12 +140,11 @@ public void uploadRun() setFormElement(Locator.xpath("//input[@type='text' and contains(@name, '_LotNumber')][1]"), TEST_ANALYTE_LOT_NUMBER); // set negative control and negative bead values checkCheckbox(Locator.name("_analyte_" + ANALYTE3 + "_NegativeControl")); + checkCheckbox(Locator.name("_analyte_" + ANALYTE1 + "_NegativeBeadCheckBox")); // Issue 53620: "Same" checkbox for subtract negative bead selectOptionByText(Locator.name("_analyte_" + ANALYTE1 + "_NegativeBead"), ANALYTE3); - selectOptionByText(Locator.name("_analyte_" + ANALYTE2 + "_NegativeBead"), ANALYTE3); // switch to using MyNegative bead for subtraction checkCheckbox(Locator.name("_analyte_" + ANALYTE4 + "_NegativeControl")); selectOptionByText(Locator.name("_analyte_" + ANALYTE1 + "_NegativeBead"), ANALYTE4); - selectOptionByText(Locator.name("_analyte_" + ANALYTE2 + "_NegativeBead"), ANALYTE4); clickButton("Save and Finish"); } diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexTest.java index 5756d4646..f96508a02 100644 --- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexTest.java +++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexTest.java @@ -660,6 +660,7 @@ public void selectPositivityFile(File file, boolean expectDuplicateFile) setFormElement(Locator.name("__primaryFile__"), file); if (expectDuplicateFile) waitForText("A file with name '" + file.getName() + "' already exists"); + scrollIntoView(Locator.lkButton("Next"), true); clickButton("Next"); }