mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-27 14:27:15 +00:00
Races lists - Added columns for wind fixes, video and audio to races
list
This commit is contained in:
1 parent
f01f49c690
commit
746683f097
3 files changed
+76
-8
No files matched your search
+61
-4
@@ -19,6 +19,7 @@ import com.google.gwt.safehtml.shared.SafeHtml;
|
||||
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||
import com.google.gwt.safehtml.shared.SafeUri;
|
||||
import com.google.gwt.safehtml.shared.UriUtils;
|
||||
import com.google.gwt.user.cellview.client.SafeHtmlHeader;
|
||||
import com.sap.sailing.domain.common.InvertibleComparator;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.domain.common.impl.NaturalComparator;
|
||||
@@ -71,11 +72,11 @@ public class RaceListColumnFactory {
|
||||
@Template("<a href=\"{2}\" class=\"{0}\" target=\"_blank\">{1}</a>")
|
||||
SafeHtml raceViewerLinkButton(String styleNames, String text, String link);
|
||||
|
||||
@Template("<img src=\"{2}\" class=\"{0}\" /><span class=\"{1}\">{3}</span>")
|
||||
SafeHtml winner(String styleNamesFlag, String styleNamesText, String flagImageURL, String name);
|
||||
|
||||
@Template("<img src=\"{2}\" class=\"{0}\" /><span class=\"{1}\">{3}</span>")
|
||||
SafeHtml winner(String styleNamesFlag, String styleNamesText, SafeUri flagImageURL, String name);
|
||||
|
||||
@Template("<img src=\"{1}\" class=\"{0}\" />")
|
||||
SafeHtml imageHeader(String styleNames, SafeUri imageURL);
|
||||
}
|
||||
|
||||
public static <T extends RaceMetadataDTO> SortableRaceListColumn<T, FleetMetadataDTO> getFleetCornerColumn() {
|
||||
@@ -182,7 +183,7 @@ public class RaceListColumnFactory {
|
||||
|
||||
public static <T extends RaceMetadataDTO> SortableRaceListColumn<T, Date> getStartTimeColumn() {
|
||||
Cell<Date> cell = new DateCell(DateTimeFormat.getFormat(PredefinedFormat.HOUR24_MINUTE));
|
||||
InvertibleComparator<T> comparator = new InvertibleComparatorWrapper<T, Date>( new NullSafeComparableComparator<Date>()) {
|
||||
InvertibleComparator<T> comparator = new InvertibleComparatorWrapper<T, Date>(new NullSafeComparableComparator<Date>()) {
|
||||
@Override
|
||||
protected Date getComparisonValue(T object) {
|
||||
return object.getStart();
|
||||
@@ -350,6 +351,33 @@ public class RaceListColumnFactory {
|
||||
};
|
||||
}
|
||||
|
||||
public static <T extends RaceListRaceDTO> SortableRaceListColumn<T, Long> getWindFixesCountColumn() {
|
||||
return new DataCountColumn<T>(DataCountColumn.ICON_WIND) {
|
||||
@Override
|
||||
public Long getValue(T object) {
|
||||
return null; // TODO
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static <T extends RaceListRaceDTO> SortableRaceListColumn<T, Long> getVideoCountColumn() {
|
||||
return new DataCountColumn<T>(DataCountColumn.ICON_VIDEO) {
|
||||
@Override
|
||||
public Long getValue(T object) {
|
||||
return null; // TODO
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static <T extends RaceListRaceDTO> SortableRaceListColumn<T, Long> getAudioCountColumn() {
|
||||
return new DataCountColumn<T>(DataCountColumn.ICON_AUDIO) {
|
||||
@Override
|
||||
public Long getValue(T object) {
|
||||
return null; // TODO
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static <T extends LiveRaceDTO> SortableRaceListColumn<T, T> getRaceViewStateColumn() {
|
||||
Cell<T> cell = new AbstractCell<T>() {
|
||||
@Override
|
||||
@@ -479,4 +507,33 @@ public class RaceListColumnFactory {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static abstract class DataCountColumn<T extends RaceListRaceDTO> extends SortableRaceListColumn<T, Long> {
|
||||
private static final SafeUri ICON_WIND = UriUtils.fromTrustedString("images/home/icon-wind.png");
|
||||
private static final SafeUri ICON_VIDEO = UriUtils.fromTrustedString("images/home/icon-video.png");
|
||||
private static final SafeUri ICON_AUDIO = UriUtils.fromTrustedString("images/home/icon-audio.png");
|
||||
|
||||
private DataCountColumn(final SafeUri imageUri) {
|
||||
super(new SafeHtmlHeader(TEMPLATE.imageHeader(CSS.raceslist_head_itemflag(), imageUri)), new AbstractCell<Long>() {
|
||||
@Override
|
||||
public void render(Context context, Long value, SafeHtmlBuilder sb) {
|
||||
if (value != null && value > 0) {
|
||||
sb.append(value);
|
||||
} else {
|
||||
sb.appendHtmlConstant("—");
|
||||
}
|
||||
}
|
||||
}, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHeaderStyle() {
|
||||
return getStyleNamesString(CSS.raceslist_head_item(), CSS.raceslist_head_itemcenter(), MEDIA_CSS.showonlarge());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getColumnStyle() {
|
||||
return getStyleNamesString(CSS.race_item(), CSS.race_itemcenter(), MEDIA_CSS.showonlarge());
|
||||
}
|
||||
}
|
||||
}
|
||||
+9
-4
@@ -9,14 +9,19 @@ import com.sap.sailing.gwt.ui.client.shared.controls.SortableColumn;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
public abstract class SortableRaceListColumn<T, C> extends SortableColumn<T, C> {
|
||||
private final String headerText;
|
||||
|
||||
private final Header<?> header;
|
||||
private final InvertibleComparator<T> comparator;
|
||||
|
||||
private boolean showDetails = true;
|
||||
|
||||
protected SortableRaceListColumn(String headerText, Cell<C> cell, InvertibleComparator<T> comparator) {
|
||||
this(new TextHeader(headerText), cell, comparator);
|
||||
}
|
||||
|
||||
protected SortableRaceListColumn(Header<?> header, Cell<C> cell, InvertibleComparator<T> comparator) {
|
||||
super(cell, SortingOrder.ASCENDING);
|
||||
this.headerText = headerText;
|
||||
this.header = header;
|
||||
this.comparator = comparator;
|
||||
}
|
||||
|
||||
@@ -27,7 +32,7 @@ public abstract class SortableRaceListColumn<T, C> extends SortableColumn<T, C>
|
||||
|
||||
@Override
|
||||
public final Header<?> getHeader() {
|
||||
return new TextHeader(headerText);
|
||||
return header;
|
||||
}
|
||||
|
||||
public void setShowDetails(boolean showDetails) {
|
||||
@@ -37,7 +42,7 @@ public abstract class SortableRaceListColumn<T, C> extends SortableColumn<T, C>
|
||||
public boolean isShowDetails() {
|
||||
return showDetails;
|
||||
}
|
||||
|
||||
|
||||
protected final String getStyleNamesString(String... styleNames) {
|
||||
return Util.join(" ", styleNames);
|
||||
}
|
||||
|
||||
+6
@@ -142,6 +142,9 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView<Reg
|
||||
|
||||
private class RaceListFinishedRaces extends AbstractRaceList<RaceListRaceDTO> {
|
||||
private final SortableRaceListColumn<RaceListRaceDTO, ?> winnerColumn = RaceListColumnFactory.getWinnerColumn();
|
||||
private final SortableRaceListColumn<RaceListRaceDTO, ?> windfixesCountColumn = RaceListColumnFactory.getWindFixesCountColumn();
|
||||
private final SortableRaceListColumn<RaceListRaceDTO, ?> videoCountColumn = RaceListColumnFactory.getVideoCountColumn();
|
||||
private final SortableRaceListColumn<RaceListRaceDTO, ?> audioCountColumn = RaceListColumnFactory.getAudioCountColumn();
|
||||
|
||||
public RaceListFinishedRaces(EventView.Presenter presenter) {
|
||||
super(presenter);
|
||||
@@ -165,6 +168,9 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView<Reg
|
||||
add(startTimeColumn);
|
||||
add(windSpeedColumn);
|
||||
add(windDirectionColumn);
|
||||
add(windfixesCountColumn);
|
||||
add(videoCountColumn);
|
||||
add(audioCountColumn);
|
||||
add(winnerColumn);
|
||||
add(raceViewerButtonColumn);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user