Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions lincs/src/org/labkey/lincs/LincsController.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
import org.labkey.api.view.ViewBackgroundInfo;
import org.labkey.api.view.ViewContext;
import org.labkey.api.view.WebPartView;
import org.labkey.api.writer.HtmlWriter;
import org.labkey.lincs.cromwell.CromwellConfig;
import org.labkey.lincs.cromwell.CromwellException;
import org.labkey.lincs.psp.LincsPspException;
Expand All @@ -95,7 +96,6 @@
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
Expand All @@ -114,6 +114,7 @@

import static org.labkey.api.util.DOM.BR;
import static org.labkey.api.util.DOM.DIV;
import static org.labkey.api.util.DOM.PRE;

public class LincsController extends SpringActionController
{
Expand Down Expand Up @@ -161,11 +162,11 @@ public boolean accept(File dir, String name)
// Copy both to the GCT folder
for(File file: reportDirFiles)
{
if(file.getName().toLowerCase().equals("lincs.gct"))
if(file.getName().equalsIgnoreCase("lincs.gct"))
{
Files.copy(file.toPath(), gct, StandardCopyOption.REPLACE_EXISTING);
}
else if(file.getName().toLowerCase().equals("console.txt"))
else if(file.getName().equalsIgnoreCase("console.txt"))
{
Files.copy(file.toPath(), gctDir.resolve(outputFileBaseName + ".console.txt" ), StandardCopyOption.REPLACE_EXISTING);
}
Expand Down Expand Up @@ -1280,13 +1281,15 @@ private static DataRegion getPspJobDetailsDataRegion()
SimpleDisplayColumn jsonCol = new SimpleDisplayColumn(){

@Override
public void renderDetailsCellContents(RenderContext ctx, Writer out) throws IOException
public void renderDetailsCellContents(RenderContext ctx, HtmlWriter out)
{
String json = ctx.get(FieldKey.fromParts("Json"), String.class);
if(!StringUtils.isBlank(json))
if (!StringUtils.isBlank(json))
{
JSONObject jsonObj = new JSONObject(json);
out.write("<pre>" + PageFlowUtil.filter(jsonObj.toString(2)) + "</pre>");
PRE(
jsonObj.toString(2)
).appendTo(out);
}
else
{
Expand Down Expand Up @@ -1379,7 +1382,7 @@ public ModelAndView getView(LincsPspJobForm form, BindException errors)
DOM.P("Status for job: " + pspJob.getId() +", PSP job Id: " + pspJob.getPspJobId() + ", Run Id: " + pspJob.getRunId()),
"JSON Output:",
DOM.BR(),
DOM.P(DOM.PRE(jsonStatus)))));
DOM.P(PRE(jsonStatus)))));
view.setTitle("PSP job status");
view.setFrame(WebPartView.FrameType.PORTAL);
return view;
Expand Down
68 changes: 40 additions & 28 deletions lincs/src/org/labkey/lincs/LincsDataTable.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.labkey.api.analytics.AnalyticsService;
import org.labkey.api.data.ColumnInfo;
import org.labkey.api.data.DataColumn;
Expand All @@ -33,10 +34,9 @@
import org.labkey.api.util.Link;
import org.labkey.api.util.PageFlowUtil;
import org.labkey.api.view.ActionURL;
import org.labkey.api.writer.HtmlWriter;
import org.labkey.lincs.psp.LincsPspJob;

import java.io.IOException;
import java.io.Writer;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
Expand All @@ -45,6 +45,10 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;

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;

/**
* Created by vsharma on 8/21/2017.
*/
Expand Down Expand Up @@ -72,17 +76,21 @@ public LincsDataTable(@NotNull TableInfo table, @NotNull UserSchema userSchema)
addColumn(level1Col);
level1Col.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo){
@Override
public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
{
ActionURL downloadUrl = new ActionURL("targetedms", "DownloadDocument", getContainer());
Integer runId = ctx.get(FieldKey.fromParts("Id"), Integer.class);
downloadUrl.addParameter("id", runId);
out.write("<nobr>");
out.write(new Link.LinkBuilder("Download").iconCls("fa fa-download").href(downloadUrl).toString());
ActionURL docDetailsUrl = new ActionURL("targetedms", "ShowPrecursorList", getContainer());
docDetailsUrl.addParameter("id", runId);
out.write("&nbsp;" + new Link.LinkBuilder("Skyline").href(docDetailsUrl).clearClasses().toString());
out.write("</nobr>");

// <span style="white-space: nowrap;"> is recommended instead of deprecated <nobr></nobr>
SPAN(
at(style, "white-space: nowrap;"),
new Link.LinkBuilder("Download").iconCls("fa fa-download").href(downloadUrl),
HtmlString.NBSP,
new Link.LinkBuilder("Skyline").href(docDetailsUrl).clearClasses()
).appendTo(out);
}

@Override
Expand Down Expand Up @@ -133,7 +141,7 @@ public boolean isFilterable()
pspJobCol.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo)
{
@Override
public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
{
Integer runId = ctx.get(FieldKey.fromParts("Id"), Integer.class);
if(runId == null)
Expand All @@ -150,7 +158,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep
ActionURL url = new ActionURL(LincsController.SubmitPspJobAction.class, getContainer());
url.addParameter("runId", runId);

out.write(new Link.LinkBuilder(" [Submit Job]").href(url).usePost().toString());
out.write(new Link.LinkBuilder(" [Submit Job]").href(url).usePost());
}
return;
}
Expand All @@ -168,7 +176,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep
}
ActionURL url = new ActionURL(LincsController.LincsPspJobDetailsAction.class, getContainer());
url.addParameter("runId", pspJob.getRunId());
out.write(PageFlowUtil.link(text).href(url).toString());
out.write(PageFlowUtil.link(text).href(url));
}

@Override
Expand Down Expand Up @@ -290,7 +298,7 @@ private String getAnalyticsScript(String eventAction, String fileName, boolean a
return null;
}

private String externalHeatmapViewerLink(String fileName, LincsModule.LincsAssay assayType)
private HtmlString externalHeatmapViewerLink(String fileName, LincsModule.LincsAssay assayType)
{
String gctFileUrl = davUrl + "GCT/" + PageFlowUtil.encodePath(fileName);
String morpheusUrl = getMorpheusUrl(gctFileUrl, assayType);
Expand All @@ -299,7 +307,9 @@ private String externalHeatmapViewerLink(String fileName, LincsModule.LincsAssay
String onclickEvt = StringUtils.isBlank(analyticsScript) ? "" : "onclick=\"" + analyticsScript + "\"";

String imgUrl = AppProps.getInstance().getContextPath() + "/lincs/GENE-E_icon.png";
return "[&nbsp;<a target=\"_blank\" " + onclickEvt + " href=\"" + morpheusUrl + "\">View in Morpheus</a> <img src=" + imgUrl + " width=\"13\", height=\"13\"/>&nbsp;]";

// TODO: Should use a LinkBuilder, etc.
return HtmlString.unsafe("[&nbsp;<a target=\"_blank\" " + onclickEvt + " href=\"" + morpheusUrl + "\">View in Morpheus</a> <img src=" + imgUrl + " width=\"13\", height=\"13\"/>&nbsp;]");
}

private String getMorpheusUrl(String gctFileUrl, LincsModule.LincsAssay assayType)
Expand All @@ -323,7 +333,7 @@ private String getMorpheusUrl(String gctFileUrl, LincsModule.LincsAssay assayTyp
}

@Override
public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
{
if(getAssayType() == null)
{
Expand All @@ -333,7 +343,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep
String fileName = ctx.get(getDisplayColumn().getFieldKey(), String.class);
if(fileName == null)
{
out.write("&nbsp");
out.write(HtmlString.NBSP);
return;
}

Expand All @@ -355,23 +365,25 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep

String actionName = (getLevel() == LincsModule.LincsLevel.Config) ? "DownloadConfig" : "DownloadGCT";
String analyticsScript = getAnalyticsScript(actionName, downloadFileName, true);
String morpheusUrl = externalHeatmapViewerLink(downloadFileName, getAssayType(), getLevel());
HtmlString morpheusUrl = externalHeatmapViewerLink(downloadFileName, getAssayType(), getLevel());
String downloadText = (getLevel() == LincsModule.LincsLevel.Config) ? "CFG" : "GCT";
renderGridCell(out, analyticsScript, getGctDavUrlUnencoded(downloadFileName), getGctDavUrl(downloadFileName), downloadText, morpheusUrl);
renderGridCell(out, analyticsScript, getGctDavUrlUnencoded(downloadFileName), downloadText, morpheusUrl);
}

private void renderGridCell(Writer out, String analyticsScript, String downloadUrl, String downloadUrlEncoded, String downloadText, String morpheusUrl) throws IOException
private void renderGridCell(HtmlWriter out, String analyticsScript, String downloadUrl, String downloadText, HtmlString morpheusUrl)
{
out.write("<nobr>&nbsp;");
out.write(new Link.LinkBuilder("Download").iconCls("fa fa-download").href(downloadUrl).onClick(analyticsScript).toString());
out.write("&nbsp;");
out.write(new Link.LinkBuilder(downloadText).href(downloadUrl).onClick(analyticsScript).clearClasses().toString());
out.write("&nbsp;");
if(morpheusUrl != null)
{
out.write("&nbsp;" + morpheusUrl + "&nbsp;");
}
out.write("</nobr>");
// <span style="white-space: nowrap;"> is recommended instead of deprecated <nobr></nobr>
SPAN(
at(style, "white-space: nowrap;"),
HtmlString.NBSP,
new Link.LinkBuilder("Download").iconCls("fa fa-download").href(downloadUrl).onClick(analyticsScript),
HtmlString.NBSP,
new Link.LinkBuilder(downloadText).href(downloadUrl).onClick(analyticsScript).clearClasses(),
HtmlString.NBSP,
morpheusUrl != null ? HtmlString.NBSP : null,
morpheusUrl,
morpheusUrl != null ? HtmlString.NBSP : null
).appendTo(out);
}

private boolean fileAvailable(Integer runId, String downloadFileName)
Expand All @@ -396,7 +408,7 @@ private boolean fileAvailable(Integer runId, String downloadFileName)
}
}

String externalHeatmapViewerLink(String fileName, LincsModule.LincsAssay assayType, LincsModule.LincsLevel level)
@Nullable HtmlString externalHeatmapViewerLink(String fileName, LincsModule.LincsAssay assayType, LincsModule.LincsLevel level)
{
if(level == LincsModule.LincsLevel.Config)
{
Expand Down
27 changes: 11 additions & 16 deletions lincs/src/org/labkey/lincs/LincsSchema.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,13 @@
import org.jetbrains.annotations.Nullable;
import org.json.JSONObject;
import org.labkey.api.collections.CaseInsensitiveHashSet;
import org.labkey.api.data.ColumnInfo;
import org.labkey.api.data.Container;
import org.labkey.api.data.ContainerFilter;
import org.labkey.api.data.ContainerForeignKey;
import org.labkey.api.data.DataColumn;
import org.labkey.api.data.DbSchema;
import org.labkey.api.data.DbSchemaType;
import org.labkey.api.data.DisplayColumn;
import org.labkey.api.data.DisplayColumnFactory;
import org.labkey.api.data.RenderContext;
import org.labkey.api.data.TableInfo;
import org.labkey.api.data.dialect.SqlDialect;
Expand All @@ -48,13 +46,14 @@
import org.labkey.api.security.UserPrincipal;
import org.labkey.api.security.permissions.Permission;
import org.labkey.api.view.ViewContext;
import org.labkey.api.writer.HtmlWriter;
import org.springframework.validation.BindException;

import java.io.IOException;
import java.io.Writer;
import java.util.List;
import java.util.Set;

import static org.labkey.api.util.DOM.PRE;

public class LincsSchema extends UserSchema
{
public static final String SCHEMA_NAME = "lincs";
Expand Down Expand Up @@ -102,20 +101,16 @@ public TableInfo createTable(String name, ContainerFilter cf)
ContainerForeignKey.initColumn(containerCol, this);

var jsonCol = result.getMutableColumn(FieldKey.fromParts("Json"));
jsonCol.setDisplayColumnFactory(new DisplayColumnFactory()
{
jsonCol.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo){
@Override
public DisplayColumn createRenderer(ColumnInfo colInfo)
public void renderDetailsCellContents(RenderContext ctx, HtmlWriter out)
{
return new DataColumn(colInfo){
@Override
public void renderDetailsCellContents(RenderContext ctx, Writer out) throws IOException
{
String json = ctx.get(colInfo.getFieldKey(), String.class);
JSONObject jsonObj = new JSONObject(json);
out.write("<pre>" + jsonObj.toString(2) + "</pre>");
}
};
String json = ctx.get(colInfo.getFieldKey(), String.class);
JSONObject jsonObj = new JSONObject(json);

PRE(
jsonObj.toString(2)
).appendTo(out);
}
});
return result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.labkey.api.util.PageFlowUtil;
import org.labkey.api.view.ActionURL;
import org.labkey.api.view.ShortURLRecord;
import org.labkey.api.writer.HtmlWriter;
import org.labkey.panoramapublic.PanoramaPublicController;
import org.labkey.panoramapublic.PanoramaPublicManager;
import org.labkey.panoramapublic.PanoramaPublicSchema;
Expand All @@ -21,8 +22,6 @@
import org.labkey.panoramapublic.view.publish.CatalogEntryWebPart;
import org.labkey.panoramapublic.view.publish.ShortUrlDisplayColumnFactory;

import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
Expand Down Expand Up @@ -63,7 +62,7 @@ public Object getDisplayValue(RenderContext ctx)
}

@Override
public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
{
Object viewCatalogEntryUrl = getValue(ctx);
if (viewCatalogEntryUrl instanceof ActionURL url)
Expand Down Expand Up @@ -108,18 +107,19 @@ public Object getDisplayValue(RenderContext ctx)
}

@Override
public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
{
String fileName = (String) getValue(ctx);
ShortURLRecord shortUrl = ctx.get(_shortUrlFieldKey, ShortURLRecord.class);
ExperimentAnnotations expAnnotations = shortUrl != null ? ExperimentAnnotationsManager.getExperimentForShortUrl(shortUrl) : null;
if (fileName != null && expAnnotations != null)
{
ActionURL downloadLink = PanoramaPublicController.getCatalogImageDownloadUrl(expAnnotations, fileName);
SPAN(at(style, "white-space: nowrap;"),
fileName,
PageFlowUtil.iconLink("fa fa-download", null).href(downloadLink).style("margin-left:10px;").build())
.appendTo(out);
SPAN(
at(style, "white-space: nowrap;"),
fileName,
PageFlowUtil.iconLink("fa fa-download", null).href(downloadLink).style("margin-left:10px;").build()
).appendTo(out);
return;
}
super.renderGridCellContents(ctx, out);
Expand Down Expand Up @@ -157,7 +157,7 @@ public Object getDisplayValue(RenderContext ctx)
reviewCol.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo)
{
@Override
public void renderGridCellContents(RenderContext ctx, Writer out)
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
{
Integer catalogEntryId = ctx.get(getColumnInfo().getFieldKey(), Integer.class);
if (catalogEntryId != null && ctx.getViewContext().getUser().hasSiteAdminPermission())
Expand All @@ -166,9 +166,9 @@ public void renderGridCellContents(RenderContext ctx, Writer out)
ExperimentAnnotations expAnnotations = ExperimentAnnotationsManager.getExperimentForShortUrl(entry.getShortUrl());
if (expAnnotations != null)
{
DIV(CatalogEntryWebPart.changeStatusButtonBuilder(entry.getApproved(), expAnnotations.getId(), catalogEntryId, expAnnotations.getContainer())
.build())
.appendTo(out);
DIV(
CatalogEntryWebPart.changeStatusButtonBuilder(entry.getApproved(), expAnnotations.getId(), catalogEntryId, expAnnotations.getContainer())
).appendTo(out);
}
}
}
Expand Down
Loading