From a2c270cb04db2c90a135e0aa38e802f22d74e9f2 Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Thu, 15 May 2025 11:58:27 -0700 Subject: [PATCH 1/3] Migrate to renderGridCellContents(RenderContext, HtmlWriter) --- .../ehr/table/DefaultEHRCustomizer.java | 28 ++++++------- .../ehr/table/SNOMEDCodesDisplayColumn.java | 39 +++++++------------ 2 files changed, 29 insertions(+), 38 deletions(-) diff --git a/ehr/src/org/labkey/ehr/table/DefaultEHRCustomizer.java b/ehr/src/org/labkey/ehr/table/DefaultEHRCustomizer.java index d34904a73..a7a9f96f2 100644 --- a/ehr/src/org/labkey/ehr/table/DefaultEHRCustomizer.java +++ b/ehr/src/org/labkey/ehr/table/DefaultEHRCustomizer.java @@ -64,7 +64,6 @@ import org.labkey.api.study.DatasetTable; import org.labkey.api.study.Study; import org.labkey.api.study.StudyService; -import org.labkey.api.util.PageFlowUtil; import org.labkey.api.util.logging.LogHelper; import org.labkey.api.view.HttpView; import org.labkey.api.view.NavTree; @@ -73,13 +72,10 @@ import org.labkey.ehr.EHRModule; import org.labkey.ehr.EHRSchema; -import java.io.IOException; -import java.io.Writer; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Collections; -import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashSet; @@ -87,11 +83,12 @@ import java.util.Map; import java.util.Set; -/** - * User: bimber - * Date: 12/7/12 - * Time: 2:29 PM - */ +import static org.labkey.api.util.DOM.A; +import static org.labkey.api.util.DOM.Attribute.style; +import static org.labkey.api.util.DOM.SPAN; +import static org.labkey.api.util.DOM.at; +import static org.labkey.api.util.DOM.cl; + public class DefaultEHRCustomizer extends AbstractTableCustomizer { public static final String ID_COL = "Id"; @@ -825,13 +822,18 @@ public DisplayColumn createRenderer(final ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { - Object objectid = ctx.get("objectid"); - Date date = (Date) ctx.get("date"); Object id = ctx.get(ID_COL); - oldWriter.write("[Show Hx]"); + SPAN( + at(style, "white-space:nowrap"), + A( + cl("labkey-text-link anm-history").data("id", id), + "[Show Hx]" + ) + ).appendTo(out); + if (!_clickHandlerAdded) { HttpView.currentPageConfig().addHandlerForQuerySelector("a.anm-history", "click", "EHR.window.ClinicalHistoryWindow.showClinicalHistory(null , this.attributes.getNamedItem('data-id').value, null, this);"); diff --git a/ehr/src/org/labkey/ehr/table/SNOMEDCodesDisplayColumn.java b/ehr/src/org/labkey/ehr/table/SNOMEDCodesDisplayColumn.java index 74ea79c3c..6d40dde7d 100644 --- a/ehr/src/org/labkey/ehr/table/SNOMEDCodesDisplayColumn.java +++ b/ehr/src/org/labkey/ehr/table/SNOMEDCodesDisplayColumn.java @@ -16,28 +16,24 @@ package org.labkey.ehr.table; import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.NotNull; +import org.labkey.api.collections.LabKeyCollectors; import org.labkey.api.data.ColumnInfo; import org.labkey.api.data.DataColumn; import org.labkey.api.data.RenderContext; import org.labkey.api.query.FieldKey; +import org.labkey.api.util.HtmlString; +import org.labkey.api.util.HtmlStringBuilder; import org.labkey.api.view.template.ClientDependency; import org.labkey.api.writer.HtmlWriter; -import java.io.IOException; -import java.io.Writer; import java.util.Collections; import java.util.Map; import java.util.Set; import java.util.TreeMap; -/** - * User: bimber - * Date: 10/23/13 - * Time: 3:49 PM - */ public class SNOMEDCodesDisplayColumn extends DataColumn { private static final Logger _log = LogManager.getLogger(SNOMEDCodesDisplayColumn.class); @@ -48,17 +44,17 @@ public SNOMEDCodesDisplayColumn(ColumnInfo col) } @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { Object o = getValue(ctx); if (o != null) { String val = o.toString(); String[] parts = val.split("\\n"); - Map ret = new TreeMap<>(); + Map ret = new TreeMap<>(); for (String part : parts) { - part = StringUtils.trimToNull(part); + part = StringUtils.trimToNull(part); // TODO: trimToEmpty()? null means an NPE on the next line! String[] tokens = part.split(": "); if (tokens.length == 2 && StringUtils.trimToNull(tokens[0]) != null) { @@ -66,30 +62,23 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit if (ret.containsKey(sort)) { Object objectid = ctx.get(FieldKey.fromString("objectid")); - _log.error("Duplicate sort for snomed: " + sort + (objectid == null ? "" : ". objectid: " + objectid)); - ret.put(sort, ret.get(sort) + "
" + part); + _log.error("Duplicate sort for snomed: {}{}", sort, objectid == null ? "" : ". objectid: " + objectid); + ret.get(sort).append(HtmlString.BR).append(part); } else { - ret.put(sort, part); + ret.put(sort, HtmlStringBuilder.of(part)); } - } else { - _log.error("Invalid SNOMED string: " + val); + _log.error("Invalid SNOMED string: {}", val); } } - String text; - String delim = ""; - for (Integer sort : ret.keySet()) - { - text = ret.get(sort).replaceAll("\\r?\\n", "
"); - oldWriter.write(delim); - delim = "
"; - oldWriter.write(text); - } + out.write(ret.values().stream() + .map(HtmlStringBuilder::getHtmlString) + .collect(LabKeyCollectors.joining(HtmlString.BR))); } } From 685bd5a93d11ad3d2f29e581b0ebe082bb6054cb Mon Sep 17 00:00:00 2001 From: Marty Pradere Date: Mon, 19 May 2025 21:50:49 -0700 Subject: [PATCH 2/3] Remove vet review display column --- .../api/ehr/table/VetReviewDisplayColumn.java | 69 ------------------- 1 file changed, 69 deletions(-) delete mode 100644 ehr/api-src/org/labkey/api/ehr/table/VetReviewDisplayColumn.java diff --git a/ehr/api-src/org/labkey/api/ehr/table/VetReviewDisplayColumn.java b/ehr/api-src/org/labkey/api/ehr/table/VetReviewDisplayColumn.java deleted file mode 100644 index 3b24f4df7..000000000 --- a/ehr/api-src/org/labkey/api/ehr/table/VetReviewDisplayColumn.java +++ /dev/null @@ -1,69 +0,0 @@ -package org.labkey.api.ehr.table; - -import org.apache.commons.lang3.StringUtils; -import org.jetbrains.annotations.NotNull; -import org.labkey.api.data.ColumnInfo; -import org.labkey.api.data.DataColumn; -import org.labkey.api.data.RenderContext; -import org.labkey.api.util.PageFlowUtil; -import org.labkey.api.view.HttpView; -import org.labkey.api.view.template.ClientDependency; -import org.labkey.api.writer.HtmlWriter; - -import java.io.IOException; -import java.io.Writer; -import java.util.Collections; -import java.util.Set; - -public class VetReviewDisplayColumn extends DataColumn -{ - private boolean _clickHandlerRegistered = false; - - public VetReviewDisplayColumn(ColumnInfo col) - { - super(col); - } - - @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException - { - Object o = getValue(ctx); - if (o != null) - { - String val = o.toString(); - String[] parts = val.split("<:>"); - String delim = ""; - for (String part : parts) - { - part = StringUtils.trimToNull(part); - String[] tokens = part.split("<>"); - - oldWriter.write(delim); - delim = "

"; - //String key = StringUtils.trimToNull(tokens[0]); - String text = StringUtils.trimToNull(tokens[1]); - if (text != null) - { - text = text.replaceAll("\\r?\\n", "
"); - text = text.replaceAll("\\*\\*", "\\*\\*"); - } - - oldWriter.write(""); - - if (!_clickHandlerRegistered) - { - HttpView.currentPageConfig().addHandlerForQuerySelector("a.vrdc-row", "click", "EHR.panel.ClinicalManagementPanel.replaceSoap({objectid: this.attributes.getNamedItem('data-objectid').value, scope: this, callback: function(){EHR.panel.ClinicalManagementPanel.updateVetColumn(this, arguments[0], arguments[1]);}});" ); - _clickHandlerRegistered = true; - } - oldWriter.write(text); - oldWriter.write(""); - } - } - } - - @Override - public @NotNull Set getClientDependencies() - { - return Collections.singleton(ClientDependency.fromPath("ehr/ehr_api.lib.xml")); - } -} From 32d1c7609d657774ff81bcaa632b9ca2342c5444 Mon Sep 17 00:00:00 2001 From: Marty Pradere Date: Mon, 19 May 2025 21:51:02 -0700 Subject: [PATCH 3/3] Update SNOMEDCodesDisplayColumn.java --- ehr/src/org/labkey/ehr/table/SNOMEDCodesDisplayColumn.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ehr/src/org/labkey/ehr/table/SNOMEDCodesDisplayColumn.java b/ehr/src/org/labkey/ehr/table/SNOMEDCodesDisplayColumn.java index 6d40dde7d..99bc92713 100644 --- a/ehr/src/org/labkey/ehr/table/SNOMEDCodesDisplayColumn.java +++ b/ehr/src/org/labkey/ehr/table/SNOMEDCodesDisplayColumn.java @@ -54,7 +54,7 @@ public void renderGridCellContents(RenderContext ctx, HtmlWriter out) Map ret = new TreeMap<>(); for (String part : parts) { - part = StringUtils.trimToNull(part); // TODO: trimToEmpty()? null means an NPE on the next line! + part = StringUtils.trimToEmpty(part); String[] tokens = part.split(": "); if (tokens.length == 2 && StringUtils.trimToNull(tokens[0]) != null) {