Race list - Start time is show with date, if the date varies

This commit is contained in:
Benjamin Barth committed 2015-07-14 12:57:36 +02:00
1 parent 442201fee6
commit ad921137a2
4 files changed
+44 -20

No files matched your search

@@ -49,6 +49,7 @@ public class RacesListLive extends Composite {
boolean hasFleets = RaceListDataUtil.hasFleets(data);
this.fleetCornerColumn.setShowDetails(hasFleets);
this.fleetNameColumn.setShowDetails(hasFleets);
this.startTimeColumn.setShowTimeOnly(!RaceListDataUtil.hasDifferentStartDates(data));
this.courseAreaColumn.setShowDetails(RaceListDataUtil.hasCourseAreas(data));
this.courseColumn.setShowDetails(RaceListDataUtil.hasCourses(data));
boolean hasWind = RaceListDataUtil.hasWind(data);
@@ -10,6 +10,7 @@ import com.google.gwt.user.client.ui.SimplePanel;
import com.sap.sailing.gwt.home.client.place.event.EventView;
import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLiveResources;
import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLiveResources.LocalCss;
import com.sap.sailing.gwt.home.client.place.event.partials.racelist.RaceListColumnFactory.SortableRaceListStartTimeColumn;
import com.sap.sailing.gwt.ui.leaderboard.SortedCellTable;
import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO;
import com.sap.sailing.gwt.ui.shared.race.wind.AbstractWindDTO;
@@ -25,7 +26,7 @@ public abstract class AbstractRaceList<T extends RaceMetadataDTO<? extends Abstr
protected final SortableRaceListColumn<T, ?> fleetCornerColumn = RaceListColumnFactory.getFleetCornerColumn();
protected final SortableRaceListColumn<T, ?> raceNameColumn = RaceListColumnFactory.getRaceNameColumn();
protected final SortableRaceListColumn<T, ?> fleetNameColumn = RaceListColumnFactory.getFleetNameColumn();
protected final SortableRaceListColumn<T, ?> startTimeColumn = RaceListColumnFactory.getStartTimeColumn();
protected final SortableRaceListStartTimeColumn<T> startTimeColumn = RaceListColumnFactory.getStartTimeColumn();
protected final SortableRaceListColumn<T, ?> windDirectionColumn = RaceListColumnFactory.getWindDirectionColumn();
protected final SortableRaceListColumn<T, ?> raceViewerButtonColumn;
@@ -4,7 +4,6 @@ import java.util.Date;
import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.cell.client.Cell;
import com.google.gwt.cell.client.DateCell;
import com.google.gwt.cell.client.TextCell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.TextTransform;
@@ -185,30 +184,14 @@ public class RaceListColumnFactory {
};
}
public static <T extends RaceMetadataDTO<?>> SortableRaceListColumn<T, Date> getStartTimeColumn() {
Cell<Date> cell = new DateCell(DateTimeFormat.getFormat(PredefinedFormat.HOUR24_MINUTE));
public static <T extends RaceMetadataDTO<?>> SortableRaceListStartTimeColumn<T> getStartTimeColumn() {
InvertibleComparator<T> comparator = new InvertibleComparatorWrapper<T, Date>(new NullSafeComparableComparator<Date>()) {
@Override
protected Date getComparisonValue(T object) {
return object.getStart();
}
};
return new SortableRaceListColumn<T, Date>(I18N.start(), cell, comparator) {
@Override
public String getHeaderStyle() {
return CSS.raceslist_head_item();
}
@Override
public String getColumnStyle() {
return CSS.race_item();
}
@Override
public Date getValue(T object) {
return object.getStart();
}
};
return new SortableRaceListStartTimeColumn<T>(comparator);
}
public static <T extends RaceListRaceDTO> SortableRaceListColumn<T, String> getDurationColumn() {
@@ -557,6 +540,44 @@ public class RaceListColumnFactory {
};
}
public static class SortableRaceListStartTimeColumn<T extends RaceMetadataDTO<?>> extends SortableRaceListColumn<T, Date> {
protected SortableRaceListStartTimeColumn(InvertibleComparator<T> comparator) {
super(I18N.start(), new StartTimeCell(), comparator);
}
public void setShowTimeOnly(boolean showTimeOnly) {
((StartTimeCell) getCell()).showTimeOnly = showTimeOnly;
}
@Override
public String getHeaderStyle() {
return CSS.raceslist_head_item();
}
@Override
public String getColumnStyle() {
return CSS.race_item();
}
@Override
public Date getValue(T object) {
return object.getStart();
}
private static class StartTimeCell extends AbstractCell<Date> {
private static final DateTimeFormat DATE_FORMAT = DateTimeFormat.getFormat(PredefinedFormat.MONTH_NUM_DAY);
private static final DateTimeFormat TIME_FORMAT = DateTimeFormat.getFormat(PredefinedFormat.HOUR24_MINUTE);
private boolean showTimeOnly = true;
@Override
public void render(Context context, Date value, SafeHtmlBuilder sb) {
if (value != null) {
sb.appendEscaped(showTimeOnly ? "" : (DATE_FORMAT.format(value) + " ") + TIME_FORMAT.format(value));
}
}
}
}
private static abstract class WindSpeedOrRangeColumn<T extends RaceMetadataDTO<?>> extends SortableRaceListColumn<T, String> {
protected WindSpeedOrRangeColumn(InvertibleComparator<T> comparator) {
super(I18N.wind(), new TextCell(), comparator);
@@ -220,6 +220,7 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView<Reg
boolean hasFleets = RaceListDataUtil.hasFleets(data);
this.fleetCornerColumn.setShowDetails(hasFleets);
this.fleetNameColumn.setShowDetails(hasFleets);
this.startTimeColumn.setShowTimeOnly(!RaceListDataUtil.hasDifferentStartDates(data));
this.durationColumn.setShowDetails(RaceListDataUtil.hasDurations(data));
boolean hasWind = RaceListDataUtil.hasWind(data);
this.windSpeedColumn.setShowDetails(hasWind);