mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-08 21:30:57 +00:00
Merge remote-tracking branch 'server/multiDeletion'
This commit is contained in:
commit
159e99de2e
8 files changed
+205
-55
No files matched your search
+1
-1
@@ -128,7 +128,7 @@ public class AdminConsoleEntryPoint extends AbstractEntryPoint implements Regatt
|
||||
@Override
|
||||
public void onSelection(SelectionEvent<Integer> event) {
|
||||
if (leaderboardConfigPanel.isVisible()) {
|
||||
leaderboardConfigPanel.loadAndRefreshLeaderboards();
|
||||
leaderboardConfigPanel.loadLeaderboards();
|
||||
}
|
||||
if (mediaPanel.isVisible()) {
|
||||
mediaPanel.onShow();
|
||||
|
||||
+77
-37
@@ -2,6 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
@@ -41,6 +42,7 @@ import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.view.client.ListDataProvider;
|
||||
import com.google.gwt.view.client.MultiSelectionModel;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.google.gwt.view.client.SingleSelectionModel;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
@@ -91,9 +93,9 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
||||
|
||||
private final CellTable<StrippedLeaderboardDTO> leaderboardTable;
|
||||
|
||||
private final CellTable<RaceColumnDTOAndFleetDTOWithNameBasedEquality> raceColumnTable;
|
||||
private Button leaderboardRemoveButton;
|
||||
|
||||
private StrippedLeaderboardDTO selectedLeaderboard;
|
||||
private final CellTable<RaceColumnDTOAndFleetDTOWithNameBasedEquality> raceColumnTable;
|
||||
|
||||
private RaceColumnDTOAndFleetDTOWithNameBasedEquality selectedRaceInLeaderboard;
|
||||
|
||||
@@ -112,7 +114,7 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
||||
|
||||
private List<StrippedLeaderboardDTO> availableLeaderboardList;
|
||||
|
||||
private final SingleSelectionModel<StrippedLeaderboardDTO> leaderboardSelectionModel;
|
||||
private final MultiSelectionModel<StrippedLeaderboardDTO> leaderboardSelectionModel;
|
||||
|
||||
private final RaceSelectionProvider raceSelectionProvider;
|
||||
|
||||
@@ -192,11 +194,11 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
||||
VerticalPanel leaderboardsPanel = new VerticalPanel();
|
||||
leaderboardsCaptionPanel.add(leaderboardsPanel);
|
||||
|
||||
HorizontalPanel leaderboardConfigControlsPanel = new HorizontalPanel();
|
||||
Label lblFilterEvents = new Label(stringMessages.filterLeaderboardsByName() + ": ");
|
||||
HorizontalPanel filterPanel = new HorizontalPanel();
|
||||
filterPanel.setSpacing(5);
|
||||
filterPanel.add(lblFilterEvents);
|
||||
filterPanel.setCellVerticalAlignment(lblFilterEvents, HasVerticalAlignment.ALIGN_MIDDLE);
|
||||
leaderboardConfigControlsPanel.setSpacing(5);
|
||||
leaderboardConfigControlsPanel.add(lblFilterEvents);
|
||||
leaderboardConfigControlsPanel.setCellVerticalAlignment(lblFilterEvents, HasVerticalAlignment.ALIGN_MIDDLE);
|
||||
filterLeaderboardTextbox = new TextBox();
|
||||
filterLeaderboardTextbox.addKeyUpHandler(new KeyUpHandler() {
|
||||
@Override
|
||||
@@ -204,8 +206,20 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
||||
fillRaceListFromAvailableLeaderboardsApplyingFilter();
|
||||
}
|
||||
});
|
||||
filterPanel.add(filterLeaderboardTextbox);
|
||||
leaderboardsPanel.add(filterPanel);
|
||||
leaderboardConfigControlsPanel.add(filterLeaderboardTextbox);
|
||||
|
||||
leaderboardRemoveButton = new Button(stringMessages.remove());
|
||||
leaderboardRemoveButton.setEnabled(false);
|
||||
leaderboardRemoveButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
if (Window.confirm("Do you really want to remove the leaderboards?")) {
|
||||
removeLeaderboards(leaderboardSelectionModel.getSelectedSet());
|
||||
}
|
||||
}
|
||||
});
|
||||
leaderboardConfigControlsPanel.add(leaderboardRemoveButton);
|
||||
leaderboardsPanel.add(leaderboardConfigControlsPanel);
|
||||
|
||||
AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class);
|
||||
leaderboardTable = new CellTable<StrippedLeaderboardDTO>(/* pageSize */10000, tableRes);
|
||||
@@ -351,11 +365,10 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
||||
leaderboardTable.addColumn(leaderboardActionColumn, stringMessages.actions());
|
||||
leaderboardTable.addColumnSortHandler(leaderboardColumnListHandler);
|
||||
leaderboardTable.setWidth("100%");
|
||||
leaderboardSelectionModel = new SingleSelectionModel<StrippedLeaderboardDTO>();
|
||||
leaderboardSelectionModel = new MultiSelectionModel<StrippedLeaderboardDTO>();
|
||||
leaderboardTable.setSelectionModel(leaderboardSelectionModel);
|
||||
leaderboardSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
|
||||
public void onSelectionChange(SelectionChangeEvent event) {
|
||||
setSelectedLeaderboard(leaderboardSelectionModel.getSelectedObject());
|
||||
leaderboardSelectionChanged();
|
||||
}
|
||||
});
|
||||
@@ -562,7 +575,7 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
||||
}
|
||||
});
|
||||
|
||||
loadAndRefreshLeaderboards();
|
||||
loadLeaderboards();
|
||||
}
|
||||
|
||||
protected void openUpdateFlexibleLeaderboardDialog(final StrippedLeaderboardDTO leaderboardDTO, final List<StrippedLeaderboardDTO> otherExistingLeaderboard,
|
||||
@@ -610,7 +623,7 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
||||
LeaderboardEntryPoint.getUrlConfigurationDialog(leaderboard, stringMessages).show();
|
||||
}
|
||||
|
||||
public void loadAndRefreshLeaderboards() {
|
||||
public void loadLeaderboards() {
|
||||
sailingService.getLeaderboards(new AsyncCallback<List<StrippedLeaderboardDTO>>() {
|
||||
@Override
|
||||
public void onSuccess(List<StrippedLeaderboardDTO> leaderboards) {
|
||||
@@ -637,16 +650,23 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
||||
* after the refresh has successfully completed. See {@link #selectRaceColumn(String)}.
|
||||
*/
|
||||
public void loadAndRefreshLeaderboard(final String leaderboardName, final String nameOfRaceColumnToSelect) {
|
||||
leaderboardSelectionModel.setSelected(null, true);
|
||||
sailingService.getLeaderboard(leaderboardName, new AsyncCallback<StrippedLeaderboardDTO>() {
|
||||
@Override
|
||||
public void onSuccess(StrippedLeaderboardDTO leaderboard) {
|
||||
for (StrippedLeaderboardDTO leaderboardDTO : leaderboardSelectionModel.getSelectedSet()) {
|
||||
if (leaderboardDTO.name.equals(leaderboardName)) {
|
||||
leaderboardSelectionModel.setSelected(leaderboardDTO, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
replaceLeaderboardInList(leaderboardList.getList(), leaderboardName, leaderboard);
|
||||
replaceLeaderboardInList(availableLeaderboardList, leaderboardName, leaderboard);
|
||||
leaderboardSelectionModel.setSelected(leaderboard, true);
|
||||
if (nameOfRaceColumnToSelect != null) {
|
||||
selectRaceColumn(nameOfRaceColumnToSelect);
|
||||
}
|
||||
leaderboardSelectionChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -972,25 +992,26 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
||||
raceSelectionProvider.addRaceSelectionChangeListener(LeaderboardConfigPanel.this);
|
||||
}
|
||||
});
|
||||
if (getSelectedLeaderboard() != null) {
|
||||
leaderboardRemoveButton.setEnabled(!leaderboardSelectionModel.getSelectedSet().isEmpty());
|
||||
StrippedLeaderboardDTO selectedLeaderboard = getSelectedLeaderboard();
|
||||
if (leaderboardSelectionModel.getSelectedSet().size() == 1 && selectedLeaderboard != null) {
|
||||
raceColumnAndFleetList.getList().clear();
|
||||
for (RaceColumnDTO raceColumn : getSelectedLeaderboard().getRaceList()) {
|
||||
for (RaceColumnDTO raceColumn : selectedLeaderboard.getRaceList()) {
|
||||
for (FleetDTO fleet : raceColumn.getFleets()) {
|
||||
raceColumnAndFleetList.getList().add(new RaceColumnDTOAndFleetDTOWithNameBasedEquality(raceColumn, fleet));
|
||||
}
|
||||
}
|
||||
selectedLeaderBoardPanel.setVisible(true);
|
||||
selectedLeaderBoardPanel.setCaptionText("Details of leaderboard '" + getSelectedLeaderboard().name + "'");
|
||||
if (!getSelectedLeaderboard().isMetaLeaderboard) {
|
||||
selectedLeaderBoardPanel.setCaptionText("Details of leaderboard '" + selectedLeaderboard.name + "'");
|
||||
if (!selectedLeaderboard.isMetaLeaderboard) {
|
||||
trackedRacesCaptionPanel.setVisible(true);
|
||||
}
|
||||
addRaceColumnsButton.setVisible(!getSelectedLeaderboard().isRegattaLeaderboard);
|
||||
columnMoveUpButton.setVisible(!getSelectedLeaderboard().isRegattaLeaderboard);
|
||||
columnMoveDownButton.setVisible(!getSelectedLeaderboard().isRegattaLeaderboard);
|
||||
addRaceColumnsButton.setVisible(!selectedLeaderboard.isRegattaLeaderboard);
|
||||
columnMoveUpButton.setVisible(!selectedLeaderboard.isRegattaLeaderboard);
|
||||
columnMoveDownButton.setVisible(!selectedLeaderboard.isRegattaLeaderboard);
|
||||
} else {
|
||||
selectedLeaderBoardPanel.setVisible(false);
|
||||
trackedRacesCaptionPanel.setVisible(false);
|
||||
setSelectedLeaderboard(null);
|
||||
selectedRaceInLeaderboard = null;
|
||||
}
|
||||
}
|
||||
@@ -1092,8 +1113,8 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
||||
private void addLeaderboard(StrippedLeaderboardDTO result) {
|
||||
leaderboardList.getList().add(result);
|
||||
availableLeaderboardList.add(result);
|
||||
setSelectedLeaderboard(result);
|
||||
leaderboardSelectionChanged();
|
||||
leaderboardSelectionModel.clear();
|
||||
leaderboardSelectionModel.setSelected(result, true);
|
||||
}
|
||||
|
||||
private void updateLeaderboard(final String oldLeaderboardName, final LeaderboardDescriptor leaderboardToUpdate) {
|
||||
@@ -1120,6 +1141,30 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void removeLeaderboards(final Collection<StrippedLeaderboardDTO> leaderboards) {
|
||||
if (!leaderboards.isEmpty()) {
|
||||
Set<String> leaderboardNames = new HashSet<String>();
|
||||
for (StrippedLeaderboardDTO leaderboard : leaderboards) {
|
||||
leaderboardNames.add(leaderboard.name);
|
||||
}
|
||||
sailingService.removeLeaderboards(leaderboardNames, new AsyncCallback<Void>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to remove the leaderboards:" + caught.getMessage());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
for (StrippedLeaderboardDTO leaderboard : leaderboards) {
|
||||
removeLeaderboardFromTable(leaderboard);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void removeLeaderboard(final StrippedLeaderboardDTO leaderBoard) {
|
||||
sailingService.removeLeaderboard(leaderBoard.name, new AsyncCallback<Void>() {
|
||||
@@ -1131,18 +1176,17 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
// check if the removed leaderboard was the selected one
|
||||
leaderboardList.getList().remove(leaderBoard);
|
||||
availableLeaderboardList.remove(leaderBoard);
|
||||
|
||||
if (getSelectedLeaderboard() != null && getSelectedLeaderboard().name.equals(leaderBoard.name)) {
|
||||
setSelectedLeaderboard(null);
|
||||
leaderboardSelectionChanged();
|
||||
}
|
||||
removeLeaderboardFromTable(leaderBoard);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void removeLeaderboardFromTable(final StrippedLeaderboardDTO leaderBoard) {
|
||||
leaderboardList.getList().remove(leaderBoard);
|
||||
availableLeaderboardList.remove(leaderBoard);
|
||||
leaderboardSelectionModel.setSelected(leaderBoard, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRaceSelectionChange(List<RegattaAndRaceIdentifier> selectedRaces) {
|
||||
// if no leaderboard column is selected, ignore the race selection change
|
||||
@@ -1208,10 +1252,6 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
||||
|
||||
@Override
|
||||
public StrippedLeaderboardDTO getSelectedLeaderboard() {
|
||||
return selectedLeaderboard;
|
||||
}
|
||||
|
||||
private void setSelectedLeaderboard(StrippedLeaderboardDTO selectedLeaderboard) {
|
||||
this.selectedLeaderboard = selectedLeaderboard;
|
||||
return leaderboardSelectionModel.getSelectedSet().isEmpty() ? null : leaderboardSelectionModel.getSelectedSet().iterator().next();
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -28,18 +28,18 @@ import com.google.gwt.user.client.ui.SimplePanel;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.view.client.ListDataProvider;
|
||||
import com.google.gwt.view.client.MultiSelectionModel;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.google.gwt.view.client.SelectionModel;
|
||||
import com.google.gwt.view.client.SingleSelectionModel;
|
||||
import com.sap.sailing.domain.common.RegattaIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaName;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.RegattaDisplayer;
|
||||
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
|
||||
import com.sap.sailing.gwt.ui.client.RegattaSelectionProvider;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
|
||||
@@ -108,7 +108,7 @@ public class RegattaListComposite extends Composite implements RegattaDisplayer
|
||||
regattaTable = createRegattaTable();
|
||||
regattaTable.setVisible(false);
|
||||
|
||||
regattaSelectionModel = new SingleSelectionModel<RegattaDTO>();
|
||||
regattaSelectionModel = new MultiSelectionModel<RegattaDTO>();
|
||||
regattaSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
|
||||
@Override
|
||||
public void onSelectionChange(SelectionChangeEvent event) {
|
||||
|
||||
+52
-10
@@ -2,16 +2,19 @@ package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.HasVerticalAlignment;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.SimplePanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.sap.sailing.domain.common.RegattaIdentifier;
|
||||
@@ -44,6 +47,7 @@ public class RegattaStructureManagementPanel extends SimplePanel implements Rega
|
||||
|
||||
private final RegattaRefresher regattaRefresher;
|
||||
private RegattaSelectionProvider regattaSelectionProvider;
|
||||
private Button removeRegattaButton;
|
||||
|
||||
private RegattaListComposite regattaListComposite;
|
||||
private RegattaDetailsComposite regattaDetailsComposite;
|
||||
@@ -59,19 +63,40 @@ public class RegattaStructureManagementPanel extends SimplePanel implements Rega
|
||||
setWidget(mainPanel);
|
||||
mainPanel.setWidth("100%");
|
||||
|
||||
HorizontalPanel regattaManagementControlsPanel = new HorizontalPanel();
|
||||
regattaManagementControlsPanel.setSpacing(5);
|
||||
Button addRegattaBtn = new Button(stringMessages.addRegatta());
|
||||
mainPanel.add(addRegattaBtn);
|
||||
addRegattaBtn.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
openCreateRegattaDialog();
|
||||
}
|
||||
});
|
||||
regattaManagementControlsPanel.add(addRegattaBtn);
|
||||
|
||||
removeRegattaButton = new Button(stringMessages.remove());
|
||||
removeRegattaButton.setEnabled(false);
|
||||
removeRegattaButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
if (Window.confirm("Do you really want to remove the regattas? This will also remove all leaderboards for the regattas!")) {
|
||||
//Creating a new Collection, because getSelectedRegattas returns an
|
||||
//unmodifiable collection, which can't be sent to the server.
|
||||
Collection<RegattaIdentifier> regattas = new HashSet<RegattaIdentifier>();
|
||||
for (RegattaIdentifier regatta : regattaSelectionProvider.getSelectedRegattas()) {
|
||||
regattas.add(regatta);
|
||||
}
|
||||
removeRegattas(regattas);
|
||||
}
|
||||
}
|
||||
});
|
||||
regattaManagementControlsPanel.add(removeRegattaButton);
|
||||
mainPanel.add(regattaManagementControlsPanel);
|
||||
|
||||
Grid grid = new Grid(1 ,2);
|
||||
mainPanel.add(grid);
|
||||
|
||||
regattaSelectionProvider = new RegattaSelectionModel(false);
|
||||
regattaSelectionProvider = new RegattaSelectionModel(true);
|
||||
regattaSelectionProvider.addRegattaSelectionChangeListener(this);
|
||||
|
||||
regattaListComposite = new RegattaListComposite(sailingService, regattaSelectionProvider, regattaRefresher, errorReporter, stringMessages);
|
||||
@@ -83,6 +108,22 @@ public class RegattaStructureManagementPanel extends SimplePanel implements Rega
|
||||
grid.setWidget(0, 1, regattaDetailsComposite);
|
||||
}
|
||||
|
||||
protected void removeRegattas(Collection<RegattaIdentifier> regattas) {
|
||||
if (!regattas.isEmpty()) {
|
||||
sailingService.removeRegattas(regattas, new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to remove the regattas:" + caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
regattaRefresher.fillRegattas();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void openCreateRegattaDialog() {
|
||||
final Collection<RegattaDTO> existingRegattas = Collections.unmodifiableCollection(regattaListComposite.getAllRegattas());
|
||||
|
||||
@@ -145,20 +186,21 @@ public class RegattaStructureManagementPanel extends SimplePanel implements Rega
|
||||
@Override
|
||||
public void onRegattaSelectionChange(List<RegattaIdentifier> selectedRegattas) {
|
||||
final RegattaIdentifier selectedRegatta;
|
||||
if (selectedRegattas.iterator().hasNext()) {
|
||||
if (selectedRegattas.size() == 1 && selectedRegattas.iterator().hasNext()) {
|
||||
selectedRegatta = selectedRegattas.iterator().next();
|
||||
if (selectedRegatta != null && regattaListComposite.getAllRegattas() != null) {
|
||||
for(RegattaDTO regattaDTO: regattaListComposite.getAllRegattas()) {
|
||||
if(regattaDTO.getRegattaIdentifier().equals(selectedRegatta)) {
|
||||
regattaDetailsComposite.setRegatta(regattaDTO);
|
||||
regattaDetailsComposite.setVisible(true);
|
||||
break;
|
||||
if (selectedRegatta != null && regattaListComposite.getAllRegattas() != null) {
|
||||
for (RegattaDTO regattaDTO : regattaListComposite.getAllRegattas()) {
|
||||
if (regattaDTO.getRegattaIdentifier().equals(selectedRegatta)) {
|
||||
regattaDetailsComposite.setRegatta(regattaDTO);
|
||||
regattaDetailsComposite.setVisible(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
regattaDetailsComposite.setRegatta(null);
|
||||
regattaDetailsComposite.setVisible(false);
|
||||
}
|
||||
removeRegattaButton.setEnabled(!selectedRegattas.isEmpty());
|
||||
}
|
||||
}
|
||||
+39
-4
@@ -1,7 +1,9 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.cell.client.AbstractCell;
|
||||
@@ -23,8 +25,8 @@ import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.SimplePanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.view.client.ListDataProvider;
|
||||
import com.google.gwt.view.client.MultiSelectionModel;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.google.gwt.view.client.SingleSelectionModel;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.EventRefresher;
|
||||
@@ -46,8 +48,9 @@ public class SailingEventManagementPanel extends SimplePanel implements EventRef
|
||||
private final StringMessages stringMessages;
|
||||
|
||||
private CellTable<EventDTO> eventTable;
|
||||
private SingleSelectionModel<EventDTO> eventSelectionModel;
|
||||
private MultiSelectionModel<EventDTO> eventSelectionModel;
|
||||
private ListDataProvider<EventDTO> eventProvider;
|
||||
private Button removeEventsButton;
|
||||
|
||||
public static class AnchorCell extends AbstractCell<SafeHtml> {
|
||||
@Override
|
||||
@@ -88,6 +91,18 @@ public class SailingEventManagementPanel extends SimplePanel implements EventRef
|
||||
}
|
||||
});
|
||||
eventsPanel.add(createEventBtn);
|
||||
|
||||
removeEventsButton = new Button(stringMessages.remove());
|
||||
removeEventsButton.setEnabled(false);
|
||||
removeEventsButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
if (Window.confirm("Do you really want to remove the events?")) {
|
||||
removeEvents(eventSelectionModel.getSelectedSet());
|
||||
}
|
||||
}
|
||||
});
|
||||
eventsPanel.add(removeEventsButton);
|
||||
|
||||
// sailing events table
|
||||
AnchorCell anchorCell = new AnchorCell();
|
||||
@@ -146,7 +161,7 @@ public class SailingEventManagementPanel extends SimplePanel implements EventRef
|
||||
@Override
|
||||
public void update(int index, EventDTO event, String value) {
|
||||
if (EventConfigImagesBarCell.ACTION_REMOVE.equals(value)) {
|
||||
if (Window.confirm(stringMessages.doYouReallyWantToRemoveRegatta(event.getName()))) {
|
||||
if (Window.confirm("Do you really want to remove the event: '" + event.getName() + "' ?")) {
|
||||
removeEvent(event);
|
||||
}
|
||||
} else if (EventConfigImagesBarCell.ACTION_EDIT.equals(value)) {
|
||||
@@ -163,10 +178,11 @@ public class SailingEventManagementPanel extends SimplePanel implements EventRef
|
||||
eventTable.addColumn(courseAreasColumn, stringMessages.courseAreas());
|
||||
eventTable.addColumn(eventActionColumn, stringMessages.actions());
|
||||
|
||||
eventSelectionModel = new SingleSelectionModel<EventDTO>();
|
||||
eventSelectionModel = new MultiSelectionModel<EventDTO>();
|
||||
eventSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
|
||||
@Override
|
||||
public void onSelectionChange(SelectionChangeEvent event) {
|
||||
removeEventsButton.setEnabled(!eventSelectionModel.getSelectedSet().isEmpty());
|
||||
}
|
||||
});
|
||||
eventTable.setSelectionModel(eventSelectionModel);
|
||||
@@ -178,6 +194,25 @@ public class SailingEventManagementPanel extends SimplePanel implements EventRef
|
||||
fillEvents();
|
||||
}
|
||||
|
||||
protected void removeEvents(Collection<EventDTO> events) {
|
||||
if (!events.isEmpty()) {
|
||||
Collection<String> eventIds = new HashSet<String>();
|
||||
for (EventDTO event : events) {
|
||||
eventIds.add(event.id);
|
||||
}
|
||||
sailingService.removeEvents(eventIds, new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to remove the events:" + caught.getMessage());
|
||||
}
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
fillEvents();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void removeEvent(final EventDTO event) {
|
||||
sailingService.removeEvent(event.id, new AsyncCallback<Void>() {
|
||||
@Override
|
||||
|
||||
+6
@@ -133,6 +133,8 @@ public interface SailingService extends RemoteService {
|
||||
|
||||
void removeLeaderboard(String leaderboardName);
|
||||
|
||||
void removeLeaderboards(Collection<String> leaderboardNames);
|
||||
|
||||
void renameLeaderboard(String leaderboardName, String newLeaderboardName);
|
||||
|
||||
void renameLeaderboardColumn(String leaderboardName, String oldColumnName, String newColumnName);
|
||||
@@ -150,6 +152,8 @@ public interface SailingService extends RemoteService {
|
||||
ScoringSchemeType scoringSchemeType, String defaultCourseAreaId);
|
||||
|
||||
void removeRegatta(RegattaIdentifier regattaIdentifier);
|
||||
|
||||
void removeRegattas(Collection<RegattaIdentifier> regattas);
|
||||
|
||||
void updateRegatta(RegattaIdentifier regattaIdentifier, String defaultCourseAreaId);
|
||||
|
||||
@@ -246,6 +250,8 @@ public interface SailingService extends RemoteService {
|
||||
|
||||
void removeEvent(String eventIdAsString);
|
||||
|
||||
void removeEvents(Collection<String> eventIdsAsStrings);
|
||||
|
||||
void renameEvent(String eventIdAsString, String newName);
|
||||
|
||||
EventDTO getEventByName(String eventName);
|
||||
|
||||
+6
@@ -185,6 +185,8 @@ public interface SailingServiceAsync {
|
||||
|
||||
void removeLeaderboard(String leaderboardName, AsyncCallback<Void> asyncCallback);
|
||||
|
||||
void removeLeaderboards(Collection<String> leaderboardNames, AsyncCallback<Void> asyncCallback);
|
||||
|
||||
void renameLeaderboard(String leaderboardName, String newLeaderboardName, AsyncCallback<Void> asyncCallback);
|
||||
|
||||
void addColumnToLeaderboard(String columnName, String leaderboardName, boolean medalRace,
|
||||
@@ -327,6 +329,8 @@ public interface SailingServiceAsync {
|
||||
*/
|
||||
void removeEvent(String eventIdAsString, AsyncCallback<Void> callback);
|
||||
|
||||
void removeEvents(Collection<String> eventIdsAsStrings, AsyncCallback<Void> asyncCallback);
|
||||
|
||||
void createEvent(String eventName, String description, String publicationUrl, boolean isPublic, List<String> courseAreaNames, AsyncCallback<EventDTO> callback);
|
||||
|
||||
void updateEvent(String eventName, String eventIdAsString, VenueDTO venue, String publicationUrl, boolean isPublic,
|
||||
@@ -336,6 +340,8 @@ public interface SailingServiceAsync {
|
||||
|
||||
void removeRegatta(RegattaIdentifier regattaIdentifier, AsyncCallback<Void> callback);
|
||||
|
||||
void removeRegattas(Collection<RegattaIdentifier> regattas, AsyncCallback<Void> asyncCallback);
|
||||
|
||||
void addRaceColumnToSeries(RegattaIdentifier regattaIdentifier, String seriesName, String columnName,
|
||||
AsyncCallback<RaceColumnInSeriesDTO> callback);
|
||||
|
||||
|
||||
+21
@@ -1831,6 +1831,13 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
Leaderboard updatedLeaderboard = getService().apply(new UpdateLeaderboard(leaderboardName, newLeaderboardName, newLeaderboardDisplayName, newDiscardingThresholds, newCourseAreaUuid));
|
||||
return createStrippedLeaderboardDTO(updatedLeaderboard, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeLeaderboards(Collection<String> leaderboardNames) {
|
||||
for (String leaderoardName : leaderboardNames) {
|
||||
removeLeaderboard(leaderoardName);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeLeaderboard(String leaderboardName) {
|
||||
@@ -2550,6 +2557,13 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
return convertToCourseAreaDTO(courseArea);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEvents(Collection<String> eventIdsAsStrings) {
|
||||
for (String eventId : eventIdsAsStrings) {
|
||||
removeEvent(eventId);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEvent(String eventIdAsString) {
|
||||
UUID eventUuid = convertIdentifierStringToUuid(eventIdAsString);
|
||||
@@ -2677,6 +2691,13 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
}
|
||||
return regattaName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeRegattas(Collection<RegattaIdentifier> selectedRegattas) {
|
||||
for (RegattaIdentifier regatta : selectedRegattas) {
|
||||
removeRegatta(regatta);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeRegatta(RegattaIdentifier regattaIdentifier) {
|
||||
|
||||
Reference in new issue
Block a user