bug6113: local play/stop buttons work according the intended behavior

This commit is contained in:
masha.kashirina
2026-05-15 19:48:22 +02:00
parent a56afc1bfd
commit aafd9804f0
2 changed files with 18 additions and 15 deletions
@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.sap.sailing.domain.common.racelog.tracking.RaceLogTrackingState;
import com.sap.sailing.gwt.ui.adminconsole.AbstractLeaderboardConfigPanel.RaceColumnDTOAndFleetDTOWithNameBasedEquality;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.gwt.client.IconResources;
@@ -58,10 +59,11 @@ public class RaceLogTrackingEventManagementRaceImagesBarCell extends ImagesBarCe
result.add(new ImageSpec(ACTION_SET_FINISHING_AND_FINISH_TIME, stringMessages.setFinishingAndFinishTime(), makeImagePrototype(resources.blueSmall())));
result.add(new ImageSpec(ACTION_SHOW_RACELOG, stringMessages.raceLog(), makeImagePrototype(resources.flagIcon())));
result.add(new ImageSpec(ACTION_SET_TRACKING_TIMES, stringMessages.setTrackingTimes(), makeImagePrototype(resources.setTrackingTimes())));
boolean isForTracking = object.getA().getRaceLogTrackingInfo(object.getB()).raceLogTrackingState.isForTracking();
if (!isForTracking) {
final boolean trackerExists = object.getA().getRaceLogTrackingInfo(object.getB()).raceLogTrackerExists;
final RaceLogTrackingState trackingState = object.getA().getRaceLogTrackingInfo(object.getB()).raceLogTrackingState;
if (trackingState == RaceLogTrackingState.AWAITING_RACE_DEFINITION || (trackingState == RaceLogTrackingState.TRACKING && !trackerExists)) {
result.add(new ImageSpec(ACTION_START_TRACKING, stringMessages.startTracking(), makeImagePrototype(resources.startRaceLogTracking())));
} else {
} else if (trackingState == RaceLogTrackingState.TRACKING && trackerExists) {
result.add(new ImageSpec(ACTION_STOP_TRACKING, stringMessages.stopTracking(), makeImagePrototype(resources.stopRaceLogTracking())));
}
if (smartphoneTrackingEventManagementPanel.getSelectedLeaderboard().canBoatsOfCompetitorsChangePerRace) {
@@ -578,12 +578,14 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
private void stopTracking(
final Set<RaceColumnDTOAndFleetDTOWithNameBasedEquality> selectedSet) {
final List<RegattaAndRaceIdentifier> racesToStopTracking = new ArrayList<RegattaAndRaceIdentifier>();
final List<RegattaAndRaceIdentifier> racesToStopTracking = new ArrayList<RegattaAndRaceIdentifier>();
for (RaceColumnDTOAndFleetDTOWithNameBasedEquality raceColumnDTOAndFleetDTOWithNameBasedEquality : selectedSet) {
RaceDTO race = raceColumnDTOAndFleetDTOWithNameBasedEquality.getA().getRace(raceColumnDTOAndFleetDTOWithNameBasedEquality.getB());
if (race != null && race.isTracked){
racesToStopTracking.add(race.getRaceIdentifier());
}
if (doesTrackerExist(raceColumnDTOAndFleetDTOWithNameBasedEquality)) {
final RaceDTO race = raceColumnDTOAndFleetDTOWithNameBasedEquality.getA().getRace(raceColumnDTOAndFleetDTOWithNameBasedEquality.getB());
if (race != null) {
racesToStopTracking.add(race.getRaceIdentifier());
}
}
}
sailingServiceWrite.stopTrackingRaces(racesToStopTracking, new MarkedAsyncCallback<Void>(
new AsyncCallback<Void>() {
@@ -663,6 +665,12 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
raceColumnsAndFleets.add(new Triple<String, String, String>(selectedLeaderboard.getName(), raceColumn.getName(), fleet.getName()));
}
}
raceColumnTable.getDataProvider().getList().clear();
for (RaceColumnDTO raceColumn : selectedLeaderboard.getRaceList()) {
for (FleetDTO fleet : raceColumn.getFleets()) {
raceColumnTable.getDataProvider().getList().add(new RaceColumnDTOAndFleetDTOWithNameBasedEquality(raceColumn, fleet, selectedLeaderboard));
}
}
sailingServiceWrite.getTrackingTimes(raceColumnsAndFleets,
new AsyncCallback<Map<Triple<String, String, String>, Pair<TimePointSpecificationFoundInLog, TimePointSpecificationFoundInLog>>>() {
@Override
@@ -673,13 +681,6 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
@Override
public void onSuccess(Map<Triple<String, String, String>, Pair<TimePointSpecificationFoundInLog, TimePointSpecificationFoundInLog>> result) {
raceWithStartAndEndOfTrackingTime = result;
raceColumnTable.getDataProvider().getList().clear();
for (RaceColumnDTO raceColumn : selectedLeaderboard.getRaceList()) {
for (FleetDTO fleet : raceColumn.getFleets()) {
RaceColumnDTOAndFleetDTOWithNameBasedEquality raceColumnDTOAndFleet2 = new RaceColumnDTOAndFleetDTOWithNameBasedEquality(raceColumn, fleet, getSelectedLeaderboard());
raceColumnTable.getDataProvider().getList().add(raceColumnDTOAndFleet2);
}
}
}
});
selectedLeaderBoardPanel.setVisible(true);