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" %> @@ -34,7 +40,7 @@ @Override public void addClientDependencies(ClientDependencies dependencies) { - dependencies.add("Ext4"); + dependencies.add("/lincs/lincs.css"); } %> <% @@ -46,31 +52,15 @@ ActionURL downloadGctUrl = urlFor(DownloadCustomGCTReportAction.class); String fileName = FileUtil.getFileName(gctBean.getGctFile()); downloadGctUrl.addParameter("fileName", fileName); -%> - - - + URI webDavUri = FileContentService.get().getWebDavUrl(gctBean.getGctFile(), getContainer(), FileContentService.PathType.full); + LincsAssay assayType = LincsController.getLincsAssayType(getContainer()); + HtmlString morpheusViewerLink = GctColumnPSP.externalHeatmapViewerLink(fileName, assayType, webDavUri.toString()); +%>
[Download GCT] - +<%=morpheusViewerLink%>
NOTE: The file will be deleted from the server after it is downloaded.
@@ -92,4 +82,5 @@
# Replicates: <%=gctBean.getReplicateCount()%>
# Probe Annotations: <%=gctBean.getProbeAnnotationCount()%>
# Replicate Annotations: <%=gctBean.getReplicateAnnotationCount()%>
+
\ No newline at end of file diff --git a/panoramapublic/webapp/PanoramaPublic/js/slideshow.js b/panoramapublic/webapp/PanoramaPublic/js/slideshow.js index 499d8cfb..e7f019e5 100644 --- a/panoramapublic/webapp/PanoramaPublic/js/slideshow.js +++ b/panoramapublic/webapp/PanoramaPublic/js/slideshow.js @@ -78,16 +78,6 @@ function addSlides(json) appendText(entry, slideshowTexts); } - // Attach the 'onclick' event handlers - for(let i = 0; i < catalog.length; i++) - { - const index = i + existingSlideCount + 1; - const el = document.getElementById(DOT_NAV_ID_PREFIX + index); - if (el) - { - el.onclick = function() { currentSlide(index); }; - } - } showSlides(); } else @@ -117,13 +107,11 @@ function appendCoverSlide(entry, coverslideContainer) function appendDot(dotsContainer, index) { - // Examples: - // - // const dot = document.createElement('span'); const cls = index === 1 ? "dot active" : "dot"; dot.setAttribute('class', cls); dot.setAttribute('id', DOT_NAV_ID_PREFIX + index); + dot['onclick'] = function(){ currentSlide(index); }; // CSP-compliant dotsContainer.appendChild(dot); dotsContainer.appendChild(document.createTextNode(" ") ); } @@ -276,8 +264,8 @@ function appendSlidesContainer(parentDivId) ''; parentDiv.innerHTML = slideshowHtml; - document.getElementById(nextSlideBtnId).onclick = function() { plusSlides(-1); }; - document.getElementById(prevSlideBtnId).onclick = function() { plusSlides(1); }; + document.getElementById(nextSlideBtnId)['onclick'] = function() { plusSlides(-1); }; + document.getElementById(prevSlideBtnId)['onclick'] = function() { plusSlides(1); }; return true; } \ No newline at end of file