mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-14 22:43:57 +00:00
Implemented AccessControlledActionsColumn for LeaderboardConfigPanel
This commit is contained in:
1 parent
abc3dc9b09
commit
edf06530cd
6 files changed
+125
-82
No files matched your search
+6
-5
@@ -60,6 +60,7 @@ import com.sap.sse.gwt.client.celltable.RefreshableSelectionModel;
|
||||
import com.sap.sse.gwt.client.celltable.SelectionCheckboxColumn;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
|
||||
import com.sap.sse.security.ui.client.UserService;
|
||||
|
||||
public abstract class AbstractLeaderboardConfigPanel extends FormPanel implements SelectedLeaderboardProvider,
|
||||
RegattasDisplayer, TrackedRaceChangedListener, LeaderboardsDisplayer {
|
||||
@@ -137,9 +138,9 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
|
||||
}
|
||||
}
|
||||
|
||||
public AbstractLeaderboardConfigPanel(final SailingServiceAsync sailingService, RegattaRefresher regattaRefresher,
|
||||
LeaderboardsRefresher leaderboardsRefresher, final ErrorReporter errorReporter,
|
||||
StringMessages theStringConstants, boolean multiSelection) {
|
||||
public AbstractLeaderboardConfigPanel(final SailingServiceAsync sailingService, final UserService userService,
|
||||
RegattaRefresher regattaRefresher, LeaderboardsRefresher leaderboardsRefresher,
|
||||
final ErrorReporter errorReporter, StringMessages theStringConstants, boolean multiSelection) {
|
||||
this.stringMessages = theStringConstants;
|
||||
this.sailingService = sailingService;
|
||||
filteredLeaderboardList = new ListDataProvider<StrippedLeaderboardDTO>();
|
||||
@@ -181,7 +182,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
|
||||
|
||||
leaderboardsPanel.add(filterLeaderboardPanel);
|
||||
leaderboardTable.ensureDebugId("AvailableLeaderboardsTable");
|
||||
addColumnsToLeaderboardTableAndSetSelectionModel(leaderboardTable, tableRes,
|
||||
addColumnsToLeaderboardTableAndSetSelectionModel(userService, leaderboardTable, tableRes,
|
||||
filterLeaderboardPanel.getAllListDataProvider());
|
||||
@SuppressWarnings("unchecked")
|
||||
RefreshableMultiSelectionModel<StrippedLeaderboardDTO> multiSelectionModel = (RefreshableMultiSelectionModel<StrippedLeaderboardDTO>) leaderboardTable
|
||||
@@ -321,7 +322,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
|
||||
|
||||
protected abstract void addLeaderboardControls(Panel controlsPanel);
|
||||
protected abstract void addSelectedLeaderboardRacesControls(Panel racesPanel);
|
||||
protected abstract void addColumnsToLeaderboardTableAndSetSelectionModel(FlushableCellTable<StrippedLeaderboardDTO> leaderboardTable,
|
||||
protected abstract void addColumnsToLeaderboardTableAndSetSelectionModel(UserService userService, FlushableCellTable<StrippedLeaderboardDTO> leaderboardTable,
|
||||
AdminConsoleTableResources tableRes, ListDataProvider<StrippedLeaderboardDTO> listDataProvider);
|
||||
protected abstract void addColumnsToRacesTable(CellTable<RaceColumnDTOAndFleetDTOWithNameBasedEquality> racesTable);
|
||||
|
||||
|
||||
+2
-2
@@ -125,7 +125,7 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements
|
||||
/* LEADERBOARDS */
|
||||
|
||||
final HorizontalTabLayoutPanel leaderboardTabPanel = panel.addVerticalTab(getStringMessages().leaderboards(), "LeaderboardPanel");
|
||||
final LeaderboardConfigPanel leaderboardConfigPanel = new LeaderboardConfigPanel(getSailingService(), this, this,
|
||||
final LeaderboardConfigPanel leaderboardConfigPanel = new LeaderboardConfigPanel(getSailingService(), getUserService(), this, this,
|
||||
getStringMessages(), /* showRaceDetails */true, this);
|
||||
leaderboardConfigPanel.ensureDebugId("LeaderboardConfiguration");
|
||||
panel.addToTabPanel(leaderboardTabPanel, new DefaultRefreshableAdminConsolePanel<LeaderboardConfigPanel>(leaderboardConfigPanel) {
|
||||
@@ -241,7 +241,7 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements
|
||||
regattasDisplayers.add(swisstimingEventManagementPanel);
|
||||
|
||||
final SmartphoneTrackingEventManagementPanel raceLogTrackingEventManagementPanel = new SmartphoneTrackingEventManagementPanel(
|
||||
getSailingService(), this, this, this, getStringMessages());
|
||||
getSailingService(), getUserService(), this, this, this, getStringMessages());
|
||||
raceLogTrackingEventManagementPanel.ensureDebugId("SmartphoneTrackingPanel");
|
||||
panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel<SmartphoneTrackingEventManagementPanel>(raceLogTrackingEventManagementPanel) {
|
||||
@Override
|
||||
|
||||
+8
-5
@@ -1,18 +1,17 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.text.shared.SafeHtmlRenderer;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.gwt.client.IconResources;
|
||||
import com.sap.sse.gwt.client.celltable.ImagesBarCell;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class LeaderboardConfigImagesBarCell extends ImagesBarCell {
|
||||
public static final String ACTION_REMOVE = "ACTION_REMOVE";
|
||||
public static final String ACTION_EDIT_SCORES = "ACTION_EDIT_SCORES";
|
||||
public static final String ACTION_EDIT_COMPETITORS = "ACTION_EDIT_COMPETITORS";
|
||||
public static final String ACTION_EDIT = "ACTION_EDIT";
|
||||
public static final String ACTION_CONFIGURE_URL = "ACTION_CONFIGURE_URL";
|
||||
public static final String ACTION_EXPORT_XML = "ACTION_EXPORT_XML";
|
||||
public static final String ACTION_OPEN_COACH_DASHBOARD = "ACTION_OPEN_COACH_DASHBOARD";
|
||||
@@ -35,11 +34,15 @@ public class LeaderboardConfigImagesBarCell extends ImagesBarCell {
|
||||
@Override
|
||||
protected Iterable<ImageSpec> getImageSpecs() {
|
||||
return Arrays.asList(
|
||||
new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(IconResources.INSTANCE.editIcon())),
|
||||
new ImageSpec(DefaultActions.UPDATE.name(), stringMessages.actionEdit(),
|
||||
makeImagePrototype(IconResources.INSTANCE.editIcon())),
|
||||
new ImageSpec(ACTION_EDIT_SCORES, stringMessages.actionEditScores(), makeImagePrototype(resources.scoresIcon())),
|
||||
new ImageSpec(ACTION_EDIT_COMPETITORS, stringMessages.actionEditCompetitors(), makeImagePrototype(resources.competitorsIcon())),
|
||||
new ImageSpec(ACTION_CONFIGURE_URL, stringMessages.actionConfigureUrl(), makeImagePrototype(resources.settingsActionIcon())),
|
||||
new ImageSpec(ACTION_REMOVE, stringMessages.actionRemove(), makeImagePrototype(IconResources.INSTANCE.removeIcon())),
|
||||
new ImageSpec(DefaultActions.DELETE.name(), stringMessages.actionRemove(),
|
||||
makeImagePrototype(IconResources.INSTANCE.removeIcon())),
|
||||
new ImageSpec(DefaultActions.CHANGE_OWNERSHIP.name(), stringMessages.changeOwnership(),
|
||||
makeImagePrototype(resources.competitorsIcon())),
|
||||
new ImageSpec(ACTION_EXPORT_XML, stringMessages.actionExportXML(), makeImagePrototype(resources.exportXMLIcon())),
|
||||
new ImageSpec(ACTION_OPEN_COACH_DASHBOARD, stringMessages.actionOpenDashboard(), makeImagePrototype(resources.openCoachDashboard())),
|
||||
new ImageSpec(ACTION_SHOW_REGATTA_LOG, stringMessages.regattaLog(), makeImagePrototype(resources.flagIcon())),
|
||||
|
||||
+100
-67
@@ -1,5 +1,9 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import static com.sap.sse.security.shared.HasPermissions.DefaultActions.CHANGE_OWNERSHIP;
|
||||
import static com.sap.sse.security.shared.HasPermissions.DefaultActions.DELETE;
|
||||
import static com.sap.sse.security.shared.HasPermissions.DefaultActions.UPDATE;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
@@ -9,6 +13,7 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -44,6 +49,7 @@ import com.sap.sailing.domain.common.dto.CompetitorWithBoatDTO;
|
||||
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||
import com.sap.sailing.domain.common.dto.PairingListTemplateDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
||||
import com.sap.sailing.domain.common.security.SecuredDomainType;
|
||||
import com.sap.sailing.gwt.settings.client.EntryPointWithSettingsLinkFactory;
|
||||
import com.sap.sailing.gwt.settings.client.leaderboard.AbstractLeaderboardPerspectiveLifecycle;
|
||||
import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardContextDefinition;
|
||||
@@ -53,6 +59,7 @@ import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettings;
|
||||
import com.sap.sailing.gwt.settings.client.leaderboard.LeaderboardSettingsDialogComponent;
|
||||
import com.sap.sailing.gwt.settings.client.leaderboard.MetaLeaderboardPerspectiveLifecycle;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.DisablableCheckboxCell.IsEnabled;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.EditOwnershipDialog.DialogConfig;
|
||||
import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory;
|
||||
import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer;
|
||||
import com.sap.sailing.gwt.ui.client.LeaderboardsRefresher;
|
||||
@@ -81,6 +88,8 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sse.gwt.client.shared.components.LinkWithSettingsGenerator;
|
||||
import com.sap.sse.gwt.client.shared.components.SettingsDialogForLinkSharing;
|
||||
import com.sap.sse.gwt.client.shared.perspective.PerspectiveCompositeSettings;
|
||||
import com.sap.sse.security.shared.HasPermissions;
|
||||
import com.sap.sse.security.ui.client.UserService;
|
||||
|
||||
public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel implements SelectedLeaderboardProvider, RegattasDisplayer,
|
||||
TrackedRaceChangedListener, LeaderboardsDisplayer {
|
||||
@@ -106,10 +115,10 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
|
||||
SafeHtml cell(SafeUri url, String displayName);
|
||||
}
|
||||
|
||||
public LeaderboardConfigPanel(final SailingServiceAsync sailingService, RegattaRefresher regattaRefresher,
|
||||
final ErrorReporter errorReporter, StringMessages theStringConstants, final boolean showRaceDetails,
|
||||
LeaderboardsRefresher leaderboardsRefresher) {
|
||||
super(sailingService, regattaRefresher, leaderboardsRefresher, errorReporter, theStringConstants,
|
||||
public LeaderboardConfigPanel(final SailingServiceAsync sailingService, final UserService userService,
|
||||
RegattaRefresher regattaRefresher, final ErrorReporter errorReporter, StringMessages theStringConstants,
|
||||
final boolean showRaceDetails, LeaderboardsRefresher leaderboardsRefresher) {
|
||||
super(sailingService, userService, regattaRefresher, leaderboardsRefresher, errorReporter, theStringConstants,
|
||||
/* multi-selection */ false);
|
||||
this.showRaceDetails = showRaceDetails;
|
||||
leaderboardTable.ensureDebugId("LeaderboardsCellTable");
|
||||
@@ -170,7 +179,7 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addColumnsToLeaderboardTableAndSetSelectionModel(final FlushableCellTable<StrippedLeaderboardDTO> leaderboardTable,
|
||||
protected void addColumnsToLeaderboardTableAndSetSelectionModel(final UserService userService, final FlushableCellTable<StrippedLeaderboardDTO> leaderboardTable,
|
||||
AdminConsoleTableResources tableResources, ListDataProvider<StrippedLeaderboardDTO> listDataProvider) {
|
||||
ListHandler<StrippedLeaderboardDTO> leaderboardColumnListHandler = new ListHandler<StrippedLeaderboardDTO>(
|
||||
filteredLeaderboardList.getList());
|
||||
@@ -311,60 +320,65 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
|
||||
}
|
||||
});
|
||||
|
||||
ImagesBarColumn<StrippedLeaderboardDTO, LeaderboardConfigImagesBarCell> leaderboardActionColumn = new ImagesBarColumn<StrippedLeaderboardDTO, LeaderboardConfigImagesBarCell>(
|
||||
new LeaderboardConfigImagesBarCell(stringMessages));
|
||||
leaderboardActionColumn.setFieldUpdater(new FieldUpdater<StrippedLeaderboardDTO, String>() {
|
||||
@Override
|
||||
public void update(int index, StrippedLeaderboardDTO leaderboardDTO, String value) {
|
||||
if (LeaderboardConfigImagesBarCell.ACTION_REMOVE.equals(value)) {
|
||||
if (Window.confirm(stringMessages.doYouReallyWantToRemoveLeaderboard(leaderboardDTO.getName()))) {
|
||||
removeLeaderboard(leaderboardDTO);
|
||||
}
|
||||
} else if (LeaderboardConfigImagesBarCell.ACTION_EDIT.equals(value)) {
|
||||
editLeaderboard(leaderboardDTO);
|
||||
} else if (LeaderboardConfigImagesBarCell.ACTION_EDIT_SCORES.equals(value)) {
|
||||
String leaderboardEditingUrl = EntryPointWithSettingsLinkFactory.createLeaderboardEditingLink(leaderboardDTO.getName());
|
||||
Window.open(leaderboardEditingUrl, "_blank", null);
|
||||
} else if (LeaderboardConfigImagesBarCell.ACTION_EDIT_COMPETITORS.equals(value)) {
|
||||
EditCompetitorsDialog editCompetitorsDialog = new EditCompetitorsDialog(sailingService, leaderboardDTO.getName(), stringMessages,
|
||||
errorReporter, new DialogCallback<List<CompetitorWithBoatDTO>>() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok(final List<CompetitorWithBoatDTO> result) {
|
||||
}
|
||||
});
|
||||
editCompetitorsDialog.show();
|
||||
} else if (LeaderboardConfigImagesBarCell.ACTION_CONFIGURE_URL.equals(value)) {
|
||||
sailingService.getAvailableDetailTypesForLeaderboard(leaderboardDTO.getName(), null, new AsyncCallback<Iterable<DetailType>>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
logger.log(Level.WARNING, "Could not load detailtypes for leaderboard", caught);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Iterable<DetailType> result) {
|
||||
openLeaderboardUrlConfigDialog(leaderboardDTO, result);
|
||||
}
|
||||
});
|
||||
} else if (LeaderboardConfigImagesBarCell.ACTION_EXPORT_XML.equals(value)) {
|
||||
Window.open(UriUtils.fromString("/export/xml?domain=leaderboard&name=" + leaderboardDTO.getName()).asString(), "", null);
|
||||
} else if (LeaderboardConfigImagesBarCell.ACTION_OPEN_COACH_DASHBOARD.equals(value)) {
|
||||
Map<String, String> dashboardURLParameters = new HashMap<String, String>();
|
||||
dashboardURLParameters.put("leaderboardName", leaderboardDTO.getName());
|
||||
Window.open(EntryPointLinkFactory.createDashboardLink(dashboardURLParameters), "", null);
|
||||
} else if (LeaderboardConfigImagesBarCell.ACTION_SHOW_REGATTA_LOG.equals(value)) {
|
||||
showRegattaLog();
|
||||
} else if (LeaderboardConfigImagesBarCell.ACTION_CREATE_PAIRINGLIST.equals(value)) {
|
||||
createPairingListTemplate(leaderboardDTO);
|
||||
} else if (LeaderboardConfigImagesBarCell.ACTION_PRINT_PAIRINGLIST.equals(value)) {
|
||||
openPairingListEntryPoint(leaderboardDTO);
|
||||
}
|
||||
final HasPermissions type = SecuredDomainType.LEADERBOARD;
|
||||
final Function<StrippedLeaderboardDTO, String> idFactory = SecuredObjectUtils::getTypeRelativeObjectIdentifier;
|
||||
final AccessControlledActionsColumn<StrippedLeaderboardDTO, LeaderboardConfigImagesBarCell> leaderboardActionColumn = new AccessControlledActionsColumn<>(
|
||||
new LeaderboardConfigImagesBarCell(stringMessages), userService, type, idFactory);
|
||||
|
||||
leaderboardActionColumn.addAction(UPDATE.name(), UPDATE, this::editLeaderboard);
|
||||
leaderboardActionColumn.addAction(DELETE.name(), DELETE, leaderboardDTO -> {
|
||||
if (Window.confirm(stringMessages.doYouReallyWantToRemoveLeaderboard(leaderboardDTO.getName()))) {
|
||||
removeLeaderboard(leaderboardDTO);
|
||||
}
|
||||
});
|
||||
leaderboardActionColumn.addAction(LeaderboardConfigImagesBarCell.ACTION_EDIT_SCORES, leaderboardDTO -> {
|
||||
String leaderboardEditingUrl = EntryPointWithSettingsLinkFactory.createLeaderboardEditingLink(leaderboardDTO.getName());
|
||||
Window.open(leaderboardEditingUrl, "_blank", null);
|
||||
});
|
||||
leaderboardActionColumn.addAction(LeaderboardConfigImagesBarCell.ACTION_EDIT_COMPETITORS, UPDATE, leaderboardDTO -> {
|
||||
EditCompetitorsDialog editCompetitorsDialog = new EditCompetitorsDialog(sailingService, leaderboardDTO.getName(), stringMessages,
|
||||
errorReporter, new DialogCallback<List<CompetitorWithBoatDTO>>() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok(final List<CompetitorWithBoatDTO> result) {
|
||||
}
|
||||
});
|
||||
editCompetitorsDialog.show();
|
||||
});
|
||||
leaderboardActionColumn.addAction(LeaderboardConfigImagesBarCell.ACTION_CONFIGURE_URL, leaderboardDTO -> {
|
||||
sailingService.getAvailableDetailTypesForLeaderboard(leaderboardDTO.getName(), null, new AsyncCallback<Iterable<DetailType>>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
logger.log(Level.WARNING, "Could not load detailtypes for leaderboard", caught);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Iterable<DetailType> result) {
|
||||
openLeaderboardUrlConfigDialog(leaderboardDTO, result);
|
||||
}
|
||||
});
|
||||
});
|
||||
leaderboardActionColumn.addAction(LeaderboardConfigImagesBarCell.ACTION_EXPORT_XML, leaderboardDTO ->
|
||||
Window.open(UriUtils.fromString("/export/xml?domain=leaderboard&name=" + leaderboardDTO.getName()).asString(), "", null)
|
||||
);
|
||||
leaderboardActionColumn.addAction(LeaderboardConfigImagesBarCell.ACTION_OPEN_COACH_DASHBOARD, leaderboardDTO -> {
|
||||
Map<String, String> dashboardURLParameters = new HashMap<String, String>();
|
||||
dashboardURLParameters.put("leaderboardName", leaderboardDTO.getName());
|
||||
Window.open(EntryPointLinkFactory.createDashboardLink(dashboardURLParameters), "", null);
|
||||
});
|
||||
leaderboardActionColumn.addAction(LeaderboardConfigImagesBarCell.ACTION_SHOW_REGATTA_LOG, leaderboardDTO -> showRegattaLog());
|
||||
leaderboardActionColumn.addAction(LeaderboardConfigImagesBarCell.ACTION_CREATE_PAIRINGLIST, this::createPairingListTemplate);
|
||||
leaderboardActionColumn.addAction(LeaderboardConfigImagesBarCell.ACTION_PRINT_PAIRINGLIST, this::openPairingListEntryPoint);
|
||||
|
||||
final DialogConfig<StrippedLeaderboardDTO> config = EditOwnershipDialog.create(userService.getUserManagementService(), type,
|
||||
idFactory, leaderboardDTO -> reloadLeaderboardForTable(leaderboardDTO.getName()),
|
||||
leaderboardDTO -> errorReporter.reportError(stringMessages.errorUpdatingOwnership(leaderboardDTO.getName())));
|
||||
leaderboardActionColumn.addAction(CHANGE_OWNERSHIP.name(), CHANGE_OWNERSHIP, config::openDialog);
|
||||
|
||||
leaderboardTable.addColumn(selectionCheckboxColumn, selectionCheckboxColumn.getHeader());
|
||||
leaderboardTable.addColumn(linkColumn, stringMessages.name());
|
||||
leaderboardTable.addColumn(leaderboardDisplayNameColumn, stringMessages.displayName());
|
||||
@@ -1002,19 +1016,38 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
|
||||
|
||||
@Override
|
||||
public void onSuccess(StrippedLeaderboardDTO updatedLeaderboard) {
|
||||
int indexOfLeaderboard = 0;
|
||||
for (int i = 0; i < filteredLeaderboardList.getList().size(); i++) {
|
||||
StrippedLeaderboardDTO dao = filteredLeaderboardList.getList().get(i);
|
||||
if (dao.getName().equals(oldLeaderboardName)) {
|
||||
indexOfLeaderboard = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
filteredLeaderboardList.getList().set(indexOfLeaderboard, updatedLeaderboard);
|
||||
filteredLeaderboardList.refresh();
|
||||
refreshLeaderboardInTable(oldLeaderboardName, updatedLeaderboard);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void reloadLeaderboardForTable(final String leaderboardName) {
|
||||
sailingService.getLeaderboard(leaderboardName, new AsyncCallback<StrippedLeaderboardDTO>() {
|
||||
@Override
|
||||
public void onSuccess(StrippedLeaderboardDTO result) {
|
||||
refreshLeaderboardInTable(leaderboardName, result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to load leaderboard " + leaderboardName + ": "
|
||||
+ caught.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void refreshLeaderboardInTable(final String oldLeaderboardName, StrippedLeaderboardDTO updatedLeaderboard) {
|
||||
int indexOfLeaderboard = 0;
|
||||
for (int i = 0; i < filteredLeaderboardList.getList().size(); i++) {
|
||||
StrippedLeaderboardDTO dao = filteredLeaderboardList.getList().get(i);
|
||||
if (dao.getName().equals(oldLeaderboardName)) {
|
||||
indexOfLeaderboard = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
filteredLeaderboardList.getList().set(indexOfLeaderboard, updatedLeaderboard);
|
||||
filteredLeaderboardList.refresh();
|
||||
}
|
||||
|
||||
private void removeLeaderboards(final Collection<StrippedLeaderboardDTO> leaderboards) {
|
||||
if (!leaderboards.isEmpty()) {
|
||||
|
||||
+5
@@ -13,6 +13,7 @@ import com.sap.sailing.domain.common.dto.NamedSecuredObjectDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
import com.sap.sse.common.Named;
|
||||
import com.sap.sse.security.shared.Ownership;
|
||||
import com.sap.sse.security.ui.client.i18n.StringMessages;
|
||||
@@ -32,6 +33,10 @@ public class SecuredObjectUtils {
|
||||
public static String getTypeRelativeObjectIdentifier(final LeaderboardGroupDTO securedObject) {
|
||||
return securedObject.getId().toString();
|
||||
}
|
||||
|
||||
public static String getTypeRelativeObjectIdentifier(final StrippedLeaderboardDTO securedObject) {
|
||||
return securedObject.getName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds sort-able {@link Column column}s to the provided {@link AbstractCellTable cell table} showing group owner
|
||||
|
||||
+4
-3
@@ -74,6 +74,7 @@ import com.sap.sse.gwt.client.celltable.ImagesBarColumn;
|
||||
import com.sap.sse.gwt.client.celltable.SelectionCheckboxColumn;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sse.security.ui.client.UserService;
|
||||
|
||||
/**
|
||||
* Allows the user to start and stop tracking of races using the RaceLog-tracking connector.
|
||||
@@ -87,10 +88,10 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
|
||||
protected boolean regattaHasCompetitors = false;
|
||||
private Map<Triple<String, String, String>, Pair<TimePointSpecificationFoundInLog, TimePointSpecificationFoundInLog>> raceWithStartAndEndOfTrackingTime = new HashMap<>();
|
||||
|
||||
public SmartphoneTrackingEventManagementPanel(SailingServiceAsync sailingService,
|
||||
public SmartphoneTrackingEventManagementPanel(SailingServiceAsync sailingService, UserService userService,
|
||||
RegattaRefresher regattaRefresher, LeaderboardsRefresher leaderboardsRefresher,
|
||||
ErrorReporter errorReporter, StringMessages stringMessages) {
|
||||
super(sailingService, regattaRefresher, leaderboardsRefresher, errorReporter,
|
||||
super(sailingService, userService, regattaRefresher, leaderboardsRefresher, errorReporter,
|
||||
stringMessages, /* multiSelection */ true);
|
||||
// add upload panel
|
||||
CaptionPanel importPanel = new CaptionPanel(stringMessages.importFixes());
|
||||
@@ -124,7 +125,7 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addColumnsToLeaderboardTableAndSetSelectionModel(FlushableCellTable<StrippedLeaderboardDTO> leaderboardTable,
|
||||
protected void addColumnsToLeaderboardTableAndSetSelectionModel(UserService userService, FlushableCellTable<StrippedLeaderboardDTO> leaderboardTable,
|
||||
AdminConsoleTableResources tableResources, ListDataProvider<StrippedLeaderboardDTO> listDataProvider) {
|
||||
ListHandler<StrippedLeaderboardDTO> leaderboardColumnListHandler = new ListHandler<StrippedLeaderboardDTO>(
|
||||
filteredLeaderboardList.getList());
|
||||
|
||||
Reference in new issue
Block a user