From b9595af930d57fb2941b6f8a634ef666e829ca2a Mon Sep 17 00:00:00 2001 From: Hallie Swan <26949006+hallieswan@users.noreply.github.com> Date: Fri, 22 Dec 2023 09:47:38 -0800 Subject: [PATCH] SWC-6618: show projects associated with an AR --- ...ssRequirementRelatedProjectsListProps.java | 22 ++++++++ .../web/client/jsinterop/SRC.java | 1 + .../ACTAccessRequirementWidget.java | 8 +++ .../ACTAccessRequirementWidgetView.java | 4 ++ .../ACTAccessRequirementWidgetViewImpl.java | 9 ++++ .../AccessRequirementRelatedProjectsList.java | 54 +++++++++++++++++++ .../LockAccessRequirementWidget.java | 6 +++ .../LockAccessRequirementWidgetView.java | 4 ++ .../LockAccessRequirementWidgetViewImpl.java | 9 ++++ .../ManagedACTAccessRequirementWidget.java | 9 ++++ ...ManagedACTAccessRequirementWidgetView.java | 6 +++ ...gedACTAccessRequirementWidgetViewImpl.java | 17 ++++++ .../SelfSignAccessRequirementWidget.java | 9 ++++ .../SelfSignAccessRequirementWidgetView.java | 6 +++ ...lfSignAccessRequirementWidgetViewImpl.java | 17 ++++++ .../TermsOfUseAccessRequirementWidget.java | 9 ++++ ...TermsOfUseAccessRequirementWidgetView.java | 6 +++ ...sOfUseAccessRequirementWidgetViewImpl.java | 17 ++++++ .../ACTAccessRequirementWidgetViewImpl.ui.xml | 8 +++ ...LockAccessRequirementWidgetViewImpl.ui.xml | 8 +++ ...dACTAccessRequirementWidgetViewImpl.ui.xml | 12 +++++ ...SignAccessRequirementWidgetViewImpl.ui.xml | 12 +++++ ...fUseAccessRequirementWidgetViewImpl.ui.xml | 12 +++++ src/main/webapp/sass/_core.scss | 20 +++++++ .../ACTAccessRequirementWidgetTest.java | 5 ++ ...ManagedACTAccessRequirementWidgetTest.java | 5 ++ .../SelfSignAccessRequirementWidgetTest.java | 5 ++ ...TermsOfUseAccessRequirementWidgetTest.java | 5 ++ 28 files changed, 305 insertions(+) create mode 100644 src/main/java/org/sagebionetworks/web/client/jsinterop/AccessRequirementRelatedProjectsListProps.java create mode 100644 src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/AccessRequirementRelatedProjectsList.java diff --git a/src/main/java/org/sagebionetworks/web/client/jsinterop/AccessRequirementRelatedProjectsListProps.java b/src/main/java/org/sagebionetworks/web/client/jsinterop/AccessRequirementRelatedProjectsListProps.java new file mode 100644 index 0000000000..2b80efc12a --- /dev/null +++ b/src/main/java/org/sagebionetworks/web/client/jsinterop/AccessRequirementRelatedProjectsListProps.java @@ -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; + } +} diff --git a/src/main/java/org/sagebionetworks/web/client/jsinterop/SRC.java b/src/main/java/org/sagebionetworks/web/client/jsinterop/SRC.java index 9f4d9af6f2..f1ad4e67e0 100644 --- a/src/main/java/org/sagebionetworks/web/client/jsinterop/SRC.java +++ b/src/main/java/org/sagebionetworks/web/client/jsinterop/SRC.java @@ -63,6 +63,7 @@ public static class SynapseComponents { public static ReactComponentType AccessRequirementList; public static ReactComponentType TableColumnSchemaForm; public static ReactComponentType EntityHeaderTable; + public static ReactComponentType AccessRequirementRelatedProjectsList; /** * Pushes a global toast message. In SWC, you should use {@link DisplayUtils#notify}, rather than calling this method directly. diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidget.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidget.java index 109d19bbe7..ed3cc85c64 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidget.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidget.java @@ -42,6 +42,7 @@ public class ACTAccessRequirementWidget DeleteAccessRequirementButton deleteAccessRequirementButton; TeamSubjectsWidget teamSubjectsWidget; EntitySubjectsWidget entitySubjectsWidget; + AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList; String submissionId; LazyLoadHelper lazyLoadHelper; AuthenticationController authController; @@ -58,6 +59,7 @@ public ACTAccessRequirementWidget( PortalGinInjector ginInjector, TeamSubjectsWidget teamSubjectsWidget, EntitySubjectsWidget entitySubjectsWidget, + AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList, CreateAccessRequirementButton createAccessRequirementButton, DeleteAccessRequirementButton deleteAccessRequirementButton, DataAccessClientAsync dataAccessClient, @@ -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; @@ -90,6 +94,9 @@ public ACTAccessRequirementWidget( view.setDeleteAccessRequirementWidget(deleteAccessRequirementButton); view.setTeamSubjectsWidget(teamSubjectsWidget); view.setEntitySubjectsWidget(entitySubjectsWidget); + view.setAccessRequirementRelatedProjectsList( + accessRequirementRelatedProjectsList + ); view.setSynAlert(synAlert); view.setManageAccessWidget(manageAccessButton); @@ -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()); diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidgetView.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidgetView.java index b9638714e9..44612da330 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidgetView.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidgetView.java @@ -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); diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidgetViewImpl.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidgetViewImpl.java index c6fc860009..86c543ed71 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidgetViewImpl.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidgetViewImpl.java @@ -53,6 +53,9 @@ public class ACTAccessRequirementWidgetViewImpl @UiField Div entitySubjectsWidgetContainer; + @UiField + Div accessRequirementRelatedProjectsListContainer; + @UiField Div synAlertContainer; @@ -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); diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/AccessRequirementRelatedProjectsList.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/AccessRequirementRelatedProjectsList.java new file mode 100644 index 0000000000..b0ef409197 --- /dev/null +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/AccessRequirementRelatedProjectsList.java @@ -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() { + @Override + public void invoke(Boolean isACTMember) { + container.setVisible(isACTMember); + } + } + ); + } + + @Override + public Widget asWidget() { + return container; + } +} diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/LockAccessRequirementWidget.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/LockAccessRequirementWidget.java index c82386e4c0..b7de2e1c83 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/LockAccessRequirementWidget.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/LockAccessRequirementWidget.java @@ -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; @@ -28,6 +30,9 @@ public LockAccessRequirementWidget( view.setDeleteAccessRequirementWidget(deleteAccessRequirementButton); view.setTeamSubjectsWidget(teamSubjectsWidget); view.setEntitySubjectsWidget(entitySubjectsWidget); + view.setAccessRequirementRelatedProjectsList( + accessRequirementRelatedProjectsList + ); } public void setRequirement( @@ -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) { diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/LockAccessRequirementWidgetView.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/LockAccessRequirementWidgetView.java index 6bcc9123b6..b2e4d40530 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/LockAccessRequirementWidgetView.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/LockAccessRequirementWidgetView.java @@ -10,4 +10,8 @@ public interface LockAccessRequirementWidgetView extends IsWidget { void setTeamSubjectsWidget(IsWidget w); void setEntitySubjectsWidget(IsWidget entitySubjectsWidget); + + void setAccessRequirementRelatedProjectsList( + IsWidget accessRequirementRelatedProjectsList + ); } diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/LockAccessRequirementWidgetViewImpl.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/LockAccessRequirementWidgetViewImpl.java index db02cf54be..6fd51ff9d7 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/LockAccessRequirementWidgetViewImpl.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/LockAccessRequirementWidgetViewImpl.java @@ -19,6 +19,9 @@ public class LockAccessRequirementWidgetViewImpl @UiField Div entitySubjectsWidgetContainer; + @UiField + Div accessRequirementRelatedProjectsListContainer; + public interface Binder extends UiBinder {} @@ -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); + } } diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ManagedACTAccessRequirementWidget.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ManagedACTAccessRequirementWidget.java index 54d3e874e5..5a7d3b9ea2 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ManagedACTAccessRequirementWidget.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ManagedACTAccessRequirementWidget.java @@ -41,6 +41,7 @@ public class ManagedACTAccessRequirementWidget IntendedDataUseReportButton iduReportButton; TeamSubjectsWidget teamSubjectsWidget; EntitySubjectsWidget entitySubjectsWidget; + AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList; ReviewAccessRequestsButton reviewAccessRequestsButton; String submissionId; LazyLoadHelper lazyLoadHelper; @@ -60,6 +61,7 @@ public ManagedACTAccessRequirementWidget( PortalGinInjector ginInjector, TeamSubjectsWidget teamSubjectsWidget, EntitySubjectsWidget entitySubjectsWidget, + AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList, CreateAccessRequirementButton createAccessRequirementButton, DeleteAccessRequirementButton deleteAccessRequirementButton, ReviewAccessRequestsButton reviewAccessRequestsButton, @@ -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; @@ -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() { @@ -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()); } diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ManagedACTAccessRequirementWidgetView.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ManagedACTAccessRequirementWidgetView.java index 3d627c1188..577d6769c6 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ManagedACTAccessRequirementWidgetView.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ManagedACTAccessRequirementWidgetView.java @@ -89,5 +89,11 @@ public interface Presenter { void handleException(Throwable t); } + void setCoveredEntitiesHeadingVisible(boolean visible); + void setEntitySubjectsWidget(IsWidget entitySubjectsWidget); + + void setAccessRequirementRelatedProjectsList( + IsWidget accessRequirementRelatedProjectsList + ); } diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ManagedACTAccessRequirementWidgetViewImpl.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ManagedACTAccessRequirementWidgetViewImpl.java index d8218f8fe8..9e3b8dabfb 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ManagedACTAccessRequirementWidgetViewImpl.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/ManagedACTAccessRequirementWidgetViewImpl.java @@ -82,9 +82,15 @@ public class ManagedACTAccessRequirementWidgetViewImpl @UiField Div teamSubjectsWidgetContainer; + @UiField + Div coveredEntitiesHeadingUI; + @UiField Div entitySubjectsWidgetContainer; + @UiField + Div accessRequirementRelatedProjectsListContainer; + @UiField Div synAlertContainer; @@ -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); diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/SelfSignAccessRequirementWidget.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/SelfSignAccessRequirementWidget.java index 85d3307a70..89d814d723 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/SelfSignAccessRequirementWidget.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/SelfSignAccessRequirementWidget.java @@ -46,6 +46,7 @@ public class SelfSignAccessRequirementWidget DeleteAccessRequirementButton deleteAccessRequirementButton; TeamSubjectsWidget teamSubjectsWidget; EntitySubjectsWidget entitySubjectsWidget; + AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList; LazyLoadHelper lazyLoadHelper; PopupUtilsView popupUtils; ReviewAccessorsButton manageAccessButton; @@ -63,6 +64,7 @@ public SelfSignAccessRequirementWidget( SynapseAlert synAlert, TeamSubjectsWidget teamSubjectsWidget, EntitySubjectsWidget entitySubjectsWidget, + AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList, CreateAccessRequirementButton createAccessRequirementButton, DeleteAccessRequirementButton deleteAccessRequirementButton, LazyLoadHelper lazyLoadHelper, @@ -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; @@ -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 @@ -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(); } diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/SelfSignAccessRequirementWidgetView.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/SelfSignAccessRequirementWidgetView.java index 2d67f61b99..53a89f2045 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/SelfSignAccessRequirementWidgetView.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/SelfSignAccessRequirementWidgetView.java @@ -55,5 +55,11 @@ public interface Presenter { void onValidateProfile(); } + void setCoveredEntitiesHeadingVisible(boolean visible); + void setEntitySubjectsWidget(IsWidget entitySubjectsWidget); + + void setAccessRequirementRelatedProjectsList( + IsWidget accessRequirementRelatedProjectsList + ); } diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/SelfSignAccessRequirementWidgetViewImpl.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/SelfSignAccessRequirementWidgetViewImpl.java index d94d639e50..640359a00e 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/SelfSignAccessRequirementWidgetViewImpl.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/SelfSignAccessRequirementWidgetViewImpl.java @@ -54,9 +54,15 @@ public class SelfSignAccessRequirementWidgetViewImpl @UiField Div teamSubjectsWidgetContainer; + @UiField + Div coveredEntitiesHeadingUI; + @UiField Div entitySubjectsWidgetContainer; + @UiField + Div accessRequirementRelatedProjectsListContainer; + @UiField Div manageAccessContainer; @@ -193,6 +199,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 setOnAttachCallback(Callback onAttachCallback) { this.onAttachCallback = onAttachCallback; diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/TermsOfUseAccessRequirementWidget.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/TermsOfUseAccessRequirementWidget.java index cecc342ae0..1f0315706c 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/TermsOfUseAccessRequirementWidget.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/TermsOfUseAccessRequirementWidget.java @@ -37,6 +37,7 @@ public class TermsOfUseAccessRequirementWidget DeleteAccessRequirementButton deleteAccessRequirementButton; TeamSubjectsWidget teamSubjectsWidget; EntitySubjectsWidget entitySubjectsWidget; + AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList; LazyLoadHelper lazyLoadHelper; Callback refreshCallback; ReviewAccessorsButton manageAccessButton; @@ -53,6 +54,7 @@ public TermsOfUseAccessRequirementWidget( SynapseAlert synAlert, TeamSubjectsWidget teamSubjectsWidget, EntitySubjectsWidget entitySubjectsWidget, + AccessRequirementRelatedProjectsList accessRequirementRelatedProjectsList, CreateAccessRequirementButton createAccessRequirementButton, DeleteAccessRequirementButton deleteAccessRequirementButton, LazyLoadHelper lazyLoadHelper, @@ -70,6 +72,8 @@ public TermsOfUseAccessRequirementWidget( this.authController = authController; this.teamSubjectsWidget = teamSubjectsWidget; this.entitySubjectsWidget = entitySubjectsWidget; + this.accessRequirementRelatedProjectsList = + accessRequirementRelatedProjectsList; this.createAccessRequirementButton = createAccessRequirementButton; this.deleteAccessRequirementButton = deleteAccessRequirementButton; this.lazyLoadHelper = lazyLoadHelper; @@ -82,6 +86,9 @@ public TermsOfUseAccessRequirementWidget( view.setDeleteAccessRequirementWidget(deleteAccessRequirementButton); view.setTeamSubjectsWidget(teamSubjectsWidget); view.setEntitySubjectsWidget(entitySubjectsWidget); + view.setAccessRequirementRelatedProjectsList( + accessRequirementRelatedProjectsList + ); view.setManageAccessWidget(manageAccessButton); Callback loadDataCallback = new Callback() { @Override @@ -127,9 +134,11 @@ public void onSuccess(String rootWikiId) { view.setAccessRequirementID(ar.getId().toString()); isACTMemberAsyncHandler.isACTActionAvailable(isACT -> { view.setAccessRequirementIDVisible(isACT); + view.setCoveredEntitiesHeadingVisible(isACT); }); teamSubjectsWidget.configure(ar.getSubjectIds()); entitySubjectsWidget.configure(ar.getSubjectIds()); + accessRequirementRelatedProjectsList.configure(ar.getId().toString()); manageAccessButton.configure(ar); lazyLoadHelper.setIsConfigured(); } diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/TermsOfUseAccessRequirementWidgetView.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/TermsOfUseAccessRequirementWidgetView.java index d8c2a3d6bf..37225eba7c 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/TermsOfUseAccessRequirementWidgetView.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/TermsOfUseAccessRequirementWidgetView.java @@ -53,5 +53,11 @@ public interface Presenter { void onSignTerms(); } + void setCoveredEntitiesHeadingVisible(boolean visible); + void setEntitySubjectsWidget(IsWidget entitySubjectsWidget); + + void setAccessRequirementRelatedProjectsList( + IsWidget accessRequirementRelatedProjectsList + ); } diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/TermsOfUseAccessRequirementWidgetViewImpl.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/TermsOfUseAccessRequirementWidgetViewImpl.java index d75389ee57..fcba6a0bf0 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/TermsOfUseAccessRequirementWidgetViewImpl.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/TermsOfUseAccessRequirementWidgetViewImpl.java @@ -59,9 +59,15 @@ public class TermsOfUseAccessRequirementWidgetViewImpl @UiField Div teamSubjectsWidgetContainer; + @UiField + Div coveredEntitiesHeadingUI; + @UiField Div entitySubjectsWidgetContainer; + @UiField + Div accessRequirementRelatedProjectsListContainer; + @UiField Div manageAccessContainer; @@ -194,6 +200,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 setOnAttachCallback(Callback onAttachCallback) { this.onAttachCallback = onAttachCallback; diff --git a/src/main/resources/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidgetViewImpl.ui.xml b/src/main/resources/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidgetViewImpl.ui.xml index bb0a2e5a39..37fb282bb6 100644 --- a/src/main/resources/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidgetViewImpl.ui.xml +++ b/src/main/resources/org/sagebionetworks/web/client/widget/accessrequirements/ACTAccessRequirementWidgetViewImpl.ui.xml @@ -61,6 +61,14 @@ and Compliance Team (ACT) to discuss at act@sagebase.org + + + + + + + + + + + + + + + + + + + + + + + + + div { + p { + padding-bottom: 0px; + margin-bottom: 0px; + } + ul { + padding-left: 32px; + padding-top: 8px; + padding-bottom: 8px; + list-style-type: disc; + li { + padding-top: 4px; + padding-bottom: 4px; + margin-left: 0px; + } + } +} diff --git a/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/ACTAccessRequirementWidgetTest.java b/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/ACTAccessRequirementWidgetTest.java index c8246b5cdb..055634abdb 100644 --- a/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/ACTAccessRequirementWidgetTest.java +++ b/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/ACTAccessRequirementWidgetTest.java @@ -38,6 +38,7 @@ import org.sagebionetworks.web.client.utils.Callback; import org.sagebionetworks.web.client.widget.accessrequirements.ACTAccessRequirementWidget; import org.sagebionetworks.web.client.widget.accessrequirements.ACTAccessRequirementWidgetView; +import org.sagebionetworks.web.client.widget.accessrequirements.AccessRequirementRelatedProjectsList; import org.sagebionetworks.web.client.widget.accessrequirements.ConvertACTAccessRequirementButton; import org.sagebionetworks.web.client.widget.accessrequirements.CreateAccessRequirementButton; import org.sagebionetworks.web.client.widget.accessrequirements.DeleteAccessRequirementButton; @@ -99,6 +100,9 @@ public class ACTAccessRequirementWidgetTest { @Mock EntitySubjectsWidget mockEntitySubjectsWidget; + @Mock + AccessRequirementRelatedProjectsList mockAccessRequirementRelatedProjectsList; + @Mock LazyLoadHelper mockLazyLoadHelper; @@ -153,6 +157,7 @@ public void setUp() throws Exception { mockGinInjector, mockTeamSubjectsWidget, mockEntitySubjectsWidget, + mockAccessRequirementRelatedProjectsList, mockCreateAccessRequirementButton, mockDeleteAccessRequirementButton, mockDataAccessClient, diff --git a/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/ManagedACTAccessRequirementWidgetTest.java b/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/ManagedACTAccessRequirementWidgetTest.java index 7ae85e4769..9c774aa262 100644 --- a/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/ManagedACTAccessRequirementWidgetTest.java +++ b/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/ManagedACTAccessRequirementWidgetTest.java @@ -33,6 +33,7 @@ import org.sagebionetworks.web.client.SynapseJavascriptClient; import org.sagebionetworks.web.client.security.AuthenticationController; import org.sagebionetworks.web.client.utils.Callback; +import org.sagebionetworks.web.client.widget.accessrequirements.AccessRequirementRelatedProjectsList; import org.sagebionetworks.web.client.widget.accessrequirements.CreateAccessRequirementButton; import org.sagebionetworks.web.client.widget.accessrequirements.DeleteAccessRequirementButton; import org.sagebionetworks.web.client.widget.accessrequirements.EntitySubjectsWidget; @@ -91,6 +92,9 @@ public class ManagedACTAccessRequirementWidgetTest { @Mock EntitySubjectsWidget mockEntitySubjectsWidget; + @Mock + AccessRequirementRelatedProjectsList mockAccessRequirementRelatedProjectsList; + @Mock LazyLoadHelper mockLazyLoadHelper; @@ -155,6 +159,7 @@ public void setUp() throws Exception { mockGinInjector, mockTeamSubjectsWidget, mockEntitySubjectsWidget, + mockAccessRequirementRelatedProjectsList, mockCreateAccessRequirementButton, mockDeleteAccessRequirementButton, mockReviewAccessRequestsButton, diff --git a/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/SelfSignAccessRequirementWidgetTest.java b/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/SelfSignAccessRequirementWidgetTest.java index 3e91fc8f38..2f88b76d4c 100644 --- a/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/SelfSignAccessRequirementWidgetTest.java +++ b/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/SelfSignAccessRequirementWidgetTest.java @@ -32,6 +32,7 @@ import org.sagebionetworks.web.client.SynapseJavascriptClient; import org.sagebionetworks.web.client.security.AuthenticationController; import org.sagebionetworks.web.client.utils.Callback; +import org.sagebionetworks.web.client.widget.accessrequirements.AccessRequirementRelatedProjectsList; import org.sagebionetworks.web.client.widget.accessrequirements.CreateAccessRequirementButton; import org.sagebionetworks.web.client.widget.accessrequirements.DeleteAccessRequirementButton; import org.sagebionetworks.web.client.widget.accessrequirements.EntitySubjectsWidget; @@ -84,6 +85,9 @@ public class SelfSignAccessRequirementWidgetTest { @Mock EntitySubjectsWidget mockEntitySubjectsWidget; + @Mock + AccessRequirementRelatedProjectsList mockAccessRequirementRelatedProjectsList; + @Mock List mockSubjectIds; @@ -140,6 +144,7 @@ public void setUp() throws Exception { mockSynAlert, mockTeamSubjectsWidget, mockEntitySubjectsWidget, + mockAccessRequirementRelatedProjectsList, mockCreateAccessRequirementButton, mockDeleteAccessRequirementButton, mockLazyLoadHelper, diff --git a/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/TermsOfUseAccessRequirementWidgetTest.java b/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/TermsOfUseAccessRequirementWidgetTest.java index cb6844d1d1..2faae685cb 100644 --- a/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/TermsOfUseAccessRequirementWidgetTest.java +++ b/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/TermsOfUseAccessRequirementWidgetTest.java @@ -25,6 +25,7 @@ import org.sagebionetworks.web.client.SynapseJavascriptClient; import org.sagebionetworks.web.client.security.AuthenticationController; import org.sagebionetworks.web.client.utils.Callback; +import org.sagebionetworks.web.client.widget.accessrequirements.AccessRequirementRelatedProjectsList; import org.sagebionetworks.web.client.widget.accessrequirements.CreateAccessRequirementButton; import org.sagebionetworks.web.client.widget.accessrequirements.DeleteAccessRequirementButton; import org.sagebionetworks.web.client.widget.accessrequirements.EntitySubjectsWidget; @@ -80,6 +81,9 @@ public class TermsOfUseAccessRequirementWidgetTest { @Mock EntitySubjectsWidget mockEntitySubjectsWidget; + @Mock + AccessRequirementRelatedProjectsList mockAccessRequirementRelatedProjectsList; + @Mock List mockSubjectIds; @@ -121,6 +125,7 @@ public void setUp() throws Exception { mockSynAlert, mockTeamSubjectsWidget, mockEntitySubjectsWidget, + mockAccessRequirementRelatedProjectsList, mockCreateAccessRequirementButton, mockDeleteAccessRequirementButton, mockLazyLoadHelper,