mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-16 17:21:00 +00:00
Initial draft of start/stop action column
This commit is contained in:
1 parent
ee2049b06b
commit
e222136cf0
3 files changed
+90
-3
No files matched your search
+18
@@ -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
|
||||
*/
|
||||
|
||||
+24
@@ -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;
|
||||
}
|
||||
}
|
||||
+48
-3
@@ -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>() {
|
||||
|
||||
|
||||
Reference in new issue
Block a user