mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-15 00:30:58 +00:00
Fixed adding wind fixed manually. Timepoint is not optional anymore - must be between startOftracking and endOfTracking (if present)
This commit is contained in:
1 parent
ed76399644
commit
b79d09ea8f
3 files changed
+44
-26
No files matched your search
+32
-15
@@ -1,5 +1,7 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.google.gwt.user.client.ui.DoubleBox;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
@@ -13,7 +15,7 @@ import com.sap.sailing.gwt.ui.shared.PositionDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindDTO;
|
||||
|
||||
public class WindSettingDialog extends DataEntryDialog<WindDTO> {
|
||||
public class AddWindFixDialog extends DataEntryDialog<WindDTO> {
|
||||
private final StringMessages stringMessages;
|
||||
|
||||
private final DoubleBox speedInKnotsBox;
|
||||
@@ -23,11 +25,15 @@ public class WindSettingDialog extends DataEntryDialog<WindDTO> {
|
||||
private final DateBox timeBox;
|
||||
|
||||
protected static class WindDataValidator implements Validator<WindDTO> {
|
||||
protected final StringMessages stringMessages;
|
||||
private final StringMessages stringMessages;
|
||||
private final Date minTimepoint;
|
||||
private final Date maxTimepoint;
|
||||
|
||||
public WindDataValidator(StringMessages stringMessages){
|
||||
public WindDataValidator(RaceDTO race, StringMessages stringMessages){
|
||||
super();
|
||||
this.stringMessages = stringMessages;
|
||||
this.minTimepoint = race.trackedRace.startOfTracking != null ? race.trackedRace.startOfTracking : null;
|
||||
this.maxTimepoint = race.trackedRace.endOfTracking != null ? race.trackedRace.endOfTracking : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -48,18 +54,29 @@ public class WindSettingDialog extends DataEntryDialog<WindDTO> {
|
||||
} else if(windDTO.position.lngDeg < -180.0 || windDTO.position.lngDeg > 180.0){
|
||||
errorMessage = stringMessages.valueMustBeBetweenMinMax(stringMessages.longitude(), "-180", "180");
|
||||
}
|
||||
}
|
||||
if(errorMessage == null) {
|
||||
if(windDTO.measureTimepoint == null) {
|
||||
errorMessage = stringMessages.pleaseEnterAValue();
|
||||
} else {
|
||||
if(minTimepoint != null && windDTO.measureTimepoint < minTimepoint.getTime()) {
|
||||
errorMessage = "Timepoint must be before start of tracking";
|
||||
} else if(maxTimepoint != null && windDTO.measureTimepoint > maxTimepoint.getTime()) {
|
||||
errorMessage = "Timepoint must be before end of tracking";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return errorMessage;
|
||||
}
|
||||
}
|
||||
|
||||
public WindSettingDialog(RaceDTO race, CoursePositionsDTO courseDTO, StringMessages stringMessages, DialogCallback<WindDTO> callback) {
|
||||
super(stringMessages.actionAddWindData(), null, stringMessages.ok(), stringMessages.cancel(), new WindDataValidator(stringMessages), callback);
|
||||
public AddWindFixDialog(RaceDTO race, CoursePositionsDTO courseDTO, StringMessages stringMessages, DialogCallback<WindDTO> callback) {
|
||||
super(stringMessages.actionAddWindData(), null, stringMessages.ok(), stringMessages.cancel(), new WindDataValidator(race, stringMessages), callback);
|
||||
this.stringMessages = stringMessages;
|
||||
speedInKnotsBox = createDoubleBox(5);
|
||||
fromInDegBox = createDoubleBox(5);
|
||||
if(courseDTO != null && courseDTO.waypointPositions.get(0) != null) {
|
||||
if(courseDTO != null && courseDTO.waypointPositions != null && courseDTO.waypointPositions.get(0) != null) {
|
||||
PositionDTO positionDTO = courseDTO.waypointPositions.get(0);
|
||||
latDegBox = createDoubleBox(positionDTO.latDeg, 10);
|
||||
lngDegBox = createDoubleBox(positionDTO.lngDeg, 10);
|
||||
@@ -67,8 +84,8 @@ public class WindSettingDialog extends DataEntryDialog<WindDTO> {
|
||||
latDegBox = createDoubleBox(10);
|
||||
lngDegBox = createDoubleBox(10);
|
||||
}
|
||||
if(race.startOfRace != null) {
|
||||
timeBox = createDateBox(race.startOfRace.getTime(), 20);
|
||||
if(race.trackedRace != null && race.trackedRace.startOfTracking != null) {
|
||||
timeBox = createDateBox(race.trackedRace.startOfTracking.getTime(), 20);
|
||||
} else {
|
||||
timeBox = createDateBox(20);
|
||||
}
|
||||
@@ -84,12 +101,12 @@ public class WindSettingDialog extends DataEntryDialog<WindDTO> {
|
||||
grid.setWidget(0, 1, speedInKnotsBox);
|
||||
grid.setWidget(1, 0, new Label(stringMessages.fromDeg() + ":"));
|
||||
grid.setWidget(1, 1, fromInDegBox);
|
||||
grid.setWidget(2, 0, new Label(stringMessages.latitude() + " (" + stringMessages.optional() + "):"));
|
||||
grid.setWidget(2, 1, latDegBox);
|
||||
grid.setWidget(3, 0, new Label(stringMessages.longitude() + " (" + stringMessages.optional() + "):"));
|
||||
grid.setWidget(3, 1, lngDegBox);
|
||||
grid.setWidget(4, 0, new Label(stringMessages.time() + " (" + stringMessages.optional() + "):"));
|
||||
grid.setWidget(4, 1, timeBox);
|
||||
grid.setWidget(2, 0, new Label(stringMessages.time() + ":"));
|
||||
grid.setWidget(2, 1, timeBox);
|
||||
grid.setWidget(3, 0, new Label(stringMessages.latitude() + " (" + stringMessages.optional() + "):"));
|
||||
grid.setWidget(3, 1, latDegBox);
|
||||
grid.setWidget(4, 0, new Label(stringMessages.longitude() + " (" + stringMessages.optional() + "):"));
|
||||
grid.setWidget(4, 1, lngDegBox);
|
||||
|
||||
return mainPanel;
|
||||
}
|
||||
@@ -100,7 +117,7 @@ public class WindSettingDialog extends DataEntryDialog<WindDTO> {
|
||||
|
||||
result.trueWindSpeedInKnots = speedInKnotsBox.getValue();
|
||||
result.trueWindFromDeg = fromInDegBox.getValue();
|
||||
result.measureTimepoint = timeBox.getValue() != null ? timeBox.getValue().getTime() : System.currentTimeMillis();
|
||||
result.measureTimepoint = timeBox.getValue() != null ? timeBox.getValue().getTime() : null;
|
||||
if (latDegBox.getValue() != null && lngDegBox.getValue() != null) {
|
||||
result.position = new PositionDTO(latDegBox.getValue(), lngDegBox.getValue());
|
||||
}
|
||||
+2
-2
@@ -109,7 +109,7 @@ public class WindPanel extends FormPanel implements RegattaDisplayer, WindShower
|
||||
RegattaAndRaceIdentifier selectedRace = getSelectedRace();
|
||||
if(selectedRace != null) {
|
||||
final RaceDTO race = trackedRacesListComposite.getRaceByIdentifier(selectedRace);
|
||||
sailingService.getCoursePositions(selectedRace, race.startOfRace, new AsyncCallback<CoursePositionsDTO>() {
|
||||
sailingService.getCoursePositions(selectedRace, race.trackedRace.startOfTracking, new AsyncCallback<CoursePositionsDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
showWindSettingDialog(race, null);
|
||||
@@ -215,7 +215,7 @@ public class WindPanel extends FormPanel implements RegattaDisplayer, WindShower
|
||||
}
|
||||
|
||||
private void showWindSettingDialog(RaceDTO race, CoursePositionsDTO course) {
|
||||
WindSettingDialog windSettingDialog = new WindSettingDialog(race, course, stringMessages,
|
||||
AddWindFixDialog windSettingDialog = new AddWindFixDialog(race, course, stringMessages,
|
||||
new DialogCallback<WindDTO>() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
|
||||
+10
-9
@@ -238,19 +238,20 @@ public abstract class DataEntryDialog<T> {
|
||||
}
|
||||
|
||||
private DateBox createDateBoxInternal(Date initialDate, int visibleLength) {
|
||||
DateBox textBox = new DateBox();
|
||||
textBox.getTextBox().setVisibleLength(visibleLength);
|
||||
textBox.setValue(initialDate);
|
||||
AbstractEntryPoint.addFocusUponKeyUpToggler(textBox.getTextBox());
|
||||
textBox.getTextBox().addChangeHandler(new ChangeHandler() {
|
||||
DateBox dateBox = new DateBox();
|
||||
dateBox.getTextBox().setVisibleLength(visibleLength);
|
||||
dateBox.setFireNullValues(true);
|
||||
dateBox.setValue(initialDate);
|
||||
AbstractEntryPoint.addFocusUponKeyUpToggler(dateBox.getTextBox());
|
||||
dateBox.addValueChangeHandler(new ValueChangeHandler<Date>() {
|
||||
@Override
|
||||
public void onChange(ChangeEvent event) {
|
||||
public void onValueChange(ValueChangeEvent<Date> event) {
|
||||
validate();
|
||||
}
|
||||
});
|
||||
AbstractEntryPoint.linkEnterToButton(getOkButton(), textBox.getTextBox());
|
||||
AbstractEntryPoint.linkEscapeToButton(getCancelButton(), textBox.getTextBox());
|
||||
return textBox;
|
||||
AbstractEntryPoint.linkEnterToButton(getOkButton(), dateBox.getTextBox());
|
||||
AbstractEntryPoint.linkEscapeToButton(getCancelButton(), dateBox.getTextBox());
|
||||
return dateBox;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in new issue
Block a user