Skip to content

Commit

Permalink
Merge pull request #5315 from nickgros/SWC-5787
Browse files Browse the repository at this point in the history
  • Loading branch information
nickgros authored Mar 6, 2024
2 parents 4b622df + 8478450 commit a8b91d4
Show file tree
Hide file tree
Showing 11 changed files with 325 additions and 122 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,8 @@
import org.sagebionetworks.web.client.widget.entity.EntityListRowBadgeViewImpl;
import org.sagebionetworks.web.client.widget.entity.EntityMetadataView;
import org.sagebionetworks.web.client.widget.entity.EntityMetadataViewImpl;
import org.sagebionetworks.web.client.widget.entity.EntityModalWidgetView;
import org.sagebionetworks.web.client.widget.entity.EntityModalWidgetViewImpl;
import org.sagebionetworks.web.client.widget.entity.EntityPageTopView;
import org.sagebionetworks.web.client.widget.entity.EntityPageTopViewImpl;
import org.sagebionetworks.web.client.widget.entity.EntitySearchBoxView;
Expand Down Expand Up @@ -1450,6 +1452,7 @@ protected void configure() {
.to(SqlDefinedEditorModalWidgetViewImpl.class);
bind(EntityViewScopeEditorModalWidgetView.class)
.to(EntityViewScopeEditorModalWidgetViewImpl.class);
bind(EntityModalWidgetView.class).to(EntityModalWidgetViewImpl.class);
bind(ChallengeWidgetView.class).to(ChallengeWidgetViewImpl.class);
bind(SelectTeamModalView.class).to(SelectTeamModalViewImpl.class);
bind(ApproveUserAccessModalView.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,23 @@ public interface BooleanCallback {
void run(boolean value);
}

String entityId;
boolean show;
public String entityId;
public boolean show;

@JsNullable
Callback onClose;
public Callback onClose;

@JsNullable
String initialTab; // "METADATA" | "ANNOTATIONS"
public String initialTab; // "METADATA" | "ANNOTATIONS"

@JsNullable
boolean showTabs;
public boolean showTabs;

@JsNullable
Double versionNumber;
public Long versionNumber;

@JsNullable
BooleanCallback onEditModeChanged;
public BooleanCallback onEditModeChanged;

@JsOverlay
public static EntityModalProps create(
Expand All @@ -50,7 +50,7 @@ public static EntityModalProps create(
EntityModalProps props = new EntityModalProps();
props.entityId = entityId;
if (versionNumber != null) {
props.versionNumber = versionNumber.doubleValue();
props.versionNumber = versionNumber;
}
props.show = show;
props.onClose = onClose;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,19 @@

public class EntityMetadata implements Presenter {

private EntityMetadataView view;
private AnnotationsRendererWidget annotationsWidget;
private DoiWidgetV2 doiWidgetV2;
private final EntityMetadataView view;
private final AnnotationsRendererWidget annotationsWidget;
private final DoiWidgetV2 doiWidgetV2;
private VersionHistoryWidget versionHistoryWidget;
private SynapseJavascriptClient jsClient;
private SynapseJSNIUtils jsni;
private PortalGinInjector ginInjector;
private ContainerItemCountWidget containerItemCountWidget;
private org.sagebionetworks.web.client.widget.entity.restriction.v2.RestrictionWidget restrictionWidgetV2;
private final SynapseJavascriptClient jsClient;
private final SynapseJSNIUtils jsni;
private final PortalGinInjector ginInjector;
private final ContainerItemCountWidget containerItemCountWidget;
private final org.sagebionetworks.web.client.widget.entity.restriction.v2.RestrictionWidget restrictionWidgetV2;
private EntityActionMenu actionMenu;
private final EntityModalWidget entityModalWidget;

private boolean annotationsAreVisible = false;

@Inject
public EntityMetadata(
Expand All @@ -58,7 +61,8 @@ public EntityMetadata(
SynapseJSNIUtils jsni,
RestrictionWidget restrictionWidgetV2,
ContainerItemCountWidget containerItemCountWidget,
PortalGinInjector ginInjector
PortalGinInjector ginInjector,
EntityModalWidget entityModalWidget
) {
this.view = view;
this.doiWidgetV2 = doiWidgetV2;
Expand All @@ -68,9 +72,11 @@ public EntityMetadata(
this.restrictionWidgetV2 = restrictionWidgetV2;
this.containerItemCountWidget = containerItemCountWidget;
this.ginInjector = ginInjector;
this.entityModalWidget = entityModalWidget;
this.view.setPresenter(this);
this.view.setDoiWidget(doiWidgetV2);
this.view.setAnnotationsRendererWidget(annotationsWidget);
this.view.setEntityModalWidget(entityModalWidget);
this.view.setRestrictionWidgetV2(restrictionWidgetV2);
this.view.setContainerItemCountWidget(containerItemCountWidget);
restrictionWidgetV2.setShowChangeLink(true);
Expand Down Expand Up @@ -100,7 +106,13 @@ public void configure(
this.actionMenu = actionMenu;
Entity en = bundle.getEntity();
view.setEntityId(en.getId());
view.setVersionNumber(versionNumber);
entityModalWidget.configure(
en.getId(),
versionNumber,
() -> setAnnotationsVisible(false),
"ANNOTATIONS",
false
);

// See comments on SWC-5763
// TL;DR: we plan to show the description at some point, but not until we implement new designs
Expand All @@ -112,15 +124,7 @@ public void configure(
setAnnotationsVisible(false);
actionMenu.setActionListener(
Action.SHOW_ANNOTATIONS,
(action, e) -> {
if (DisplayUtils.isInTestWebsite(ginInjector.getCookieProvider())) {
// In alpha mode, this pops up a modal. We always want to show annotations when this is clicked
setAnnotationsVisible(true);
} else {
// Current non-alpha implementation is a toggle, which is why we need to flip the state when not in alpha mode.
setAnnotationsVisible(!view.getAnnotationsVisible());
}
}
(action, e) -> setAnnotationsVisible(!annotationsAreVisible)
);

actionMenu.setActionListener(
Expand Down Expand Up @@ -188,11 +192,15 @@ public void onFailure(Throwable t) {
);
}

@Override
public void setAnnotationsVisible(boolean visible) {
annotationsAreVisible = visible;
if (DisplayUtils.isInTestWebsite(ginInjector.getCookieProvider())) {
view.setAnnotationsModalVisible(visible);
entityModalWidget.setOpen(visible);
view.setAnnotationsVisible(false);
} else {
view.setAnnotationsVisible(visible);
entityModalWidget.setOpen(false);
}
}

Expand All @@ -219,9 +227,8 @@ public void onSuccess(List<UploadDestination> uploadDestinations) {
} else if (
uploadDestinations.get(0) instanceof ExternalUploadDestination
) {
ExternalUploadDestination externalUploadDestination = (ExternalUploadDestination) uploadDestinations.get(
0
);
ExternalUploadDestination externalUploadDestination =
(ExternalUploadDestination) uploadDestinations.get(0);
String externalUrl = externalUploadDestination.getUrl();
UploadType type = externalUploadDestination.getUploadType();
if (type == UploadType.SFTP) {
Expand All @@ -234,9 +241,8 @@ public void onSuccess(List<UploadDestination> uploadDestinations) {
} else if (
uploadDestinations.get(0) instanceof ExternalS3UploadDestination
) {
ExternalS3UploadDestination externalUploadDestination = (ExternalS3UploadDestination) uploadDestinations.get(
0
);
ExternalS3UploadDestination externalUploadDestination =
(ExternalS3UploadDestination) uploadDestinations.get(0);
String description =
"s3://" + externalUploadDestination.getBucket() + "/";
if (externalUploadDestination.getBaseKey() != null) {
Expand All @@ -248,9 +254,10 @@ public void onSuccess(List<UploadDestination> uploadDestinations) {
0
) instanceof ExternalGoogleCloudUploadDestination
) {
ExternalGoogleCloudUploadDestination externalUploadDestination = (ExternalGoogleCloudUploadDestination) uploadDestinations.get(
0
);
ExternalGoogleCloudUploadDestination externalUploadDestination =
(ExternalGoogleCloudUploadDestination) uploadDestinations.get(
0
);
String description =
"gs://" + externalUploadDestination.getBucket() + "/";
if (externalUploadDestination.getBaseKey() != null) {
Expand All @@ -262,9 +269,10 @@ public void onSuccess(List<UploadDestination> uploadDestinations) {
0
) instanceof ExternalObjectStoreUploadDestination
) {
ExternalObjectStoreUploadDestination destination = (ExternalObjectStoreUploadDestination) uploadDestinations.get(
0
);
ExternalObjectStoreUploadDestination destination =
(ExternalObjectStoreUploadDestination) uploadDestinations.get(
0
);
String description =
destination.getEndpointUrl() + "/" + destination.getBucket();
view.setUploadDestinationText(description);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,13 @@
public interface EntityMetadataView extends IsWidget {
public interface Presenter {
void toggleAnnotationsVisible();
void setAnnotationsVisible(boolean visible);
}

public void setPresenter(Presenter presenter);

public void setDetailedMetadataVisible(boolean visible);

void setAnnotationsModalVisible(boolean visible);

boolean getAnnotationsVisible();

void setAnnotationsVisible(boolean visible);

void setDescriptionVisible(boolean visible);
Expand All @@ -31,6 +28,8 @@ public interface Presenter {

void setRestrictionWidgetV2(IsWidget restrictionWidget);

void setEntityModalWidget(IsWidget widget);

void setEntityId(String text);

void setUploadDestinationPanelVisible(boolean isVisible);
Expand All @@ -44,6 +43,4 @@ public interface Presenter {
void setContainerItemCountWidget(IsWidget w);

void setDescription(String description);

void setVersionNumber(Long versionNumber);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,14 @@
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.*;
import com.google.inject.Inject;
import org.gwtbootstrap3.client.ui.Collapse;
import org.gwtbootstrap3.client.ui.html.Div;
import org.gwtbootstrap3.client.ui.html.Paragraph;
import org.gwtbootstrap3.client.ui.html.Span;
import org.gwtbootstrap3.client.ui.html.Text;
import org.sagebionetworks.web.client.GlobalApplicationState;
import org.sagebionetworks.web.client.context.SynapseReactClientFullContextPropsProvider;
import org.sagebionetworks.web.client.jsinterop.EntityModalProps;
import org.sagebionetworks.web.client.jsinterop.React;
import org.sagebionetworks.web.client.jsinterop.ReactNode;
import org.sagebionetworks.web.client.jsinterop.SRC;
import org.sagebionetworks.web.client.widget.IconSvg;
import org.sagebionetworks.web.client.widget.ReactComponentDiv;

public class EntityMetadataViewImpl
extends Composite
Expand All @@ -36,10 +24,6 @@ interface EntityMetadataViewImplUiBinder
);

private Presenter presenter;
private String entityId;
private Long versionNumber;
private final SynapseReactClientFullContextPropsProvider propsProvider;
private final GlobalApplicationState globalApplicationState;

@UiField
HTMLPanel detailedMetadata;
Expand Down Expand Up @@ -87,15 +71,10 @@ interface EntityMetadataViewImplUiBinder
Paragraph descriptionText;

@UiField
ReactComponentDiv annotationsModalContainer;
SimplePanel entityModalWidgetContainer;

@Inject
public EntityMetadataViewImpl(
final SynapseReactClientFullContextPropsProvider propsProvider,
final GlobalApplicationState globalApplicationState
) {
this.propsProvider = propsProvider;
this.globalApplicationState = globalApplicationState;
public EntityMetadataViewImpl() {
initWidget(uiBinder.createAndBindUi(this));
idField.addClickHandler(event -> idField.selectAll());
annotationsContentCloseButton.addClickHandler(event ->
Expand Down Expand Up @@ -135,30 +114,6 @@ public void setUploadDestinationText(String text) {
uploadDestinationField.setText(text);
}

@Override
public void setAnnotationsModalVisible(boolean visible) {
if (visible) {
boolean showTabs = false;
EntityModalProps props = EntityModalProps.create(
entityId,
versionNumber,
visible,
() -> setAnnotationsModalVisible(false),
"ANNOTATIONS",
showTabs,
globalApplicationState::setIsEditing
);
ReactNode component = React.createElementWithSynapseContext(
SRC.SynapseComponents.EntityModal,
props,
propsProvider.getJsInteropContextProps()
);
annotationsModalContainer.render(component);
} else {
annotationsModalContainer.clear();
}
}

@Override
public void setAnnotationsVisible(boolean visible) {
if (visible) {
Expand All @@ -168,11 +123,6 @@ public void setAnnotationsVisible(boolean visible) {
}
}

@Override
public boolean getAnnotationsVisible() {
return annotationsContent.isShown();
}

@Override
public void setDescriptionVisible(boolean visible) {
descriptionContainer.setVisible(visible);
Expand All @@ -199,13 +149,7 @@ public void setDetailedMetadataVisible(boolean visible) {

@Override
public void setEntityId(String entityId) {
this.entityId = entityId;
idField.setText(this.entityId);
}

@Override
public void setVersionNumber(Long versionNumber) {
this.versionNumber = versionNumber;
idField.setText(entityId);
}

@Override
Expand All @@ -219,6 +163,12 @@ public void setRestrictionWidgetV2(IsWidget restrictionWidget) {
restrictionPanelV2.add(restrictionWidget);
}

@Override
public void setEntityModalWidget(IsWidget entityModalWidget) {
entityModalWidgetContainer.clear();
entityModalWidgetContainer.add(entityModalWidget);
}

@Override
public void setRestrictionWidgetV2Visible(boolean visible) {
restrictionPanelV2.setVisible(visible);
Expand Down
Loading

0 comments on commit a8b91d4

Please sign in to comment.