mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-08 21:30:57 +00:00
added lower flag to regattaoverview, extended gate start feature.
This commit is contained in:
1 parent
83c3035ee4
commit
dd4d93efed
9 files changed
+51
-33
No files matched your search
+3
-1
@@ -515,7 +515,8 @@ public interface StringMessages extends Messages {
|
||||
String totalAverageSpeedOverGround();
|
||||
String totalAverageSpeedOverGroundTooltip();
|
||||
String noStarttimeAnnouncedYet();
|
||||
String lastFlag();
|
||||
String lastUpperFlag();
|
||||
String lastLowerFlag();
|
||||
String filterRegattasByName();
|
||||
String noRegattasYet();
|
||||
String cannotAddRacesToRegattaLeaderboardButOnlyToRegatta();
|
||||
@@ -534,4 +535,5 @@ public interface StringMessages extends Messages {
|
||||
String currentTime();
|
||||
String tractracUsername();
|
||||
String tractracPassword();
|
||||
String flagStatus();
|
||||
}
|
||||
+4
-2
@@ -520,7 +520,8 @@ pleaseEnterNonEmptyCourseArea=Please enter a course area.
|
||||
pleaseSelectACourseArea=Please select a course area.
|
||||
radiusInMeters=Radius (m)
|
||||
noStarttimeAnnouncedYet=No start time announced yet
|
||||
lastFlag=Last flag
|
||||
lastUpperFlag=Upper flag
|
||||
lastLowerFlag=Lower flag
|
||||
cannotAddRacesToRegattaLeaderboardButOnlyToRegatta=This is a regatta leaderboard. You can only add races to this leaderboard directly in the regatta definition.
|
||||
correctScore=Correct Score
|
||||
correctScoreFor=Correct score for competitor {0} in race {1}
|
||||
@@ -536,4 +537,5 @@ stopUpdating=Stop updating
|
||||
startUpdating=Start updating
|
||||
currentTime=Current time:
|
||||
tractracUsername=TracTrac username
|
||||
tractracPassword=TracTrac password
|
||||
tractracPassword=TracTrac password
|
||||
flagStatus=Flag status
|
||||
+20
-11
@@ -251,22 +251,30 @@ public class RegattaOverviewTableComposite extends Composite {
|
||||
|
||||
});
|
||||
|
||||
Column<RegattaOverviewEntryDTO, ImageResource> lastFlagColumn = new Column<RegattaOverviewEntryDTO, ImageResource>(new ImageResourceCell()) {
|
||||
Column<RegattaOverviewEntryDTO, ImageResource> lastUpperFlagColumn = new Column<RegattaOverviewEntryDTO, ImageResource>(new ImageResourceCell()) {
|
||||
@Override
|
||||
public ImageResource getValue(RegattaOverviewEntryDTO entryDTO) {
|
||||
return flagImageResolver.resolveFlagToImage(entryDTO.raceInfo.lastFlag);
|
||||
return flagImageResolver.resolveFlagToImage(entryDTO.raceInfo.lastUpperFlag);
|
||||
}
|
||||
};
|
||||
|
||||
Column<RegattaOverviewEntryDTO, ImageResource> lastLowerFlagColumn = new Column<RegattaOverviewEntryDTO, ImageResource>(new ImageResourceCell()) {
|
||||
@Override
|
||||
public ImageResource getValue(RegattaOverviewEntryDTO entryDTO) {
|
||||
return flagImageResolver.resolveFlagToImage(entryDTO.raceInfo.lastLowerFlag);
|
||||
}
|
||||
};
|
||||
|
||||
Column<RegattaOverviewEntryDTO, ImageResource> lastFlagDirectionColumn = new Column<RegattaOverviewEntryDTO, ImageResource>(new ImageResourceCell()) {
|
||||
@Override
|
||||
public ImageResource getValue(RegattaOverviewEntryDTO entryDTO) {
|
||||
if(entryDTO.raceInfo.lastFlag != null)
|
||||
if(entryDTO.raceInfo.lastUpperFlag != null)
|
||||
return flagImageResolver.resolveFlagDirectionToImage(entryDTO.raceInfo.displayed);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
table.addColumn(courseAreaColumn, stringMessages.courseArea());
|
||||
table.addColumn(regattaNameColumn, stringMessages.boatClass()); // For sailors the boat class also contains additional infos such as woman/man, e.g. Laser Radial Woman or Laser Radial Men
|
||||
@@ -274,8 +282,9 @@ public class RegattaOverviewTableComposite extends Composite {
|
||||
table.addColumn(raceNameColumn, stringMessages.race());
|
||||
table.addColumn(raceStartTimeColumn, stringMessages.startTime());
|
||||
table.addColumn(raceStatusColumn, stringMessages.status());
|
||||
table.addColumn(lastFlagColumn, stringMessages.lastFlag());
|
||||
table.addColumn(lastFlagDirectionColumn, "");
|
||||
table.addColumn(lastUpperFlagColumn, stringMessages.lastUpperFlag());
|
||||
table.addColumn(lastLowerFlagColumn, stringMessages.lastLowerFlag());
|
||||
table.addColumn(lastFlagDirectionColumn, stringMessages.flagStatus());
|
||||
table.addColumnSortHandler(regattaOverviewListHandler);
|
||||
|
||||
return table;
|
||||
@@ -292,9 +301,9 @@ public class RegattaOverviewTableComposite extends Composite {
|
||||
|
||||
private String getStatusText(RaceInfoDTO raceInfo) {
|
||||
String statusText = "";
|
||||
if (raceInfo.lastStatus.equals(RaceLogRaceStatus.RUNNING) && raceInfo.lastFlag.equals(Flags.XRAY) && raceInfo.displayed) {
|
||||
if (raceInfo.lastStatus.equals(RaceLogRaceStatus.RUNNING) && raceInfo.lastUpperFlag.equals(Flags.XRAY) && raceInfo.displayed) {
|
||||
statusText = "Race is running (had early starters)";
|
||||
} else if (raceInfo.lastStatus.equals(RaceLogRaceStatus.RUNNING) && raceInfo.lastFlag.equals(Flags.XRAY) && !raceInfo.displayed) {
|
||||
} else if (raceInfo.lastStatus.equals(RaceLogRaceStatus.RUNNING) && raceInfo.lastUpperFlag.equals(Flags.XRAY) && !raceInfo.displayed) {
|
||||
statusText = "Race is running";
|
||||
} else if (raceInfo.lastStatus.equals(RaceLogRaceStatus.RUNNING)) {
|
||||
statusText = "Race is running";
|
||||
@@ -308,13 +317,13 @@ public class RegattaOverviewTableComposite extends Composite {
|
||||
statusText = "Race in start phase";
|
||||
} else if (raceInfo.lastStatus.equals(RaceLogRaceStatus.UNSCHEDULED)) {
|
||||
statusText = stringMessages.noStarttimeAnnouncedYet();
|
||||
} else if (raceInfo.lastFlag == null) {
|
||||
} else if (raceInfo.lastUpperFlag == null) {
|
||||
statusText = "";
|
||||
} else if (raceInfo.lastFlag.equals(Flags.FIRSTSUBSTITUTE)) {
|
||||
} else if (raceInfo.lastUpperFlag.equals(Flags.FIRSTSUBSTITUTE)) {
|
||||
statusText = "General recall";
|
||||
} else if (raceInfo.lastFlag.equals(Flags.AP) && raceInfo.displayed) {
|
||||
} else if (raceInfo.lastUpperFlag.equals(Flags.AP) && raceInfo.displayed) {
|
||||
statusText = "Start postponed";
|
||||
} else if (raceInfo.lastFlag.equals(Flags.NOVEMBER) && raceInfo.displayed) {
|
||||
} else if (raceInfo.lastUpperFlag.equals(Flags.NOVEMBER) && raceInfo.displayed) {
|
||||
statusText = "Start abandoned";
|
||||
}
|
||||
return statusText;
|
||||
|
||||
+2
-1
@@ -1110,7 +1110,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
raceInfoDTO.lastStatus = raceStatusAnalyzer.getStatus();
|
||||
for(RaceLogEvent event : passAwareRaceLog.getFixes()){
|
||||
if(event instanceof RaceLogFlagEvent){
|
||||
raceInfoDTO.lastFlag = ((RaceLogFlagEvent) event).getUpperFlag();
|
||||
raceInfoDTO.lastUpperFlag = ((RaceLogFlagEvent) event).getUpperFlag();
|
||||
raceInfoDTO.lastLowerFlag = ((RaceLogFlagEvent) event).getLowerFlag();
|
||||
raceInfoDTO.displayed = ((RaceLogFlagEvent) event).isDisplayed();
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -12,10 +12,12 @@ public class RaceInfoDTO implements IsSerializable {
|
||||
public String fleet;
|
||||
public Date startTime;
|
||||
public RaceLogRaceStatus lastStatus;
|
||||
public Flags lastFlag;
|
||||
public Flags lastUpperFlag;
|
||||
public Flags lastLowerFlag;
|
||||
public boolean displayed;
|
||||
public RaceCourseDTO lastCourseDesign;
|
||||
public RaceIdentifier raceIdentifier;
|
||||
public String additionalInformation;
|
||||
|
||||
// for GWT serialization
|
||||
public RaceInfoDTO() { }
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
android:layout_centerInParent="true"
|
||||
android:layout_marginRight="10dp"
|
||||
android:contentDescription="@string/start_mode_flag"
|
||||
android:src="@drawable/fivehundred_five_over_golf_flag" />
|
||||
android:src="@drawable/papa_flag" />
|
||||
|
||||
<com.sap.sailing.racecommittee.app.ui.views.VerticalTextView
|
||||
android:id="@+id/flagsDownLabel"
|
||||
|
||||
@@ -117,6 +117,10 @@
|
||||
<string name="race_startphase_countdown_class_remove">%1$s until %2$s class flag is removed and race starts</string>
|
||||
<string name="race_startphase_ess_countdown_one_flag_remove">%1$s until One flag is removed and race starts</string>
|
||||
<string name="race_startphase_countdown_class_display">%1$s until %2$s class flag is displayed</string><string name="race_startphase_countdown_start">%1$s until %2$s starts"</string>
|
||||
<string name="race_startphase_gate_class_over_golf_display">%1$s until Class flag over Golf flag is displayed</string>
|
||||
<string name="race_startphase_gate_class_over_golf_removed">%1$s until Class flag over Golf flag is removed and race starts</string>
|
||||
<string name="race_startphase_gate_papa_display">%1$s until Papa flag is displayed</string>
|
||||
<string name="race_startphase_gate_papa_removed">%1$s until Papa flag is removed</string>
|
||||
<string name="set_pathfinder">Set Pathfinder</string>
|
||||
<string name="set_pathfinder_title">Choose the pathfinder</string>
|
||||
<string name="protest_dialog_title">Set the protest start time</string>
|
||||
|
||||
+10
-11
@@ -15,6 +15,7 @@ import com.sap.sailing.domain.common.racelog.Flags;
|
||||
import com.sap.sailing.domain.racelog.PassAwareRaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEventFactory;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
import com.sap.sailing.racecommittee.app.domain.startprocedure.StartPhaseEventListener;
|
||||
import com.sap.sailing.racecommittee.app.domain.startprocedure.StartProcedure;
|
||||
import com.sap.sailing.racecommittee.app.domain.startprocedure.StartProcedureRaceStateChangedListener;
|
||||
@@ -284,18 +285,16 @@ public class GateStartProcedure implements StartProcedure {
|
||||
|
||||
@Override
|
||||
public Pair<String, Long> getNextFlagCountdownUiLabel(Context context, long millisecondsTillStart) {
|
||||
Pair<String, Long> result = new Pair<String, Long>("dei mudda...", millisecondsTillStart);
|
||||
/*if (millisecondsTillStart < startPhasePapaDownInterval) {
|
||||
result = new Pair<String, Long>(context.getResources().getString(R.string.), millisecondsTillStart);
|
||||
} else if (millisecondsTillStart < startPhaseESSTwoUpInterval) {
|
||||
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_ess_countdown_one_flag_display), millisecondsTillStart - startPhaseESSOneUpInterval);
|
||||
} else if (millisecondsTillStart < startPhaseESSThreeUpInterval) {
|
||||
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_ess_countdown_two_flag_display), millisecondsTillStart - startPhaseESSTwoUpInterval);
|
||||
} else if (millisecondsTillStart < startPhaseAPDownInterval) {
|
||||
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_ess_countdown_three_flag_display), millisecondsTillStart - startPhaseESSThreeUpInterval);
|
||||
Pair<String, Long> result;
|
||||
if (millisecondsTillStart < startPhasePapaDownInterval) {
|
||||
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_gate_class_over_golf_removed), millisecondsTillStart);
|
||||
} else if (millisecondsTillStart < startPhasePapaUpInterval) {
|
||||
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_gate_papa_removed), millisecondsTillStart - startPhasePapaDownInterval);
|
||||
} else if (millisecondsTillStart < startPhaseClassOverGolfUpIntervall) {
|
||||
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_gate_papa_display), millisecondsTillStart - startPhasePapaUpInterval);
|
||||
} else {
|
||||
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_ess_countdown_ap_flag_removed), millisecondsTillStart - startPhaseAPDownInterval);
|
||||
}*/
|
||||
result = new Pair<String, Long>(context.getResources().getString(R.string.race_startphase_gate_class_over_golf_display), millisecondsTillStart - startPhaseClassOverGolfUpIntervall);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+4
-5
@@ -2,7 +2,6 @@ package com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.startphase;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.FragmentManager;
|
||||
import android.opengl.Visibility;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -91,7 +90,6 @@ public class GateStartPhaseFragment extends RaceFragment implements GateStartPha
|
||||
}
|
||||
|
||||
private void setupUi() {
|
||||
displayedFlag.setVisibility(View.INVISIBLE);
|
||||
RaceLog log = getRace().getState().getRaceLog();
|
||||
log.lockForRead();
|
||||
try {
|
||||
@@ -100,14 +98,15 @@ public class GateStartPhaseFragment extends RaceFragment implements GateStartPha
|
||||
RaceLogFlagEvent flagEvent = (RaceLogFlagEvent) lastEvent;
|
||||
Flags flag = flagEvent.getUpperFlag();
|
||||
|
||||
if (!flagEvent.isDisplayed() && flag.equals(Flags.CLASS) && flagEvent.getLowerFlag().equals(Flags.GOLF)) {
|
||||
if (flagEvent.isDisplayed() && flag.equals(Flags.CLASS) && flagEvent.getLowerFlag().equals(Flags.GOLF)) {
|
||||
onClassOverGolfUp();
|
||||
} else if (flagEvent.isDisplayed() && flag.equals(Flags.PAPA)) {
|
||||
onPapaUp();
|
||||
} else if (!flagEvent.isDisplayed() && flag.equals(Flags.PAPA)) {
|
||||
onPapaDown();
|
||||
}
|
||||
}
|
||||
} else
|
||||
displayedFlag.setVisibility(View.INVISIBLE);
|
||||
} finally {
|
||||
log.unlockAfterRead();
|
||||
}
|
||||
@@ -213,6 +212,6 @@ public class GateStartPhaseFragment extends RaceFragment implements GateStartPha
|
||||
|
||||
@Override
|
||||
public void onPapaDown() {
|
||||
displayedFlag.setImageResource(R.drawable.fivehundred_five_500px);
|
||||
displayedFlag.setImageResource(R.drawable.fivehundred_five_over_golf_flag);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user