Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SWC-6618: show projects associated with an AR #5247

Merged
merged 1 commit into from
Jan 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only show the "Covered Entities" heading when the projects list and entities table are shown, i.e. when the user is ACT

});
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