First version of Compare-Competitors-Charts

This commit is contained in:
Benjamin Ebling committed 2011-11-25 16:56:11 +01:00
1 parent ce3cecc211
commit 47eef4eabb
6 files changed
+85 -1

No files matched your search

+5
View File
@@ -7,5 +7,10 @@
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="lib" path="lib/gwt-maps.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="lib" path="lib/gwt-visualization.jar" sourcepath="lib/gwt-visualization-noredist.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/com.sap.sailing.gwt.ui/lib/gwt-visualization-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
@@ -26,6 +26,8 @@ import com.google.gwt.user.cellview.client.Header;
import com.google.gwt.user.cellview.client.TextHeader;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
@@ -70,6 +72,8 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
private final StringConstants stringConstants;
private final CellTable<LeaderboardRowDAO> leaderboardTable;
private final MultiSelectionModel<LeaderboardRowDAO> leaderboardSelectionModel;
private ListDataProvider<LeaderboardRowDAO> data;
@@ -728,7 +732,8 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
leaderboardTable = new CellTableWithStylableHeaders<LeaderboardRowDAO>(
/* pageSize */100, resources);
getLeaderboardTable().setWidth("100%");
getLeaderboardTable().setSelectionModel(new MultiSelectionModel<LeaderboardRowDAO>() {});
leaderboardSelectionModel = new MultiSelectionModel<LeaderboardRowDAO>() {};
getLeaderboardTable().setSelectionModel(leaderboardSelectionModel);
setData(new ListDataProvider<LeaderboardRowDAO>());
getData().addDataDisplay(getLeaderboardTable());
listHandler = new ListHandler<LeaderboardRowDAO>(getData().getList());
@@ -775,6 +780,15 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
dockPanel.add(refreshAndSettingsPanel, DockPanel.EAST);
vp.add(dockPanel);
vp.add(getLeaderboardTable());
Button chartButton = new Button("Compare competitors");
chartButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
compareCompetitors();
}
});
vp.add(chartButton);
setWidget(vp);
}
@@ -1278,4 +1292,22 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
playPause.setHTML(getPlayPauseImgHtml(isPlaying));
playPause.setTitle(isPlaying ? stringConstants.pauseAutomaticRefresh() : stringConstants.autoRefresh());
}
private void compareCompetitors(){
String raceName = this.selectedRaceColumns.get(0);
final DialogBox chartBox = new DialogBox();
final Runnable close = new Runnable() {
@Override
public void run() {
chartBox.hide();
}
};
//chartBox.setSize("800", "800");
chartBox.setAnimationEnabled(true);
chartBox.add(new CompareCompetitorsPanel(sailingService, new ArrayList<LeaderboardRowDAO>(leaderboardSelectionModel.getSelectedSet()), raceName,close));
chartBox.setTitle("Compare competitors");
chartBox.center();
chartBox.show();
}
}
@@ -7,11 +7,13 @@ import java.util.Map;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.gwt.ui.shared.CompetitorDAO;
import com.sap.sailing.gwt.ui.shared.EventDAO;
import com.sap.sailing.gwt.ui.shared.GPSFixDAO;
import com.sap.sailing.gwt.ui.shared.LeaderboardDAO;
import com.sap.sailing.gwt.ui.shared.LeaderboardEntryDAO;
import com.sap.sailing.gwt.ui.shared.LeaderboardRowDAO;
import com.sap.sailing.gwt.ui.shared.MarkDAO;
import com.sap.sailing.gwt.ui.shared.Pair;
import com.sap.sailing.gwt.ui.shared.QuickRankDAO;
@@ -120,4 +122,6 @@ public interface SailingService extends RemoteService {
void stressTestLeaderboardByName(String leaderboardName, int times) throws Exception;
String[] getCountryCodes();
List<LeaderboardRowDAO> getLeaderboardRowDAOOfRace(String eventName, String raceName, List<CompetitorDAO> competitors, int timeStep) throws Exception;
}
@@ -7,6 +7,7 @@ import java.util.Map;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.sap.sailing.domain.base.Course;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.leaderboard.RaceInLeaderboard;
import com.sap.sailing.domain.tracking.WindSource;
import com.sap.sailing.gwt.ui.shared.CompetitorDAO;
@@ -14,6 +15,7 @@ import com.sap.sailing.gwt.ui.shared.EventDAO;
import com.sap.sailing.gwt.ui.shared.GPSFixDAO;
import com.sap.sailing.gwt.ui.shared.LeaderboardDAO;
import com.sap.sailing.gwt.ui.shared.LeaderboardEntryDAO;
import com.sap.sailing.gwt.ui.shared.LeaderboardRowDAO;
import com.sap.sailing.gwt.ui.shared.MarkDAO;
import com.sap.sailing.gwt.ui.shared.Pair;
import com.sap.sailing.gwt.ui.shared.QuickRankDAO;
@@ -183,4 +185,7 @@ public interface SailingServiceAsync {
void stressTestLeaderboardByName(String leaderboardName, int times, AsyncCallback<Void> callback);
void getCountryCodes(AsyncCallback<String[]> callback);
void getLeaderboardRowDAOOfRace(String eventName, String raceName, List<CompetitorDAO> competitors, int timeStep,
AsyncCallback<List<LeaderboardRowDAO>> callback);
}
@@ -52,12 +52,14 @@ import com.sap.sailing.domain.persistence.MongoObjectFactory;
import com.sap.sailing.domain.persistence.MongoWindStoreFactory;
import com.sap.sailing.domain.swisstimingadapter.SwissTimingConfiguration;
import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory;
import com.sap.sailing.domain.swisstimingadapter.impl.CompetitorImpl;
import com.sap.sailing.domain.swisstimingadapter.persistence.SwissTimingAdapterPersistence;
import com.sap.sailing.domain.tracking.GPSFix;
import com.sap.sailing.domain.tracking.GPSFixMoving;
import com.sap.sailing.domain.tracking.GPSFixTrack;
import com.sap.sailing.domain.tracking.NoWindException;
import com.sap.sailing.domain.tracking.RaceHandle;
import com.sap.sailing.domain.tracking.TrackedLeg;
import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.domain.tracking.Wind;
@@ -1108,4 +1110,37 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
Collections.sort(countryCodes);
return countryCodes.toArray(new String[0]);
}
@Override
public List<LeaderboardRowDAO> getLeaderboardRowDAOOfRace(String eventName, String raceName, List<CompetitorDAO> competitors, int timeStep) throws NoWindException {
List<LeaderboardRowDAO> entries = new ArrayList<LeaderboardRowDAO>();
Event event = getService().getEventByName(eventName);
RaceDefinition race = getRaceByName(event, raceName);
TrackedRace trackedRace = getService().getTrackedRace(event, race);
for (long time = trackedRace.getStart().asMillis(); time < trackedRace.getTimePointOfNewestEvent().asMillis(); time += timeStep){
MillisecondsTimePoint timePoint = new MillisecondsTimePoint(time);
for (CompetitorDAO competitorDAO : competitors){
Competitor competitor = (Competitor) new CompetitorImpl(competitorDAO.id, competitorDAO.threeLetterIocCountryCode, competitorDAO.name);
LeaderboardRowDAO row = new LeaderboardRowDAO();
row.competitor = competitorDAO;
row.fieldsByRaceName = new HashMap<String, LeaderboardEntryDAO>();
LeaderboardEntryDAO entryDAO = new LeaderboardEntryDAO();
entryDAO.legDetails = new ArrayList<LegEntryDAO>();
for (Leg leg : trackedRace.getRace().getCourse().getLegs()) {
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(competitor, leg);
LegEntryDAO legEntry;
if (trackedLeg != null && trackedLeg.hasStartedLeg(timePoint)) {
legEntry = createLegEntry(trackedLeg, timePoint);
} else {
legEntry = null;
}
entryDAO.legDetails.add(legEntry);
}
row.fieldsByRaceName.put(raceName, entryDAO);
entries.add(row);
}
}
return null;
}
}
@@ -17,6 +17,9 @@
<!-- Google Maps API -->
<inherits name='com.google.gwt.maps.GoogleMaps' />
<!-- Google Visualization API -->
<inherits name='com.google.gwt.visualization.Visualization'/>
<!-- Phoenix Stuff -->
<inherits name='com.sap.ui.commons.Module' />