Skip to content

Commit

Permalink
Merge pull request #5532 from jay-hodgson/SWC-7087
Browse files Browse the repository at this point in the history
  • Loading branch information
jay-hodgson committed Sep 24, 2024
2 parents f522d68 + dc84831 commit 8726113
Show file tree
Hide file tree
Showing 11 changed files with 152 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import org.sagebionetworks.web.client.presenter.PasswordResetSignedTokenPresenter;
import org.sagebionetworks.web.client.presenter.PeopleSearchPresenter;
import org.sagebionetworks.web.client.presenter.PersonalAccessTokensPresenter;
import org.sagebionetworks.web.client.presenter.PlansPresenter;
import org.sagebionetworks.web.client.presenter.ProfilePresenter;
import org.sagebionetworks.web.client.presenter.QuizPresenter;
import org.sagebionetworks.web.client.presenter.SearchPresenter;
Expand Down Expand Up @@ -898,4 +899,5 @@ public interface PortalGinInjector extends Ginjector {

TrustCenterPresenter getTrustCenterPresenter();
ChatPresenter getChatPresenter();
PlansPresenter getPlansPresenter();
}
Original file line number Diff line number Diff line change
Expand Up @@ -969,6 +969,7 @@ protected void configure() {
.to(IntendedDataUseReportWidgetViewImpl.class);
bind(DialogView.class).to(Dialog.class);
bind(ChatView.class).to(ChatViewImpl.class);
bind(PlansView.class).to(PlansViewImpl.class);

bind(FollowingPageView.class)
.to(FollowingPageViewImpl.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ public static class SynapseComponents {
EntityAclEditorModalProps
> EntityAclEditorModal;
public static ReactComponentType<SynapseChatProps> SynapseChat;
public static ReactComponentType<SynapseHomepageV2Props> SynapsePlansPage;
public static ReactComponentType<
RejectProfileValidationRequestModalProps
> RejectProfileValidationRequestModal;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.sagebionetworks.web.client.place.NewAccount;
import org.sagebionetworks.web.client.place.PasswordResetSignedTokenPlace;
import org.sagebionetworks.web.client.place.PeopleSearch;
import org.sagebionetworks.web.client.place.PlansPlace;
import org.sagebionetworks.web.client.place.Profile;
import org.sagebionetworks.web.client.place.Search;
import org.sagebionetworks.web.client.place.SignedToken;
Expand Down Expand Up @@ -103,6 +104,7 @@ public AppActivityMapper(
openAccessPlaces.add(AccessRequirementsPlace.class);
openAccessPlaces.add(AccessRequirementPlace.class);
openAccessPlaces.add(TrustCenterPlace.class);
openAccessPlaces.add(PlansPlace.class);

excludeFromLastPlace = new ArrayList<Class>();
excludeFromLastPlace.add(Home.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import org.sagebionetworks.web.client.place.PasswordResetSignedTokenPlace;
import org.sagebionetworks.web.client.place.PeopleSearch;
import org.sagebionetworks.web.client.place.PersonalAccessTokenPlace;
import org.sagebionetworks.web.client.place.PlansPlace;
import org.sagebionetworks.web.client.place.Profile;
import org.sagebionetworks.web.client.place.Quiz;
import org.sagebionetworks.web.client.place.Search;
Expand Down Expand Up @@ -100,6 +101,7 @@
FollowingPlace.Tokenizer.class,
TrustCenterPlace.Tokenizer.class,
ChatPlace.Tokenizer.class,
PlansPlace.Tokenizer.class,
}
)
public interface AppPlaceHistoryMapper extends PlaceHistoryMapper {}
25 changes: 25 additions & 0 deletions src/main/java/org/sagebionetworks/web/client/place/PlansPlace.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.sagebionetworks.web.client.place;

import com.google.gwt.place.shared.PlaceTokenizer;
import com.google.gwt.place.shared.Prefix;

public class PlansPlace extends ParameterizedPlace {

public PlansPlace(String token) {
super(token);
}

@Prefix("Plans")
public static class Tokenizer implements PlaceTokenizer<PlansPlace> {

@Override
public String getToken(PlansPlace place) {
return place.toToken();
}

@Override
public PlansPlace getPlace(String token) {
return new PlansPlace(token);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
import org.sagebionetworks.web.client.place.PasswordResetSignedTokenPlace;
import org.sagebionetworks.web.client.place.PeopleSearch;
import org.sagebionetworks.web.client.place.PersonalAccessTokenPlace;
import org.sagebionetworks.web.client.place.PlansPlace;
import org.sagebionetworks.web.client.place.Profile;
import org.sagebionetworks.web.client.place.Quiz;
import org.sagebionetworks.web.client.place.Search;
Expand Down Expand Up @@ -901,6 +902,23 @@ public void onSuccess() {
presenter.start(panel, eventBus);
}

@Override
public void onFailure(Throwable caught) {
loadError(caught);
}
}
);
} else if (place instanceof PlansPlace) {
GWT.runAsync(
PlansPlace.class,
new RunAsyncCallback() {
@Override
public void onSuccess() {
PlansPresenter presenter = ginjector.getPlansPresenter();
presenter.setPlace((PlansPlace) place);
presenter.start(panel, eventBus);
}

@Override
public void onFailure(Throwable caught) {
loadError(caught);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package org.sagebionetworks.web.client.presenter;

import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.inject.Inject;
import org.sagebionetworks.web.client.place.PlansPlace;
import org.sagebionetworks.web.client.view.PlansView;

public class PlansPresenter
extends AbstractActivity
implements Presenter<PlansPlace> {

private PlansPlace place;
private PlansView view;

@Inject
public PlansPresenter(PlansView view) {
this.view = view;
}

@Override
public void start(AcceptsOneWidget panel, EventBus eventBus) {
// Install the view
panel.setWidget(view);
}

@Override
public void setPlace(PlansPlace place) {
this.place = place;
view.render();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.sagebionetworks.web.client.view;

import com.google.gwt.user.client.ui.IsWidget;

public interface PlansView extends IsWidget {
void render();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package org.sagebionetworks.web.client.view;

import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.inject.Inject;
import org.sagebionetworks.web.client.GlobalApplicationState;
import org.sagebionetworks.web.client.context.SynapseReactClientFullContextPropsProvider;
import org.sagebionetworks.web.client.jsinterop.React;
import org.sagebionetworks.web.client.jsinterop.ReactElement;
import org.sagebionetworks.web.client.jsinterop.SRC;
import org.sagebionetworks.web.client.jsinterop.SynapseHomepageV2Props;
import org.sagebionetworks.web.client.widget.ReactComponent;
import org.sagebionetworks.web.client.widget.header.Header;

public class PlansViewImpl extends Composite implements PlansView {

ReactComponent container;

private Header headerWidget;
private SynapseReactClientFullContextPropsProvider propsProvider;
private GlobalApplicationState globalAppState;

@Inject
public PlansViewImpl(
Header headerWidget,
final SynapseReactClientFullContextPropsProvider propsProvider,
GlobalApplicationState globalAppState
) {
this.headerWidget = headerWidget;
this.propsProvider = propsProvider;
this.globalAppState = globalAppState;
headerWidget.configure();
container = new ReactComponent();
initWidget(container);
}

@Override
public void render() {
headerWidget.configure();
headerWidget.refresh();
scrollToTop();
SynapseHomepageV2Props props = SynapseHomepageV2Props.create(href -> {
globalAppState.handleRelativePathClick(href);
});

ReactElement component = React.createElementWithSynapseContext(
SRC.SynapseComponents.SynapsePlansPage,
props,
propsProvider.getJsInteropContextProps()
);

container.render(component);
}

public void scrollToTop() {
Window.scrollTo(0, 0);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.sagebionetworks.web.client.jsinterop.SynapseNavDrawerProps;
import org.sagebionetworks.web.client.place.Home;
import org.sagebionetworks.web.client.place.LoginPlace;
import org.sagebionetworks.web.client.place.PlansPlace;
import org.sagebionetworks.web.client.widget.FullWidthAlert;
import org.sagebionetworks.web.client.widget.OrientationBanner;
import org.sagebionetworks.web.client.widget.ReactComponent;
Expand Down Expand Up @@ -187,7 +188,8 @@ public void refresh() {
if (
globalAppState.getCurrentPlace() == null ||
globalAppState.getCurrentPlace() instanceof Home ||
globalAppState.getCurrentPlace() instanceof LoginPlace
globalAppState.getCurrentPlace() instanceof LoginPlace ||
globalAppState.getCurrentPlace() instanceof PlansPlace
) {
hideNavBar();
} else {
Expand Down

0 comments on commit 8726113

Please sign in to comment.