mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-21 03:30:12 +00:00
show additional action items in RaceLog Tracking race column/fleet table
This commit is contained in:
1 parent
9e0fc72b42
commit
41d1fd5266
5 files changed
+118
-116
No files matched your search
+100
@@ -2,8 +2,10 @@ package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
@@ -29,8 +31,11 @@ import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||
import com.sap.sailing.domain.common.dto.NamedDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.RaceColumnInLeaderboardDialog.RaceColumnDescriptor;
|
||||
import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer;
|
||||
import com.sap.sailing.gwt.ui.client.LeaderboardsRefresher;
|
||||
import com.sap.sailing.gwt.ui.client.ParallelExecutionCallback;
|
||||
import com.sap.sailing.gwt.ui.client.ParallelExecutionHolder;
|
||||
import com.sap.sailing.gwt.ui.client.RaceSelectionChangeListener;
|
||||
import com.sap.sailing.gwt.ui.client.RaceSelectionModel;
|
||||
import com.sap.sailing.gwt.ui.client.RaceSelectionProvider;
|
||||
@@ -39,11 +44,13 @@ import com.sap.sailing.gwt.ui.client.RegattasDisplayer;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.shared.controls.SelectionCheckboxColumn;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceLogDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
|
||||
|
||||
public abstract class AbstractLeaderboardConfigPanel extends FormPanel implements SelectedLeaderboardProvider,
|
||||
@@ -519,4 +526,97 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
|
||||
protected LeaderboardsRefresher getLeaderboardsRefresher() {
|
||||
return leaderboardsRefresher;
|
||||
}
|
||||
|
||||
protected void editRaceColumnOfLeaderboard(final RaceColumnDTOAndFleetDTOWithNameBasedEquality raceColumnWithFleet) {
|
||||
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
||||
final boolean oldIsMedalRace = raceColumnWithFleet.getA().isMedalRace();
|
||||
final String oldRaceColumnName = raceColumnWithFleet.getA().getRaceColumnName();
|
||||
final Double oldExplicitFactor = raceColumnWithFleet.getA().getExplicitFactor();
|
||||
// use a set to avoid duplicates in the case of regatta leaderboards with multiple fleets per column
|
||||
Set<RaceColumnDTO> existingRacesWithoutThisRace = new HashSet<RaceColumnDTO>();
|
||||
for (RaceColumnDTOAndFleetDTOWithNameBasedEquality pair : raceColumnTable.getDataProvider().getList()) {
|
||||
existingRacesWithoutThisRace.add(pair.getA());
|
||||
}
|
||||
existingRacesWithoutThisRace.remove(raceColumnWithFleet.getA());
|
||||
final RaceColumnInLeaderboardDialog raceDialog = new RaceColumnInLeaderboardDialog(existingRacesWithoutThisRace,
|
||||
raceColumnWithFleet.getA(), getSelectedLeaderboard().type.isRegattaLeaderboard(), stringMessages, new DialogCallback<RaceColumnDescriptor>() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok(final RaceColumnDescriptor result) {
|
||||
boolean rename = !oldRaceColumnName.equals(result.getName());
|
||||
boolean updateIsMedalRace = oldIsMedalRace != result.isMedalRace();
|
||||
boolean updateFactor = oldExplicitFactor != result.getExplicitFactor();
|
||||
List<ParallelExecutionCallback<Void>> callbacks = new ArrayList<ParallelExecutionCallback<Void>>();
|
||||
final ParallelExecutionCallback<Void> renameLeaderboardColumnCallback = new ParallelExecutionCallback<Void>();
|
||||
if (rename) {
|
||||
callbacks.add(renameLeaderboardColumnCallback);
|
||||
}
|
||||
final ParallelExecutionCallback<Void> updateIsMedalRaceCallback = new ParallelExecutionCallback<Void>();
|
||||
if (updateIsMedalRace) {
|
||||
callbacks.add(updateIsMedalRaceCallback);
|
||||
}
|
||||
final ParallelExecutionCallback<Void> updateLeaderboardColumnFactorCallback = new ParallelExecutionCallback<Void>();
|
||||
if (updateFactor) {
|
||||
callbacks.add(updateLeaderboardColumnFactorCallback);
|
||||
}
|
||||
new ParallelExecutionHolder(callbacks.toArray(new ParallelExecutionCallback<?>[0])) {
|
||||
@Override
|
||||
public void handleSuccess() {
|
||||
loadAndRefreshLeaderboard(selectedLeaderboardName, result.getName());
|
||||
}
|
||||
@Override
|
||||
public void handleFailure(Throwable t) {
|
||||
errorReporter.reportError("Error trying to update data of race column "
|
||||
+ oldRaceColumnName + " in leaderboard " + selectedLeaderboardName + ": "
|
||||
+ t.getMessage());
|
||||
}
|
||||
};
|
||||
if (rename) {
|
||||
sailingService.renameLeaderboardColumn(selectedLeaderboardName, oldRaceColumnName,
|
||||
result.getName(), renameLeaderboardColumnCallback);
|
||||
}
|
||||
if (updateIsMedalRace) {
|
||||
sailingService.updateIsMedalRace(selectedLeaderboardName, result.getName(),
|
||||
result.isMedalRace(), updateIsMedalRaceCallback);
|
||||
}
|
||||
if (updateFactor) {
|
||||
sailingService.updateLeaderboardColumnFactor(selectedLeaderboardName, result.getName(),
|
||||
result.getExplicitFactor(), updateLeaderboardColumnFactorCallback);
|
||||
}
|
||||
}
|
||||
});
|
||||
raceDialog.show();
|
||||
}
|
||||
|
||||
protected void showRaceLog(final RaceColumnDTO raceColumnDTO, final FleetDTO fleetDTO) {
|
||||
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
||||
sailingService.getRaceLog(selectedLeaderboardName, raceColumnDTO, fleetDTO,
|
||||
new MarkedAsyncCallback<RaceLogDTO>(
|
||||
new AsyncCallback<RaceLogDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(caught.getMessage(), true);
|
||||
}
|
||||
@Override
|
||||
public void onSuccess(RaceLogDTO result) {
|
||||
openRaceLogDialog(result);
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
private void openRaceLogDialog(RaceLogDTO raceLogDTO) {
|
||||
RaceLogDialog dialog = new RaceLogDialog(raceLogDTO, stringMessages, new DialogCallback<RaceLogDTO>() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok(RaceLogDTO result) {
|
||||
}
|
||||
});
|
||||
dialog.show();
|
||||
}
|
||||
}
|
||||
-97
@@ -37,12 +37,9 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.DisablableCheckboxCell.IsEnabled;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.RaceColumnInLeaderboardDialog.RaceColumnDescriptor;
|
||||
import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory;
|
||||
import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer;
|
||||
import com.sap.sailing.gwt.ui.client.LeaderboardsRefresher;
|
||||
import com.sap.sailing.gwt.ui.client.ParallelExecutionCallback;
|
||||
import com.sap.sailing.gwt.ui.client.ParallelExecutionHolder;
|
||||
import com.sap.sailing.gwt.ui.client.RaceSelectionChangeListener;
|
||||
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
|
||||
import com.sap.sailing.gwt.ui.client.RegattasDisplayer;
|
||||
@@ -52,7 +49,6 @@ import com.sap.sailing.gwt.ui.client.shared.controls.SelectionCheckboxColumn;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardEntryPoint;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter;
|
||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceLogDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceLogSetStartTimeAndProcedureDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
import com.sap.sse.common.Util;
|
||||
@@ -482,35 +478,6 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
|
||||
}).show();
|
||||
}
|
||||
|
||||
private void showRaceLog(final RaceColumnDTO raceColumnDTO, final FleetDTO fleetDTO) {
|
||||
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
||||
sailingService.getRaceLog(selectedLeaderboardName, raceColumnDTO, fleetDTO,
|
||||
new MarkedAsyncCallback<RaceLogDTO>(
|
||||
new AsyncCallback<RaceLogDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(caught.getMessage(), true);
|
||||
}
|
||||
@Override
|
||||
public void onSuccess(RaceLogDTO result) {
|
||||
openRaceLogDialog(result);
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
private void openRaceLogDialog(RaceLogDTO raceLogDTO) {
|
||||
RaceLogDialog dialog = new RaceLogDialog(raceLogDTO, stringMessages, new DialogCallback<RaceLogDTO>() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok(RaceLogDTO result) {
|
||||
}
|
||||
});
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
private void removeRaceColumn(final RaceColumnDTO raceColumnDTO) {
|
||||
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
||||
final String raceColumnString = raceColumnDTO.getRaceColumnName();
|
||||
@@ -592,70 +559,6 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
|
||||
}
|
||||
}
|
||||
|
||||
private void editRaceColumnOfLeaderboard(final RaceColumnDTOAndFleetDTOWithNameBasedEquality raceColumnWithFleet) {
|
||||
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
||||
final boolean oldIsMedalRace = raceColumnWithFleet.getA().isMedalRace();
|
||||
final String oldRaceColumnName = raceColumnWithFleet.getA().getRaceColumnName();
|
||||
final Double oldExplicitFactor = raceColumnWithFleet.getA().getExplicitFactor();
|
||||
// use a set to avoid duplicates in the case of regatta leaderboards with multiple fleets per column
|
||||
Set<RaceColumnDTO> existingRacesWithoutThisRace = new HashSet<RaceColumnDTO>();
|
||||
for (RaceColumnDTOAndFleetDTOWithNameBasedEquality pair : raceColumnTable.getDataProvider().getList()) {
|
||||
existingRacesWithoutThisRace.add(pair.getA());
|
||||
}
|
||||
existingRacesWithoutThisRace.remove(raceColumnWithFleet.getA());
|
||||
final RaceColumnInLeaderboardDialog raceDialog = new RaceColumnInLeaderboardDialog(existingRacesWithoutThisRace,
|
||||
raceColumnWithFleet.getA(), getSelectedLeaderboard().type.isRegattaLeaderboard(), stringMessages, new DialogCallback<RaceColumnDescriptor>() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok(final RaceColumnDescriptor result) {
|
||||
boolean rename = !oldRaceColumnName.equals(result.getName());
|
||||
boolean updateIsMedalRace = oldIsMedalRace != result.isMedalRace();
|
||||
boolean updateFactor = oldExplicitFactor != result.getExplicitFactor();
|
||||
List<ParallelExecutionCallback<Void>> callbacks = new ArrayList<ParallelExecutionCallback<Void>>();
|
||||
final ParallelExecutionCallback<Void> renameLeaderboardColumnCallback = new ParallelExecutionCallback<Void>();
|
||||
if (rename) {
|
||||
callbacks.add(renameLeaderboardColumnCallback);
|
||||
}
|
||||
final ParallelExecutionCallback<Void> updateIsMedalRaceCallback = new ParallelExecutionCallback<Void>();
|
||||
if (updateIsMedalRace) {
|
||||
callbacks.add(updateIsMedalRaceCallback);
|
||||
}
|
||||
final ParallelExecutionCallback<Void> updateLeaderboardColumnFactorCallback = new ParallelExecutionCallback<Void>();
|
||||
if (updateFactor) {
|
||||
callbacks.add(updateLeaderboardColumnFactorCallback);
|
||||
}
|
||||
new ParallelExecutionHolder(callbacks.toArray(new ParallelExecutionCallback<?>[0])) {
|
||||
@Override
|
||||
public void handleSuccess() {
|
||||
loadAndRefreshLeaderboard(selectedLeaderboardName, result.getName());
|
||||
}
|
||||
@Override
|
||||
public void handleFailure(Throwable t) {
|
||||
errorReporter.reportError("Error trying to update data of race column "
|
||||
+ oldRaceColumnName + " in leaderboard " + selectedLeaderboardName + ": "
|
||||
+ t.getMessage());
|
||||
}
|
||||
};
|
||||
if (rename) {
|
||||
sailingService.renameLeaderboardColumn(selectedLeaderboardName, oldRaceColumnName,
|
||||
result.getName(), renameLeaderboardColumnCallback);
|
||||
}
|
||||
if (updateIsMedalRace) {
|
||||
sailingService.updateIsMedalRace(selectedLeaderboardName, result.getName(),
|
||||
result.isMedalRace(), updateIsMedalRaceCallback);
|
||||
}
|
||||
if (updateFactor) {
|
||||
sailingService.updateLeaderboardColumnFactor(selectedLeaderboardName, result.getName(),
|
||||
result.getExplicitFactor(), updateLeaderboardColumnFactorCallback);
|
||||
}
|
||||
}
|
||||
});
|
||||
raceDialog.show();
|
||||
}
|
||||
|
||||
private void setIsMedalRace(String leaderboardName, final RaceColumnDTO raceInLeaderboard,
|
||||
final boolean isMedalRace) {
|
||||
sailingService.updateIsMedalRace(leaderboardName, raceInLeaderboard.getRaceColumnName(), isMedalRace,
|
||||
|
||||
-15
@@ -6,7 +6,6 @@ import java.util.Comparator;
|
||||
import com.google.gwt.safehtml.shared.SafeHtml;
|
||||
import com.google.gwt.user.cellview.client.Column;
|
||||
import com.google.gwt.user.cellview.client.TextColumn;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.view.client.SelectionModel;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.ColorColumn.ColorRetriever;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
@@ -101,18 +100,4 @@ public class MarkTableWrapper<S extends SelectionModel<MarkDTO>> extends TableWr
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void refresh(String leaderboardName, String raceColumnName, String fleetName) {
|
||||
sailingService.getMarksInRaceLog(leaderboardName, raceColumnName, fleetName, new AsyncCallback<Iterable<MarkDTO>>() {
|
||||
@Override
|
||||
public void onSuccess(Iterable<MarkDTO> result) {
|
||||
refresh(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Could not load marks: " + caught.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
+9
-1
@@ -270,8 +270,16 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf
|
||||
@Override
|
||||
public void cancel() {}
|
||||
}).show();
|
||||
} else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_SET_START_TIME.equals(value)) {
|
||||
} else if (LeaderboardRaceConfigImagesBarCell.ACTION_EDIT.equals(value)) {
|
||||
editRaceColumnOfLeaderboard(object);
|
||||
} else if (LeaderboardRaceConfigImagesBarCell.ACTION_UNLINK.equals(value)) {
|
||||
unlinkRaceColumnFromTrackedRace(object.getA().getRaceColumnName(), object.getB());
|
||||
} else if (LeaderboardRaceConfigImagesBarCell.ACTION_REFRESH_RACELOG.equals(value)) {
|
||||
refreshRaceLog(object.getA(), object.getB(), true);
|
||||
} else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_SET_STARTTIME.equals(value)) {
|
||||
setStartTime(getSelectedRaceColumnWithFleet().getA(), getSelectedRaceColumnWithFleet().getB());
|
||||
} else if (LeaderboardRaceConfigImagesBarCell.ACTION_SHOW_RACELOG.equals(value)) {
|
||||
showRaceLog(object.getA(), object.getB());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
+9
-3
@@ -15,7 +15,11 @@ public class RaceLogTrackingEventManagementRaceImagesBarCell extends ImagesBarCe
|
||||
public final static String ACTION_DEFINE_COURSE = "ACTION_DEFINE_COURSE";
|
||||
public final static String ACTION_MAP_DEVICES = "ACTION_MAP_DEVICES";
|
||||
public final static String ACTION_COPY = "ACTION_COPY";
|
||||
public final static String ACTION_SET_START_TIME = "ACTION_SET_START_TIME";
|
||||
public final static String ACTION_EDIT = "ACTION_EDIT";
|
||||
public final static String ACTION_REFRESH_RACELOG = "ACTION_REFRESH_RACE_LOG";
|
||||
public final static String ACTION_SET_STARTTIME = "ACTION_SET_STARTTIME";
|
||||
public final static String ACTION_SHOW_RACELOG = "ACTION_SHOW_RACELOG";
|
||||
|
||||
|
||||
private final StringMessages stringMessages;
|
||||
private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
|
||||
@@ -36,10 +40,12 @@ public class RaceLogTrackingEventManagementRaceImagesBarCell extends ImagesBarCe
|
||||
result.add(new ImageSpec(ACTION_COMPETITOR_REGISTRATIONS, stringMessages.competitorRegistrations(), makeImagePrototype(resources.competitorRegistrations())));
|
||||
result.add(new ImageSpec(ACTION_DEFINE_COURSE, stringMessages.defineCourse(), makeImagePrototype(resources.defineCourse())));
|
||||
result.add(new ImageSpec(ACTION_MAP_DEVICES, stringMessages.mapDevices(), makeImagePrototype(resources.mapDevices())));
|
||||
result.add(new ImageSpec(ACTION_SET_START_TIME, stringMessages.setStartTime(), makeImagePrototype(resources.clockIcon())));
|
||||
result.add(new ImageSpec(ACTION_COPY, stringMessages.copyCourseAndCompetitors(), makeImagePrototype(resources.copy())));
|
||||
}
|
||||
|
||||
result.add(new ImageSpec(ACTION_EDIT, stringMessages.actionEdit(), makeImagePrototype(resources.editIcon())));
|
||||
result.add(new ImageSpec(ACTION_REFRESH_RACELOG, stringMessages.refreshRaceLog(), makeImagePrototype(resources.reloadIcon())));
|
||||
result.add(new ImageSpec(ACTION_SET_STARTTIME, stringMessages.setStartTime(), makeImagePrototype(resources.clockIcon())));
|
||||
result.add(new ImageSpec(ACTION_SHOW_RACELOG, stringMessages.raceLog(), makeImagePrototype(resources.flagIcon())));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user