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
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@
import org.labkey.api.security.User;
import org.labkey.api.settings.AppProps;
import org.labkey.api.util.HtmlString;
import org.labkey.api.util.InputBuilder;
import org.labkey.api.util.PageFlowUtil;
import org.labkey.api.util.SimpleNamedObject;
import org.labkey.api.util.StringExpression;
import org.labkey.api.util.InputBuilder;
import org.labkey.api.view.GridView;
import org.labkey.api.writer.HtmlWriter;
import org.labkey.flow.analysis.model.ISampleInfo;
Expand All @@ -58,8 +58,6 @@
import org.labkey.flow.util.KeywordUtil;
import org.springframework.validation.Errors;

import java.io.IOException;
import java.io.Writer;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collection;
Expand All @@ -72,6 +70,10 @@
import java.util.Set;
import java.util.stream.Collectors;

import static org.labkey.api.util.DOM.Attribute.src;
import static org.labkey.api.util.DOM.IMG;
import static org.labkey.api.util.DOM.at;

public class SamplesConfirmGridView extends GridView
{
public static final Logger LOG = LogManager.getLogger(SamplesConfirmGridView.class);
Expand Down Expand Up @@ -368,23 +370,23 @@ public MatchedFlagDisplayColumn()
}

@Override
public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
{
Boolean match = ctx.get(MATCHED_FLAG_FIELD_KEY, Boolean.class);
if (match != null)
{
oldWriter.write("<img src=\"");
oldWriter.write(AppProps.getInstance().getContextPath());
IMG(
at(src, AppProps.getInstance().getContextPath() + (match ? "/_images/check.png" : "/_images/cancel.png"))
).appendTo(out);

if (match)
{
oldWriter.write("/_images/check.png\" />");
String fileName = ctx.get(SAMPLE_NAME_FIELD_KEY, String.class);
PageFlowUtil.popupHelp(HtmlString.of("Matched the previously imported FCS file '" + fileName + "'"), "Matched").appendTo(oldWriter);
out.write(PageFlowUtil.popupHelp(HtmlString.of("Matched the previously imported FCS file '" + fileName + "'"), "Matched"));
}
else
{
oldWriter.write("/_images/cancel.png\" />");
PageFlowUtil.popupHelp(HtmlString.of("Failed to match a previously imported FCS file. Please manually select a matching FCS file or skip importing this row."), "Not matched").appendTo(oldWriter);
out.write(PageFlowUtil.popupHelp(HtmlString.of("Failed to match a previously imported FCS file. Please manually select a matching FCS file or skip importing this row."), "Not matched"));
}
}
}
Expand Down
69 changes: 40 additions & 29 deletions flow/src/org/labkey/flow/query/FlowSchema.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package org.labkey.flow.query;

import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
Expand All @@ -25,7 +26,28 @@
import org.labkey.api.assay.AssayService;
import org.labkey.api.cache.Cache;
import org.labkey.api.cache.CacheManager;
import org.labkey.api.data.*;
import org.labkey.api.data.AbstractTableInfo;
import org.labkey.api.data.BaseColumnInfo;
import org.labkey.api.data.ColumnInfo;
import org.labkey.api.data.Container;
import org.labkey.api.data.ContainerFilter;
import org.labkey.api.data.ContainerManager;
import org.labkey.api.data.DataColumn;
import org.labkey.api.data.DbSchema;
import org.labkey.api.data.DisplayColumn;
import org.labkey.api.data.DisplayColumnFactory;
import org.labkey.api.data.FilterInfo;
import org.labkey.api.data.JdbcType;
import org.labkey.api.data.MaterializedQueryHelper;
import org.labkey.api.data.MutableColumnInfo;
import org.labkey.api.data.NullColumnInfo;
import org.labkey.api.data.RenderContext;
import org.labkey.api.data.SQLFragment;
import org.labkey.api.data.SimpleFilter;
import org.labkey.api.data.SqlSelector;
import org.labkey.api.data.Table;
import org.labkey.api.data.TableInfo;
import org.labkey.api.data.WrappedColumnInfo;
import org.labkey.api.exp.PropertyColumn;
import org.labkey.api.exp.PropertyDescriptor;
import org.labkey.api.exp.api.DataType;
Expand Down Expand Up @@ -70,6 +92,8 @@
import org.labkey.api.study.assay.SpecimenForeignKey;
import org.labkey.api.study.publish.StudyPublishService;
import org.labkey.api.util.ContainerContext;
import org.labkey.api.util.HtmlString;
import org.labkey.api.util.LinkBuilder;
import org.labkey.api.util.PageFlowUtil;
import org.labkey.api.util.StringExpressionFactory;
import org.labkey.api.view.ActionURL;
Expand Down Expand Up @@ -100,10 +124,7 @@
import org.labkey.flow.view.FlowQueryView;
import org.springframework.validation.BindException;

import jakarta.servlet.http.HttpServletRequest;
import java.beans.PropertyChangeEvent;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
Expand Down Expand Up @@ -447,37 +468,26 @@ public TableInfo getLookupTableInfo()
return ret;
}

private static final DisplayColumnFactory _targetStudyDisplayColumnFactory = new DisplayColumnFactory()
private static final DisplayColumnFactory _targetStudyDisplayColumnFactory = colInfo -> new DataColumn(colInfo)
{
@Override
public DisplayColumn createRenderer(ColumnInfo colInfo)
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
{
return new DataColumn(colInfo)
String targetStudyId = (String)getBoundColumn().getValue(ctx);
if (targetStudyId != null && !targetStudyId.isEmpty())
{
@Override
public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException
Container c = ContainerManager.getForId(targetStudyId);
if (c != null)
{
String targetStudyId = (String)getBoundColumn().getValue(ctx);
if (targetStudyId != null && targetStudyId.length() > 0)
var ss = StudyService.get();
Study study = null == ss ? null : ss.getStudy(c);
var urlProvider = PageFlowUtil.urlProvider(ProjectUrls.class);
if (study != null && urlProvider != null)
{
Container c = ContainerManager.getForId(targetStudyId);
if (c != null)
{
var ss = StudyService.get();
Study study = null == ss ? null : ss.getStudy(c);
var urlProvider = PageFlowUtil.urlProvider(ProjectUrls.class);
if (study != null && urlProvider != null)
{
oldWriter.write("<a href=\"");
oldWriter.write(PageFlowUtil.filter(urlProvider.getBeginURL(c)));
oldWriter.write("\">");
oldWriter.write(study.getLabel().replaceAll(" ", "&nbsp;"));
oldWriter.write("</a>");
}
}
LinkBuilder.simpleLink(HtmlString.unsafe(PageFlowUtil.filter(study.getLabel()).replaceAll(" ", "&nbsp;")), urlProvider.getBeginURL(c)).appendTo(out);
}
}
};
}
}
};

Expand All @@ -487,6 +497,7 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit
*
* basically rejoins what is effectively a vertically partitioned table (ACKK)
*/
// TODO: Delete this? Unused!
class JoinFlowDataTable extends AbstractTableInfo implements ExpDataTable
{
final ExpDataTable _expData;
Expand Down Expand Up @@ -882,12 +893,12 @@ public String renderURL(RenderContext ctx)
}

@Override
public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
{
String url = renderURL(ctx);
if (url != null)
{
oldWriter.write(PageFlowUtil.iconLink("fa fa-download", null).href(url).toString());
out.write(PageFlowUtil.iconLink("fa fa-download", null).href(url));
}
}
};
Expand Down
61 changes: 1 addition & 60 deletions flow/src/org/labkey/flow/webparts/AnalysisScriptsWebPart.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package org.labkey.flow.webparts;

import org.jetbrains.annotations.NotNull;
import org.labkey.api.stats.ColumnAnalyticsProvider;
import org.labkey.api.data.ActionButton;
import org.labkey.api.data.ButtonBar;
import org.labkey.api.data.ColumnInfo;
Expand All @@ -28,26 +27,20 @@
import org.labkey.api.data.TableInfo;
import org.labkey.api.query.AliasedColumn;
import org.labkey.api.security.permissions.UpdatePermission;
import org.labkey.api.stats.ColumnAnalyticsProvider;
import org.labkey.api.util.HtmlString;
import org.labkey.api.util.PageFlowUtil;
import org.labkey.api.view.ActionURL;
import org.labkey.api.view.DataView;
import org.labkey.api.view.Portal;
import org.labkey.api.view.SimpleWebPartFactory;
import org.labkey.api.view.ViewContext;
import org.labkey.api.writer.HtmlWriter;
import org.labkey.flow.controllers.editscript.ScriptController;
import org.labkey.flow.controllers.executescript.AnalysisScriptController;
import org.labkey.flow.data.FlowProtocolStep;
import org.labkey.flow.data.FlowScript;
import org.labkey.flow.query.FlowQuerySettings;
import org.labkey.flow.query.FlowSchema;
import org.labkey.flow.query.FlowTableType;
import org.labkey.flow.view.FlowQueryView;
import org.springframework.web.servlet.mvc.Controller;

import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
Expand Down Expand Up @@ -87,8 +80,6 @@ public List<DisplayColumn> getDisplayColumns()
ColumnInfo colRowId = new AliasedColumn("RowId", table.getColumn("RowId"));
if (getContainer().hasPermission(getUser(), UpdatePermission.class))
{
// PerformAnalsysisColumn is too expensive
//ret.add(new PerformAnalysisColumn(colRowId));
ret.add(new ScriptActionColumn("Copy", ScriptController.CopyAction.class, colRowId));
ret.add(new ScriptActionColumn("Delete", ScriptController.DeleteAction.class, colRowId));
}
Expand Down Expand Up @@ -131,54 +122,4 @@ public List<ColumnAnalyticsProvider> getAnalyticsProviders()
return Collections.emptyList();
}
}

public class PerformAnalysisColumn extends DataColumn
{
public PerformAnalysisColumn(ColumnInfo col)
{
super(col);
setCaption("Execute Script");
setNoWrap(true);
setWidth("auto");
}

public FlowScript getScript(RenderContext ctx)
{
Object value = getBoundColumn().getValue(ctx);
if (!(value instanceof Number))
return null;
int id = ((Number) value).intValue();
return FlowScript.fromScriptId(id);
}

@Override
public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException
{
FlowScript script = getScript(ctx);
if (script != null)
{
String and = "";

if (script.hasStep(FlowProtocolStep.calculateCompensation))
{
ActionURL url = script.urlFor(AnalysisScriptController.ChooseRunsToAnalyzeAction.class, FlowProtocolStep.calculateCompensation);
oldWriter.write("<a href='" + PageFlowUtil.filter(url) + "'>Compensation</a>");
and = "<br>";
}

if (script.hasStep(FlowProtocolStep.analysis))
{
ActionURL url = script.urlFor(AnalysisScriptController.ChooseRunsToAnalyzeAction.class, FlowProtocolStep.analysis);
oldWriter.write(and);
oldWriter.write("<a href='" + PageFlowUtil.filter(url) + "'>Statistics and Graphs</a>");
}

}
else
{
oldWriter.write("&nbsp;");
}
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo)
return new JavaScriptDisplayColumn(colInfo, List.of("clientapi/ext3", "vis/vis", "luminex/LeveyJenningsPlotHelpers.js", "luminex/LeveyJenningsReport.css"))
{
@Override
public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out)
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
{
int protocolId = schema.getProtocol().getRowId();
int analyte = (int)ctx.get("analyte");
Expand All @@ -131,7 +131,7 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit

HtmlString html = HtmlString.unsafe(String.format("<img src='%s' width='27' height='20'>", AppProps.getInstance().getContextPath() + "/luminex/ljPlotIcon.png"));

renderLink(oldWriter, html, onClick, null);
renderLink(out, html, onClick, null);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,17 +54,11 @@
import org.labkey.luminex.model.GuideSet;
import org.labkey.luminex.model.Titration;

import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
* User: jeckels
* Date: 7/8/11
*/
public class AnalyteTitrationTable extends AbstractCurveFitPivotTable
{
public AnalyteTitrationTable(final LuminexProtocolSchema schema, ContainerFilter cf, boolean filter)
Expand Down Expand Up @@ -126,7 +120,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo)
return new JavaScriptDisplayColumn(colInfo, List.of("clientapi/ext3", "vis/vis", "luminex/LeveyJenningsPlotHelpers.js", "luminex/LeveyJenningsReport.css"))
{
@Override
public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
{
int protocolId = schema.getProtocol().getRowId();
int analyte = (int)ctx.get("analyte");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ public HtmlString getTitle(RenderContext ctx)
}

@Override
public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
{
String type = (String)ctx.get(_typeFieldKey);
String description = (String)ctx.get(_descriptionFieldKey);
Expand All @@ -112,11 +112,11 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit
// add onclick handler to call the well exclusion window creation function
String onClick = "openExclusionsWellWindow(" + _protocolId + ", " + runId + ", " + dataId + ", " +
jsString(wellID) + ", " + (description == null ? null : jsString(description)) + ", " + jsString(type) + ");";
LinkBuilder.simpleLink(img).href("#").onClick(onClick).appendTo(oldWriter);
LinkBuilder.simpleLink(img).href("#").onClick(onClick).appendTo(out);
}
else
{
oldWriter.write(img.toString());
out.write(img);
}
}

Expand Down
Loading