Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
fabregat committed Dec 14, 2018
2 parents 9b40d82 + 522cd48 commit 5d90f97
Show file tree
Hide file tree
Showing 138 changed files with 2,200 additions and 972 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<groupId>org.reactome.web</groupId>
<artifactId>diagram</artifactId>
<packaging>jar</packaging>
<version>3.6.2</version>
<version>3.6.3</version>
<name>Reactome Diagram Viewer</name>

<description>
Expand Down Expand Up @@ -44,7 +44,7 @@
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>

<reactome.web.analysis-client>1.4.0</reactome.web.analysis-client>
<reactome.web.model>2.0.4</reactome.web.model>
<reactome.web.model>2.0.6-SNAPSHOT</reactome.web.model>
<reactome.web.carrousel>1.0.2</reactome.web.carrousel>
<reactome.web.scroller>1.0.2</reactome.web.scroller>
<reactome.web.quadtree>1.2.0</reactome.web.quadtree>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public interface DiagramViewer extends IsWidget, HasHandlers, RequiresResize {

HandlerRegistration addAnalysisProfileChangedHandler(AnalysisProfileChangedHandler handler);

void flagItems(String identifier);
void flagItems(String identifier, Boolean includeInteractors);

void highlightItem(String stableIdentifier);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class DiagramViewerImpl extends AbstractDiagramViewer implements
private AnalysisStatus analysisStatus;
private InteractorsManager interactorsManager;
private FlaggedElementsLoader flaggedElementsLoader = new FlaggedElementsLoader(this);
private Boolean includeInteractors = true;

DiagramViewerImpl() {
super();
Expand Down Expand Up @@ -101,13 +102,10 @@ private void initHandlers() {
}

@Override
public void flagItems(String identifier) {
if (context != null && identifier != null && !identifier.equals(viewerContainer.getFlagTerm())) {
Set<DiagramObject> flagged = context.getFlagged(identifier);
if (flagged == null) {
eventBus.fireEventFromSource(new DiagramObjectsFlagRequestedEvent(identifier), this);
} else {
eventBus.fireEventFromSource(new DiagramObjectsFlaggedEvent(identifier, flagged, false), this);
public void flagItems(String identifier, Boolean includeInteractors) {
if (context != null && identifier != null) {
if(!identifier.equalsIgnoreCase(context.getFlagTerm()) || !this.includeInteractors.equals(includeInteractors)) {
eventBus.fireEventFromSource(new DiagramObjectsFlagRequestedEvent(identifier, includeInteractors), this);
}
}
}
Expand Down Expand Up @@ -203,7 +201,15 @@ public void onDiagramObjectsFlagged(DiagramObjectsFlaggedEvent event) {
@Override
public void onDiagramObjectsFlagRequested(DiagramObjectsFlagRequestedEvent event) {
boolean notify = !event.getSource().equals(this);
flaggedElementsLoader.load(context.getContent(), event.getTerm(), notify);

context.setFlagTerm(event.getTerm());
this.includeInteractors = event.getIncludeInteractors();
Set<DiagramObject> flagged = context.getFlagged(context.getFlagTerm() + includeInteractors);
if(flagged == null) {
flaggedElementsLoader.load(context.getContent(), event.getTerm(), notify);
} else {
eventBus.fireEventFromSource(new DiagramObjectsFlaggedEvent(event.getTerm(), includeInteractors, flagged, notify), this);
}
}

@Override
Expand All @@ -226,7 +232,7 @@ public void flaggedElementsLoaded(String term, Occurrences toFlag, boolean notif
}

//Flag those diagram entities that interact with the term
if(toFlag != null && toFlag.getInteractsWith() != null) {
if(toFlag != null && toFlag.getInteractsWith() != null && includeInteractors) {
for (String stId : toFlag.getInteractsWith()) {
GraphObject graphObject = context.getContent().getDatabaseObject(stId);
if (graphObject != null) {
Expand All @@ -235,12 +241,13 @@ public void flaggedElementsLoaded(String term, Occurrences toFlag, boolean notif
}
}

context.setFlagged(term, flagged);
eventBus.fireEventFromSource(new DiagramObjectsFlaggedEvent(term, flagged, notify), this);
context.setFlagged(term + includeInteractors, flagged);
eventBus.fireEventFromSource(new DiagramObjectsFlaggedEvent(term, includeInteractors, flagged, notify), this);
}

@Override
public void onFlaggedElementsLoaderError(Throwable exception) {
context.setFlagTerm(null);
Console.error(exception.getMessage());
}

Expand Down
18 changes: 7 additions & 11 deletions src/main/java/org/reactome/web/diagram/client/ViewerContainer.java
Original file line number Diff line number Diff line change
Expand Up @@ -165,10 +165,6 @@ public void contentRequested() {
context = null;
}

public String getFlagTerm() {
return context.getFlagTerm();
}

public void expressionColumnChanged() {
activeVisualiser.expressionColumnChanged();
}
Expand All @@ -194,8 +190,8 @@ public void interactorsResourceChanged(OverlayResource resource) {
}

@Override
public void onDiagramExportRequested(CanvasExportRequestedEvent event) {
activeVisualiser.exportView(event.getOption());
public void onCanvasExportRequested(CanvasExportRequestedEvent event) {
activeVisualiser.exportView();
}

@Override
Expand All @@ -209,7 +205,7 @@ public void onDiagramObjectsFlagRequested(DiagramObjectsFlagRequestedEvent event
public void onDiagramObjectsFlagged(DiagramObjectsFlaggedEvent event) {
context.setFlagTerm(event.getTerm());
setWatermarkURL(context, activeVisualiser.getSelected());
activeVisualiser.flagItems(event.getFlaggedItems());
activeVisualiser.flagItems(event.getFlaggedItems(), event.getIncludeInteractors());
}

@Override
Expand All @@ -225,10 +221,10 @@ public void onControlAction(ControlActionEvent event) {
case FIT_ALL: activeVisualiser.fitDiagram(true); break;
case ZOOM_IN: activeVisualiser.zoomIn(); break;
case ZOOM_OUT: activeVisualiser.zoomOut(); break;
case UP: activeVisualiser.padding(0, 10); break;
case RIGHT: activeVisualiser.padding(-10, 0); break;
case DOWN: activeVisualiser.padding(0, -10); break;
case LEFT: activeVisualiser.padding(10, 0); break;
case UP: activeVisualiser.padding(0, 10); break;
case RIGHT: activeVisualiser.padding(-10, 0); break;
case DOWN: activeVisualiser.padding(0, -10); break;
case LEFT: activeVisualiser.padding(10, 0); break;
case FIREWORKS: overview(); break;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@

import java.util.Set;

import static org.reactome.web.diagram.events.CanvasExportRequestedEvent.Option;


/**
* @author Kostas Sidiropoulos <ksidiro@ebi.ac.uk>
Expand All @@ -27,7 +25,7 @@ public interface Visualiser extends IsWidget {

void padding(int dX, int dY);

void exportView(Option option);
void exportView();

void contentLoaded(Context context);

Expand Down Expand Up @@ -67,7 +65,7 @@ public interface Visualiser extends IsWidget {

void setSize(int width, int height);

void flagItems(Set<DiagramObject> flaggedItems);
void flagItems(Set<DiagramObject> flaggedItems, Boolean includeInteractors);

void resetFlag();
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,14 @@
import com.google.gwt.event.dom.client.ContextMenuHandler;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Image;
import org.reactome.web.analysis.client.model.AnalysisType;
import org.reactome.web.diagram.client.DiagramFactory;
import org.reactome.web.diagram.context.popups.ImageDownloadDialog;
import org.reactome.web.diagram.context.popups.export.ExportDialog;
import org.reactome.web.diagram.data.AnalysisStatus;
import org.reactome.web.diagram.data.Context;
import org.reactome.web.diagram.data.DiagramStatus;
import org.reactome.web.diagram.data.graph.model.GraphObject;
import org.reactome.web.diagram.data.interactors.model.DiagramInteractor;
import org.reactome.web.diagram.data.interactors.model.InteractorEntity;
import org.reactome.web.diagram.data.layout.*;
Expand Down Expand Up @@ -55,7 +54,6 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

/**
* @author Antonio Fabregat <fabregat@ebi.ac.uk>
Expand Down Expand Up @@ -272,7 +270,7 @@ private void cleanCanvas(Context2d ctx) {
ctx.clearRect(0, 0, ctx.getCanvas().getWidth(), ctx.getCanvas().getHeight());
}

public void exportImage(final String diagramStId) {
public void showExportDialog(final Context context, final GraphObject selected, final String flagTerm, final Boolean includeInteractors) {
final Context2d ctx = this.canvases.get(this.canvases.size() - 1).getContext2d();
//This is silly but gives some visual feedback of the picture taking :D
(new Timer() {
Expand All @@ -293,34 +291,18 @@ public void run() {
for (int i = 0; i < canvases.size() - 1; i++) {
ctx.drawImage(canvases.get(i).getCanvasElement(), 0, 0);
}
Image image = new Image();
image.setUrl(ctx.getCanvas().toDataUrl("image/png"));
final ImageDownloadDialog downloadDialogBox = new ImageDownloadDialog(image, "png",diagramStId);
downloadDialogBox.showCentered();
Image snapshot = new Image();
snapshot.setUrl(ctx.getCanvas().toDataUrl("image/png"));

String sel = selected != null ? selected.getStId() : null;
final ExportDialog dialog = new ExportDialog(context, sel, flagTerm, includeInteractors, snapshot);
dialog.showCentered();
cleanCanvas(ctx);
}
}
}).scheduleRepeating(20);
}

public void exportPPT(final String diagramStId, final List<DiagramObject> selected, final Set<DiagramObject> flagged) {
//The following uses the SERVER because the widget needs to work when stand-alone
String url = DiagramFactory.SERVER + "/ContentService/exporter/diagram/"
+ diagramStId + ".pptx?profile="
+ DiagramColours.get().getSelectedProfileName();
// Add selected items
if (selected != null && !selected.isEmpty()) {
String sel = "&sel=" + selected.stream().map(n -> n.getReactomeId().toString()).collect(Collectors.joining(","));
url = url + sel;
}
//Add flagged items
if (flagged != null && !flagged.isEmpty()) {
String flg = "&flg=" + flagged.stream().map(n -> n.getReactomeId().toString()).collect(Collectors.joining(","));
url = url + flg;
}
Window.open(url, "_self", "");
}

public void notifyHoveredExpression(DiagramObject item, Coordinate model) {
Renderer renderer = rendererManager.getRenderer(item);
Double exp = (renderer != null) ? renderer.getExpressionHovered(item, model, column) : null;
Expand Down Expand Up @@ -493,7 +475,7 @@ public void render(Collection<DiagramObject> items, Context context) {
items = itemsDistribution.getAll("Reaction");
if (!items.isEmpty()) { //No need to check for null here
Renderer reactionRenderer = rendererManager.getRenderer("Reaction");
reactionRenderer.setColourProperties(reactions, colourProfileType);
reactionRenderer.setColourProperties(reactions, ColourProfileType.NORMAL);
reactionRenderer.setColourProperties(this.fadeOut, ColourProfileType.FADE_OUT);
for (DiagramObject item : items) {
if (item.getIsFadeOut() != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,6 @@
import java.util.Collection;
import java.util.Set;

import static org.reactome.web.diagram.events.CanvasExportRequestedEvent.Option;

/**
* @author Kostas Sidiropoulos <ksidiro@ebi.ac.uk>
*/
Expand Down Expand Up @@ -67,6 +65,8 @@ public class DiagramVisualiser extends SimplePanel implements Visualiser,

private boolean forceDraw = false;

private Boolean includeInteractors;

public DiagramVisualiser(EventBus eventBus) {
super();
this.eventBus = eventBus;
Expand Down Expand Up @@ -260,18 +260,15 @@ public void onAnalysisProfileChanged(AnalysisProfileChangedEvent event) {
}

@Override
public void exportView(Option option) {
public void exportView() {
if (context != null) {
String stId = context.getContent().getStableId();
switch (option) {
case IMAGE: canvas.exportImage(stId); break;
case PPTX: canvas.exportPPT(stId, layoutManager.getSelectedDiagramObjects(), layoutManager.getFlagged()); break;
}
canvas.showExportDialog(context, layoutManager.getSelected(), context.getFlagTerm(), includeInteractors);
}
}

@Override
public void flagItems(Set<DiagramObject> flaggedItems){
public void flagItems(Set<DiagramObject> flaggedItems, Boolean includeInteractors){
this.includeInteractors = includeInteractors;
layoutManager.setFlagged(flaggedItems);
forceDraw = true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
import com.google.gwt.user.client.ui.Image;
import org.reactome.web.diagram.client.visualisers.ehld.filters.FilterColour;
import org.reactome.web.diagram.client.visualisers.ehld.filters.FilterFactory;
import org.reactome.web.diagram.context.popups.ImageDownloadDialog;
import org.reactome.web.diagram.context.popups.export.ExportDialog;
import org.reactome.web.diagram.data.Context;
import org.reactome.web.diagram.util.position.MousePosition;
import org.reactome.web.diagram.util.svg.SVGUtil;
import org.vectomatic.dom.svg.*;
Expand Down Expand Up @@ -65,6 +66,8 @@ public abstract class AbstractSVGPanel extends AbsolutePanel {

protected boolean isSafari;

protected Boolean includeInteractors;

public AbstractSVGPanel(EventBus eventBus) {
this.eventBus = eventBus;
getElement().getStyle().setBackgroundColor("white");
Expand All @@ -76,23 +79,13 @@ public AbstractSVGPanel(EventBus eventBus) {
sb = new StringBuilder();
}

public void exportView(String stableId){
public void showExportDialog(final Context context, final String selected, final String flagged) {
if(svg != null) {
OMSVGSVGElement auxSVG = (OMSVGSVGElement) svg.cloneNode(true);
auxSVG.setViewBox(initialBB);

//Reset all transformations
sb.setLength(0);
sb.append("matrix(").append(initialTM.getA()).append(",").append(initialTM.getB()).append(",").append(initialTM.getC()).append(",")
.append(initialTM.getD()).append(",").append(initialTM.getE()).append(",").append(initialTM.getF()).append(")");
for (OMSVGElement svgLayer : getRootLayers(auxSVG)) {
svgLayer.setAttribute(SVGConstants.SVG_TRANSFORM_ATTRIBUTE, sb.toString());
}

Image image = new Image();
image.setUrl("data:image/svg+xml;base64," + btoa(auxSVG.getMarkup()));
final ImageDownloadDialog downloadDialogBox = new ImageDownloadDialog(image, "svg", stableId);
downloadDialogBox.showCentered();
Image snapshot = new Image();
snapshot.setUrl("data:image/svg+xml;base64," + btoa(auxSVG.getMarkup()));
final ExportDialog dialog = new ExportDialog(context, selected, flagged, includeInteractors, snapshot);
dialog.showCentered();
}
}

Expand Down Expand Up @@ -283,4 +276,17 @@ private OMElement getAnalysisText(OMElement element){
}
return rtn;
}

private void resetAllTransformations(OMSVGSVGElement auxSVG) {
auxSVG.setViewBox(initialBB);

//Reset all transformations
sb.setLength(0);
sb.append("matrix(").append(initialTM.getA()).append(",").append(initialTM.getB()).append(",").append(initialTM.getC()).append(",")
.append(initialTM.getD()).append(",").append(initialTM.getE()).append(",").append(initialTM.getF()).append(")");
for (OMSVGElement svgLayer : getRootLayers(auxSVG)) {
svgLayer.setAttribute(SVGConstants.SVG_TRANSFORM_ATTRIBUTE, sb.toString());
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,6 @@

import java.util.*;

import static org.reactome.web.diagram.events.CanvasExportRequestedEvent.Option;


/**
* @author Kostas Sidiropoulos <ksidiro@ebi.ac.uk>
*/
Expand Down Expand Up @@ -159,9 +156,15 @@ public void padding(int dX, int dY) {
}

@Override
public void exportView(Option option) {
public void exportView() {
if (context != null) {
exportView(context.getContent().getStableId());

String sel = null;
if (selected != null) {
sel = selected.getId().replace("REGION-", "");
}

showExportDialog(context, sel, context.getFlagTerm());
}
}

Expand Down Expand Up @@ -1192,8 +1195,9 @@ private void unFlagElement(OMElement element) {
}

@Override
public void flagItems(Set<DiagramObject> flaggedItems){
public void flagItems(Set<DiagramObject> flaggedItems, Boolean includeInteractors){
resetFlag();
this.includeInteractors = includeInteractors;
for (DiagramObject diagramObject : flaggedItems) {
if(diagramObject instanceof EHLDObject){
EHLDObject item = (EHLDObject) diagramObject;
Expand Down
Loading

0 comments on commit 5d90f97

Please sign in to comment.