Skip to content

Commit cc71f7f

Browse files
authored
DisplayColumn refactor (#341)
1 parent bd79679 commit cc71f7f

File tree

4 files changed

+45
-32
lines changed

4 files changed

+45
-32
lines changed

SequenceAnalysis/src/org/labkey/sequenceanalysis/query/DownloadSequenceDisplayColumnFactory.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,8 @@
1010
import org.labkey.api.util.PageFlowUtil;
1111
import org.labkey.api.view.HttpView;
1212
import org.labkey.api.view.template.ClientDependency;
13+
import org.labkey.api.writer.HtmlWriter;
1314

14-
import java.io.IOException;
15-
import java.io.Writer;
1615
import java.util.Collections;
1716
import java.util.LinkedHashSet;
1817
import java.util.Map;
@@ -38,12 +37,12 @@ public DisplayColumn createRenderer(ColumnInfo colInfo)
3837
private boolean _handlerRegistered = false;
3938

4039
@Override
41-
public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException
40+
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
4241
{
43-
Object val = ctx.get(FieldKey.fromString(getBoundColumn().getFieldKey().getParent(), "rowId"));
44-
out.write(PageFlowUtil.link("Download Sequence").attributes(Map.of(
45-
"data-rowid", val.toString()
46-
)).addClass("sdc-row").toString());
42+
Integer val = ctx.get(FieldKey.fromString(getBoundColumn().getFieldKey().getParent(), "rowId"), Integer.class);
43+
out.write(PageFlowUtil.link("Download Sequence").
44+
attributes(Map.of("data-rowid", val.toString())).
45+
addClass("sdc-row"));
4746

4847
if (!_handlerRegistered)
4948
{

SequenceAnalysis/src/org/labkey/sequenceanalysis/query/GenbankDisplayColumnFactory.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import org.labkey.api.data.DisplayColumnFactory;
77
import org.labkey.api.data.RenderContext;
88
import org.labkey.api.util.PageFlowUtil;
9+
import org.labkey.api.util.URLHelper;
10+
import org.labkey.api.writer.HtmlWriter;
911

1012
import java.io.IOException;
1113
import java.io.Writer;
@@ -23,26 +25,25 @@ public GenbankDisplayColumnFactory()
2325
@Override
2426
public DisplayColumn createRenderer(ColumnInfo colInfo)
2527
{
26-
DataColumn ret = new DataColumn(colInfo)
28+
return new DataColumn(colInfo)
2729
{
2830
@Override
29-
public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException
31+
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
3032
{
31-
Object val = ctx.get(getBoundColumn().getFieldKey());
33+
String val = ctx.get(getBoundColumn().getFieldKey(), String.class);
3234
if (val != null)
3335
{
34-
String[] vals = String.valueOf(val).replaceAll("\\s+", "").split(";|,");
36+
String[] vals = val.replaceAll("\\s+", "").split("[;,]");
3537
String delim = "";
3638
for (String v : vals)
3739
{
38-
out.write(delim + "<a href=" + getFormattedURL(v) + ">" + PageFlowUtil.encode(v) + "</a>");
40+
out.write(delim);
41+
out.write(PageFlowUtil.link(v).href(getFormattedURL(v)).clearClasses());
3942
delim = "; ";
4043
}
4144
}
4245
}
4346
};
44-
45-
return ret;
4647
}
4748

4849
protected String getFormattedURL(String v)

SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisCustomizer.java

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,15 @@
2626
import org.labkey.api.query.QueryForeignKey;
2727
import org.labkey.api.query.QueryService;
2828
import org.labkey.api.security.User;
29+
import org.labkey.api.util.HtmlString;
30+
import org.labkey.api.util.HtmlStringBuilder;
2931
import org.labkey.api.util.PageFlowUtil;
3032
import org.labkey.api.view.ActionURL;
3133
import org.labkey.api.view.HttpView;
3234
import org.labkey.api.view.template.ClientDependency;
35+
import org.labkey.api.writer.HtmlWriter;
3336
import org.labkey.sequenceanalysis.SequenceAnalysisSchema;
3437

35-
import java.io.IOException;
36-
import java.io.Writer;
3738
import java.util.Collection;
3839
import java.util.Set;
3940

@@ -42,6 +43,8 @@
4243
*/
4344
public class SequenceAnalysisCustomizer implements TableCustomizer
4445
{
46+
private static final HtmlString COMMA_NEWLINE = HtmlStringBuilder.of(",").append(HtmlString.BR).getHtmlString();
47+
4548
@Override
4649
public void customize(TableInfo tableInfo)
4750
{
@@ -258,7 +261,7 @@ private FieldKey getBoundKey(String colName)
258261
}
259262

260263
@Override
261-
public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException
264+
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
262265
{
263266
Integer rowId = ctx.get(getBoundKey("rowId"), Integer.class);
264267
if (rowId != null)
@@ -267,18 +270,29 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep
267270
if (value != null)
268271
{
269272
String[] tokens = value.split(",");
270-
String delim = "";
273+
HtmlString delim = HtmlString.EMPTY_STRING;
271274
for (String token : tokens)
272275
{
273276
ActionURL url = QueryService.get().urlFor(ctx.getViewContext().getUser(), ctx.getContainer(), QueryAction.executeQuery, SequenceAnalysisSchema.SCHEMA_NAME, SequenceAnalysisSchema.TABLE_OUTPUTFILES);
274277
url.addParameter("query.fileSets~contains", token);
275278

276-
out.write(delim + "<a href=\"" + url.getURIString() + "\"" + ">" + token + "</a>");
277-
delim = ",<br>";
279+
out.write(delim);
280+
out.write(PageFlowUtil.link(token, url).clearClasses());
281+
delim = COMMA_NEWLINE;
278282
}
279283
}
280284

281-
out.write("<a class=\"fa fa-pencil lk-dr-action-icon sfs-row\" data-tt=\"tooltip\" data-rowid=\"" + rowId +"\" data-original-title=\"add/edit\"></a>");
285+
out.write(PageFlowUtil.link("").
286+
clearClasses().
287+
addClass("fa fa-pencil").
288+
addClass("lk-dr-action-icon").
289+
addClass("sfs-row").
290+
attributes(PageFlowUtil.map(
291+
"data-tt", "tooltip",
292+
"data-rowid", rowId.toString(),
293+
"data-original-title", "add/edit"
294+
))
295+
);
282296

283297
if (!_handlerRegistered)
284298
{

SequenceAnalysis/src/org/labkey/sequenceanalysis/query/SequenceAnalysisUserSchema.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@
3131
import org.labkey.api.query.SimpleUserSchema;
3232
import org.labkey.api.security.User;
3333
import org.labkey.api.sequenceanalysis.pipeline.SequenceOutputHandler;
34+
import org.labkey.api.util.HtmlString;
3435
import org.labkey.api.util.PageFlowUtil;
3536
import org.labkey.api.view.ActionURL;
37+
import org.labkey.api.writer.HtmlWriter;
3638
import org.labkey.sequenceanalysis.SequenceAnalysisSchema;
3739
import org.labkey.sequenceanalysis.SequenceAnalysisServiceImpl;
3840

39-
import java.io.IOException;
40-
import java.io.Writer;
4141
import java.util.Arrays;
4242
import java.util.LinkedHashSet;
4343

@@ -259,17 +259,15 @@ public DisplayColumn createRenderer(ColumnInfo colInfo)
259259
return new DataColumn(colInfo)
260260
{
261261
@Override
262-
public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException
262+
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
263263
{
264264
Object o = getValue(ctx);
265265
if (o != null)
266266
{
267267
ActionURL url = QueryService.get().urlFor(getUser(), ctx.getContainer(), QueryAction.executeQuery, SequenceAnalysisSchema.SCHEMA_NAME, SequenceAnalysisSchema.TABLE_READ_DATA);
268268
url.addFilter("query", FieldKey.fromString("readset"), CompareType.EQUAL, o);
269269

270-
out.write("<a class=\"labkey-text-link\" href=\"" + url + "\">");
271-
out.write("View File(s)");
272-
out.write("</a>");
270+
out.write(PageFlowUtil.link("View File(s)", url));
273271
}
274272
else
275273
{
@@ -448,19 +446,20 @@ public DisplayColumn createRenderer(ColumnInfo colInfo)
448446
return new DataColumn(colInfo)
449447
{
450448
@Override
451-
public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException
449+
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
452450
{
453451
String result = StringUtils.trimToNull(super.getFormattedHtml(ctx).toString());
454-
String delim = "";
452+
HtmlString delim = HtmlString.EMPTY_STRING;
455453
if (result != null)
456454
{
457455
String[] tokens = result.split(",");
458456
for (String token : tokens)
459457
{
460-
String url = DetailsURL.fromString(_baseUrl + PageFlowUtil.encode(token), ctx.getContainer()).getActionURL().toString();
458+
ActionURL url = DetailsURL.fromString(_baseUrl + PageFlowUtil.encode(token), ctx.getContainer()).getActionURL();
461459

462-
out.write(delim + "<a href=\"" + url + "\">" + token + "</a>");
463-
delim = "<br>";
460+
out.write(delim);
461+
out.write(PageFlowUtil.link(token, url).clearClasses());
462+
delim = HtmlString.BR;
464463
}
465464
}
466465
}

0 commit comments

Comments
 (0)