From cc656e69d51f271ebd3169fe16a4d6bfe8e60cb5 Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Thu, 13 Mar 2025 08:08:53 -0700 Subject: [PATCH 1/2] Migrate renderGridCellContents() and renderDetailsCellContents() --- .../DownloadSequenceDisplayColumnFactory.java | 5 +++-- .../query/GenbankDisplayColumnFactory.java | 5 +++-- .../query/SequenceAnalysisCustomizer.java | 7 ++++--- .../query/SequenceAnalysisUserSchema.java | 15 ++++++++------- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/DownloadSequenceDisplayColumnFactory.java b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/DownloadSequenceDisplayColumnFactory.java index 127f58fec..eefded13a 100644 --- a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/DownloadSequenceDisplayColumnFactory.java +++ b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/DownloadSequenceDisplayColumnFactory.java @@ -10,6 +10,7 @@ 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; @@ -38,10 +39,10 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) private boolean _handlerRegistered = false; @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { Object val = ctx.get(FieldKey.fromString(getBoundColumn().getFieldKey().getParent(), "rowId")); - out.write(PageFlowUtil.link("Download Sequence").attributes(Map.of( + oldWriter.write(PageFlowUtil.link("Download Sequence").attributes(Map.of( "data-rowid", val.toString() )).addClass("sdc-row").toString()); diff --git a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/GenbankDisplayColumnFactory.java b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/GenbankDisplayColumnFactory.java index 8f0d49a59..98ec0cf9d 100644 --- a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/GenbankDisplayColumnFactory.java +++ b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/GenbankDisplayColumnFactory.java @@ -6,6 +6,7 @@ import org.labkey.api.data.DisplayColumnFactory; import org.labkey.api.data.RenderContext; import org.labkey.api.util.PageFlowUtil; +import org.labkey.api.writer.HtmlWriter; import java.io.IOException; import java.io.Writer; @@ -26,7 +27,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) DataColumn ret = new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { Object val = ctx.get(getBoundColumn().getFieldKey()); if (val != null) @@ -35,7 +36,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep String delim = ""; for (String v : vals) { - out.write(delim + "" + PageFlowUtil.encode(v) + ""); + oldWriter.write(delim + "" + PageFlowUtil.encode(v) + ""); delim = "; "; } } diff --git a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisCustomizer.java b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisCustomizer.java index f23070d67..dd4fbeddf 100644 --- a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisCustomizer.java +++ b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisCustomizer.java @@ -30,6 +30,7 @@ import org.labkey.api.view.ActionURL; import org.labkey.api.view.HttpView; import org.labkey.api.view.template.ClientDependency; +import org.labkey.api.writer.HtmlWriter; import org.labkey.sequenceanalysis.SequenceAnalysisSchema; import java.io.IOException; @@ -258,7 +259,7 @@ private FieldKey getBoundKey(String colName) } @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { Integer rowId = ctx.get(getBoundKey("rowId"), Integer.class); if (rowId != null) @@ -273,12 +274,12 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep ActionURL url = QueryService.get().urlFor(ctx.getViewContext().getUser(), ctx.getContainer(), QueryAction.executeQuery, SequenceAnalysisSchema.SCHEMA_NAME, SequenceAnalysisSchema.TABLE_OUTPUTFILES); url.addParameter("query.fileSets~contains", token); - out.write(delim + "" + token + ""); + oldWriter.write(delim + "" + token + ""); delim = ",
"; } } - out.write(""); + oldWriter.write(""); if (!_handlerRegistered) { diff --git a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisUserSchema.java b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisUserSchema.java index 28aabfd54..40f865a44 100644 --- a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisUserSchema.java +++ b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisUserSchema.java @@ -33,6 +33,7 @@ import org.labkey.api.sequenceanalysis.pipeline.SequenceOutputHandler; import org.labkey.api.util.PageFlowUtil; import org.labkey.api.view.ActionURL; +import org.labkey.api.writer.HtmlWriter; import org.labkey.sequenceanalysis.SequenceAnalysisSchema; import org.labkey.sequenceanalysis.SequenceAnalysisServiceImpl; @@ -259,7 +260,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { Object o = getValue(ctx); if (o != null) @@ -267,13 +268,13 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep ActionURL url = QueryService.get().urlFor(getUser(), ctx.getContainer(), QueryAction.executeQuery, SequenceAnalysisSchema.SCHEMA_NAME, SequenceAnalysisSchema.TABLE_READ_DATA); url.addFilter("query", FieldKey.fromString("readset"), CompareType.EQUAL, o); - out.write(""); - out.write("View File(s)"); - out.write(""); + oldWriter.write(""); + oldWriter.write("View File(s)"); + oldWriter.write(""); } else { - out.write("No Files"); + oldWriter.write("No Files"); } } }; @@ -448,7 +449,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { String result = StringUtils.trimToNull(super.getFormattedHtml(ctx).toString()); String delim = ""; @@ -459,7 +460,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep { String url = DetailsURL.fromString(_baseUrl + PageFlowUtil.encode(token), ctx.getContainer()).getActionURL().toString(); - out.write(delim + "" + token + ""); + oldWriter.write(delim + "" + token + ""); delim = "
"; } } From 676ff32bcfef893a772ead84e1e10a810decebf8 Mon Sep 17 00:00:00 2001 From: bbimber Date: Sun, 16 Mar 2025 07:48:42 -0700 Subject: [PATCH 2/2] Finish migration (#342) * Finish renderGridCellContents migration --- .../DownloadSequenceDisplayColumnFactory.java | 12 ++++----- .../query/GenbankDisplayColumnFactory.java | 14 +++++----- .../query/SequenceAnalysisCustomizer.java | 27 ++++++++++++++----- .../query/SequenceAnalysisUserSchema.java | 22 +++++++-------- 4 files changed, 42 insertions(+), 33 deletions(-) diff --git a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/DownloadSequenceDisplayColumnFactory.java b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/DownloadSequenceDisplayColumnFactory.java index eefded13a..b5cd00bd6 100644 --- a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/DownloadSequenceDisplayColumnFactory.java +++ b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/DownloadSequenceDisplayColumnFactory.java @@ -12,8 +12,6 @@ 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.LinkedHashSet; import java.util.Map; @@ -39,12 +37,12 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) private boolean _handlerRegistered = false; @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { - Object val = ctx.get(FieldKey.fromString(getBoundColumn().getFieldKey().getParent(), "rowId")); - oldWriter.write(PageFlowUtil.link("Download Sequence").attributes(Map.of( - "data-rowid", val.toString() - )).addClass("sdc-row").toString()); + Integer val = ctx.get(FieldKey.fromString(getBoundColumn().getFieldKey().getParent(), "rowId"), Integer.class); + out.write(PageFlowUtil.link("Download Sequence"). + attributes(Map.of("data-rowid", val.toString())). + addClass("sdc-row")); if (!_handlerRegistered) { diff --git a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/GenbankDisplayColumnFactory.java b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/GenbankDisplayColumnFactory.java index 98ec0cf9d..f35de5fa6 100644 --- a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/GenbankDisplayColumnFactory.java +++ b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/GenbankDisplayColumnFactory.java @@ -6,6 +6,7 @@ import org.labkey.api.data.DisplayColumnFactory; import org.labkey.api.data.RenderContext; import org.labkey.api.util.PageFlowUtil; +import org.labkey.api.util.URLHelper; import org.labkey.api.writer.HtmlWriter; import java.io.IOException; @@ -24,26 +25,25 @@ public GenbankDisplayColumnFactory() @Override public DisplayColumn createRenderer(ColumnInfo colInfo) { - DataColumn ret = new DataColumn(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 val = ctx.get(getBoundColumn().getFieldKey()); + String val = ctx.get(getBoundColumn().getFieldKey(), String.class); if (val != null) { - String[] vals = String.valueOf(val).replaceAll("\\s+", "").split(";|,"); + String[] vals = val.replaceAll("\\s+", "").split("[;,]"); String delim = ""; for (String v : vals) { - oldWriter.write(delim + "" + PageFlowUtil.encode(v) + ""); + out.write(delim); + out.write(PageFlowUtil.link(v).href(getFormattedURL(v)).clearClasses()); delim = "; "; } } } }; - - return ret; } protected String getFormattedURL(String v) diff --git a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisCustomizer.java b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisCustomizer.java index dd4fbeddf..d19a0b445 100644 --- a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisCustomizer.java +++ b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisCustomizer.java @@ -26,6 +26,8 @@ import org.labkey.api.query.QueryForeignKey; import org.labkey.api.query.QueryService; import org.labkey.api.security.User; +import org.labkey.api.util.HtmlString; +import org.labkey.api.util.HtmlStringBuilder; import org.labkey.api.util.PageFlowUtil; import org.labkey.api.view.ActionURL; import org.labkey.api.view.HttpView; @@ -33,8 +35,6 @@ import org.labkey.api.writer.HtmlWriter; import org.labkey.sequenceanalysis.SequenceAnalysisSchema; -import java.io.IOException; -import java.io.Writer; import java.util.Collection; import java.util.Set; @@ -43,6 +43,8 @@ */ public class SequenceAnalysisCustomizer implements TableCustomizer { + private static final HtmlString COMMA_NEWLINE = HtmlStringBuilder.of(",").append(HtmlString.BR).getHtmlString(); + @Override public void customize(TableInfo tableInfo) { @@ -259,7 +261,7 @@ private FieldKey getBoundKey(String colName) } @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { Integer rowId = ctx.get(getBoundKey("rowId"), Integer.class); if (rowId != null) @@ -268,18 +270,29 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit if (value != null) { String[] tokens = value.split(","); - String delim = ""; + HtmlString delim = HtmlString.EMPTY_STRING; for (String token : tokens) { ActionURL url = QueryService.get().urlFor(ctx.getViewContext().getUser(), ctx.getContainer(), QueryAction.executeQuery, SequenceAnalysisSchema.SCHEMA_NAME, SequenceAnalysisSchema.TABLE_OUTPUTFILES); url.addParameter("query.fileSets~contains", token); - oldWriter.write(delim + "" + token + ""); - delim = ",
"; + out.write(delim); + out.write(PageFlowUtil.link(token, url).clearClasses()); + delim = COMMA_NEWLINE; } } - oldWriter.write(""); + out.write(PageFlowUtil.link(""). + clearClasses(). + addClass("fa fa-pencil"). + addClass("lk-dr-action-icon"). + addClass("sfs-row"). + attributes(PageFlowUtil.map( + "data-tt", "tooltip", + "data-rowid", rowId.toString(), + "data-original-title", "add/edit" + )) + ); if (!_handlerRegistered) { diff --git a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisUserSchema.java b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisUserSchema.java index 40f865a44..27aa00773 100644 --- a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisUserSchema.java +++ b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisUserSchema.java @@ -31,14 +31,13 @@ import org.labkey.api.query.SimpleUserSchema; import org.labkey.api.security.User; import org.labkey.api.sequenceanalysis.pipeline.SequenceOutputHandler; +import org.labkey.api.util.HtmlString; import org.labkey.api.util.PageFlowUtil; import org.labkey.api.view.ActionURL; import org.labkey.api.writer.HtmlWriter; import org.labkey.sequenceanalysis.SequenceAnalysisSchema; import org.labkey.sequenceanalysis.SequenceAnalysisServiceImpl; -import java.io.IOException; -import java.io.Writer; import java.util.Arrays; import java.util.LinkedHashSet; @@ -260,7 +259,7 @@ public DisplayColumn createRenderer(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 o = getValue(ctx); if (o != null) @@ -268,13 +267,11 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit ActionURL url = QueryService.get().urlFor(getUser(), ctx.getContainer(), QueryAction.executeQuery, SequenceAnalysisSchema.SCHEMA_NAME, SequenceAnalysisSchema.TABLE_READ_DATA); url.addFilter("query", FieldKey.fromString("readset"), CompareType.EQUAL, o); - oldWriter.write(""); - oldWriter.write("View File(s)"); - oldWriter.write(""); + out.write(PageFlowUtil.link("View File(s)", url)); } else { - oldWriter.write("No Files"); + out.write("No Files"); } } }; @@ -449,19 +446,20 @@ public DisplayColumn createRenderer(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) { String result = StringUtils.trimToNull(super.getFormattedHtml(ctx).toString()); - String delim = ""; + HtmlString delim = HtmlString.EMPTY_STRING; if (result != null) { String[] tokens = result.split(","); for (String token : tokens) { - String url = DetailsURL.fromString(_baseUrl + PageFlowUtil.encode(token), ctx.getContainer()).getActionURL().toString(); + ActionURL url = DetailsURL.fromString(_baseUrl + PageFlowUtil.encode(token), ctx.getContainer()).getActionURL(); - oldWriter.write(delim + "" + token + ""); - delim = "
"; + out.write(delim); + out.write(PageFlowUtil.link(token, url).clearClasses()); + delim = HtmlString.BR; } } }