diff --git a/lincs/resources/views/CustomGCT.html b/lincs/resources/views/CustomGCT.html index eaf878bc..fb34765f 100644 --- a/lincs/resources/views/CustomGCT.html +++ b/lincs/resources/views/CustomGCT.html @@ -7,9 +7,13 @@ var url = LABKEY.ActionURL.buildURL("lincs", "createCustomGCT", LABKEY.ActionURL.getContainer()); window.location = url; } + LABKEY.Utils.onReady(function() + { + document.getElementById("customGctButton").onclick = function() { showCustomGCTForm(); }; + });
- Create Custom GCT + Create Custom GCT
\ No newline at end of file diff --git a/lincs/src/org/labkey/lincs/view/customGCTForm.jsp b/lincs/src/org/labkey/lincs/view/customGCTForm.jsp index 9eff6cb0..1ff8ca99 100644 --- a/lincs/src/org/labkey/lincs/view/customGCTForm.jsp +++ b/lincs/src/org/labkey/lincs/view/customGCTForm.jsp @@ -140,24 +140,33 @@ function onChange(field, newValue, oldValue, eOpts) { - // console.log(newValue, oldValue); - var comboboxId = field.id ; - var owningDiv = Ext4.get(comboboxId + '_selected'); + const comboboxId = field.id ; + const owningDiv = Ext4.get(comboboxId + '_selected'); if(!owningDiv) return; - var selectedHtml = ""; - for(var i = 0; i < newValue.length; i += 1) + let selectedHtml = ""; + const deleteIconsMap = {}; // map of deleteIconId -> annotation value + for(let i = 0; i < newValue.length; i += 1) { - var record = field.findRecordByValue(newValue[i]); - var nameValue = newValue[i]; - var displayValue = record ? record.get("DisplayName") : nameValue; - var spanId = comboboxId + "_span"; - selectedHtml += '"; - selectedHtml += '' + displayValue + '
'; + const record = field.findRecordByValue(newValue[i]); + const nameValue = newValue[i]; + const displayValue = record ? record.get("DisplayName") : nameValue; + const deleteIconId = comboboxId + "-delete-icon-" + Ext4.id(); + selectedHtml += ""; + selectedHtml += '' + Ext4.util.Format.htmlEncode(displayValue) + '
'; + deleteIconsMap[deleteIconId] = nameValue; } owningDiv.dom.innerHTML = selectedHtml; + + // Attach event handlers to the delete icons + Object.keys(deleteIconsMap).forEach(iconId => { + const annotationVal = deleteIconsMap[iconId]; + document.getElementById(iconId).addEventListener('click', function() + { + deleteSelected(comboboxId, annotationVal); + }); + }) } function deleteSelected(comboBoxId, valToRemove) @@ -280,7 +289,8 @@ - Show all annotations + Show all annotations + <% addHandler("toggleAdvanced", "click", "toggleAdvanced()"); %> diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java b/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java index 14f8d0f4..a67feaa4 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java @@ -57,6 +57,7 @@ import org.labkey.api.settings.AppProps; import org.labkey.api.util.DOM; import org.labkey.api.util.HtmlString; +import org.labkey.api.util.Link; import org.labkey.api.util.PageFlowUtil; import org.labkey.api.util.SimpleNamedObject; import org.labkey.api.util.StringExpressionFactory; @@ -64,6 +65,7 @@ import org.labkey.api.view.ActionURL; import org.labkey.api.view.HttpView; import org.labkey.api.view.template.ClientDependency; +import org.labkey.api.view.template.PageConfig; import org.labkey.panoramapublic.PanoramaPublicController; import org.labkey.panoramapublic.PanoramaPublicManager; import org.labkey.panoramapublic.PanoramaPublicSchema; @@ -81,10 +83,10 @@ import static org.labkey.api.util.DOM.Attribute.height; import static org.labkey.api.util.DOM.Attribute.href; -import static org.labkey.api.util.DOM.Attribute.onclick; import static org.labkey.api.util.DOM.Attribute.src; import static org.labkey.api.util.DOM.Attribute.title; import static org.labkey.api.util.DOM.Attribute.width; +import static org.labkey.api.util.DOM.DIV; import static org.labkey.api.util.DOM.IMG; import static org.labkey.api.util.DOM.at; @@ -149,13 +151,16 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep if(id != null && container != null) { ActionURL detailsPage = PageFlowUtil.urlProvider(ProjectUrls.class).getBeginURL(container); // experiment container - DOM.SPAN(at(onclick, "viewExperimentDetails(this,'" + container.getPath() + "', '" + id + "','" + detailsPage + "')") + PageConfig pageConfig = HttpView.currentPageConfig(); + String spanId = pageConfig.makeId("expt_details_"); + DOM.SPAN(at(DOM.Attribute.id, spanId) .data("active", "false") // will be rendered as "data-active" attribute .data("loaded", "false"), // will be rendered as "data-loaded" attribute IMG(at(DOM.Attribute.id, "expandcontract-" + id) .at(src, PageFlowUtil.staticResourceUrl("_images/plus.gif"))), HtmlString.NBSP) .appendTo(out); + pageConfig.addHandler(spanId, "click", "viewExperimentDetails(this,'" + container.getPath() + "', '" + id + "','" + detailsPage + "')"); } super.renderGridCellContents(ctx, out); } @@ -204,11 +209,12 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep } else { - String content = "
Share"; - content += "
"; - out.write(content); + var link = new Link.LinkBuilder("Share") + .clearClasses().addClass("button-small button-small-green") + .style("margin:0px 5px 0px 2px;") + .onClick("showShareLink(this, " + PageFlowUtil.jsString(accessUrl) + ");return false;"); + DIV(link.build()).appendTo(out); + } } }); diff --git a/panoramapublic/src/org/labkey/panoramapublic/view/expannotations/experimentDetails.jsp b/panoramapublic/src/org/labkey/panoramapublic/view/expannotations/experimentDetails.jsp index e2d626af..12028591 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/view/expannotations/experimentDetails.jsp +++ b/panoramapublic/src/org/labkey/panoramapublic/view/expannotations/experimentDetails.jsp @@ -292,7 +292,9 @@
- + + <% addHandler("search-button-id", "click", "handleRendering('true')"); %>
diff --git a/panoramapublic/src/org/labkey/panoramapublic/view/viewSlideshow.jsp b/panoramapublic/src/org/labkey/panoramapublic/view/viewSlideshow.jsp index 80f238e1..3d9887c4 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/view/viewSlideshow.jsp +++ b/panoramapublic/src/org/labkey/panoramapublic/view/viewSlideshow.jsp @@ -109,6 +109,6 @@ - + <%=button("View").style("margin:15px 0 20px 0").onClick("viewSlideshow()").build()%>
\ No newline at end of file diff --git a/panoramapublic/webapp/PanoramaPublic/js/slideshow.js b/panoramapublic/webapp/PanoramaPublic/js/slideshow.js index aadc1d7e..499d8cfb 100644 --- a/panoramapublic/webapp/PanoramaPublic/js/slideshow.js +++ b/panoramapublic/webapp/PanoramaPublic/js/slideshow.js @@ -5,6 +5,7 @@ let slideIndex; let slides, dots, text; let wait; +const DOT_NAV_ID_PREFIX = "slideshow-dot-"; function setDescSize(fixed) { @@ -76,6 +77,17 @@ function addSlides(json) appendDot(slideshowDots, i + existingSlideCount + 1); 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 @@ -111,7 +123,7 @@ function appendDot(dotsContainer, index) const dot = document.createElement('span'); const cls = index === 1 ? "dot active" : "dot"; dot.setAttribute('class', cls); - dot.setAttribute('onclick', 'currentSlide(' + index + ')'); + dot.setAttribute('id', DOT_NAV_ID_PREFIX + index); dotsContainer.appendChild(dot); dotsContainer.appendChild(document.createTextNode(" ") ); } @@ -178,6 +190,8 @@ function showSlides() function plusSlides(position) { + if (!slides) return; + let i; setDescSize(true); slideIndex += position; @@ -233,6 +247,9 @@ function appendSlidesContainer(parentDivId) return false; } + const nextSlideBtnId = "next-slide-btn"; + const prevSlideBtnId = "prev-slide-btn"; + let slideshowHtml = ''; slideshowHtml += '