diff --git a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/DownloadSequenceDisplayColumnFactory.java b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/DownloadSequenceDisplayColumnFactory.java index 127f58fec..b5cd00bd6 100644 --- a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/DownloadSequenceDisplayColumnFactory.java +++ b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/DownloadSequenceDisplayColumnFactory.java @@ -10,9 +10,8 @@ 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.LinkedHashSet; import java.util.Map; @@ -38,12 +37,12 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) private boolean _handlerRegistered = false; @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { - Object val = ctx.get(FieldKey.fromString(getBoundColumn().getFieldKey().getParent(), "rowId")); - out.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 8f0d49a59..f35de5fa6 100644 --- a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/GenbankDisplayColumnFactory.java +++ b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/GenbankDisplayColumnFactory.java @@ -6,6 +6,8 @@ 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; import java.io.Writer; @@ -23,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 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) { - out.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 f23070d67..d19a0b445 100644 --- a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisCustomizer.java +++ b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisCustomizer.java @@ -26,14 +26,15 @@ 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; import org.labkey.api.view.template.ClientDependency; +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; @@ -42,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) { @@ -258,7 +261,7 @@ private FieldKey getBoundKey(String colName) } @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { Integer rowId = ctx.get(getBoundKey("rowId"), Integer.class); if (rowId != null) @@ -267,18 +270,29 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep 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); - out.write(delim + "" + token + ""); - delim = ",
"; + out.write(delim); + out.write(PageFlowUtil.link(token, url).clearClasses()); + delim = COMMA_NEWLINE; } } - out.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 28aabfd54..27aa00773 100644 --- a/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisUserSchema.java +++ b/SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisUserSchema.java @@ -31,13 +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; @@ -259,7 +259,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, HtmlWriter out) { Object o = getValue(ctx); if (o != null) @@ -267,9 +267,7 @@ 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(""); + out.write(PageFlowUtil.link("View File(s)", url)); } else { @@ -448,19 +446,20 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer 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(); - out.write(delim + "" + token + ""); - delim = "
"; + out.write(delim); + out.write(PageFlowUtil.link(token, url).clearClasses()); + delim = HtmlString.BR; } } }