Skip to content

Commit

Permalink
Merge pull request #5247 from hallieswan/SWC-6618
Browse files Browse the repository at this point in the history
SWC-6618: show projects associated with an AR
  • Loading branch information
hallieswan authored Jan 3, 2024
2 parents 0d8a3bf + b9595af commit 6f689ab
Show file tree
Hide file tree
Showing 28 changed files with 305 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package org.sagebionetworks.web.client.jsinterop;

import jsinterop.annotations.JsOverlay;
import jsinterop.annotations.JsPackage;
import jsinterop.annotations.JsType;

@JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object")
public class AccessRequirementRelatedProjectsListProps
extends ReactComponentProps {

String accessRequirementId;

@JsOverlay
public static AccessRequirementRelatedProjectsListProps create(
String accessRequirementId
) {
AccessRequirementRelatedProjectsListProps props =
new AccessRequirementRelatedProjectsListProps();
props.accessRequirementId = accessRequirementId;
return props;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ public static class SynapseComponents {
public static ReactComponentType<AccessRequirementListProps> AccessRequirementList;
public static ReactComponentType<TableColumnSchemaFormProps> TableColumnSchemaForm;
public static ReactComponentType<EntityHeaderTableProps> EntityHeaderTable;
public static ReactComponentType<AccessRequirementRelatedProjectsListProps> AccessRequirementRelatedProjectsList;

/**
* Pushes a global toast message. In SWC, you should use {@link DisplayUtils#notify}, rather than calling this method directly.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public class ACTAccessRequirementWidget
DeleteAccessRequirementButton deleteAccessRequirementButton;
TeamSubjectsWidget teamSubjectsWidget;
EntitySubjectsWidget entitySubjectsWidget;
AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList;
String submissionId;
LazyLoadHelper lazyLoadHelper;
AuthenticationController authController;
Expand All @@ -58,6 +59,7 @@ public ACTAccessRequirementWidget(
PortalGinInjector ginInjector,
TeamSubjectsWidget teamSubjectsWidget,
EntitySubjectsWidget entitySubjectsWidget,
AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList,
CreateAccessRequirementButton createAccessRequirementButton,
DeleteAccessRequirementButton deleteAccessRequirementButton,
DataAccessClientAsync dataAccessClient,
Expand All @@ -74,6 +76,8 @@ public ACTAccessRequirementWidget(
this.ginInjector = ginInjector;
this.teamSubjectsWidget = teamSubjectsWidget;
this.entitySubjectsWidget = entitySubjectsWidget;
this.accessRequirementRelatedProjectsList =
accessRequirementRelatedProjectsList;
this.createAccessRequirementButton = createAccessRequirementButton;
this.deleteAccessRequirementButton = deleteAccessRequirementButton;
this.dataAccessClient = dataAccessClient;
Expand All @@ -90,6 +94,9 @@ public ACTAccessRequirementWidget(
view.setDeleteAccessRequirementWidget(deleteAccessRequirementButton);
view.setTeamSubjectsWidget(teamSubjectsWidget);
view.setEntitySubjectsWidget(entitySubjectsWidget);
view.setAccessRequirementRelatedProjectsList(
accessRequirementRelatedProjectsList
);

view.setSynAlert(synAlert);
view.setManageAccessWidget(manageAccessButton);
Expand Down Expand Up @@ -136,6 +143,7 @@ public void onSuccess(String rootWikiId) {
deleteAccessRequirementButton.configure(ar, refreshCallback);
teamSubjectsWidget.configure(ar.getSubjectIds());
entitySubjectsWidget.configure(ar.getSubjectIds());
accessRequirementRelatedProjectsList.configure(ar.getId().toString());
manageAccessButton.configure(ar);
convertACTAccessRequirementButton.configure(ar, refreshCallback);
view.setAccessRequirementName(ar.getName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ public interface ACTAccessRequirementWidgetView
void setTeamSubjectsWidget(IsWidget w);
void setEntitySubjectsWidget(IsWidget w);

void setAccessRequirementRelatedProjectsList(
IsWidget accessRequirementRelatedProjectsList
);

void setVisible(boolean visible);

void setSynAlert(IsWidget w);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ public class ACTAccessRequirementWidgetViewImpl
@UiField
Div entitySubjectsWidgetContainer;

@UiField
Div accessRequirementRelatedProjectsListContainer;

@UiField
Div synAlertContainer;

Expand Down Expand Up @@ -189,6 +192,12 @@ public void setEntitySubjectsWidget(IsWidget w) {
entitySubjectsWidgetContainer.add(w);
}

@Override
public void setAccessRequirementRelatedProjectsList(IsWidget w) {
accessRequirementRelatedProjectsListContainer.clear();
accessRequirementRelatedProjectsListContainer.add(w);
}

@Override
public void setVisible(boolean visible) {
w.setVisible(visible);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package org.sagebionetworks.web.client.widget.accessrequirements;

import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
import org.sagebionetworks.web.client.jsinterop.AccessRequirementRelatedProjectsListProps;
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.utils.CallbackP;
import org.sagebionetworks.web.client.widget.ReactComponentDiv;
import org.sagebionetworks.web.client.widget.asynch.IsACTMemberAsyncHandler;

public class AccessRequirementRelatedProjectsList implements IsWidget {

ReactComponentDiv container;
public IsACTMemberAsyncHandler isACTMemberAsyncHandler;

@Inject
public AccessRequirementRelatedProjectsList(
IsACTMemberAsyncHandler isACTMemberAsyncHandler
) {
container = new ReactComponentDiv();
this.isACTMemberAsyncHandler = isACTMemberAsyncHandler;
container.setVisible(false);
}

public void configure(String accessRequirementId) {
AccessRequirementRelatedProjectsListProps props =
AccessRequirementRelatedProjectsListProps.create(accessRequirementId);
ReactNode component = React.createElementWithThemeContext(
SRC.SynapseComponents.AccessRequirementRelatedProjectsList,
props
);
container.render(component);
showIfACTMember();
}

private void showIfACTMember() {
isACTMemberAsyncHandler.isACTActionAvailable(
new CallbackP<Boolean>() {
@Override
public void invoke(Boolean isACTMember) {
container.setVisible(isACTMember);
}
}
);
}

@Override
public Widget asWidget() {
return container;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@ public class LockAccessRequirementWidget implements IsWidget {
DeleteAccessRequirementButton deleteAccessRequirementButton;
TeamSubjectsWidget teamSubjectsWidget;
EntitySubjectsWidget entitySubjectsWidget;
AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList;

@Inject
public LockAccessRequirementWidget(
LockAccessRequirementWidgetView view,
TeamSubjectsWidget teamSubjectsWidget,
EntitySubjectsWidget entitySubjectsWidget,
AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList,
DeleteAccessRequirementButton deleteAccessRequirementButton
) {
this.view = view;
Expand All @@ -28,6 +30,9 @@ public LockAccessRequirementWidget(
view.setDeleteAccessRequirementWidget(deleteAccessRequirementButton);
view.setTeamSubjectsWidget(teamSubjectsWidget);
view.setEntitySubjectsWidget(entitySubjectsWidget);
view.setAccessRequirementRelatedProjectsList(
accessRequirementRelatedProjectsList
);
}

public void setRequirement(
Expand All @@ -38,6 +43,7 @@ public void setRequirement(
deleteAccessRequirementButton.configure(ar, refreshCallback);
teamSubjectsWidget.configure(ar.getSubjectIds());
entitySubjectsWidget.configure(ar.getSubjectIds());
accessRequirementRelatedProjectsList.configure(ar.getId().toString());
}

public void addStyleNames(String styleNames) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,8 @@ public interface LockAccessRequirementWidgetView extends IsWidget {
void setTeamSubjectsWidget(IsWidget w);

void setEntitySubjectsWidget(IsWidget entitySubjectsWidget);

void setAccessRequirementRelatedProjectsList(
IsWidget accessRequirementRelatedProjectsList
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ public class LockAccessRequirementWidgetViewImpl
@UiField
Div entitySubjectsWidgetContainer;

@UiField
Div accessRequirementRelatedProjectsListContainer;

public interface Binder
extends UiBinder<Widget, LockAccessRequirementWidgetViewImpl> {}

Expand Down Expand Up @@ -56,4 +59,10 @@ public void setEntitySubjectsWidget(IsWidget entitySubjectsWidget) {
entitySubjectsWidgetContainer.clear();
entitySubjectsWidgetContainer.add(w);
}

@Override
public void setAccessRequirementRelatedProjectsList(IsWidget w) {
accessRequirementRelatedProjectsListContainer.clear();
accessRequirementRelatedProjectsListContainer.add(w);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ public class ManagedACTAccessRequirementWidget
IntendedDataUseReportButton iduReportButton;
TeamSubjectsWidget teamSubjectsWidget;
EntitySubjectsWidget entitySubjectsWidget;
AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList;
ReviewAccessRequestsButton reviewAccessRequestsButton;
String submissionId;
LazyLoadHelper lazyLoadHelper;
Expand All @@ -60,6 +61,7 @@ public ManagedACTAccessRequirementWidget(
PortalGinInjector ginInjector,
TeamSubjectsWidget teamSubjectsWidget,
EntitySubjectsWidget entitySubjectsWidget,
AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList,
CreateAccessRequirementButton createAccessRequirementButton,
DeleteAccessRequirementButton deleteAccessRequirementButton,
ReviewAccessRequestsButton reviewAccessRequestsButton,
Expand All @@ -79,6 +81,8 @@ public ManagedACTAccessRequirementWidget(
this.ginInjector = ginInjector;
this.teamSubjectsWidget = teamSubjectsWidget;
this.entitySubjectsWidget = entitySubjectsWidget;
this.accessRequirementRelatedProjectsList =
accessRequirementRelatedProjectsList;
this.createAccessRequirementButton = createAccessRequirementButton;
this.deleteAccessRequirementButton = deleteAccessRequirementButton;
this.reviewAccessRequestsButton = reviewAccessRequestsButton;
Expand All @@ -101,6 +105,9 @@ public ManagedACTAccessRequirementWidget(
view.setManageAccessWidget(manageAccessButton);
view.setTeamSubjectsWidget(teamSubjectsWidget);
view.setEntitySubjectsWidget(entitySubjectsWidget);
view.setAccessRequirementRelatedProjectsList(
accessRequirementRelatedProjectsList
);
view.setIDUReportButton(iduReportButton);
view.setSynAlert(synAlert);
Callback loadDataCallback = new Callback() {
Expand Down Expand Up @@ -151,10 +158,12 @@ public void onSuccess(String rootWikiId) {
manageAccessButton.configure(ar);
teamSubjectsWidget.configure(ar.getSubjectIds());
entitySubjectsWidget.configure(ar.getSubjectIds());
accessRequirementRelatedProjectsList.configure(ar.getId().toString());
lazyLoadHelper.setIsConfigured();
view.setAccessRequirementID(ar.getId().toString());
isACTMemberAsyncHandler.isACTActionAvailable(isACT -> {
view.setAccessRequirementIDVisible(isACT);
view.setCoveredEntitiesHeadingVisible(isACT);
});
view.setAccessRequirementName(ar.getName());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,5 +89,11 @@ public interface Presenter {
void handleException(Throwable t);
}

void setCoveredEntitiesHeadingVisible(boolean visible);

void setEntitySubjectsWidget(IsWidget entitySubjectsWidget);

void setAccessRequirementRelatedProjectsList(
IsWidget accessRequirementRelatedProjectsList
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,15 @@ public class ManagedACTAccessRequirementWidgetViewImpl
@UiField
Div teamSubjectsWidgetContainer;

@UiField
Div coveredEntitiesHeadingUI;

@UiField
Div entitySubjectsWidgetContainer;

@UiField
Div accessRequirementRelatedProjectsListContainer;

@UiField
Div synAlertContainer;

Expand Down Expand Up @@ -279,6 +285,17 @@ public void setEntitySubjectsWidget(IsWidget w) {
entitySubjectsWidgetContainer.add(w);
}

@Override
public void setCoveredEntitiesHeadingVisible(boolean visible) {
coveredEntitiesHeadingUI.setVisible(visible);
}

@Override
public void setAccessRequirementRelatedProjectsList(IsWidget w) {
accessRequirementRelatedProjectsListContainer.clear();
accessRequirementRelatedProjectsListContainer.add(w);
}

@Override
public void setVisible(boolean visible) {
w.setVisible(visible);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ public class SelfSignAccessRequirementWidget
DeleteAccessRequirementButton deleteAccessRequirementButton;
TeamSubjectsWidget teamSubjectsWidget;
EntitySubjectsWidget entitySubjectsWidget;
AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList;
LazyLoadHelper lazyLoadHelper;
PopupUtilsView popupUtils;
ReviewAccessorsButton manageAccessButton;
Expand All @@ -63,6 +64,7 @@ public SelfSignAccessRequirementWidget(
SynapseAlert synAlert,
TeamSubjectsWidget teamSubjectsWidget,
EntitySubjectsWidget entitySubjectsWidget,
AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList,
CreateAccessRequirementButton createAccessRequirementButton,
DeleteAccessRequirementButton deleteAccessRequirementButton,
LazyLoadHelper lazyLoadHelper,
Expand All @@ -81,6 +83,8 @@ public SelfSignAccessRequirementWidget(
this.authController = authController;
this.teamSubjectsWidget = teamSubjectsWidget;
this.entitySubjectsWidget = entitySubjectsWidget;
this.accessRequirementRelatedProjectsList =
accessRequirementRelatedProjectsList;
this.createAccessRequirementButton = createAccessRequirementButton;
this.deleteAccessRequirementButton = deleteAccessRequirementButton;
this.lazyLoadHelper = lazyLoadHelper;
Expand All @@ -95,6 +99,9 @@ public SelfSignAccessRequirementWidget(
view.setDeleteAccessRequirementWidget(deleteAccessRequirementButton);
view.setTeamSubjectsWidget(teamSubjectsWidget);
view.setEntitySubjectsWidget(entitySubjectsWidget);
view.setAccessRequirementRelatedProjectsList(
accessRequirementRelatedProjectsList
);
view.setManageAccessWidget(manageAccessButton);
Callback loadDataCallback = new Callback() {
@Override
Expand Down Expand Up @@ -139,10 +146,12 @@ public void onSuccess(String rootWikiId) {
deleteAccessRequirementButton.configure(ar, refreshCallback);
teamSubjectsWidget.configure(ar.getSubjectIds());
entitySubjectsWidget.configure(ar.getSubjectIds());
accessRequirementRelatedProjectsList.configure(ar.getId().toString());
manageAccessButton.configure(ar);
view.setAccessRequirementID(ar.getId().toString());
isACTMemberAsyncHandler.isACTActionAvailable(isACT -> {
view.setAccessRequirementIDVisible(isACT);
view.setCoveredEntitiesHeadingVisible(isACT);
});
lazyLoadHelper.setIsConfigured();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,5 +55,11 @@ public interface Presenter {
void onValidateProfile();
}

void setCoveredEntitiesHeadingVisible(boolean visible);

void setEntitySubjectsWidget(IsWidget entitySubjectsWidget);

void setAccessRequirementRelatedProjectsList(
IsWidget accessRequirementRelatedProjectsList
);
}
Loading

0 comments on commit 6f689ab

Please sign in to comment.