diff --git a/lincs/resources/web/lincs/lincs.js b/lincs/resources/web/lincs/lincs.js
deleted file mode 100644
index 293f6178..00000000
--- a/lincs/resources/web/lincs/lincs.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2015-2017 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
- */
-function externalHeatmapViewerLink(container, fileName, elementId, assayType)
-{
- var fileUrl= LABKEY.ActionURL.buildURL("_webdav", "REMOVE", container + '/@files/GCT/' + fileName);
- fileUrl= fileUrl.substring(0, fileUrl.indexOf("/REMOVE"));
- fileUrl= LABKEY.ActionURL.getBaseURL(true) + fileUrl;
- // console.log("File URL is " + fileUrl);
-
- var morpheusUrl = getMorpheusUrl(fileUrl, assayType);
-
- var analyticsEvt = " onclick=\"try {_gaq.push(['_trackEvent', 'Lincs', 'Morpheus', '" + fileName + "']);} catch (err) {} try {gtag.event('Lincs', {eventAction: 'Morpheus', fileName: '" + fileName + "'});} catch (err) {}\" ";
-
- Ext4.Ajax.request({
- url: fileUrl,
- method: 'HEAD',
- success: function(response, opts) {
- var imgUrl = LABKEY.ActionURL.getContextPath() + "/lincs/GENE-E_icon.png";
- Ext4.get(elementId).dom.innerHTML = '(View in Morpheus )';
- },
- failure: function(response, opts) {
- console.log('server-side failure with status code ' + response.status);
- }
- });
-
-}
-
-function getMorpheusUrl(fileUrl, assayType)
-{
- var morpheusJson = '{"dataset":"' + fileUrl + '",';
- if(assayType === 'P100')
- {
- morpheusJson += '"rows":[{"field":"pr_p100_modified_peptide_code","display":"Text"},{"field":"pr_gene_symbol","display":"Text"},{"field":"pr_p100_phosphosite","display":"Text"},{"field":"pr_uniprot_id","display":"Text"}],';
- }
- if(assayType === 'GCP')
- {
- morpheusJson += '"rows":[{"field":"pr_gcp_histone_mark","display":"Text"},{"field":"pr_gcp_modified_peptide_code","display":"Text"}],'
- }
- morpheusJson += '"columns":[{"field":"pert_iname","display":"Text"},{"field":"det_well","display":"Text"}],';
- morpheusJson += '"colorScheme":{"type":"fixed","map":[{"value":-3,"color":"blue"},{"value":0,"color":"white"},{"value":3,"color":"red"}]}';
- morpheusJson += '}';
-
- var morpheusUrl= "http://www.broadinstitute.org/cancer/software/morpheus/?json=";
- morpheusUrl += encodeURIComponent(morpheusJson);
- console.log("Morpheus URL " + morpheusUrl);
- return morpheusUrl;
-}
\ No newline at end of file
diff --git a/lincs/src/org/labkey/lincs/LincsDataTable.java b/lincs/src/org/labkey/lincs/LincsDataTable.java
index 8b07b65d..aa9dfb88 100644
--- a/lincs/src/org/labkey/lincs/LincsDataTable.java
+++ b/lincs/src/org/labkey/lincs/LincsDataTable.java
@@ -29,6 +29,7 @@
import org.labkey.api.query.FilteredTable;
import org.labkey.api.query.UserSchema;
import org.labkey.api.settings.AppProps;
+import org.labkey.api.util.DOM;
import org.labkey.api.util.FileUtil;
import org.labkey.api.util.HtmlString;
import org.labkey.api.util.LinkBuilder;
@@ -45,7 +46,11 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import static org.labkey.api.util.DOM.Attribute.height;
+import static org.labkey.api.util.DOM.Attribute.src;
import static org.labkey.api.util.DOM.Attribute.style;
+import static org.labkey.api.util.DOM.Attribute.width;
+import static org.labkey.api.util.DOM.IMG;
import static org.labkey.api.util.DOM.SPAN;
import static org.labkey.api.util.DOM.at;
@@ -278,7 +283,12 @@ public boolean isSortable()
return false;
}
- private String getAnalyticsScript(String eventAction, String fileName, boolean addWaitTime)
+ private HtmlString externalHeatmapViewerLink(String fileName, LincsModule.LincsAssay assayType)
+ {
+ return externalHeatmapViewerLink(fileName, assayType, getGctDavUrl(fileName));
+ }
+
+ private static String getAnalyticsScript(String eventAction, String fileName, boolean addWaitTime)
{
if (!StringUtils.isBlank(AnalyticsService.getTrackingScript()))
{
@@ -288,31 +298,38 @@ private String getAnalyticsScript(String eventAction, String fileName, boolean a
// request if the download opens on the same page.
String timeout = addWaitTime ? "that=this; setTimeout(function(){location.href=that.href;},400);return false;" : "";
- // Universal Analytics - remove after conversion to GA4 is complete
- String onClickScript = "try {_gaq.push(['_trackEvent', 'Lincs', " + PageFlowUtil.qh(eventAction) + ", " + PageFlowUtil.qh(fileName) + "]); } catch (err) {}";
// GA4 variant
- onClickScript += "try {gtag('event', 'Lincs', {eventAction: " + PageFlowUtil.qh(eventAction) + ", fileName: " + PageFlowUtil.qh(fileName) + "}); } catch(err) {}";
+ String onClickScript = "try {gtag('event', 'Lincs', {eventAction: " + PageFlowUtil.qh(eventAction) + ", fileName: " + PageFlowUtil.qh(fileName) + "}); } catch(err) {}";
onClickScript += timeout;
return onClickScript;
}
return null;
}
- private HtmlString externalHeatmapViewerLink(String fileName, LincsModule.LincsAssay assayType)
+ public static HtmlString externalHeatmapViewerLink(String fileName, LincsModule.LincsAssay assayType, String gctFileDavUrl)
{
- String gctFileUrl = davUrl + "GCT/" + PageFlowUtil.encodePath(fileName);
- String morpheusUrl = getMorpheusUrl(gctFileUrl, assayType);
+ String morpheusUrl = getMorpheusUrl(gctFileDavUrl, assayType);
String analyticsScript = getAnalyticsScript("Morpheus", fileName, false);
- String onclickEvt = StringUtils.isBlank(analyticsScript) ? "" : "onclick=\"" + analyticsScript + "\"";
String imgUrl = AppProps.getInstance().getContextPath() + "/lincs/GENE-E_icon.png";
- // TODO: Should use a LinkBuilder, etc.
- return HtmlString.unsafe("[ View in Morpheus
]");
+ LinkBuilder viewInMorpheusLink = LinkBuilder.simpleLink("View in Morpheus", morpheusUrl).target("_blank");
+ if (analyticsScript != null)
+ {
+ viewInMorpheusLink.onClick(analyticsScript);
+ }
+
+ return HtmlString.of(DOM.SPAN("[",
+ HtmlString.NBSP,
+ viewInMorpheusLink,
+ HtmlString.NBSP,
+ IMG(at(src, imgUrl).at(width, 13).at(height, 13)),
+ HtmlString.NBSP,
+ "]"));
}
- private String getMorpheusUrl(String gctFileUrl, LincsModule.LincsAssay assayType)
+ private static String getMorpheusUrl(String gctFileUrl, LincsModule.LincsAssay assayType)
{
String morpheusJson = "{\"dataset\":\"" + gctFileUrl + "\",";
if(assayType == LincsModule.LincsAssay.P100)
diff --git a/lincs/src/org/labkey/lincs/view/downloadCustomGCT.jsp b/lincs/src/org/labkey/lincs/view/downloadCustomGCT.jsp
index aedadd88..357f93e1 100644
--- a/lincs/src/org/labkey/lincs/view/downloadCustomGCT.jsp
+++ b/lincs/src/org/labkey/lincs/view/downloadCustomGCT.jsp
@@ -26,6 +26,12 @@
<%@ page import="org.labkey.lincs.LincsController.SelectedAnnotation" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.stream.Collectors" %>
+<%@ page import="org.labkey.api.files.FileContentService" %>
+<%@ page import="java.net.URI" %>
+<%@ page import="org.labkey.lincs.LincsController" %>
+<%@ page import="org.labkey.lincs.LincsModule.LincsAssay" %>
+<%@ page import="org.labkey.api.util.HtmlString" %>
+<%@ page import="org.labkey.lincs.LincsDataTable.GctColumnPSP" %>
<%@ page extends="org.labkey.api.jsp.JspBase" %>
<%@ taglib prefix="labkey" uri="http://www.labkey.org/taglib" %>