mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-03 09:39:38 +00:00
SuggestedMultiSelection decoupled from "notification" or checkboxes
Enabled boat classes widget again, fully functional.
This commit is contained in:
1 parent
c6f0b8f6b1
commit
23f1cd624b
9 files changed
+44
-41
No files matched your search
+16
-11
@@ -61,7 +61,7 @@ public class BoatClassDisplayImpl implements IsWidget, BoatClassSelectionPresent
|
||||
}
|
||||
|
||||
private SuggestedMultiSelection<BoatClassDTO> composeFilter() {
|
||||
final SuggestedMultiSelection.WidgetFactory<BoatClassDTO> widgetProvider = new SuggestedMultiSelection.WidgetFactory<BoatClassDTO>() {
|
||||
final SuggestedMultiSelection.WidgetFactory<BoatClassDTO> widgetFactory = new SuggestedMultiSelection.WidgetFactory<BoatClassDTO>() {
|
||||
@Override
|
||||
public IsWidget generateItemDescriptionWidget(BoatClassDTO item) {
|
||||
return new SuggestedMultiSelectionBoatClassItemDescription(item);
|
||||
@@ -74,11 +74,19 @@ public class BoatClassDisplayImpl implements IsWidget, BoatClassSelectionPresent
|
||||
return new SuggestedMultiSelection.SelectableSuggestion<BoatClassDTO>(presenter, selectionCallback, text);
|
||||
}
|
||||
};
|
||||
presenter.setSelectionPersistenceCallback(wrapCallbackWithToastResponse(upcomingRacesUi.getValue(),
|
||||
null, StringMessages.INSTANCE.failedToSetStatusOfUpdatesOnNewResultsForYourFavoredBoatClasses(),
|
||||
StringMessages.INSTANCE.youWillNowReceiveUpdatesOnNewResultsForYourFavoredBoatClasses(),
|
||||
StringMessages.INSTANCE.youWillNotReceiveNotificationsForFavoriteBoatClassNewResultsAnymore()));
|
||||
return new SuggestedMultiSelection<>(presenter, widgetProvider);
|
||||
final AsyncCallback<VoidResult> callbackWrappedWithToastNotification = new AsyncCallback<VoidResult>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
Notification.notify(StringMessages.INSTANCE.failedToModifyFavoredBoatClasses(), NotificationType.ERROR);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(VoidResult result) {
|
||||
Notification.notify(StringMessages.INSTANCE.succesfullyModifiedFavoredBoatClasses(), NotificationType.SUCCESS);
|
||||
}
|
||||
};
|
||||
presenter.setSelectionPersistenceCallback(callbackWrappedWithToastNotification);
|
||||
return new SuggestedMultiSelection<>(presenter, widgetFactory);
|
||||
}
|
||||
|
||||
private CheckBoxTile composeUpcomingRacesTile() {
|
||||
@@ -133,12 +141,9 @@ public class BoatClassDisplayImpl implements IsWidget, BoatClassSelectionPresent
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNotifyAboutUpcomingRaces(boolean notifyAboutUpcomingRaces) {
|
||||
public void initResults(boolean notifyAboutUpcomingRaces, boolean notifyAboutResults, Collection<BoatClassDTO> selection) {
|
||||
upcomingRacesUi.setValue(notifyAboutUpcomingRaces);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNotifyAboutResults(boolean notifyAboutResults) {
|
||||
resultsUi.setValue(notifyAboutResults);
|
||||
filterUi.setSelectedItems(selection);
|
||||
}
|
||||
}
|
||||
+2
-3
@@ -66,19 +66,18 @@ public class CompetitorDisplayImpl implements IsWidget, CompetitorSelectionPrese
|
||||
final AsyncCallback<VoidResult> selectionPersistenceCallback = new AsyncCallback<VoidResult>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
Notification.notify(StringMessages.INSTANCE.failedToAddNewFavoriteCompetitor(), NotificationType.ERROR);
|
||||
Notification.notify(StringMessages.INSTANCE.failedToModifyFavoriteCompetitors(), NotificationType.ERROR);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(VoidResult result) {
|
||||
Notification.notify(StringMessages.INSTANCE.newFavoriteCompetitorAdded(), NotificationType.SUCCESS);
|
||||
Notification.notify(StringMessages.INSTANCE.favoriteCompetitorsModifiedSuccessfully(), NotificationType.SUCCESS);
|
||||
}
|
||||
};
|
||||
presenter.setSelectionPersistenceCallback(selectionPersistenceCallback);
|
||||
return new SuggestedMultiSelection<>(presenter, widgetFactory);
|
||||
}
|
||||
|
||||
// TODO add different messages to toast response here
|
||||
private CheckBoxTile composeTile() {
|
||||
final BiConsumer<Boolean, AsyncCallback<VoidResult>> onToggle = (isNowTrue, callback) -> {
|
||||
presenter.persistResults(isNowTrue, wrapCallbackWithToastResponse(isNowTrue, callback),
|
||||
|
||||
+2
-5
@@ -14,7 +14,7 @@ public interface BoatClassSelectionPresenter
|
||||
|
||||
void setNotifyAboutResults(boolean notifyAboutResults, AsyncCallback<VoidResult> callback);
|
||||
|
||||
void initNotifications(boolean notifyAboutUpcomingRaces, boolean notifyAboutResults);
|
||||
void initNotifications(boolean notifyAboutUpcomingRaces, boolean notifyAboutResults, Collection<BoatClassDTO> selection);
|
||||
|
||||
void persistResults(boolean notifyAboutUpcomingRaces, boolean notifyAboutResults,
|
||||
AsyncCallback<VoidResult> callback, Collection<BoatClassDTO> latestSelectedItems);
|
||||
@@ -22,10 +22,7 @@ public interface BoatClassSelectionPresenter
|
||||
void setSelectionPersistenceCallback(AsyncCallback<VoidResult> selectionCallback);
|
||||
|
||||
interface Display extends SuggestedMultiSelectionPresenter.Display<BoatClassDTO> {
|
||||
|
||||
void setNotifyAboutUpcomingRaces(boolean notifyAboutUpcomingRaces);
|
||||
|
||||
void setNotifyAboutResults(boolean notifyAboutResults);
|
||||
void initResults(boolean notifyAboutUpcomingRaces, boolean notifyAboutResults, Collection<BoatClassDTO> selection);
|
||||
|
||||
boolean getNotifyAboutUpcomingRaces();
|
||||
|
||||
|
||||
+5
-4
@@ -9,6 +9,7 @@ import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.common.client.SharedResources;
|
||||
import com.sap.sailing.gwt.home.shared.partials.labeledbox.LabeledBox;
|
||||
import com.sap.sailing.gwt.home.shared.partials.multiselection.BoatClassDisplayImpl;
|
||||
import com.sap.sailing.gwt.home.shared.partials.multiselection.CompetitorDisplayImpl;
|
||||
import com.sap.sailing.gwt.home.shared.partials.multiselection.MiscellaneousDisplayImpl;
|
||||
import com.sap.sailing.gwt.ui.client.FlagImageResolver;
|
||||
@@ -33,8 +34,8 @@ public class UserPreferences extends Composite implements UserPreferencesView {
|
||||
SharedResources res;
|
||||
@UiField(provided = true)
|
||||
LabeledBox favoriteCompetitorsSelctionUi;
|
||||
// @UiField(provided = true)
|
||||
// LabeledBox favoriteBoatClassesSelctionUi;
|
||||
@UiField(provided = true)
|
||||
LabeledBox favoriteBoatClassesSelctionUi;
|
||||
@UiField(provided = true)
|
||||
LabeledBox miscUi;
|
||||
@UiField
|
||||
@@ -45,8 +46,8 @@ public class UserPreferences extends Composite implements UserPreferencesView {
|
||||
this.presenter = presenter;
|
||||
favoriteCompetitorsSelctionUi = new CompetitorDisplayImpl(presenter.getFavoriteCompetitorsDataProvider(),
|
||||
flagImageResolver).selectionUi;
|
||||
// favoriteBoatClassesSelctionUi = new BoatClassDisplayImpl(
|
||||
// presenter.getFavoriteBoatClassesDataProvider()).selectionUi;
|
||||
favoriteBoatClassesSelctionUi = new BoatClassDisplayImpl(
|
||||
presenter.getFavoriteBoatClassesDataProvider()).selectionUi;
|
||||
miscUi = (new MiscellaneousDisplayImpl(presenter)).selectionUi;
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
// TODO hide notificationsTextUi if the user's mail address is already verified
|
||||
|
||||
+2
-2
@@ -23,8 +23,8 @@
|
||||
<div class="{res.mediaCss.column} {res.mediaCss.small12} {res.mediaCss.medium6} {res.mainCss.spacermargintopmediumsmall}">
|
||||
<lb:LabeledBox ui:field="favoriteCompetitorsSelctionUi"/>
|
||||
</div>
|
||||
<!-- <div class="{res.mediaCss.column} {res.mediaCss.small12} {res.mediaCss.medium6} {res.mainCss.spacermargintopmediumsmall}">
|
||||
<div class="{res.mediaCss.column} {res.mediaCss.small12} {res.mediaCss.medium6} {res.mainCss.spacermargintopmediumsmall}">
|
||||
<lb:LabeledBox ui:field="favoriteBoatClassesSelctionUi"/>
|
||||
</div> -->
|
||||
</div>
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
||||
+5
-10
@@ -54,7 +54,9 @@ public class UserPreferencesPresenter<C extends ClientFactoryWithDispatch & Erro
|
||||
final boolean isNotify = result.getFavoriteCompetitors().isNotifyAboutResults();
|
||||
final Collection<SimpleCompetitorWithIdDTO> selection = result.getFavoriteCompetitors().getSelectedCompetitors();
|
||||
competitorPresenter.initResults(isNotify, selection);
|
||||
initFavoriteBoatClasses(result.getFavoriteBoatClasses());
|
||||
final FavoriteBoatClassesDTO favoriteBoatClasses = result.getFavoriteBoatClasses();
|
||||
boatClassSelectionPresenter.initNotifications(favoriteBoatClasses.isNotifyAboutUpcomingRaces(),
|
||||
favoriteBoatClasses.isNotifyAboutResults(), favoriteBoatClasses.getSelectedBoatClasses());
|
||||
}
|
||||
};
|
||||
clientFactory.getDispatch().execute(new GetFavoritesAction(), callback);
|
||||
@@ -65,12 +67,6 @@ public class UserPreferencesPresenter<C extends ClientFactoryWithDispatch & Erro
|
||||
return boatClassSelectionPresenter;
|
||||
}
|
||||
|
||||
private void initFavoriteBoatClasses(FavoriteBoatClassesDTO favoriteBoatClasses) {
|
||||
boatClassSelectionPresenter.initNotifications(favoriteBoatClasses.isNotifyAboutUpcomingRaces(),
|
||||
favoriteBoatClasses.isNotifyAboutResults());
|
||||
boatClassSelectionPresenter.initSelectedItems(favoriteBoatClasses.getSelectedBoatClasses());
|
||||
}
|
||||
|
||||
private class BoatClassSelectionPresenterImpl
|
||||
extends AbstractSuggestedBoatClassMultiSelectionPresenter<BoatClassSelectionPresenter.Display>
|
||||
implements BoatClassSelectionPresenter {
|
||||
@@ -78,10 +74,9 @@ public class UserPreferencesPresenter<C extends ClientFactoryWithDispatch & Erro
|
||||
private AsyncCallback<VoidResult> selectionCallback;
|
||||
|
||||
@Override
|
||||
public void initNotifications(boolean notifyAboutUpcomingRaces, boolean notifyAboutResults) {
|
||||
public void initNotifications(boolean notifyAboutUpcomingRaces, boolean notifyAboutResults, Collection<BoatClassDTO> selection) {
|
||||
this.displays.forEach(display -> {
|
||||
display.setNotifyAboutUpcomingRaces(notifyAboutUpcomingRaces);
|
||||
display.setNotifyAboutResults(notifyAboutResults);
|
||||
display.initResults(notifyAboutUpcomingRaces, notifyAboutResults, selection);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+4
-2
@@ -2570,6 +2570,8 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String youWillNowReceiveUpdatesOnNewResultsForYourFavoredBoatClasses();
|
||||
String youWillNotReceiveNotificationsForFavoriteBoatClassNewResultsAnymore();
|
||||
String failedToSetStatusOfUpdatesOnNewResultsForYourFavoredBoatClasses();
|
||||
String failedToAddNewFavoriteCompetitor();
|
||||
String newFavoriteCompetitorAdded();
|
||||
String failedToModifyFavoriteCompetitors();
|
||||
String favoriteCompetitorsModifiedSuccessfully();
|
||||
String failedToModifyFavoredBoatClasses();
|
||||
String succesfullyModifiedFavoredBoatClasses();
|
||||
}
|
||||
+4
-2
@@ -2606,5 +2606,7 @@ youWillNotReceiveUpdatesOnUpcomingRacesForYourFavoredBoatClassesAnymore=You will
|
||||
failedToSetStatusOfUpdatesOnNewResultsForYourFavoredBoatClasses=Failed to set status of notifications for new results of your favored boat classes
|
||||
youWillNowReceiveUpdatesOnNewResultsForYourFavoredBoatClasses=You will now receive notifications for new results of your favored boat classes
|
||||
youWillNotReceiveNotificationsForFavoriteBoatClassNewResultsAnymore=You will not receive notifications for new results of your favored boat classes anymore
|
||||
failedToAddNewFavoriteCompetitor=Failed to add competitor to favorites
|
||||
newFavoriteCompetitorAdded=New competitor added to favorites
|
||||
failedToModifyFavoriteCompetitors=Failed to modify favorite competitors
|
||||
favoriteCompetitorsModifiedSuccessfully=Favorite competitors modified successfully
|
||||
failedToModifyFavoredBoatClasses=Failed to modify favorite boat classes
|
||||
succesfullyModifiedFavoredBoatClasses=Successfully modified favored boat classes
|
||||
+4
-2
@@ -2598,5 +2598,7 @@ youWillNotReceiveNotificationsForFavoriteBoatClassUpcomingRacesAnymore=Sie erhal
|
||||
failedToSetStatusOfNotificationsForFavoriteBoatClassNewResults=Fehler beim Festlegen des Benachrichtigungsstatus für neue Ergebnisse Ihrer bevorzugten Bootsklasse
|
||||
youWillNowReceiveNotificationsForFavoriteBoatClassNewResults=Sie erhalten nun Benachrichtigungen über neue Ergebnisse Ihrer bevorzugten Bootsklasse.
|
||||
youWillNotReceiveNotificationsForFavoriteBoatClassNewResultsAnymore=Sie erhalten keine Benachrichtigungen mehr über neue Ergebnisse Ihrer bevorzugten Bootsklasse.
|
||||
failedToAddNewFavoriteCompetitor=Konkurrenten konnten nicht zu den Favoriten hinzugefügt werden.
|
||||
newFavoriteCompetitorAdded=Neuer Konkurrent zu den Favoriten hinzugefügt
|
||||
failedToModifyFavoriteCompetitors=Es gelang nicht, die bevorzugten Konkurrenten zu beeinflussen.
|
||||
favoriteCompetitorsModifiedSuccessfully=Favoritenkonkurrenten erfolgreich modifiziert
|
||||
failedToModifyFavoredBoatClasses=Die bevorzugten Bootsklassen konnten nicht angepasst werden.
|
||||
succesfullyModifiedFavoredBoatClasses=Die bevorzugten Bootsklassen konnten nicht angepasst werden.
|
||||
Reference in new issue
Block a user