mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-10 04:51:07 +00:00
First version of Compare-Competitors-Charts
This commit is contained in:
1 parent
ce3cecc211
commit
47eef4eabb
6 files changed
+85
-1
No files matched your search
@@ -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>
|
||||
+33
-1
@@ -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();
|
||||
}
|
||||
}
|
||||
+4
@@ -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;
|
||||
}
|
||||
+5
@@ -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);
|
||||
}
|
||||
+35
@@ -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;
|
||||
}
|
||||
}
|
||||
+3
@@ -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' />
|
||||
|
||||
|
||||
Reference in new issue
Block a user