From 16b4eeb67325e34f913d8d1c6b6782b11a3bf37e Mon Sep 17 00:00:00 2001
From: labkey-jeckels
Date: Fri, 27 Jun 2025 18:22:33 -0700
Subject: [PATCH 01/11] Update input element names
---
.../importwizard/BatchPropertiesWebPart.java | 2 +-
.../importwizard/RunPropertiesWebPart.java | 4 ++--
.../pages/luminex/LuminexImportWizard.java | 6 ++---
.../tests/luminex/LuminexAsyncImportTest.java | 21 +++++++++--------
.../luminex/LuminexExcludedTitrationTest.java | 3 ++-
.../tests/luminex/LuminexGuideSetTest.java | 3 ++-
.../luminex/LuminexJavaTransformTest.java | 5 ++--
.../luminex/LuminexMultipleCurvesTest.java | 2 +-
.../tests/luminex/LuminexRTransformTest.java | 5 ++--
.../test/tests/luminex/LuminexTest.java | 8 ++++---
.../luminex/LuminexUploadAndLinkTest.java | 23 ++++++++++---------
.../util/luminex/LuminexGuideSetHelper.java | 6 ++---
12 files changed, 48 insertions(+), 40 deletions(-)
diff --git a/luminex/test/src/org/labkey/test/components/luminex/importwizard/BatchPropertiesWebPart.java b/luminex/test/src/org/labkey/test/components/luminex/importwizard/BatchPropertiesWebPart.java
index 2007eff199..9aaf275312 100644
--- a/luminex/test/src/org/labkey/test/components/luminex/importwizard/BatchPropertiesWebPart.java
+++ b/luminex/test/src/org/labkey/test/components/luminex/importwizard/BatchPropertiesWebPart.java
@@ -67,6 +67,6 @@ public class Elements extends WebPartPanel>.ElementCache
public static class Locators
{
- protected static final Locator sampleInfoRadio = Locator.radioButtonByNameAndValue("participantVisitResolver", "SampleInfo");
+ protected static final Locator sampleInfoRadio = Locator.radioButtonByNameAndValue("ParticipantVisitResolver", "SampleInfo");
}
}
\ No newline at end of file
diff --git a/luminex/test/src/org/labkey/test/components/luminex/importwizard/RunPropertiesWebPart.java b/luminex/test/src/org/labkey/test/components/luminex/importwizard/RunPropertiesWebPart.java
index 2ad10d2f88..b425352874 100644
--- a/luminex/test/src/org/labkey/test/components/luminex/importwizard/RunPropertiesWebPart.java
+++ b/luminex/test/src/org/labkey/test/components/luminex/importwizard/RunPropertiesWebPart.java
@@ -17,6 +17,7 @@
import org.labkey.test.Locator;
import org.labkey.test.components.WebPartPanel;
+import org.labkey.test.tests.study.AssayTest;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
@@ -25,7 +26,6 @@
public class RunPropertiesWebPart extends WebPartPanel
{
private static final String TITLE = "Run Properties";
- public static final String ASSAY_ID_FIELD = "name";
public static final String ASSAY_DATA_FILE_LOCATION_MULTIPLE_FIELD = "__primaryFile__";
protected RunPropertiesWebPart(WebElement componentElement, WebDriver driver)
@@ -67,7 +67,7 @@ public void replaceFileInAssayRun(File original, File newFile)
public void setRunId(String runId)
{
- getWrapper().setFormElement(Locator.inputById(ASSAY_ID_FIELD), runId);
+ getWrapper().setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, runId);
}
public static class RunPropertiesWebPartFinder extends WebPartFinder
diff --git a/luminex/test/src/org/labkey/test/pages/luminex/LuminexImportWizard.java b/luminex/test/src/org/labkey/test/pages/luminex/LuminexImportWizard.java
index a5df8ac3ee..9abe4d74ac 100644
--- a/luminex/test/src/org/labkey/test/pages/luminex/LuminexImportWizard.java
+++ b/luminex/test/src/org/labkey/test/pages/luminex/LuminexImportWizard.java
@@ -22,6 +22,7 @@
import org.labkey.test.components.luminex.importwizard.DefineWellRoleWebPart;
import org.labkey.test.components.luminex.importwizard.RunPropertiesWebPart;
import org.labkey.test.pages.LabKeyPage;
+import org.labkey.test.tests.study.AssayTest;
import java.io.File;
import java.util.function.Consumer;
@@ -36,9 +37,6 @@
*/
public class LuminexImportWizard extends LabKeyPage
{
- public static final String ASSAY_ID_FIELD = "name";
-
-
Elements _elements;
public LuminexImportWizard(WebDriverWrapper driver)
{
@@ -129,7 +127,7 @@ public void createNewAssayRun( String runId, Consumer step1
step1.accept(this);
clickNext();
- setFormElement(Locator.name(ASSAY_ID_FIELD), runId);
+ setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, runId);
if (step2 != null)
step2.accept(this);
clickNext();
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java
index 0b2528b62c..0423fb654e 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java
@@ -24,12 +24,15 @@
import org.labkey.test.categories.Assays;
import org.labkey.test.categories.Daily;
import org.labkey.test.pages.ReactAssayDesignerPage;
+import org.labkey.test.tests.study.AssayTest;
import org.labkey.test.util.DataRegionTable;
import org.labkey.test.util.LogMethod;
import java.io.File;
import java.util.Calendar;
+import static org.junit.Assert.assertEquals;
+
@Category({Daily.class, Assays.class})
@BaseWebDriverTest.ClassTimeout(minutes = 7)
public final class LuminexAsyncImportTest extends LuminexTest
@@ -136,15 +139,15 @@ private void reimportLuminexRunPageTwo(String runId, String isotype, String conj
String testDate, File file, int i)
{
// verify that all old values from the first imported run are present
- assertFormElementEquals(Locator.name("name"), runId);
- assertFormElementEquals(Locator.name("isotype"), isotype);
- assertFormElementEquals(Locator.name("conjugate"), conjugate);
- assertFormElementEquals(Locator.name("stndCurveFitInput"), stndCurveFitInput);
- assertFormElementEquals(Locator.name("unkCurveFitInput"), unkCurveFitInput);
- assertFormElementEquals(Locator.name("notebookNo"), notebookNo);
- assertFormElementEquals(Locator.name("assayType"), assayType);
- assertFormElementEquals(Locator.name("expPerformer"), expPerformer);
- assertFormElementEquals(Locator.name("testDate"), testDate);
+ assertEquals(runId, getFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR));
+ assertEquals(isotype, getFormElement(Locator.name("isotype")));
+ assertEquals(conjugate, getFormElement(Locator.name("conjugate")));
+ assertEquals(stndCurveFitInput, getFormElement(Locator.name("stndCurveFitInput")));
+ assertEquals(unkCurveFitInput, getFormElement(Locator.name("unkCurveFitInput")));
+ assertEquals(notebookNo, getFormElement(Locator.name("notebookNo")));
+ assertEquals(assayType, getFormElement(Locator.name("assayType")));
+ assertEquals(expPerformer, getFormElement(Locator.name("expPerformer")));
+ assertEquals(testDate, getFormElement(Locator.name("testDate")));
click(Locator.xpath("//a[contains(@class, 'labkey-file-add-icon-enabled')]"));
setFormElement(Locator.name("__primaryFile__"), file);
waitForText("A file with name '" + file.getName() + "' already exists");
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexExcludedTitrationTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexExcludedTitrationTest.java
index 613ad3d749..c3739e174e 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexExcludedTitrationTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexExcludedTitrationTest.java
@@ -22,6 +22,7 @@
import org.labkey.test.Locators;
import org.labkey.test.categories.Assays;
import org.labkey.test.categories.Daily;
+import org.labkey.test.tests.study.AssayTest;
import org.labkey.test.util.DataRegionTable;
import java.io.File;
@@ -88,7 +89,7 @@ public void testCrossPlateTitration()
String runName = "Cross Plate titration";
waitForElement(Locators.panelWebpartTitle.withText("Run Properties"));
- setFormElement(Locator.name("name"), runName);
+ setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, runName);
uploadAssayFiles(files);
clickButton("Next");
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java
index 34355eaf32..64141a2c99 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java
@@ -25,6 +25,7 @@
import org.labkey.test.categories.Daily;
import org.labkey.test.pages.ReactAssayDesignerPage;
import org.labkey.test.params.FieldDefinition;
+import org.labkey.test.tests.study.AssayTest;
import org.labkey.test.util.DataRegionTable;
import org.labkey.test.util.ExtHelper;
import org.labkey.test.util.LogMethod;
@@ -181,7 +182,7 @@ private void guideSetApiTest()
String wikiName = "LuminexGuideSetTestWiki";
portalHelper.addWebPart("Wiki");
wikiHelper.createNewWikiPage("HTML");
- setFormElement(Locator.name("name"), wikiName);
+ setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, wikiName);
wikiHelper.setWikiBody("Placeholder text.");
wikiHelper.saveWikiPage();
File guideSetWiki = TestFileUtils.getSampleData("luminex/views/LuminexGuideSet.html");
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexJavaTransformTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexJavaTransformTest.java
index 32a957a41d..1e5d06ac63 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexJavaTransformTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexJavaTransformTest.java
@@ -24,6 +24,7 @@
import org.labkey.test.categories.Assays;
import org.labkey.test.categories.Daily;
import org.labkey.test.pages.ReactAssayDesignerPage;
+import org.labkey.test.tests.study.AssayTest;
import org.labkey.test.util.DataRegionTable;
import static org.junit.Assert.assertEquals;
@@ -56,9 +57,9 @@ public void testJavaTransform()
goToTestAssayHome();
clickButton("Import Data");
- setFormElement(Locator.name("species"), TEST_ASSAY_LUM_SET_PROP_SPECIES);
+ setFormElement(Locator.name("Species"), TEST_ASSAY_LUM_SET_PROP_SPECIES);
clickButton("Next");
- setFormElement(Locator.name("name"), "transformed assayId");
+ setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, "transformed assayId");
setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE1);
clickButton("Next", 60000);
clickButton("Save and Finish");
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexMultipleCurvesTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexMultipleCurvesTest.java
index 6ae05cb708..028ba44952 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexMultipleCurvesTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexMultipleCurvesTest.java
@@ -144,7 +144,7 @@ private void reImportData(Map wellRoleMap)
goToTestAssayHome();
click(Locator.linkContainingText(MULTIPLE_CURVE_ASSAY_RUN_NAME));
clickButtonContainingText("Re-import run");
- checkCheckbox(Locator.radioButtonByNameAndValue("participantVisitResolver", "SampleInfo"));
+ checkCheckbox(Locator.radioButtonByNameAndValue("ParticipantVisitResolver", "SampleInfo"));
clickButtonContainingText("Next");
setFormElement(Locator.name(ASSAY_ID_FIELD), MULTIPLE_CURVE_ASSAY_RUN_NAME);
clickButtonContainingText("Next");
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 9b1aff83f3..49b55d943d 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexRTransformTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexRTransformTest.java
@@ -24,6 +24,7 @@
import org.labkey.test.categories.Assays;
import org.labkey.test.categories.Daily;
import org.labkey.test.pages.ReactAssayDesignerPage;
+import org.labkey.test.tests.study.AssayTest;
import org.labkey.test.util.DataRegionTable;
import org.labkey.test.util.LabKeyExpectedConditions;
import org.labkey.test.util.LogMethod;
@@ -121,7 +122,7 @@ public void uploadRun()
clickButton("Import Data");
clickButton("Next");
- setFormElement(Locator.name("name"), "r script transformed assayId");
+ setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, "r script transformed assayId");
checkCheckbox(Locator.name("subtNegativeFromAll"));
setFormElement(Locator.name("stndCurveFitInput"), "FI");
setFormElement(Locator.name("unkCurveFitInput"), "FI-Bkgd-Neg");
@@ -158,7 +159,7 @@ public void testNegativeBead()
clickButton("Import Data");
clickButton("Next");
String assayRunId = "negative bead assayId";
- setFormElement(Locator.name("name"), assayRunId);
+ setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, assayRunId);
uncheckCheckbox(Locator.name("subtNegativeFromAll"));
setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE4);
waitForElement(Locator.id("file-upload-tbl").containing(TEST_ASSAY_LUM_FILE4.getName()));
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 5756d46467..f1d9edf7b9 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexTest.java
@@ -39,6 +39,7 @@
import org.labkey.test.components.html.Checkbox;
import org.labkey.test.pages.ReactAssayDesignerPage;
import org.labkey.test.pages.luminex.LuminexImportWizard;
+import org.labkey.test.tests.study.AssayTest;
import org.labkey.test.util.DataRegionTable;
import org.labkey.test.util.ExtHelper;
import org.labkey.test.util.LogMethod;
@@ -69,6 +70,7 @@ public abstract class LuminexTest extends BaseWebDriverTest
protected final static String TEST_ASSAY_PRJ_LUMINEX = "LuminexTest Project";
protected final static String TEST_ASSAY_SUBFOLDER = "Subfolder";//project for luminex test
+
// Issue 51845:
// - Luminex assay not working well when assay name contains dot (.)
// - use DOMAIN_SPECIAL_STRING instead of DOMAIN_TRICKY_CHARACTERS since sql server is not working with unicode characters
@@ -102,7 +104,6 @@ public abstract class LuminexTest extends BaseWebDriverTest
public static final File RTRANSFORM_SCRIPT_FILE_LABKEY = new File(TestFileUtils.getLabKeyRoot(), "server/modules/commonAssays/luminex/resources/transformscripts/labkey_luminex_transform.R");
public static final File RTRANSFORM_SCRIPT_FILE_LAB = new File(TestFileUtils.getLabKeyRoot(), "server/modules/commonAssays/luminex/resources/transformscripts/tomaras_luminex_transform.R");
- public static final String ASSAY_ID_FIELD = "name";
public static final String ASSAY_DATA_FILE_LOCATION_MULTIPLE_FIELD = "__primaryFile__";
public static final String DATA_TABLE_NAME = "Data";
@@ -120,6 +121,7 @@ public abstract class LuminexTest extends BaseWebDriverTest
public static final String isotype = "IgG >% 1";// put back TRICKY_CHARACTERS_NO_QUOTES when issue 20061 is resolved
public static final String conjugate = "PE >% 1";// put back TRICKY_CHARACTERS_NO_QUOTES when issue 20061 is resolved
+ public static final Locator.XPathLocator SPECIES_LOCATOR = Locator.name("Species");
public LuminexTest()
{
@@ -559,7 +561,7 @@ protected void createNewAssayRun(String assayName, String runId)
wiz.startImport();
wiz.checkParticipantVisitResolver();
clickButtonContainingText("Next");
- setFormElement(Locator.name(ASSAY_ID_FIELD), runId);
+ setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, runId);
}
public void goToQCAnalysisPage(String assayName, String submenuText)
@@ -606,7 +608,7 @@ protected void importLuminexRunPageTwo(String runId, String isotype, String conj
String unkCurveFitInput, String notebookNo, String assayType, String expPerformer,
String testDate, File file, int i, boolean expectDuplicateFile)
{
- setFormElement(Locator.name("name"), runId);
+ setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, runId);
setFormElement(Locator.name("isotype"), isotype);
setFormElement(Locator.name("conjugate"), conjugate);
setFormElement(Locator.name("stndCurveFitInput"), stndCurveFitInput);
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java
index c14add2d24..6b92a46a6e 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java
@@ -23,6 +23,7 @@
import org.labkey.test.categories.Assays;
import org.labkey.test.categories.Daily;
import org.labkey.test.categories.Study;
+import org.labkey.test.tests.study.AssayTest;
import org.labkey.test.util.DataRegionTable;
import static org.junit.Assert.assertEquals;
@@ -64,19 +65,19 @@ public void testUploadAndLink()
assertTextPresent("No runs to show. To add new runs, use the Import Data button.");
log("Uploading Luminex Runs");
clickButton("Import Data");
- setFormElement(Locator.name("species"), TEST_ASSAY_LUM_SET_PROP_SPECIES);
+ setFormElement(SPECIES_LOCATOR, TEST_ASSAY_LUM_SET_PROP_SPECIES);
clickButton("Next");
- setFormElement(Locator.name("name"), TEST_ASSAY_LUM_RUN_NAME);
+ setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, TEST_ASSAY_LUM_RUN_NAME);
setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE1);
clickButton("Next", 60000);
clickButton("Save and Import Another Run");
clickAndWait(Locator.linkWithText(TEST_ASSAY_LUM));
clickButton("Import Data");
- assertEquals(TEST_ASSAY_LUM_SET_PROP_SPECIES, getFormElement(Locator.name("species")));
- setFormElement(Locator.name("species"), TEST_ASSAY_LUM_SET_PROP_SPECIES2);
+ assertEquals(TEST_ASSAY_LUM_SET_PROP_SPECIES, getFormElement(SPECIES_LOCATOR));
+ setFormElement(SPECIES_LOCATOR, TEST_ASSAY_LUM_SET_PROP_SPECIES2);
clickButton("Next");
- setFormElement(Locator.name("name"), TEST_ASSAY_LUM_RUN_NAME2);
+ setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, TEST_ASSAY_LUM_RUN_NAME2);
setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE2);
clickButton("Next", 60000);
setFormElement(Locator.name("_analyte_IL-1b_StandardName"), "StandardName1b");
@@ -86,8 +87,8 @@ public void testUploadAndLink()
// Upload another run using a thaw list pasted in as a TSV
clickButton("Import Data");
- assertEquals(TEST_ASSAY_LUM_SET_PROP_SPECIES2, getFormElement(Locator.name("species")));
- checkCheckbox(Locator.radioButtonByNameAndValue("participantVisitResolver", "Lookup"));
+ assertEquals(TEST_ASSAY_LUM_SET_PROP_SPECIES2, getFormElement(SPECIES_LOCATOR));
+ checkCheckbox(Locator.radioButtonByNameAndValue("ParticipantVisitResolver", "Lookup"));
checkCheckbox(Locator.radioButtonByNameAndValue("ThawListType", "Text"));
setFormElement(Locator.id("ThawListTextArea"), "Index\tSpecimenID\tParticipantID\tVisitID\n" +
"1\tSpecimenID1\tParticipantID1\t1.1\n" +
@@ -161,8 +162,8 @@ public void testUploadAndLink()
// Upload another run using a thaw list that pointed at the list we uploaded earlier
clickButton("Import Data");
- assertEquals(TEST_ASSAY_LUM_SET_PROP_SPECIES2, getFormElement(Locator.name("species")));
- assertRadioButtonSelected(Locator.radioButtonByNameAndValue("participantVisitResolver", "Lookup"));
+ assertEquals(TEST_ASSAY_LUM_SET_PROP_SPECIES2, getFormElement(SPECIES_LOCATOR));
+ assertRadioButtonSelected(Locator.radioButtonByNameAndValue("ParticipantVisitResolver", "Lookup"));
assertRadioButtonSelected(Locator.radioButtonByNameAndValue("ThawListType", "Text"));
checkCheckbox(Locator.radioButtonByNameAndValue("ThawListType", "List"));
@@ -172,7 +173,7 @@ public void testUploadAndLink()
_ext4Helper.selectComboBoxItem(Locator.id("thawListQueryName"), THAW_LIST_NAME);
clickButton("Next");
- setFormElement(Locator.name("name"), TEST_ASSAY_LUM_RUN_NAME4);
+ setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, TEST_ASSAY_LUM_RUN_NAME4);
setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE3);
waitForText("A file with name '" + TEST_ASSAY_LUM_FILE3.getName() + "' already exists");
clickButton("Next", 60000);
@@ -235,7 +236,7 @@ public void testUploadAndLink()
clickAndWait(Locator.linkWithText(TEST_ASSAY_LUM));
clickButton("Import Data");
clickButton("Next");
- setFormElement(Locator.name("name"), "raw and summary");
+ setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, "raw and summary");
setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE10);
clickButton("Next", 60000);
clickButton("Save and Finish");
diff --git a/luminex/test/src/org/labkey/test/util/luminex/LuminexGuideSetHelper.java b/luminex/test/src/org/labkey/test/util/luminex/LuminexGuideSetHelper.java
index 464b27a8c0..a05b997de1 100644
--- a/luminex/test/src/org/labkey/test/util/luminex/LuminexGuideSetHelper.java
+++ b/luminex/test/src/org/labkey/test/util/luminex/LuminexGuideSetHelper.java
@@ -59,9 +59,9 @@ public int importGuideSetRun(String assayName, File guideSetFile)
{
_test.goToTestAssayHome(assayName);
_test.clickButton("Import Data");
- _test.setFormElement(Locator.name("network"), "NETWORK" + (_runNumber));
- if (_test.isElementPresent(Locator.name("customProtocol")))
- _test.setFormElement(Locator.name("customProtocol"), "PROTOCOL" + (_runNumber));
+ _test.setFormElement(Locator.name("Network"), "NETWORK" + (_runNumber));
+ if (_test.isElementPresent(Locator.name("CustomProtocol")))
+ _test.setFormElement(Locator.name("CustomProtocol"), "PROTOCOL" + (_runNumber));
_test.clickButton("Next");
TESTDATE.add(Calendar.DATE, 1);
From bfe6e2409261790e59a5a572af25d1ebf1679d7b Mon Sep 17 00:00:00 2001
From: labkey-jeckels
Date: Sat, 28 Jun 2025 09:18:41 -0700
Subject: [PATCH 02/11] Fix build
---
.../luminex/importwizard/RunPropertiesWebPart.java | 4 ++--
.../labkey/test/pages/luminex/LuminexImportWizard.java | 5 ++---
.../test/tests/luminex/LuminexAsyncImportTest.java | 4 ++--
.../tests/luminex/LuminexExcludedTitrationTest.java | 4 ++--
.../labkey/test/tests/luminex/LuminexGuideSetTest.java | 4 ++--
.../test/tests/luminex/LuminexJavaTransformTest.java | 4 ++--
.../test/tests/luminex/LuminexMultipleCurvesTest.java | 3 ++-
.../test/tests/luminex/LuminexRTransformTest.java | 6 +++---
.../src/org/labkey/test/tests/luminex/LuminexTest.java | 6 +++---
.../test/tests/luminex/LuminexUploadAndLinkTest.java | 10 +++++-----
10 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/luminex/test/src/org/labkey/test/components/luminex/importwizard/RunPropertiesWebPart.java b/luminex/test/src/org/labkey/test/components/luminex/importwizard/RunPropertiesWebPart.java
index b425352874..4d1bbf3e89 100644
--- a/luminex/test/src/org/labkey/test/components/luminex/importwizard/RunPropertiesWebPart.java
+++ b/luminex/test/src/org/labkey/test/components/luminex/importwizard/RunPropertiesWebPart.java
@@ -17,7 +17,7 @@
import org.labkey.test.Locator;
import org.labkey.test.components.WebPartPanel;
-import org.labkey.test.tests.study.AssayTest;
+import org.labkey.test.components.assay.AssayConstants;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
@@ -67,7 +67,7 @@ public void replaceFileInAssayRun(File original, File newFile)
public void setRunId(String runId)
{
- getWrapper().setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, runId);
+ getWrapper().setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, runId);
}
public static class RunPropertiesWebPartFinder extends WebPartFinder
diff --git a/luminex/test/src/org/labkey/test/pages/luminex/LuminexImportWizard.java b/luminex/test/src/org/labkey/test/pages/luminex/LuminexImportWizard.java
index 9abe4d74ac..5d97a4ab31 100644
--- a/luminex/test/src/org/labkey/test/pages/luminex/LuminexImportWizard.java
+++ b/luminex/test/src/org/labkey/test/pages/luminex/LuminexImportWizard.java
@@ -15,14 +15,13 @@
*/
package org.labkey.test.pages.luminex;
-import org.labkey.test.Locator;
import org.labkey.test.WebDriverWrapper;
+import org.labkey.test.components.assay.AssayConstants;
import org.labkey.test.components.luminex.importwizard.AnalytePropertiesWebPart;
import org.labkey.test.components.luminex.importwizard.BatchPropertiesWebPart;
import org.labkey.test.components.luminex.importwizard.DefineWellRoleWebPart;
import org.labkey.test.components.luminex.importwizard.RunPropertiesWebPart;
import org.labkey.test.pages.LabKeyPage;
-import org.labkey.test.tests.study.AssayTest;
import java.io.File;
import java.util.function.Consumer;
@@ -127,7 +126,7 @@ public void createNewAssayRun( String runId, Consumer step1
step1.accept(this);
clickNext();
- setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, runId);
+ setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, runId);
if (step2 != null)
step2.accept(this);
clickNext();
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java
index 0423fb654e..2c23dcfc8d 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java
@@ -23,8 +23,8 @@
import org.labkey.test.Locator;
import org.labkey.test.categories.Assays;
import org.labkey.test.categories.Daily;
+import org.labkey.test.components.assay.AssayConstants;
import org.labkey.test.pages.ReactAssayDesignerPage;
-import org.labkey.test.tests.study.AssayTest;
import org.labkey.test.util.DataRegionTable;
import org.labkey.test.util.LogMethod;
@@ -139,7 +139,7 @@ private void reimportLuminexRunPageTwo(String runId, String isotype, String conj
String testDate, File file, int i)
{
// verify that all old values from the first imported run are present
- assertEquals(runId, getFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR));
+ assertEquals(runId, getFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR));
assertEquals(isotype, getFormElement(Locator.name("isotype")));
assertEquals(conjugate, getFormElement(Locator.name("conjugate")));
assertEquals(stndCurveFitInput, getFormElement(Locator.name("stndCurveFitInput")));
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexExcludedTitrationTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexExcludedTitrationTest.java
index c3739e174e..8b2eeef0a4 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexExcludedTitrationTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexExcludedTitrationTest.java
@@ -22,7 +22,7 @@
import org.labkey.test.Locators;
import org.labkey.test.categories.Assays;
import org.labkey.test.categories.Daily;
-import org.labkey.test.tests.study.AssayTest;
+import org.labkey.test.components.assay.AssayConstants;
import org.labkey.test.util.DataRegionTable;
import java.io.File;
@@ -89,7 +89,7 @@ public void testCrossPlateTitration()
String runName = "Cross Plate titration";
waitForElement(Locators.panelWebpartTitle.withText("Run Properties"));
- setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, runName);
+ setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, runName);
uploadAssayFiles(files);
clickButton("Next");
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java
index 64141a2c99..ee41988d64 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java
@@ -23,9 +23,9 @@
import org.labkey.test.WebTestHelper;
import org.labkey.test.categories.Assays;
import org.labkey.test.categories.Daily;
+import org.labkey.test.components.assay.AssayConstants;
import org.labkey.test.pages.ReactAssayDesignerPage;
import org.labkey.test.params.FieldDefinition;
-import org.labkey.test.tests.study.AssayTest;
import org.labkey.test.util.DataRegionTable;
import org.labkey.test.util.ExtHelper;
import org.labkey.test.util.LogMethod;
@@ -182,7 +182,7 @@ private void guideSetApiTest()
String wikiName = "LuminexGuideSetTestWiki";
portalHelper.addWebPart("Wiki");
wikiHelper.createNewWikiPage("HTML");
- setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, wikiName);
+ setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, wikiName);
wikiHelper.setWikiBody("Placeholder text.");
wikiHelper.saveWikiPage();
File guideSetWiki = TestFileUtils.getSampleData("luminex/views/LuminexGuideSet.html");
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexJavaTransformTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexJavaTransformTest.java
index 1e5d06ac63..cb5a819a52 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexJavaTransformTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexJavaTransformTest.java
@@ -23,8 +23,8 @@
import org.labkey.test.TestFileUtils;
import org.labkey.test.categories.Assays;
import org.labkey.test.categories.Daily;
+import org.labkey.test.components.assay.AssayConstants;
import org.labkey.test.pages.ReactAssayDesignerPage;
-import org.labkey.test.tests.study.AssayTest;
import org.labkey.test.util.DataRegionTable;
import static org.junit.Assert.assertEquals;
@@ -59,7 +59,7 @@ public void testJavaTransform()
clickButton("Import Data");
setFormElement(Locator.name("Species"), TEST_ASSAY_LUM_SET_PROP_SPECIES);
clickButton("Next");
- setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, "transformed assayId");
+ setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, "transformed assayId");
setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE1);
clickButton("Next", 60000);
clickButton("Save and Finish");
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexMultipleCurvesTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexMultipleCurvesTest.java
index 028ba44952..42fc575b7a 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexMultipleCurvesTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexMultipleCurvesTest.java
@@ -23,6 +23,7 @@
import org.labkey.test.WebTestHelper;
import org.labkey.test.categories.Assays;
import org.labkey.test.categories.Daily;
+import org.labkey.test.components.assay.AssayConstants;
import org.labkey.test.util.LogMethod;
import org.labkey.test.util.LoggedParam;
import org.openqa.selenium.WebElement;
@@ -146,7 +147,7 @@ private void reImportData(Map wellRoleMap)
clickButtonContainingText("Re-import run");
checkCheckbox(Locator.radioButtonByNameAndValue("ParticipantVisitResolver", "SampleInfo"));
clickButtonContainingText("Next");
- setFormElement(Locator.name(ASSAY_ID_FIELD), MULTIPLE_CURVE_ASSAY_RUN_NAME);
+ setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, MULTIPLE_CURVE_ASSAY_RUN_NAME);
clickButtonContainingText("Next");
for(String desc : wellRoleMap.keySet())
{
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 49b55d943d..9928bbb2d6 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexRTransformTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexRTransformTest.java
@@ -23,8 +23,8 @@
import org.labkey.test.WebTestHelper;
import org.labkey.test.categories.Assays;
import org.labkey.test.categories.Daily;
+import org.labkey.test.components.assay.AssayConstants;
import org.labkey.test.pages.ReactAssayDesignerPage;
-import org.labkey.test.tests.study.AssayTest;
import org.labkey.test.util.DataRegionTable;
import org.labkey.test.util.LabKeyExpectedConditions;
import org.labkey.test.util.LogMethod;
@@ -122,7 +122,7 @@ public void uploadRun()
clickButton("Import Data");
clickButton("Next");
- setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, "r script transformed assayId");
+ setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, "r script transformed assayId");
checkCheckbox(Locator.name("subtNegativeFromAll"));
setFormElement(Locator.name("stndCurveFitInput"), "FI");
setFormElement(Locator.name("unkCurveFitInput"), "FI-Bkgd-Neg");
@@ -159,7 +159,7 @@ public void testNegativeBead()
clickButton("Import Data");
clickButton("Next");
String assayRunId = "negative bead assayId";
- setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, assayRunId);
+ setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, assayRunId);
uncheckCheckbox(Locator.name("subtNegativeFromAll"));
setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE4);
waitForElement(Locator.id("file-upload-tbl").containing(TEST_ASSAY_LUM_FILE4.getName()));
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 f1d9edf7b9..f5ffab3343 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexTest.java
@@ -35,11 +35,11 @@
import org.labkey.test.Locator;
import org.labkey.test.TestFileUtils;
import org.labkey.test.TestTimeoutException;
+import org.labkey.test.components.assay.AssayConstants;
import org.labkey.test.components.html.BootstrapMenu;
import org.labkey.test.components.html.Checkbox;
import org.labkey.test.pages.ReactAssayDesignerPage;
import org.labkey.test.pages.luminex.LuminexImportWizard;
-import org.labkey.test.tests.study.AssayTest;
import org.labkey.test.util.DataRegionTable;
import org.labkey.test.util.ExtHelper;
import org.labkey.test.util.LogMethod;
@@ -561,7 +561,7 @@ protected void createNewAssayRun(String assayName, String runId)
wiz.startImport();
wiz.checkParticipantVisitResolver();
clickButtonContainingText("Next");
- setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, runId);
+ setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, runId);
}
public void goToQCAnalysisPage(String assayName, String submenuText)
@@ -608,7 +608,7 @@ protected void importLuminexRunPageTwo(String runId, String isotype, String conj
String unkCurveFitInput, String notebookNo, String assayType, String expPerformer,
String testDate, File file, int i, boolean expectDuplicateFile)
{
- setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, runId);
+ setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, runId);
setFormElement(Locator.name("isotype"), isotype);
setFormElement(Locator.name("conjugate"), conjugate);
setFormElement(Locator.name("stndCurveFitInput"), stndCurveFitInput);
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java
index 6b92a46a6e..4f9a789415 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java
@@ -23,7 +23,7 @@
import org.labkey.test.categories.Assays;
import org.labkey.test.categories.Daily;
import org.labkey.test.categories.Study;
-import org.labkey.test.tests.study.AssayTest;
+import org.labkey.test.components.assay.AssayConstants;
import org.labkey.test.util.DataRegionTable;
import static org.junit.Assert.assertEquals;
@@ -67,7 +67,7 @@ public void testUploadAndLink()
clickButton("Import Data");
setFormElement(SPECIES_LOCATOR, TEST_ASSAY_LUM_SET_PROP_SPECIES);
clickButton("Next");
- setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, TEST_ASSAY_LUM_RUN_NAME);
+ setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, TEST_ASSAY_LUM_RUN_NAME);
setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE1);
clickButton("Next", 60000);
clickButton("Save and Import Another Run");
@@ -77,7 +77,7 @@ public void testUploadAndLink()
assertEquals(TEST_ASSAY_LUM_SET_PROP_SPECIES, getFormElement(SPECIES_LOCATOR));
setFormElement(SPECIES_LOCATOR, TEST_ASSAY_LUM_SET_PROP_SPECIES2);
clickButton("Next");
- setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, TEST_ASSAY_LUM_RUN_NAME2);
+ setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, TEST_ASSAY_LUM_RUN_NAME2);
setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE2);
clickButton("Next", 60000);
setFormElement(Locator.name("_analyte_IL-1b_StandardName"), "StandardName1b");
@@ -173,7 +173,7 @@ public void testUploadAndLink()
_ext4Helper.selectComboBoxItem(Locator.id("thawListQueryName"), THAW_LIST_NAME);
clickButton("Next");
- setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, TEST_ASSAY_LUM_RUN_NAME4);
+ setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, TEST_ASSAY_LUM_RUN_NAME4);
setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE3);
waitForText("A file with name '" + TEST_ASSAY_LUM_FILE3.getName() + "' already exists");
clickButton("Next", 60000);
@@ -236,7 +236,7 @@ public void testUploadAndLink()
clickAndWait(Locator.linkWithText(TEST_ASSAY_LUM));
clickButton("Import Data");
clickButton("Next");
- setFormElement(AssayTest.ASSAY_NAME_FIELD_LOCATOR, "raw and summary");
+ setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, "raw and summary");
setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE10);
clickButton("Next", 60000);
clickButton("Save and Finish");
From c2911e37e528c6612a0eb7ccd4539682aea00811 Mon Sep 17 00:00:00 2001
From: labkey-jeckels
Date: Sat, 28 Jun 2025 16:53:25 -0600
Subject: [PATCH 03/11] Test fixes
---
.../labkey/test/tests/luminex/LuminexTest.java | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
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 f5ffab3343..a51b429369 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexTest.java
@@ -609,14 +609,14 @@ protected void importLuminexRunPageTwo(String runId, String isotype, String conj
String testDate, File file, int i, boolean expectDuplicateFile)
{
setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, runId);
- setFormElement(Locator.name("isotype"), isotype);
- setFormElement(Locator.name("conjugate"), conjugate);
- setFormElement(Locator.name("stndCurveFitInput"), stndCurveFitInput);
- setFormElement(Locator.name("unkCurveFitInput"), unkCurveFitInput);
- setFormElement(Locator.name("notebookNo"), notebookNo);
- setFormElement(Locator.name("assayType"), assayType);
- setFormElement(Locator.name("expPerformer"), expPerformer);
- setFormElement(Locator.name("testDate"), testDate);
+ setFormElement(Locator.name("Isotype"), isotype);
+ setFormElement(Locator.name("Conjugate"), conjugate);
+ setFormElement(Locator.name("StndCurveFitInput"), stndCurveFitInput);
+ setFormElement(Locator.name("UnkCurveFitInput"), unkCurveFitInput);
+ setFormElement(Locator.name("NotebookNo"), notebookNo);
+ setFormElement(Locator.name("AssayType"), assayType);
+ setFormElement(Locator.name("ExpPerformer"), expPerformer);
+ setFormElement(Locator.name("TestDate"), testDate);
setFormElement(Locator.name("__primaryFile__"), file);
if (expectDuplicateFile)
From 4e3b36a25ded231624329eef79993ec2392880e5 Mon Sep 17 00:00:00 2001
From: labkey-jeckels
Date: Sun, 29 Jun 2025 07:38:07 -0600
Subject: [PATCH 04/11] Test fixes
---
.../org/labkey/luminex/LuminexDataHandler.java | 2 +-
.../tests/luminex/LuminexAsyncImportTest.java | 18 +++++++++---------
.../tests/luminex/LuminexGuideSetTest.java | 2 +-
.../tests/luminex/LuminexPositivityTest.java | 6 +++---
.../tests/luminex/LuminexRTransformTest.java | 8 ++++----
.../tests/luminex/LuminexSinglePointTest.java | 2 +-
.../labkey/test/tests/luminex/LuminexTest.java | 6 +++---
7 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/luminex/src/org/labkey/luminex/LuminexDataHandler.java b/luminex/src/org/labkey/luminex/LuminexDataHandler.java
index e4390b5a3b..e1d77fa14b 100644
--- a/luminex/src/org/labkey/luminex/LuminexDataHandler.java
+++ b/luminex/src/org/labkey/luminex/LuminexDataHandler.java
@@ -141,7 +141,7 @@ public class LuminexDataHandler extends AbstractExperimentDataHandler implements
public static final String QC_FLAG_SINGLE_POINT_CONTROL_ID = "SinglePointControlId"; // Column name to use in createQCFlagEnabledSQLFragment
public static final String POSITIVITY_THRESHOLD_COLUMN_NAME = "PositivityThreshold";
public static final String POSITIVITY_THRESHOLD_DISPLAY_NAME = "Positivity Threshold";
- public static final String CALCULATE_POSITIVITY_COLUMN_NAME = "calculatePositivity";
+ public static final String CALCULATE_POSITIVITY_COLUMN_NAME = "CalculatePositivity";
public static final String NEGATIVE_CONTROL_COLUMN_NAME = "NegativeControl";
public static final String NEGATIVE_BEAD_COLUMN_NAME = "NegativeBead";
public static final String NEGATIVE_BEAD_DISPLAY_NAME = "Subtract Negative Bead";
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java
index 2c23dcfc8d..ebac45ae1e 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java
@@ -140,14 +140,14 @@ private void reimportLuminexRunPageTwo(String runId, String isotype, String conj
{
// verify that all old values from the first imported run are present
assertEquals(runId, getFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR));
- assertEquals(isotype, getFormElement(Locator.name("isotype")));
- assertEquals(conjugate, getFormElement(Locator.name("conjugate")));
- assertEquals(stndCurveFitInput, getFormElement(Locator.name("stndCurveFitInput")));
- assertEquals(unkCurveFitInput, getFormElement(Locator.name("unkCurveFitInput")));
- assertEquals(notebookNo, getFormElement(Locator.name("notebookNo")));
- assertEquals(assayType, getFormElement(Locator.name("assayType")));
- assertEquals(expPerformer, getFormElement(Locator.name("expPerformer")));
- assertEquals(testDate, getFormElement(Locator.name("testDate")));
+ assertEquals(isotype, getFormElement(Locator.name("Isotype")));
+ assertEquals(conjugate, getFormElement(Locator.name("Conjugate")));
+ assertEquals(stndCurveFitInput, getFormElement(Locator.name("StndCurveFitInput")));
+ assertEquals(unkCurveFitInput, getFormElement(Locator.name("UnkCurveFitInput")));
+ assertEquals(notebookNo, getFormElement(Locator.name("NotebookNo")));
+ assertEquals(assayType, getFormElement(Locator.name("AssayType")));
+ assertEquals(expPerformer, getFormElement(Locator.name("ExpPerformer")));
+ assertEquals(testDate, getFormElement(Locator.name("TestDate")));
click(Locator.xpath("//a[contains(@class, 'labkey-file-add-icon-enabled')]"));
setFormElement(Locator.name("__primaryFile__"), file);
waitForText("A file with name '" + file.getName() + "' already exists");
@@ -184,7 +184,7 @@ private void importRunForTestLuminexConfig(File file, Calendar testDate, int i)
{
goToTestAssayHome();
clickButton("Import Data");
- setFormElement(Locator.name("network"), "NETWORK" + (i + 1));
+ setFormElement(Locator.name("Network"), "NETWORK" + (i + 1));
clickButton("Next");
testDate.add(Calendar.DATE, 1);
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java
index ee41988d64..af3de74d3e 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java
@@ -182,7 +182,7 @@ private void guideSetApiTest()
String wikiName = "LuminexGuideSetTestWiki";
portalHelper.addWebPart("Wiki");
wikiHelper.createNewWikiPage("HTML");
- setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, wikiName);
+ setFormElement(Locator.name("name"), wikiName);
wikiHelper.setWikiBody("Placeholder text.");
wikiHelper.saveWikiPage();
File guideSetWiki = TestFileUtils.getSampleData("luminex/views/LuminexGuideSet.html");
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexPositivityTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexPositivityTest.java
index b4f2b4e8c2..df8576f455 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexPositivityTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexPositivityTest.java
@@ -125,7 +125,7 @@ public void testImportAnalyteDefaults()
}
createNewAssayRun(assayName, RUN_ID_BASE + " Check Imported Defaults");
- checkCheckbox(Locator.name("calculatePositivity"));
+ checkCheckbox(Locator.name("CalculatePositivity"));
selectPositivityFile(TEST_ASSAY_LUM_FILE13, false);
List analytePropertyRows = PortalHelper.Locators.webPart("Analyte Properties").findElement(getDriver())
@@ -149,7 +149,7 @@ private void testDefaultAnalyteProperties()
// for issue 20549 :upload a run that unchecks the "Calucate Positivity" and then verify the default value for re-runs and new imports
createNewAssayRun(TEST_ASSAY_LUM, RUN_ID_BASE + " No Pos Calc");
- uncheckCheckbox(Locator.name("calculatePositivity"));
+ uncheckCheckbox(Locator.name("CalculatePositivity"));
selectPositivityFile(TEST_ASSAY_LUM_FILE12, true);
clickButton("Save and Finish");
@@ -158,7 +158,7 @@ private void testDefaultAnalyteProperties()
verifyThresholdForReImportRun(1, 98);
createNewAssayRun(TEST_ASSAY_LUM, RUN_ID_BASE + " Threshold Default Test");
- checkCheckbox(Locator.name("calculatePositivity"));
+ checkCheckbox(Locator.name("CalculatePositivity"));
selectPositivityFile(TEST_ASSAY_LUM_FILE12, true);
verifyAnalytePosThresholdValue(_analyteNames.get(0), 98);
clickButton("Cancel");
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 9928bbb2d6..d11bae795c 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexRTransformTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexRTransformTest.java
@@ -123,8 +123,8 @@ public void uploadRun()
clickButton("Next");
setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, "r script transformed assayId");
- checkCheckbox(Locator.name("subtNegativeFromAll"));
- setFormElement(Locator.name("stndCurveFitInput"), "FI");
+ checkCheckbox(Locator.name("SubtNegativeFromAll"));
+ setFormElement(Locator.name("StndCurveFitInput"), "FI");
setFormElement(Locator.name("unkCurveFitInput"), "FI-Bkgd-Neg");
setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE4);
clickButton("Next", defaultWaitForPage * 2);
@@ -160,12 +160,12 @@ public void testNegativeBead()
clickButton("Next");
String assayRunId = "negative bead assayId";
setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, assayRunId);
- uncheckCheckbox(Locator.name("subtNegativeFromAll"));
+ uncheckCheckbox(Locator.name("SubtNegativeFromAll"));
setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE4);
waitForElement(Locator.id("file-upload-tbl").containing(TEST_ASSAY_LUM_FILE4.getName()));
clickButton("Next", defaultWaitForPage * 2);
- // uncheck all of the titration well role types
+ // uncheck all the titration well role types
uncheckCheckbox(Locator.name("_titrationRole_standard_Standard1"));
uncheckCheckbox(Locator.name("_titrationRole_qccontrol_Standard1"));
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexSinglePointTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexSinglePointTest.java
index 6cf599dd3b..6f185ffb0a 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexSinglePointTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexSinglePointTest.java
@@ -190,7 +190,7 @@ private void importRun(String filename, int runNumber) {
goToTestAssayHome();
clickButton("Import Data");
- setFormElement(Locator.name("network"), "NETWORK" + runNumber);
+ setFormElement(Locator.name("Network"), "NETWORK" + runNumber);
clickButton("Next");
Calendar testDate = Calendar.getInstance();
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 a51b429369..b61ac90e96 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexTest.java
@@ -640,9 +640,9 @@ protected void createAndImpersonateUser(String user, String perms)
public DataRegionTable uploadPositivityFile(String assayName, @LoggedParam String assayRunId, @LoggedParam File file, String baseVisit, String foldChange, boolean isBackgroundUpload, boolean expectDuplicateFile)
{
createNewAssayRun(assayName, assayRunId);
- checkCheckbox(Locator.name("calculatePositivity"));
- setFormElement(Locator.name("baseVisit"), baseVisit);
- setFormElement(Locator.name("positivityFoldChange"), foldChange);
+ checkCheckbox(Locator.name("CalculatePositivity"));
+ setFormElement(Locator.name("BaseVisit"), baseVisit);
+ setFormElement(Locator.name("PositivityFoldChange"), foldChange);
selectPositivityFile(file, expectDuplicateFile);
setAnalytePropertyValues();
finishUploadPositivityFile(assayRunId, isBackgroundUpload);
From 42f8300d162c5e926894dadf69d0a5708bbaadcc Mon Sep 17 00:00:00 2001
From: labkey-jeckels
Date: Sun, 6 Jul 2025 13:41:37 -0700
Subject: [PATCH 05/11] Test fixes, consolidate code, add comments
---
luminex/src/org/labkey/luminex/LuminexUploadWizardAction.java | 1 +
.../org/labkey/luminex/query/NegativeBeadDisplayColumnGroup.java | 1 +
2 files changed, 2 insertions(+)
diff --git a/luminex/src/org/labkey/luminex/LuminexUploadWizardAction.java b/luminex/src/org/labkey/luminex/LuminexUploadWizardAction.java
index c3b2a481e6..41ca9bff70 100644
--- a/luminex/src/org/labkey/luminex/LuminexUploadWizardAction.java
+++ b/luminex/src/org/labkey/luminex/LuminexUploadWizardAction.java
@@ -432,6 +432,7 @@ else if (titrationEntry.getValue().isStandard())
public void writeSameCheckboxCell(RenderContext ctx, HtmlWriter out)
{
String titrationCellName = PageFlowUtil.filter(getTitrationColumnCellName(titrationEntry.getValue().getName()));
+ // Use propName because ids can't have spaces
String groupName = ColumnInfo.propNameFromName(getColumns().get(0).getFormFieldName(ctx));
String id = groupName + "CheckBox";
diff --git a/luminex/src/org/labkey/luminex/query/NegativeBeadDisplayColumnGroup.java b/luminex/src/org/labkey/luminex/query/NegativeBeadDisplayColumnGroup.java
index bb25cdd40f..55005e07b9 100644
--- a/luminex/src/org/labkey/luminex/query/NegativeBeadDisplayColumnGroup.java
+++ b/luminex/src/org/labkey/luminex/query/NegativeBeadDisplayColumnGroup.java
@@ -44,6 +44,7 @@ public void writeSameCheckboxCell(RenderContext ctx, HtmlWriter out)
{
TD(
isCopyable() ? (DOM.Renderable) ret -> {
+ // Use propName because ids can't have spaces
String inputName = ColumnInfo.propNameFromName(_inputName);
String id = inputName + "CheckBox";
InputBuilder.checkbox().name(id).id(id).appendTo(out);
From fe28b45043918c6744bdd78d96b5bd3dc086e6be Mon Sep 17 00:00:00 2001
From: labkey-jeckels
Date: Sun, 6 Jul 2025 20:19:44 -0700
Subject: [PATCH 06/11] Test fixes
---
.../org/labkey/test/tests/luminex/LuminexRTransformTest.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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 d11bae795c..c2489e0f2c 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexRTransformTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexRTransformTest.java
@@ -125,7 +125,7 @@ public void uploadRun()
setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, "r script transformed assayId");
checkCheckbox(Locator.name("SubtNegativeFromAll"));
setFormElement(Locator.name("StndCurveFitInput"), "FI");
- setFormElement(Locator.name("unkCurveFitInput"), "FI-Bkgd-Neg");
+ setFormElement(Locator.name("UnkCurveFitInput"), "FI-Bkgd-Neg");
setFormElement(Locator.name("__primaryFile__"), TEST_ASSAY_LUM_FILE4);
clickButton("Next", defaultWaitForPage * 2);
From 2d03b457983d4c302e193648a0c392269d7ef9c6 Mon Sep 17 00:00:00 2001
From: labkey-jeckels
Date: Mon, 7 Jul 2025 16:12:31 -0700
Subject: [PATCH 07/11] Test fixes
---
.../flow/controllers/executescript/confirmRunsToImport.jsp | 4 ++--
.../executescript/importAnalysisChooseAnalysis.jsp | 5 +----
.../controllers/executescript/importAnalysisConfirm.jsp | 2 +-
.../labkey/test/tests/luminex/LuminexAsyncImportTest.java | 2 +-
.../org/labkey/test/tests/luminex/LuminexGuideSetTest.java | 2 +-
.../test/tests/luminex/LuminexUploadAndLinkTest.java | 2 +-
.../org/labkey/viability/ViabilityAssayDataHandler.java | 2 +-
viability/src/org/labkey/viability/ViabilityResult.java | 7 ++++---
8 files changed, 12 insertions(+), 14 deletions(-)
diff --git a/flow/src/org/labkey/flow/controllers/executescript/confirmRunsToImport.jsp b/flow/src/org/labkey/flow/controllers/executescript/confirmRunsToImport.jsp
index 49b8c693ab..5b99a14841 100644
--- a/flow/src/org/labkey/flow/controllers/executescript/confirmRunsToImport.jsp
+++ b/flow/src/org/labkey/flow/controllers/executescript/confirmRunsToImport.jsp
@@ -86,8 +86,8 @@
to look up specimen information from the target study's specimen repository.
-
-
diff --git a/flow/src/org/labkey/flow/controllers/executescript/importAnalysisChooseAnalysis.jsp b/flow/src/org/labkey/flow/controllers/executescript/importAnalysisChooseAnalysis.jsp
index 8f274b591d..f51bfe9cef 100644
--- a/flow/src/org/labkey/flow/controllers/executescript/importAnalysisChooseAnalysis.jsp
+++ b/flow/src/org/labkey/flow/controllers/executescript/importAnalysisChooseAnalysis.jsp
@@ -233,11 +233,8 @@ if (form.getKeywordDir() != null && form.getKeywordDir().length > 0 && StudyPubl
Choose a target study folder:
- <%=select().name("targetStudy").className(null).addOptions(targetStudies).selected(unsafe(form.getTargetStudy())).onChange("document.getElementById('studyChanged').value = true;")
+ <%=select().name("TargetStudy").className(null).addOptions(targetStudies).selected(unsafe(form.getTargetStudy())).onChange("document.getElementById('studyChanged').value = true;")
%>
-<%-- --%>
-<%-- --%>
-<%-- --%>
<%
diff --git a/flow/src/org/labkey/flow/controllers/executescript/importAnalysisConfirm.jsp b/flow/src/org/labkey/flow/controllers/executescript/importAnalysisConfirm.jsp
index 3e13288659..bd5bc629d0 100644
--- a/flow/src/org/labkey/flow/controllers/executescript/importAnalysisConfirm.jsp
+++ b/flow/src/org/labkey/flow/controllers/executescript/importAnalysisConfirm.jsp
@@ -93,7 +93,7 @@
<% } %>
-
+
You are about to import the analysis from the workspace with the following settings:
<%
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java
index ebac45ae1e..6648a252b6 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java
@@ -105,7 +105,7 @@ private void importSecondRun(int index, Calendar testDate, File file) {
int i = index;
goToTestAssayHome();
clickButton("Import Data");
- setFormElement(Locator.name("network"), "NEWNET" + (i + 1));
+ setFormElement(Locator.name("Network"), "NEWNET" + (i + 1));
clickButton("Next");
testDate.add(Calendar.DATE, 1);
importLuminexRunPageTwo("Guide Set plate " + (i+1), "new"+isotype, "new"+conjugate, "", "", "NewNote" + (i+1),
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java
index af3de74d3e..aff589817a 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexGuideSetTest.java
@@ -562,7 +562,7 @@ private void importPlateFiveAgain()
goToTestAssayHome();
clickButton("Import Data");
- setFormElement(Locator.name("network"), "NETWORK" + (10));
+ setFormElement(Locator.name("Network"), "NETWORK" + (10));
clickButton("Next");
importLuminexRunPageTwo("Reload guide set 5", isotype, conjugate, "", "", "Notebook" + 11,
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java
index 4f9a789415..c3a3948a16 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java
@@ -218,7 +218,7 @@ public void testUploadAndLink()
region.setFilter("FI", "Equals", "20");
click(Locator.name(".toggle"));
clickButton("Link to Study");
- selectOptionByText(Locator.name("targetStudy"), "/" + TEST_ASSAY_PRJ_LUMINEX + " (" + TEST_ASSAY_PRJ_LUMINEX + " Study)");
+ selectOptionByText(AssayConstants.TARGET_STUDY_FIELD_LOCATOR, "/" + TEST_ASSAY_PRJ_LUMINEX + " (" + TEST_ASSAY_PRJ_LUMINEX + " Study)");
clickButton("Next");
setFormElement(Locator.name("participantId"), "ParticipantID");
setFormElement(Locator.name("visitId"), "100.1");
diff --git a/viability/src/org/labkey/viability/ViabilityAssayDataHandler.java b/viability/src/org/labkey/viability/ViabilityAssayDataHandler.java
index 85c74bd420..f0e9a94657 100644
--- a/viability/src/org/labkey/viability/ViabilityAssayDataHandler.java
+++ b/viability/src/org/labkey/viability/ViabilityAssayDataHandler.java
@@ -366,7 +366,7 @@ else if (targetStudyPair.getKey() == ExpProtocol.AssayDomainTypes.Result)
// If the property is on the result domain, it's already in the base map.
if (batchOrRunTargetStudy != null)
{
- base.put("targetStudy", batchOrRunTargetStudy);
+ base.put(AbstractAssayProvider.TARGET_STUDY_PROPERTY_NAME, batchOrRunTargetStudy);
}
ViabilityResult result = ViabilityResult.fromMap(base, extra);
diff --git a/viability/src/org/labkey/viability/ViabilityResult.java b/viability/src/org/labkey/viability/ViabilityResult.java
index d41b5bf867..df05fa8d6a 100644
--- a/viability/src/org/labkey/viability/ViabilityResult.java
+++ b/viability/src/org/labkey/viability/ViabilityResult.java
@@ -18,6 +18,7 @@
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.Nullable;
+import org.labkey.api.assay.AbstractAssayProvider;
import org.labkey.api.exp.PropertyDescriptor;
import org.labkey.api.collections.CaseInsensitiveHashMap;
@@ -97,8 +98,8 @@ else if (o instanceof List)
throw new IllegalArgumentException("Expected comma separated list or a collecting of specimen IDs");
}
- if (base.get("targetStudy") instanceof String)
- result.setTargetStudy((String)base.get("targetStudy"));
+ if (base.get(AbstractAssayProvider.TARGET_STUDY_PROPERTY_NAME) instanceof String s)
+ result.setTargetStudy(s);
if (extra != null)
result.setProperties(extra);
@@ -130,7 +131,7 @@ public Map toMap()
// NOTE: The 'list' version of 'SpecimenIDs' is used when the guava file is parsed.
ret.put("specimenIDs", getSpecimenIDList());
- ret.put("targetStudy", getTargetStudy());
+ ret.put(AbstractAssayProvider.TARGET_STUDY_PROPERTY_NAME, getTargetStudy());
ret.putAll(getStringProperties());
return ret;
From 11307e4cf9dfb103b0c204ba09cb7892f101ee96 Mon Sep 17 00:00:00 2001
From: labkey-jeckels
Date: Tue, 8 Jul 2025 16:30:13 -0700
Subject: [PATCH 08/11] Improve detection of an idle indexer
---
.../org/labkey/test/tests/luminex/LuminexAsyncImportTest.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java
index 6648a252b6..c1fe1fe96b 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexAsyncImportTest.java
@@ -123,7 +123,7 @@ private void reimportFirstRun(int index, Calendar testDate, File file)
goToTestAssayHome();
new DataRegionTable("Runs", getDriver()).checkCheckbox(1);
clickButton("Re-import run");
- Assert.assertEquals("Form did not remember values from first import", "NETWORK1", getFormElement(Locator.name("network")));
+ Assert.assertEquals("Form did not remember values from first import", "NETWORK1", getFormElement(Locator.name("Network")));
clickButton("Next");
testDate.add(Calendar.DATE, 1);
reimportLuminexRunPageTwo("Guide Set plate " + (i+1), isotype, conjugate, "", "", "Notebook" + (i+1),
From 01fbf1c5f795dd0870853bc7153c148d9ce2b197 Mon Sep 17 00:00:00 2001
From: labkey-jeckels
Date: Thu, 10 Jul 2025 10:56:22 -0700
Subject: [PATCH 09/11] Test fixes
---
.../src/org/labkey/test/tests/ms2/MS2Test.java | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/ms2/test/src/org/labkey/test/tests/ms2/MS2Test.java b/ms2/test/src/org/labkey/test/tests/ms2/MS2Test.java
index 6f575d7925..a0380297ae 100644
--- a/ms2/test/src/org/labkey/test/tests/ms2/MS2Test.java
+++ b/ms2/test/src/org/labkey/test/tests/ms2/MS2Test.java
@@ -799,11 +799,11 @@ private void validateRunGroups()
clickAndWait(Locator.linkWithImage(WebTestHelper.getContextPath() + "/experiment/images/graphIcon.gif"));
clickAndWait(Locator.id("expandCollapse-experimentRunGroup"), 0);
clickButton("Create new group");
- setFormElement(Locator.name("name"), RUN_GROUP1_NAME1);
- setFormElement(Locator.name("contactId"), RUN_GROUP1_CONTACT);
- setFormElement(Locator.name("experimentDescriptionURL"), RUN_GROUP1_DESCRIPTION);
- setFormElement(Locator.name("hypothesis"), RUN_GROUP1_HYPOTHESIS);
- setFormElement(Locator.name("comments"), RUN_GROUP1_COMMENTS);
+ setFormElement(Locator.name("Name"), RUN_GROUP1_NAME1);
+ setFormElement(Locator.name("ContactId"), RUN_GROUP1_CONTACT);
+ setFormElement(Locator.name("ExperimentDescriptionURL"), RUN_GROUP1_DESCRIPTION);
+ setFormElement(Locator.name("Hypothesis"), RUN_GROUP1_HYPOTHESIS);
+ setFormElement(Locator.name("Comments"), RUN_GROUP1_COMMENTS);
clickButton("Submit");
clickAndWait(Locator.id("expandCollapse-experimentRunGroup"), 0);
assertTextPresent(RUN_GROUP1_NAME1,
@@ -815,11 +815,11 @@ private void validateRunGroups()
clickAndWait(Locator.linkWithText("Run Groups"));
clickButton("Create Run Group");
clickButton("Submit");
- setFormElement(Locator.name("name"), RUN_GROUP3_NAME);
+ setFormElement(Locator.name("Name"), RUN_GROUP3_NAME);
clickButton("Submit");
clickButton("Create Run Group");
- setFormElement(Locator.name("name"), RUN_GROUP2_NAME);
+ setFormElement(Locator.name("Name"), RUN_GROUP2_NAME);
clickButton("Submit");
log("Test editing run group info");
@@ -831,7 +831,7 @@ private void validateRunGroups()
RUN_GROUP1_HYPOTHESIS,
RUN_GROUP1_COMMENTS);
clickButton("Edit");
- setFormElement(Locator.name("name"), RUN_GROUP1_NAME2);
+ setFormElement(Locator.name("Name"), RUN_GROUP1_NAME2);
clickButton("Submit");
FieldKey runGroupFK = FieldKey.fromParts("RunGroupToggle");
@@ -1235,7 +1235,7 @@ private void validateContainerFilter()
goToProjectHome(getProjectName());
clickAndWait(Locator.linkWithText("Run Groups"));
clickButton("Create Run Group");
- setFormElement(Locator.name("name"), RUN_GROUP3_NAME);
+ setFormElement(Locator.name("Name"), RUN_GROUP3_NAME);
clickButton("Submit");
navigateToFolder(FOLDER_NAME);
From 51950d5b426dd04ee7d79748b347b8fec06b996e Mon Sep 17 00:00:00 2001
From: labkey-jeckels
Date: Mon, 14 Jul 2025 12:49:31 -0700
Subject: [PATCH 10/11] More constants for field names
---
.../org/labkey/elispot/query/ElispotRunDataTable.java | 2 +-
.../controllers/executescript/confirmRunsToImport.jsp | 5 +++--
.../executescript/importAnalysisChooseAnalysis.jsp | 3 ++-
.../executescript/importAnalysisConfirm.jsp | 3 ++-
flow/src/org/labkey/flow/data/FlowProperty.java | 3 ++-
.../org/labkey/flow/query/FCSFileCoalescingColumn.java | 3 ++-
.../luminex/importwizard/BatchPropertiesWebPart.java | 3 ++-
.../test/tests/luminex/LuminexMultipleCurvesTest.java | 2 +-
.../test/tests/luminex/LuminexUploadAndLinkTest.java | 10 +++++-----
.../src/org/labkey/viability/ViabilityAssaySchema.java | 2 +-
10 files changed, 21 insertions(+), 15 deletions(-)
diff --git a/elispotassay/src/org/labkey/elispot/query/ElispotRunDataTable.java b/elispotassay/src/org/labkey/elispot/query/ElispotRunDataTable.java
index 937d62dfb4..c7dae5e4ef 100644
--- a/elispotassay/src/org/labkey/elispot/query/ElispotRunDataTable.java
+++ b/elispotassay/src/org/labkey/elispot/query/ElispotRunDataTable.java
@@ -170,7 +170,7 @@ public List getDefaultVisibleColumns()
FieldKey runPropFieldKey = FieldKey.fromParts("Run");
fieldKeys.add(FieldKey.fromParts(runPropFieldKey, FieldKey.fromString("ProtocolName")));
fieldKeys.add(FieldKey.fromParts(runPropFieldKey, FieldKey.fromString("PlateReader")));
- fieldKeys.add(FieldKey.fromParts(runPropFieldKey, FieldKey.fromString("Batch"), FieldKey.fromString("TargetStudy")));
+ fieldKeys.add(FieldKey.fromParts(runPropFieldKey, FieldKey.fromString("Batch"), FieldKey.fromString(AbstractAssayProvider.TARGET_STUDY_PROPERTY_NAME)));
return fieldKeys;
}
diff --git a/flow/src/org/labkey/flow/controllers/executescript/confirmRunsToImport.jsp b/flow/src/org/labkey/flow/controllers/executescript/confirmRunsToImport.jsp
index 5b99a14841..cbfff7cb17 100644
--- a/flow/src/org/labkey/flow/controllers/executescript/confirmRunsToImport.jsp
+++ b/flow/src/org/labkey/flow/controllers/executescript/confirmRunsToImport.jsp
@@ -30,6 +30,7 @@
<%@ page import="java.util.LinkedHashMap" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.Set" %>
+<%@ page import="org.labkey.api.assay.AbstractAssayProvider" %>
<%@ page extends="org.labkey.api.jsp.JspBase" %>
<%
JspView me = HttpView.currentView();
@@ -86,8 +87,8 @@
to look up specimen information from the target study's specimen repository.
-
-
+
+
diff --git a/flow/src/org/labkey/flow/controllers/executescript/importAnalysisChooseAnalysis.jsp b/flow/src/org/labkey/flow/controllers/executescript/importAnalysisChooseAnalysis.jsp
index f51bfe9cef..c014072f56 100644
--- a/flow/src/org/labkey/flow/controllers/executescript/importAnalysisChooseAnalysis.jsp
+++ b/flow/src/org/labkey/flow/controllers/executescript/importAnalysisChooseAnalysis.jsp
@@ -36,6 +36,7 @@
<%@ page import="java.util.List" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.Set" %>
+<%@ page import="org.labkey.api.assay.AbstractAssayProvider" %>
<%@ page extends="org.labkey.api.jsp.JspBase" %>
<%@ taglib prefix="labkey" uri="http://www.labkey.org/taglib" %>
<%
@@ -233,7 +234,7 @@ if (form.getKeywordDir() != null && form.getKeywordDir().length > 0 && StudyPubl
Choose a target study folder:
- <%=select().name("TargetStudy").className(null).addOptions(targetStudies).selected(unsafe(form.getTargetStudy())).onChange("document.getElementById('studyChanged').value = true;")
+ <%=select().name(<%= h(AbstractAssayProvider.TARGET_STUDY_PROPERTY_NAME)%>).className(null).addOptions(targetStudies).selected(unsafe(form.getTargetStudy())).onChange("document.getElementById('studyChanged').value = true;")
%>
diff --git a/flow/src/org/labkey/flow/controllers/executescript/importAnalysisConfirm.jsp b/flow/src/org/labkey/flow/controllers/executescript/importAnalysisConfirm.jsp
index bd5bc629d0..30f9dc1104 100644
--- a/flow/src/org/labkey/flow/controllers/executescript/importAnalysisConfirm.jsp
+++ b/flow/src/org/labkey/flow/controllers/executescript/importAnalysisConfirm.jsp
@@ -42,6 +42,7 @@
<%@ page import="java.util.Map" %>
<%@ page import="java.util.Set" %>
<%@ page import="static org.labkey.flow.controllers.executescript.AnalysisScriptController.BACK_BUTTON_ACTION" %>
+<%@ page import="org.labkey.api.assay.AbstractAssayProvider" %>
<%@ page extends="org.labkey.api.jsp.JspBase" %>
<%
ImportAnalysisForm form = (ImportAnalysisForm)getModelBean();
@@ -93,7 +94,7 @@
<% } %>
-
+
You are about to import the analysis from the workspace with the following settings:
<%
diff --git a/flow/src/org/labkey/flow/data/FlowProperty.java b/flow/src/org/labkey/flow/data/FlowProperty.java
index 6581f94b3f..c6721cb6b4 100644
--- a/flow/src/org/labkey/flow/data/FlowProperty.java
+++ b/flow/src/org/labkey/flow/data/FlowProperty.java
@@ -16,6 +16,7 @@
package org.labkey.flow.data;
+import org.labkey.api.assay.AbstractAssayProvider;
import org.labkey.api.exp.PropertyType;
import org.labkey.api.exp.property.SystemProperty;
@@ -35,7 +36,7 @@ abstract public class FlowProperty
static public final SystemProperty AnalysisEngine = new SystemProperty(PROPERTY_BASE + "AnalysisEngine", PropertyType.STRING);
// Property on FlowRun ExpRun object: container id of target study
- static public final SystemProperty TargetStudy = new SystemProperty(PROPERTY_BASE + "TargetStudy", PropertyType.STRING);
+ static public final SystemProperty TargetStudy = new SystemProperty(PROPERTY_BASE + AbstractAssayProvider.TARGET_STUDY_PROPERTY_NAME, PropertyType.STRING);
// Property on FlowFCSFile ExpData object: true when the FlowFCSFile was created from an external analysis (extracted from FlowJo workspace or analysis archive)
//static public final SystemProperty ExtraKeywordsFCSFile = new SystemProperty(PROPERTY_BASE + "ExtraKeywordsFCSFile", PropertyType.BOOLEAN);
diff --git a/flow/src/org/labkey/flow/query/FCSFileCoalescingColumn.java b/flow/src/org/labkey/flow/query/FCSFileCoalescingColumn.java
index 246a469e17..2a81685ffb 100644
--- a/flow/src/org/labkey/flow/query/FCSFileCoalescingColumn.java
+++ b/flow/src/org/labkey/flow/query/FCSFileCoalescingColumn.java
@@ -16,6 +16,7 @@
package org.labkey.flow.query;
import org.jetbrains.annotations.Nullable;
+import org.labkey.api.assay.AbstractAssayProvider;
import org.labkey.api.data.ColumnInfo;
import org.labkey.api.data.JdbcType;
import org.labkey.api.data.SQLFragment;
@@ -74,7 +75,7 @@ public FCSFileCoalescingColumn(TableInfo parent, FieldKey key, JdbcType type, @N
_dateFieldKeys = Pair.of(dateFieldKey, FlowSchema.rewriteAsOriginalFCSFile(dateFieldKey));
}
- FieldKey targetStudyFieldKey = relativeFromFCSFile ? FieldKey.fromParts("Run", "TargetStudy") : FieldKey.fromParts("FCSFile", "Run", "TargetStudy");
+ FieldKey targetStudyFieldKey = relativeFromFCSFile ? FieldKey.fromParts("Run", AbstractAssayProvider.TARGET_STUDY_PROPERTY_NAME) : FieldKey.fromParts("FCSFile", "Run", "TargetStudy");
_targetStudyFieldKeys = Pair.of(targetStudyFieldKey, FlowSchema.rewriteAsOriginalFCSFile(targetStudyFieldKey));
}
diff --git a/luminex/test/src/org/labkey/test/components/luminex/importwizard/BatchPropertiesWebPart.java b/luminex/test/src/org/labkey/test/components/luminex/importwizard/BatchPropertiesWebPart.java
index 9aaf275312..6814efe105 100644
--- a/luminex/test/src/org/labkey/test/components/luminex/importwizard/BatchPropertiesWebPart.java
+++ b/luminex/test/src/org/labkey/test/components/luminex/importwizard/BatchPropertiesWebPart.java
@@ -17,6 +17,7 @@
import org.labkey.test.Locator;
import org.labkey.test.components.WebPartPanel;
+import org.labkey.test.components.assay.AssayConstants;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
@@ -67,6 +68,6 @@ public class Elements extends WebPartPanel>.ElementCache
public static class Locators
{
- protected static final Locator sampleInfoRadio = Locator.radioButtonByNameAndValue("ParticipantVisitResolver", "SampleInfo");
+ protected static final Locator sampleInfoRadio = Locator.radioButtonByNameAndValue(AssayConstants.PARTICIPANT_VISIT_RESOLVER_FIELD_NAME, "SampleInfo");
}
}
\ No newline at end of file
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexMultipleCurvesTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexMultipleCurvesTest.java
index 42fc575b7a..084a14a499 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexMultipleCurvesTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexMultipleCurvesTest.java
@@ -145,7 +145,7 @@ private void reImportData(Map wellRoleMap)
goToTestAssayHome();
click(Locator.linkContainingText(MULTIPLE_CURVE_ASSAY_RUN_NAME));
clickButtonContainingText("Re-import run");
- checkCheckbox(Locator.radioButtonByNameAndValue("ParticipantVisitResolver", "SampleInfo"));
+ checkCheckbox(Locator.radioButtonByNameAndValue(AssayConstants.PARTICIPANT_VISIT_RESOLVER_FIELD_NAME, "SampleInfo"));
clickButtonContainingText("Next");
setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, MULTIPLE_CURVE_ASSAY_RUN_NAME);
clickButtonContainingText("Next");
diff --git a/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java b/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java
index c3a3948a16..cb01a09f50 100644
--- a/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java
+++ b/luminex/test/src/org/labkey/test/tests/luminex/LuminexUploadAndLinkTest.java
@@ -88,8 +88,8 @@ public void testUploadAndLink()
// Upload another run using a thaw list pasted in as a TSV
clickButton("Import Data");
assertEquals(TEST_ASSAY_LUM_SET_PROP_SPECIES2, getFormElement(SPECIES_LOCATOR));
- checkCheckbox(Locator.radioButtonByNameAndValue("ParticipantVisitResolver", "Lookup"));
- checkCheckbox(Locator.radioButtonByNameAndValue("ThawListType", "Text"));
+ checkCheckbox(Locator.radioButtonByNameAndValue(AssayConstants.PARTICIPANT_VISIT_RESOLVER_FIELD_NAME, "Lookup"));
+ checkCheckbox(Locator.radioButtonByNameAndValue(AssayConstants.THAW_LIST_TYPE_FIELD_NAME, "Text"));
setFormElement(Locator.id("ThawListTextArea"), "Index\tSpecimenID\tParticipantID\tVisitID\n" +
"1\tSpecimenID1\tParticipantID1\t1.1\n" +
"2\tSpecimenID2\tParticipantID2\t1.2\n" +
@@ -163,10 +163,10 @@ public void testUploadAndLink()
// Upload another run using a thaw list that pointed at the list we uploaded earlier
clickButton("Import Data");
assertEquals(TEST_ASSAY_LUM_SET_PROP_SPECIES2, getFormElement(SPECIES_LOCATOR));
- assertRadioButtonSelected(Locator.radioButtonByNameAndValue("ParticipantVisitResolver", "Lookup"));
- assertRadioButtonSelected(Locator.radioButtonByNameAndValue("ThawListType", "Text"));
+ assertRadioButtonSelected(Locator.radioButtonByNameAndValue(AssayConstants.PARTICIPANT_VISIT_RESOLVER_FIELD_NAME, "Lookup"));
+ assertRadioButtonSelected(Locator.radioButtonByNameAndValue(AssayConstants.THAW_LIST_TYPE_FIELD_NAME, "Text"));
- checkCheckbox(Locator.radioButtonByNameAndValue("ThawListType", "List"));
+ checkCheckbox(Locator.radioButtonByNameAndValue(AssayConstants.THAW_LIST_TYPE_FIELD_NAME, "List"));
waitForElement(Locator.css(".schema-loaded-marker"));
_ext4Helper.selectComboBoxItem(Locator.id("thawListSchemaName"), "lists");
waitForElement(Locator.css(".query-loaded-marker"));
diff --git a/viability/src/org/labkey/viability/ViabilityAssaySchema.java b/viability/src/org/labkey/viability/ViabilityAssaySchema.java
index 37f39e99a0..b317cc17dc 100644
--- a/viability/src/org/labkey/viability/ViabilityAssaySchema.java
+++ b/viability/src/org/labkey/viability/ViabilityAssaySchema.java
@@ -362,7 +362,7 @@ public TableInfo getLookupTableInfo()
private MutableColumnInfo createTargetStudyCol()
{
- var col = wrapColumn(AbstractAssayProvider.TARGET_STUDY_PROPERTY_NAME, getRealTable().getColumn("TargetStudy"));
+ var col = wrapColumn(AbstractAssayProvider.TARGET_STUDY_PROPERTY_NAME, getRealTable().getColumn(AbstractAssayProvider.TARGET_STUDY_PROPERTY_NAME));
fixupRenderers(col, col);
col.setUserEditable(false);
col.setReadOnly(true);
From 6af541252547205b4f1f33db176fcfc35b893edd Mon Sep 17 00:00:00 2001
From: labkey-jeckels
Date: Mon, 14 Jul 2025 14:38:39 -0700
Subject: [PATCH 11/11] Eliminate ColumnInfo.propNameFromName()
---
.../importAnalysisChooseAnalysis.jsp | 2 +-
.../labkey/flow/reports/FilterFlowReport.java | 2 +-
.../labkey/luminex/LuminexRunUploadForm.java | 4 +-
.../luminex/LuminexUploadWizardAction.java | 49 ++++++++++---------
.../AnalytePropStandardsDisplayColumn.java | 4 +-
.../query/NegativeBeadDisplayColumnGroup.java | 5 +-
.../luminex/view/titrationWellRoles.jsp | 18 +++----
7 files changed, 45 insertions(+), 39 deletions(-)
diff --git a/flow/src/org/labkey/flow/controllers/executescript/importAnalysisChooseAnalysis.jsp b/flow/src/org/labkey/flow/controllers/executescript/importAnalysisChooseAnalysis.jsp
index c014072f56..8c6d27aefd 100644
--- a/flow/src/org/labkey/flow/controllers/executescript/importAnalysisChooseAnalysis.jsp
+++ b/flow/src/org/labkey/flow/controllers/executescript/importAnalysisChooseAnalysis.jsp
@@ -234,7 +234,7 @@ if (form.getKeywordDir() != null && form.getKeywordDir().length > 0 && StudyPubl
Choose a target study folder:
- <%=select().name(<%= h(AbstractAssayProvider.TARGET_STUDY_PROPERTY_NAME)%>).className(null).addOptions(targetStudies).selected(unsafe(form.getTargetStudy())).onChange("document.getElementById('studyChanged').value = true;")
+ <%=select().name(AbstractAssayProvider.TARGET_STUDY_PROPERTY_NAME).className(null).addOptions(targetStudies).selected(unsafe(form.getTargetStudy())).onChange("document.getElementById('studyChanged').value = true;")
%>
diff --git a/flow/src/org/labkey/flow/reports/FilterFlowReport.java b/flow/src/org/labkey/flow/reports/FilterFlowReport.java
index b3f3750d8c..7f7cff4fb0 100644
--- a/flow/src/org/labkey/flow/reports/FilterFlowReport.java
+++ b/flow/src/org/labkey/flow/reports/FilterFlowReport.java
@@ -197,7 +197,7 @@ void addScriptProlog(ViewContext context, StringBuffer sb)
private String oldLegalName(FieldKey fkey)
{
String r = AliasManager.makeLegalName(StringUtils.join(fkey.getParts(), "_"), FlowManager.get().getSchema().getSqlDialect(), false);
- return ColumnInfo.propNameFromName(r).toLowerCase();
+ return ColumnInfo.legalNameFromName(r).toLowerCase();
}
protected void convertDateColumn(CachedResultSet rs, String fromCol, String toCol) throws SQLException
diff --git a/luminex/src/org/labkey/luminex/LuminexRunUploadForm.java b/luminex/src/org/labkey/luminex/LuminexRunUploadForm.java
index f77493c6ff..e6d719c23b 100644
--- a/luminex/src/org/labkey/luminex/LuminexRunUploadForm.java
+++ b/luminex/src/org/labkey/luminex/LuminexRunUploadForm.java
@@ -268,7 +268,7 @@ public List getTitrations() throws ExperimentException
titration.setName(titrationName);
for (Titration.Type type : Titration.Type.values())
{
- String propertyName = LuminexUploadWizardAction.getTitrationTypeCheckboxName(type, titration);
+ String propertyName = LuminexUploadWizardAction.getTitrationTypeCheckboxNameAndId(type, titration);
if (getViewContext().getRequest().getParameter(propertyName) != null)
{
String hiddenValue = getViewContext().getRequest().getParameter(propertyName);
@@ -293,7 +293,7 @@ public List getSinglePointControls() throws ExperimentExcept
{
SinglePointControl singlePointControl = new SinglePointControl();
singlePointControl.setName(singlePointControlName);
- String propertyName = LuminexUploadWizardAction.getSinglePointControlCheckboxName(singlePointControlName);
+ String propertyName = LuminexUploadWizardAction.getSinglePointControlCheckboxNameAndId(singlePointControlName);
if (StringUtils.isNotBlank(getViewContext().getRequest().getParameter(propertyName)))
{
result.add(singlePointControl);
diff --git a/luminex/src/org/labkey/luminex/LuminexUploadWizardAction.java b/luminex/src/org/labkey/luminex/LuminexUploadWizardAction.java
index 41ca9bff70..a95fe9f5a5 100644
--- a/luminex/src/org/labkey/luminex/LuminexUploadWizardAction.java
+++ b/luminex/src/org/labkey/luminex/LuminexUploadWizardAction.java
@@ -60,6 +60,7 @@
import org.labkey.api.view.JspView;
import org.labkey.api.view.VBox;
import org.labkey.api.view.ViewServlet;
+import org.labkey.api.view.template.PageConfig;
import org.labkey.api.writer.HtmlWriter;
import org.labkey.luminex.model.Analyte;
import org.labkey.luminex.model.SinglePointControl;
@@ -324,7 +325,7 @@ else if (analyteDefaultValue != null)
}
Titration existingTitration = existingTitrations.get(titrationEntry.getKey());
- String propertyName = getTitrationTypeCheckboxName(Titration.Type.standard, titrationEntry.getValue());
+ String propertyName = getTitrationTypeCheckboxNameAndId(Titration.Type.standard, titrationEntry.getValue());
// If we have an existing titration as a baseline from the run we're replacing, use its value
String defVal = existingTitration == null ? defaultWellRoleValues.get(propertyName) : Boolean.toString(existingTitration.isStandard());
@@ -359,7 +360,7 @@ else if (titrationEntry.getValue().isStandard())
if (!titrationEntry.getValue().isUnknown())
{
- propertyName = getTitrationTypeCheckboxName(Titration.Type.standard, titrationEntry.getValue());
+ propertyName = getTitrationTypeCheckboxNameAndId(Titration.Type.standard, titrationEntry.getValue());
// If we have an existing titration as a baseline from the run we're replacing, use its value
defVal = existingTitration == null ? defaultWellRoleValues.get(propertyName) : Boolean.toString(existingTitration.isStandard());
value = setInitialTitrationInput(errorReshow, propertyName, defVal, titrationEntry.getValue().isStandard()) ? "true" : "";
@@ -369,13 +370,13 @@ else if (titrationEntry.getValue().isStandard())
value = toShowStandardCheckboxColumn(errorReshow, standardTitrations, titrationEntry.getValue()) ? "true" : "";
view.getDataRegion().addHiddenFormField(getShowStandardCheckboxColumnName(titrationEntry.getValue()), value);
- propertyName = getTitrationTypeCheckboxName(Titration.Type.qccontrol, titrationEntry.getValue());
+ propertyName = getTitrationTypeCheckboxNameAndId(Titration.Type.qccontrol, titrationEntry.getValue());
// If we have an existing titration as a baseline from the run we're replacing, use its value
defVal = existingTitration == null ? defaultWellRoleValues.get(propertyName) : Boolean.toString(existingTitration.isQcControl());
value = setInitialTitrationInput(errorReshow, propertyName, defVal, titrationEntry.getValue().isQcControl()) ? "true" : "";
view.getDataRegion().addHiddenFormField(propertyName, value);
- propertyName = getTitrationTypeCheckboxName(Titration.Type.othercontrol, titrationEntry.getValue());
+ propertyName = getTitrationTypeCheckboxNameAndId(Titration.Type.othercontrol, titrationEntry.getValue());
// If we have an existing titration as a baseline from the run we're replacing, use its value
defVal = existingTitration == null ? defaultWellRoleValues.get(propertyName) : Boolean.toString(existingTitration.isOtherControl());
value = setInitialTitrationInput(errorReshow, propertyName, defVal, titrationEntry.getValue().isOtherControl()) ? "true" : "";
@@ -383,7 +384,7 @@ else if (titrationEntry.getValue().isStandard())
}
else
{
- propertyName = getTitrationTypeCheckboxName(Titration.Type.unknown, titrationEntry.getValue());
+ propertyName = getTitrationTypeCheckboxNameAndId(Titration.Type.unknown, titrationEntry.getValue());
// If we have an existing titration as a baseline from the run we're replacing, use its value
defVal = existingTitration == null ? defaultWellRoleValues.get(propertyName) : Boolean.toString(existingTitration.isUnknown());
value = setInitialTitrationInput(errorReshow, propertyName, defVal, titrationEntry.getValue().isUnknown()) ? "true" : "";
@@ -400,7 +401,7 @@ else if (titrationEntry.getValue().isStandard())
boolean existingSinglePointControl = existingSinglePointControls.contains(singlePointControl);
- propertyName = getSinglePointControlCheckboxName(singlePointControl);
+ propertyName = getSinglePointControlCheckboxNameAndId(singlePointControl);
// If we have an existing singlePointControl as a baseline from the run we're replacing, use its value
defVal = existingSinglePointControl ? "true" : defaultWellRoleValues.get(propertyName);
value = setInitialSinglePointControlInput(errorReshow, propertyName, defVal) ? "true" : "";
@@ -431,9 +432,9 @@ else if (titrationEntry.getValue().isStandard())
@Override
public void writeSameCheckboxCell(RenderContext ctx, HtmlWriter out)
{
- String titrationCellName = PageFlowUtil.filter(getTitrationColumnCellName(titrationEntry.getValue().getName()));
- // Use propName because ids can't have spaces
- String groupName = ColumnInfo.propNameFromName(getColumns().get(0).getFormFieldName(ctx));
+ String titrationCellName = PageFlowUtil.filter(getTitrationColumnCellNameAndId(titrationEntry.getValue().getName()));
+ // DOM ids and JS function names can't have spaces
+ String groupName = PageConfig.makeIdFromName(getColumns().get(0).getFormFieldName(ctx));
String id = groupName + "CheckBox";
TD(
@@ -454,7 +455,8 @@ public void writeSameCheckboxCell(RenderContext ctx, HtmlWriter out)
@Override
public void writeCopyableJavaScript(RenderContext ctx, Writer out) throws IOException
{
- String groupName = ColumnInfo.propNameFromName(getColumns().get(0).getFormFieldName(ctx));
+ // DOM ids and JS function names can't have spaces
+ String groupName = PageConfig.makeIdFromName(getColumns().get(0).getFormFieldName(ctx));
out.write("function " + groupName + "Updated() {\n");
out.write(" if (document.getElementById('" + groupName + "CheckBox') != null && document.getElementById('" + groupName + "CheckBox').checked) {\n");
out.write(" var v = document.getElementsByName('" + getColumns().get(0).getFormFieldName(ctx) + "')[0].checked;\n");
@@ -551,7 +553,7 @@ private JspView addExclusionWarning(LuminexRunUploadForm f
private String getShowStandardCheckboxColumnName(Titration standard)
{
- String titrationCheckboxName = getTitrationTypeCheckboxName(Titration.Type.standard, standard);
+ String titrationCheckboxName = getTitrationTypeCheckboxNameAndId(Titration.Type.standard, standard);
return titrationCheckboxName + "_showcol";
}
@@ -692,19 +694,22 @@ protected RunStepHandler getRunStepHandler()
return new LuminexRunStepHandler();
}
- public static String getTitrationTypeCheckboxName(Titration.Type type, Titration titration)
+ public static String getTitrationTypeCheckboxNameAndId(Titration.Type type, Titration titration)
{
- return ColumnInfo.propNameFromName("_titrationRole_" + type + "_" + titration.getName());
+ // DOM ids and JS function names can't have spaces
+ return PageConfig.makeIdFromName("_titrationRole_" + type + "_" + titration.getName());
}
- public static String getSinglePointControlCheckboxName(String singlePointControl)
+ public static String getSinglePointControlCheckboxNameAndId(String singlePointControl)
{
- return ColumnInfo.propNameFromName("_singlePointControl_" + singlePointControl);
+ // DOM ids and JS function names can't have spaces
+ return PageConfig.makeIdFromName("_singlePointControl_" + singlePointControl);
}
- public static String getTitrationColumnCellName(String titrationName)
+ public static String getTitrationColumnCellNameAndId(String titrationName)
{
- return ColumnInfo.propNameFromName("_titrationcell_" + titrationName);
+ // DOM ids and JS function names can't have spaces
+ return PageConfig.makeIdFromName("_titrationcell_" + titrationName);
}
protected class LuminexRunStepHandler extends RunStepHandler
@@ -807,21 +812,21 @@ public boolean executeStep(LuminexRunUploadForm form, BindException errors) thro
// add the name/value pairs for the titration well role definition section
if (!titrationEntry.getValue().isUnknown())
{
- propertyName = getTitrationTypeCheckboxName(Titration.Type.standard, titrationEntry.getValue());
+ propertyName = getTitrationTypeCheckboxNameAndId(Titration.Type.standard, titrationEntry.getValue());
value = getViewContext().getRequest().getParameter(propertyName).equals("true");
defaultWellRoleValues.put(propertyName, Boolean.toString(value));
- propertyName = getTitrationTypeCheckboxName(Titration.Type.qccontrol, titrationEntry.getValue());
+ propertyName = getTitrationTypeCheckboxNameAndId(Titration.Type.qccontrol, titrationEntry.getValue());
value = getViewContext().getRequest().getParameter(propertyName).equals("true");
defaultWellRoleValues.put(propertyName, Boolean.toString(value));
- propertyName = getTitrationTypeCheckboxName(Titration.Type.othercontrol, titrationEntry.getValue());
+ propertyName = getTitrationTypeCheckboxNameAndId(Titration.Type.othercontrol, titrationEntry.getValue());
value = getViewContext().getRequest().getParameter(propertyName).equals("true");
defaultWellRoleValues.put(propertyName, Boolean.toString(value));
}
else
{
- propertyName = getTitrationTypeCheckboxName(Titration.Type.unknown, titrationEntry.getValue());
+ propertyName = getTitrationTypeCheckboxNameAndId(Titration.Type.unknown, titrationEntry.getValue());
value = getViewContext().getRequest().getParameter(propertyName).equals("true");
defaultWellRoleValues.put(propertyName, Boolean.toString(value));
}
@@ -846,7 +851,7 @@ public boolean executeStep(LuminexRunUploadForm form, BindException errors) thro
for (String singlePointControl : form.getParser().getSinglePointControls())
{
// add the name/value pairs for the singlePointControl well role definition section
- String propertyName = getSinglePointControlCheckboxName(singlePointControl);
+ String propertyName = getSinglePointControlCheckboxNameAndId(singlePointControl);
boolean value = getViewContext().getRequest().getParameter(propertyName).equals("true");
defaultWellRoleValues.put(propertyName, Boolean.toString(value));
}
diff --git a/luminex/src/org/labkey/luminex/query/AnalytePropStandardsDisplayColumn.java b/luminex/src/org/labkey/luminex/query/AnalytePropStandardsDisplayColumn.java
index a83240a874..6164fcdc95 100644
--- a/luminex/src/org/labkey/luminex/query/AnalytePropStandardsDisplayColumn.java
+++ b/luminex/src/org/labkey/luminex/query/AnalytePropStandardsDisplayColumn.java
@@ -121,7 +121,7 @@ else if (defVal == null || defVal.equalsIgnoreCase("true"))
@Override
public DOM._Attributes getInputAttributes()
{
- String titrationCellName = LuminexUploadWizardAction.getTitrationColumnCellName(_titration.getName());
+ String titrationCellName = LuminexUploadWizardAction.getTitrationColumnCellNameAndId(_titration.getName());
return at(style, "display:" + (_hideCell ? "none" : "table-cell"), name, titrationCellName);
}
@@ -129,7 +129,7 @@ public DOM._Attributes getInputAttributes()
@Override
public void renderDetailsCaptionCell(RenderContext ctx, HtmlWriter out, @Nullable String cls)
{
- String titrationCellName = LuminexUploadWizardAction.getTitrationColumnCellName(_titration.getName());
+ String titrationCellName = LuminexUploadWizardAction.getTitrationColumnCellNameAndId(_titration.getName());
TD(
cl(cls).at(style, "display:" + (_hideCell ? "none" : "table-cell") + ";").name(titrationCellName),
diff --git a/luminex/src/org/labkey/luminex/query/NegativeBeadDisplayColumnGroup.java b/luminex/src/org/labkey/luminex/query/NegativeBeadDisplayColumnGroup.java
index 55005e07b9..d6665d695d 100644
--- a/luminex/src/org/labkey/luminex/query/NegativeBeadDisplayColumnGroup.java
+++ b/luminex/src/org/labkey/luminex/query/NegativeBeadDisplayColumnGroup.java
@@ -22,6 +22,7 @@
import org.labkey.api.util.DOM;
import org.labkey.api.util.InputBuilder;
import org.labkey.api.view.HttpView;
+import org.labkey.api.view.template.PageConfig;
import org.labkey.api.writer.HtmlWriter;
import org.labkey.luminex.LuminexDataHandler;
@@ -44,8 +45,8 @@ public void writeSameCheckboxCell(RenderContext ctx, HtmlWriter out)
{
TD(
isCopyable() ? (DOM.Renderable) ret -> {
- // Use propName because ids can't have spaces
- String inputName = ColumnInfo.propNameFromName(_inputName);
+ // DOM ids and JS function names can't have spaces
+ String inputName = PageConfig.makeIdFromName(_inputName);
String id = inputName + "CheckBox";
InputBuilder.checkbox().name(id).id(id).appendTo(out);
StringBuilder onChange = new StringBuilder("b = this.checked;\n");
diff --git a/luminex/src/org/labkey/luminex/view/titrationWellRoles.jsp b/luminex/src/org/labkey/luminex/view/titrationWellRoles.jsp
index b86252bfe1..5fd1cac48d 100644
--- a/luminex/src/org/labkey/luminex/view/titrationWellRoles.jsp
+++ b/luminex/src/org/labkey/luminex/view/titrationWellRoles.jsp
@@ -84,11 +84,11 @@
<%
for (Map.Entry titrationEntry : nonUnknownTitrations.entrySet())
{
- String standardId = LuminexUploadWizardAction.getTitrationTypeCheckboxName(Titration.Type.standard, titrationEntry.getValue());
+ String standardId = LuminexUploadWizardAction.getTitrationTypeCheckboxNameAndId(Titration.Type.standard, titrationEntry.getValue());
addHandler(standardId, "click", "titrationRoleChecked(this);showHideAnalytePropertyColumn();");
- String qcId = LuminexUploadWizardAction.getTitrationTypeCheckboxName(Titration.Type.qccontrol, titrationEntry.getValue());
+ String qcId = LuminexUploadWizardAction.getTitrationTypeCheckboxNameAndId(Titration.Type.qccontrol, titrationEntry.getValue());
addHandler(qcId, "click", "titrationRoleChecked(this);");
- String otherId = LuminexUploadWizardAction.getTitrationTypeCheckboxName(Titration.Type.othercontrol, titrationEntry.getValue());
+ String otherId = LuminexUploadWizardAction.getTitrationTypeCheckboxNameAndId(Titration.Type.othercontrol, titrationEntry.getValue());
addHandler(otherId, "click", "titrationRoleChecked(this);");
%>
@@ -122,7 +122,7 @@
<%
for (Map.Entry titrationEntry : unknownTitrations.entrySet())
{
- String id = LuminexUploadWizardAction.getTitrationTypeCheckboxName(Titration.Type.unknown, titrationEntry.getValue());
+ String id = LuminexUploadWizardAction.getTitrationTypeCheckboxNameAndId(Titration.Type.unknown, titrationEntry.getValue());
addHandler(id, "click", "titrationRoleChecked(this);");
%>
@@ -150,7 +150,7 @@
<%
for (String trackedSinglePointControl : trackedSinglePointControls)
{
- String id = LuminexUploadWizardAction.getSinglePointControlCheckboxName(trackedSinglePointControl);
+ String id = LuminexUploadWizardAction.getSinglePointControlCheckboxNameAndId(trackedSinglePointControl);
addHandler(id, "click", "titrationRoleChecked(this);");
%>
@@ -187,8 +187,8 @@
for (Map.Entry titrationEntry : nonUnknownTitrations.entrySet())
{
%>
- var titrationRoleName = '<%= h(LuminexUploadWizardAction.getTitrationTypeCheckboxName(Titration.Type.standard, titrationEntry.getValue())) %>';
- var titrationCellName = '<%= h(LuminexUploadWizardAction.getTitrationColumnCellName(titrationEntry.getValue().getName())) %>';
+ var titrationRoleName = '<%= h(LuminexUploadWizardAction.getTitrationTypeCheckboxNameAndId(Titration.Type.standard, titrationEntry.getValue())) %>';
+ var titrationCellName = '<%= h(LuminexUploadWizardAction.getTitrationColumnCellNameAndId(titrationEntry.getValue().getName())) %>';
var isChecked = document.getElementsByName(titrationRoleName)[0].checked;
// set the hidden helper showcol field value
@@ -257,7 +257,7 @@
for (Titration.Type t : Titration.Type.values())
{
%>
- var propertyName = <%=q(LuminexUploadWizardAction.getTitrationTypeCheckboxName(t, titrationEntry.getValue())) %>;
+ var propertyName = <%=q(LuminexUploadWizardAction.getTitrationTypeCheckboxNameAndId(t, titrationEntry.getValue())) %>;
var hiddenEl = getHiddenFormElement(propertyName);
var inputEl = getInputFormElement(propertyName);
if (hiddenEl && inputEl)
@@ -270,7 +270,7 @@
for (String singlePointControl : trackedSinglePointControls)
{
%>
- var propertyName = <%=q(LuminexUploadWizardAction.getSinglePointControlCheckboxName(singlePointControl)) %>;
+ var propertyName = <%=q(LuminexUploadWizardAction.getSinglePointControlCheckboxNameAndId(singlePointControl)) %>;
var hiddenEl = getHiddenFormElement(propertyName);
var inputEl = getInputFormElement(propertyName);
if (hiddenEl && inputEl)