From 51fffaebcb1463c29c11dec910a63d9de303a921 Mon Sep 17 00:00:00 2001 From: labkey-jeckels Date: Sun, 7 Nov 2021 15:48:04 -0800 Subject: [PATCH 1/4] TNPRC Issue 290: Method to edit legacy data via query module update row --- ehr/src/org/labkey/ehr/EHRController.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/ehr/src/org/labkey/ehr/EHRController.java b/ehr/src/org/labkey/ehr/EHRController.java index e0d749d67..67bcac893 100644 --- a/ehr/src/org/labkey/ehr/EHRController.java +++ b/ehr/src/org/labkey/ehr/EHRController.java @@ -312,6 +312,7 @@ public ApiResponse execute(DiscardFormForm form, BindException errors) public static class EHRQueryForm extends QueryForm { private boolean _showImport = false; + private boolean _queryUpdateURL = false; public boolean isShowImport() { @@ -322,6 +323,16 @@ public void setShowImport(boolean showImport) { _showImport = showImport; } + + public boolean isQueryUpdateURL() + { + return _queryUpdateURL; + } + + public void setQueryUpdateURL(boolean queryUpdateURL) + { + _queryUpdateURL = queryUpdateURL; + } } @RequiresPermission(UpdatePermission.class) @@ -417,7 +428,12 @@ else if (isReactForm(form.getSchemaName(), form.getQueryName())) } DetailsURL updateUrl; - if (EHRServiceImpl.get().isUseFormEditUI(getContainer()) && null != ti.getColumn("taskid")) + if (form.isQueryUpdateURL()) + { + // Send to the query controller's basic row-level update form + updateUrl = DetailsURL.fromString("query-updateQueryRow.view?schemaName=" + ti.getUserSchema().getName() + "&queryName=" + ti.getName() + "&lsid=${lsid}"); + } + else if (EHRServiceImpl.get().isUseFormEditUI(getContainer()) && null != ti.getColumn("taskid")) { updateUrl = DetailsURL.fromString("/ehr/dataEntryForm.view?taskid=${taskid}&formType=${taskid/formType}"); } From 5ef8c96f60970fe6121f5a99c46302e56854b04a Mon Sep 17 00:00:00 2001 From: labkey-jeckels Date: Sun, 7 Nov 2021 17:44:47 -0800 Subject: [PATCH 2/4] Don't assume table use LSID as the PK --- ehr/src/org/labkey/ehr/EHRController.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/ehr/src/org/labkey/ehr/EHRController.java b/ehr/src/org/labkey/ehr/EHRController.java index 67bcac893..b89ba8407 100644 --- a/ehr/src/org/labkey/ehr/EHRController.java +++ b/ehr/src/org/labkey/ehr/EHRController.java @@ -431,7 +431,19 @@ else if (isReactForm(form.getSchemaName(), form.getQueryName())) if (form.isQueryUpdateURL()) { // Send to the query controller's basic row-level update form - updateUrl = DetailsURL.fromString("query-updateQueryRow.view?schemaName=" + ti.getUserSchema().getName() + "&queryName=" + ti.getName() + "&lsid=${lsid}"); + StringBuilder sb = new StringBuilder("query-updateQueryRow.view?schemaName="); + sb.append(ti.getUserSchema().getName()); + sb.append("&queryName="); + sb.append(ti.getName()); + for (String pk : pks) + { + sb.append("&"); + sb.append(pk); + sb.append("=${"); + sb.append(pk); + sb.append("}"); + } + updateUrl = DetailsURL.fromString(sb.toString()); } else if (EHRServiceImpl.get().isUseFormEditUI(getContainer()) && null != ti.getColumn("taskid")) { From f9127cfb803ffaa0280cf199c467a4c734f56fda Mon Sep 17 00:00:00 2001 From: labkey-jeckels Date: Sun, 7 Nov 2021 17:47:32 -0800 Subject: [PATCH 3/4] Be tolerant of additional menu items --- .../src/org/labkey/test/tests/ehr/AbstractGenericEHRTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ehr/test/src/org/labkey/test/tests/ehr/AbstractGenericEHRTest.java b/ehr/test/src/org/labkey/test/tests/ehr/AbstractGenericEHRTest.java index 0fe4caa81..e9dfaf8de 100644 --- a/ehr/test/src/org/labkey/test/tests/ehr/AbstractGenericEHRTest.java +++ b/ehr/test/src/org/labkey/test/tests/ehr/AbstractGenericEHRTest.java @@ -221,7 +221,7 @@ public void testCustomButtons() recallLocation(); List submenuItems = dr.getHeaderMenuOptions("More Actions"); List expectedSubmenu = Arrays.asList("Jump To History", "Return Distinct Values","Show Record History","Compare Weights","Edit Records"); - Assert.assertEquals("More actions menu did not contain expected options",expectedSubmenu, submenuItems); + Assert.assertTrue("More actions menu did not contain expected options. Expected: " + expectedSubmenu + ", but found: " + submenuItems, submenuItems.containsAll(expectedSubmenu)); } private void testUserAgainstAllStates(@LoggedParam EHRUser user) From 57bdb24a35384d3d662cdb07830038907709737b Mon Sep 17 00:00:00 2001 From: labkey-jeckels Date: Mon, 8 Nov 2021 08:52:17 -0800 Subject: [PATCH 4/4] Show error to user instead of sending back blank page --- ehr/src/org/labkey/ehr/EHRController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ehr/src/org/labkey/ehr/EHRController.java b/ehr/src/org/labkey/ehr/EHRController.java index b89ba8407..291471311 100644 --- a/ehr/src/org/labkey/ehr/EHRController.java +++ b/ehr/src/org/labkey/ehr/EHRController.java @@ -1473,8 +1473,8 @@ public ModelAndView getView(EnterDataForm form, BindException errors) { if (form.getFormType() == null) { - errors.reject(ERROR_MSG, "Must provide either the form type"); - return null; + errors.reject(ERROR_MSG, "Must provide a form type"); + return new SimpleErrorView(errors); } _def = DataEntryManager.get().getFormByName(form.getFormType(), getContainer(), getUser());