mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-07 11:32:16 +00:00
SimulatorService now using WindPattern objects, WIP.
This commit is contained in:
1 parent
e4e5a30ffa
commit
cc717e51e8
6 files changed
+90
-26
No files matched your search
+8
-2
@@ -1,5 +1,7 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.user.client.rpc.RemoteService;
|
||||
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
|
||||
import com.sap.sailing.gwt.ui.shared.BoatClassDTO;
|
||||
@@ -9,7 +11,9 @@ import com.sap.sailing.gwt.ui.shared.WindFieldDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindLatticeDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindLatticeGenParamsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO.WindPattern;
|
||||
import com.sap.sailing.gwt.ui.shared.WindPatternDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplay;
|
||||
|
||||
|
||||
@RemoteServiceRelativePath("simulator")
|
||||
public interface SimulatorService extends RemoteService {
|
||||
@@ -22,7 +26,9 @@ public interface SimulatorService extends RemoteService {
|
||||
|
||||
public PathDTO[] getPaths(WindFieldGenParamsDTO params);
|
||||
|
||||
public WindPattern[] getWindPatterns();
|
||||
public List<WindPatternDTO> getWindPatterns();
|
||||
|
||||
public WindPatternDisplay getWindPatternDisplay(WindPatternDTO pattern);
|
||||
|
||||
public BoatClassDTO[] getBoatClasses();
|
||||
}
|
||||
+7
-2
@@ -1,5 +1,7 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.sap.sailing.gwt.ui.shared.BoatClassDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.PathDTO;
|
||||
@@ -8,7 +10,8 @@ import com.sap.sailing.gwt.ui.shared.WindFieldDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindLatticeDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindLatticeGenParamsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO.WindPattern;
|
||||
import com.sap.sailing.gwt.ui.shared.WindPatternDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplay;
|
||||
|
||||
public interface SimulatorServiceAsync {
|
||||
|
||||
@@ -20,8 +23,10 @@ public interface SimulatorServiceAsync {
|
||||
|
||||
void getPaths(WindFieldGenParamsDTO params, AsyncCallback<PathDTO[]> callback);
|
||||
|
||||
void getWindPatterns(AsyncCallback<WindPattern[]> callback);
|
||||
void getWindPatterns(AsyncCallback<List<WindPatternDTO>> callback);
|
||||
|
||||
void getWindPatternDisplay(WindPatternDTO pattern, AsyncCallback<WindPatternDisplay> callback);
|
||||
|
||||
void getBoatClasses(AsyncCallback<BoatClassDTO[]> callback);
|
||||
|
||||
}
|
||||
+15
-4
@@ -22,9 +22,12 @@ import com.sap.sailing.gwt.ui.shared.PositionDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO.WindPattern;
|
||||
import com.sap.sailing.gwt.ui.shared.WindLatticeDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindLatticeGenParamsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindPatternDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplay;
|
||||
import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplayManager;
|
||||
import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplayManager.WindPattern;
|
||||
import com.sap.sailing.simulator.Path;
|
||||
import com.sap.sailing.simulator.PolarDiagram;
|
||||
import com.sap.sailing.simulator.SailingSimulator;
|
||||
@@ -194,7 +197,7 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simula
|
||||
|
||||
PathDTO[] pathDTO = new PathDTO[1];
|
||||
List<WindDTO> path = getOptimumPath(course, wf);
|
||||
pathDTO[0] = new PathDTO();
|
||||
pathDTO[0] = new PathDTO("Path 1");
|
||||
pathDTO[0].setMatrix(path);
|
||||
return pathDTO;
|
||||
}
|
||||
@@ -206,6 +209,7 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simula
|
||||
SailingSimulator solver = new SailingSimulatorImpl(sp);
|
||||
|
||||
Path pth = solver.getOptimumPath();
|
||||
int i = 0;
|
||||
List<WindDTO> wList = new ArrayList<WindDTO>();
|
||||
for (TimedPositionWithSpeed p : pth.getPathPoints()) {
|
||||
// the null in the Wind output is the timestamp - this Wind is time-invariant!
|
||||
@@ -216,14 +220,16 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simula
|
||||
Wind localWind = wf.getWind(pth.getPositionAtTime(p.getTimePoint()));
|
||||
logger.fine(localWind.toString());
|
||||
WindDTO w = createWindDTO(localWind);
|
||||
//w.trueWindBearingDeg = 10.0*i;
|
||||
++i;
|
||||
wList.add(w);
|
||||
}
|
||||
return wList;
|
||||
|
||||
}
|
||||
|
||||
public WindPattern[] getWindPatterns() {
|
||||
return WindFieldGenParamsDTO.WindPattern.values();
|
||||
public List<WindPatternDTO> getWindPatterns() {
|
||||
return WindPatternDisplayManager.INSTANCE.getWindPatterns();
|
||||
}
|
||||
|
||||
public BoatClassDTO[] getBoatClasses() {
|
||||
@@ -249,4 +255,9 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simula
|
||||
|
||||
return windDTO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WindPatternDisplay getWindPatternDisplay(WindPatternDTO pattern) {
|
||||
return WindPatternDisplayManager.INSTANCE.getDisplay(WindPattern.valueOf(pattern.name));
|
||||
}
|
||||
}
|
||||
+10
-2
@@ -4,10 +4,18 @@ import java.util.List;
|
||||
|
||||
import com.google.gwt.user.client.rpc.IsSerializable;
|
||||
|
||||
public class PathDTO implements IsSerializable {
|
||||
public class PathDTO extends NamedDTO implements IsSerializable {
|
||||
|
||||
private List<WindDTO> matrix;
|
||||
|
||||
|
||||
public PathDTO() {
|
||||
|
||||
}
|
||||
|
||||
public PathDTO(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
public List<WindDTO> getMatrix() {
|
||||
return matrix;
|
||||
}
|
||||
|
||||
+1
-5
@@ -4,11 +4,7 @@ import com.google.gwt.user.client.rpc.IsSerializable;
|
||||
|
||||
public class WindFieldGenParamsDTO implements IsSerializable {
|
||||
|
||||
public enum WindPattern {
|
||||
CONSTANT,
|
||||
OSCILLATING
|
||||
}
|
||||
|
||||
|
||||
private PositionDTO northWest;
|
||||
private PositionDTO southEast;
|
||||
|
||||
|
||||
+49
-11
@@ -1,8 +1,12 @@
|
||||
package com.sap.sailing.gwt.ui.simulator;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.google.gwt.dom.client.Style;
|
||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||
import com.google.gwt.event.dom.client.ChangeHandler;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.event.logical.shared.ValueChangeEvent;
|
||||
@@ -31,8 +35,10 @@ import com.sap.sailing.gwt.ui.client.TimePanelSettings;
|
||||
import com.sap.sailing.gwt.ui.client.Timer;
|
||||
import com.sap.sailing.gwt.ui.client.Timer.PlayModes;
|
||||
import com.sap.sailing.gwt.ui.shared.BoatClassDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO.WindPattern;
|
||||
import com.sap.sailing.gwt.ui.shared.WindPatternDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.controls.slider.SliderBar;
|
||||
import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplay;
|
||||
|
||||
|
||||
public class SimulatorMainPanel extends SplitLayoutPanel {
|
||||
|
||||
@@ -70,6 +76,32 @@ public class SimulatorMainPanel extends SplitLayoutPanel {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private class PatternSelectorHandler implements ChangeHandler {
|
||||
|
||||
@Override
|
||||
public void onChange(ChangeEvent arg0) {
|
||||
logger.info(patternSelector.getItemText(patternSelector.getSelectedIndex()));
|
||||
WindPatternDTO pattern = new WindPatternDTO(patternSelector.getItemText(patternSelector.getSelectedIndex()));
|
||||
|
||||
simulatorSvc.getWindPatternDisplay(pattern, new AsyncCallback<WindPatternDisplay>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable message) {
|
||||
errorReporter.reportError("Error retreiving wind patterns" + message.getMessage());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(final WindPatternDisplay display) {
|
||||
logger.info(display.getSettings().toString());
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public SimulatorMainPanel(SimulatorServiceAsync svc, StringMessages stringMessages, ErrorReporter errorReporter) {
|
||||
|
||||
@@ -83,6 +115,8 @@ public class SimulatorMainPanel extends SplitLayoutPanel {
|
||||
rightPanel = new FlowPanel();
|
||||
wControls = new WindControlParameters(1, 0);
|
||||
patternSelector = new ListBox();
|
||||
patternSelector.addChangeHandler(new PatternSelectorHandler());
|
||||
|
||||
boatSelector = new ListBox();
|
||||
timer = new Timer(PlayModes.Replay, 1000l);
|
||||
timer.setPlaySpeedFactor(30);
|
||||
@@ -150,7 +184,7 @@ public class SimulatorMainPanel extends SplitLayoutPanel {
|
||||
Label pattern = new Label(stringMessages.pattern());
|
||||
hp.add(pattern);
|
||||
|
||||
simulatorSvc.getWindPatterns(new AsyncCallback<WindPattern[]>() {
|
||||
simulatorSvc.getWindPatterns(new AsyncCallback<List<WindPatternDTO>> () {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable message) {
|
||||
@@ -158,9 +192,9 @@ public class SimulatorMainPanel extends SplitLayoutPanel {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(WindPattern[] patterns) {
|
||||
for (int i = 0; i < patterns.length; ++i) {
|
||||
patternSelector.addItem(patterns[i].toString());
|
||||
public void onSuccess(List<WindPatternDTO> patterns) {
|
||||
for (WindPatternDTO p : patterns) {
|
||||
patternSelector.addItem(p.name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,12 +209,12 @@ public class SimulatorMainPanel extends SplitLayoutPanel {
|
||||
|
||||
private void addSlider(Panel parentPanel, String labelName, double minValue, double maxValue,
|
||||
final ValueChangeHandler<Double> handler) {
|
||||
VerticalPanel vp = new VerticalPanel();
|
||||
vp.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
|
||||
FlowPanel vp = new FlowPanel();
|
||||
//vp.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
|
||||
|
||||
Label label = new Label(labelName);
|
||||
vp.add(label);
|
||||
|
||||
//FlowPanel fp = new FlowPanel();
|
||||
final SliderBar sliderBar = new SliderBar(minValue, maxValue);
|
||||
|
||||
sliderBar.setStepSize(1, false);
|
||||
@@ -207,10 +241,14 @@ public class SimulatorMainPanel extends SplitLayoutPanel {
|
||||
// sliderBar.setMaxValue(10.0, false);
|
||||
sliderBar.setCurrentValue(wControls.windSpeedInKnots);
|
||||
vp.add(sliderBar);
|
||||
sliderBar.setWidth("60%");
|
||||
|
||||
// sliderBar.setWidth("100%");
|
||||
//vp.add(fp);
|
||||
parentPanel.add(vp);
|
||||
vp.setWidth("80%");
|
||||
label.getElement().getStyle().setFloat(Style.Float.LEFT);
|
||||
sliderBar.getElement().getStyle().setFloat(Style.Float.RIGHT);
|
||||
sliderBar.setWidth("60%");
|
||||
sliderBar.setHeight("25px");
|
||||
// vp.setWidth("80%");
|
||||
}
|
||||
|
||||
private void createSailingSetup(Panel controlPanel) {
|
||||
|
||||
Reference in new issue
Block a user