Initial draft of start/stop action column

This commit is contained in:
Jan Broß committed 2016-03-22 13:34:11 +01:00
1 parent ee2049b06b
commit e222136cf0
3 files changed
+90 -3

No files matched your search

@@ -129,6 +129,24 @@ public class RaceColumnDTO extends NamedDTO implements Serializable {
return start;
}
public Date getStartOfTracking(FleetDTO fleet){
Date start = null;
RaceDTO raceDTO = racesPerFleet.get(fleet);
if (raceDTO != null && raceDTO.isTracked) {
start = raceDTO.trackedRace.startOfTracking;
}
return start;
}
public Date getEndOfTracking(FleetDTO fleet){
Date start = null;
RaceDTO raceDTO = racesPerFleet.get(fleet);
if (raceDTO != null && raceDTO.isTracked) {
start = raceDTO.trackedRace.endOfTracking;
}
return start;
}
/**
* @return The {@link PlacemarkOrderDTO places} or <code>null</code>, if no places are available
*/
@@ -1,9 +1,12 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.sap.sailing.domain.common.dto.FleetDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.gwt.ui.adminconsole.AbstractLeaderboardConfigPanel.RaceColumnDTOAndFleetDTOWithNameBasedEquality;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
@@ -19,6 +22,8 @@ public class RaceLogTrackingEventManagementRaceImagesBarCell extends ImagesBarCe
public final static String ACTION_SET_STARTTIME = "ACTION_SET_STARTTIME";
public final static String ACTION_SHOW_RACELOG = "ACTION_SHOW_RACELOG";
public final static String ACTION_SET_TRACKING_TIMES = "ACTION_SET_TRACKING_TIMES";
public final static String ACTION_STOP_TRACKING = "ACTION_STOP_TRACKING";
public final static String ACTION_START_TRACKING = "ACTION_START_TRACKING";
private final StringMessages stringMessages;
@@ -46,6 +51,25 @@ public class RaceLogTrackingEventManagementRaceImagesBarCell extends ImagesBarCe
result.add(new ImageSpec(ACTION_SET_STARTTIME, stringMessages.setStartTime(), makeImagePrototype(resources.clockIcon())));
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())));
if (startTimeSet(object.getA(), object.getB())){
if (!endTimeSet(object.getA(), object.getB())){
result.add(new ImageSpec(ACTION_STOP_TRACKING, stringMessages.stopTracking(), makeImagePrototype(resources.stopRaceLogTracking())));
}
} else {
result.add(new ImageSpec(ACTION_START_TRACKING, stringMessages.startTracking(), makeImagePrototype(resources.startRaceLogTracking())));
}
return result;
}
private boolean startTimeSet(RaceColumnDTO raceColumn, FleetDTO fleet) {
Date startTime = raceColumn.getStartOfTracking(fleet);
return startTime != null;
}
private boolean endTimeSet(RaceColumnDTO raceColumn, FleetDTO fleet) {
Date endTime = raceColumn.getEndOfTracking(fleet);
return endTime != null;
}
}
@@ -1,6 +1,7 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
@@ -42,6 +43,7 @@ import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sse.common.Util;
import com.sap.sse.common.Util.Pair;
import com.sap.sse.common.Util.Triple;
import com.sap.sse.common.impl.MillisecondsTimePoint;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
@@ -54,6 +56,7 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
private TrackFileImportDeviceIdentifierTableWrapper deviceIdentifierTable;
private CheckBox correctWindDirectionForDeclination;
private CheckBox trackWind;
private ImagesBarColumn<RaceColumnDTOAndFleetDTOWithNameBasedEquality, RaceLogTrackingEventManagementRaceImagesBarCell> raceActionColumn;
protected boolean regattaHasCompetitors = false;
@@ -205,7 +208,7 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
}
};
ImagesBarColumn<RaceColumnDTOAndFleetDTOWithNameBasedEquality, RaceLogTrackingEventManagementRaceImagesBarCell> raceActionColumn =
raceActionColumn =
new ImagesBarColumn<RaceColumnDTOAndFleetDTOWithNameBasedEquality, RaceLogTrackingEventManagementRaceImagesBarCell>(
new RaceLogTrackingEventManagementRaceImagesBarCell(stringMessages));
raceActionColumn.setFieldUpdater(new FieldUpdater<RaceColumnDTOAndFleetDTOWithNameBasedEquality, String>() {
@@ -302,7 +305,17 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
} else if (LeaderboardRaceConfigImagesBarCell.ACTION_SHOW_RACELOG.equals(value)) {
showRaceLog(raceColumnDTOAndFleetDTO.getA(), raceColumnDTOAndFleetDTO.getB());
} else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_SET_TRACKING_TIMES.equals(value)) {
setTrackingTimes(getSelectedRaceColumnWithFleet().getA(), getSelectedRaceColumnWithFleet().getB());;
showSetTrackingTimesDialog(getSelectedRaceColumnWithFleet().getA(), getSelectedRaceColumnWithFleet().getB());;
} else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_START_TRACKING.equals(value)) {
Date newStart = MillisecondsTimePoint.now().asDate();
RaceLogSetTrackingTimesDTO setTrackingTimesDTO = generateRaceLogSetTrackingTimesDTOWith(newStart, null);
setTrackingTimes(setTrackingTimesDTO, raceColumnName);
} else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_STOP_TRACKING.equals(value)) {
FleetDTO fleet = getSelectedRaceColumnWithFleet().getB();
Date currentStart = getSelectedRaceColumnWithFleet().getA().getStartOfTracking(fleet);
Date newEnd = MillisecondsTimePoint.now().asDate();
RaceLogSetTrackingTimesDTO setTrackingTimesDTO = generateRaceLogSetTrackingTimesDTOWith(currentStart, newEnd);
setTrackingTimes(setTrackingTimesDTO, raceColumnName);
}
}
});
@@ -313,6 +326,38 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
racesTable.setWidth("600px");
}
private void setTrackingTimes(RaceLogSetTrackingTimesDTO trackingTimesDTO, final String raceColumnName){
sailingService.setTrackingTimes(trackingTimesDTO, new AsyncCallback<Void>(){
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error while setting tracking times: " + caught.getMessage());
}
@Override
public void onSuccess(Void result) {
loadAndRefreshLeaderboard(getSelectedLeaderboard().name, raceColumnName);
}
});
}
private RaceLogSetTrackingTimesDTO generateRaceLogSetTrackingTimesDTOWith(Date startTime, Date endTime) {
FleetDTO fleet = getSelectedRaceColumnWithFleet().getB();
Date currentStart = getSelectedRaceColumnWithFleet().getA().getStartOfTracking(fleet);
Date currentEnd = getSelectedRaceColumnWithFleet().getA().getEndOfTracking(fleet);
RaceLogSetTrackingTimesDTO dto = new RaceLogSetTrackingTimesDTO();
dto.leaderboardName = getSelectedLeaderboardName();
dto.raceColumnName = getSelectedRaceColumnWithFleet().getA().getName();
dto.fleetName = getSelectedRaceColumnWithFleet().getB().getName();
dto.authorName = "Shore";
dto.authorPriority = 4;
dto.logicalTimePoint = MillisecondsTimePoint.now();
dto.newStartOfTracking = startTime == null ? null : new MillisecondsTimePoint(startTime);
dto.newEndOfTracking = endTime == null ? null : new MillisecondsTimePoint(endTime);
dto.currentStartOfTracking = new MillisecondsTimePoint(currentStart);
dto.currentEndOfTracking = new MillisecondsTimePoint(currentEnd);
return dto;
}
@Override
protected void addLeaderboardControls(Panel controlsPanel) {}
@@ -511,7 +556,7 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
}).show();
}
private void setTrackingTimes(RaceColumnDTO raceColumn, FleetDTO fleet) {
private void showSetTrackingTimesDialog(RaceColumnDTO raceColumn, FleetDTO fleet) {
new SetTrackingTimesDialog(sailingService, errorReporter, getSelectedLeaderboardName(), raceColumn.getName(),
fleet.getName(), stringMessages, new DataEntryDialog.DialogCallback<RaceLogSetTrackingTimesDTO>() {