mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-27 06:17:27 +00:00
Regatta list - Added MultiRegattaList partial
This commit is contained in:
1 parent
945f95abfb
commit
4e696dd688
8 files changed
+469
No files matched your search
+262
@@ -0,0 +1,262 @@
|
||||
/**
|
||||
* A list of regattas to an event
|
||||
*/
|
||||
.race {
|
||||
color: #333;
|
||||
font-size: 1rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
.race:last-of-type .race_item {
|
||||
border: none;
|
||||
}
|
||||
.race_fleetcorner {
|
||||
width: 1em;
|
||||
vertical-align: top;
|
||||
border-bottom: 1px solid #ebebeb;
|
||||
}
|
||||
.race_fleetcorner_icon {
|
||||
width: 1em;
|
||||
margin-right: -2.333333333333333em;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
left: 1px;
|
||||
border-style: solid;
|
||||
border-color: transparent;
|
||||
border-width: 1em 1em 0 0;
|
||||
}
|
||||
.race_item {
|
||||
text-align: left;
|
||||
vertical-align: baseline;
|
||||
border-bottom: 1px solid #ebebeb;
|
||||
white-space: nowrap;
|
||||
padding: 1.4em 0.666666666666667em 0.733333333333333em 1.333333333333333em;
|
||||
}
|
||||
.race_item .button {
|
||||
white-space: nowrap;
|
||||
}
|
||||
.race_item:first-of-type {
|
||||
padding-left: 2em;
|
||||
}
|
||||
.race_itemrank:after {
|
||||
content: '.';
|
||||
}
|
||||
.race_itemshort {
|
||||
width: 5em;
|
||||
}
|
||||
.race_itemlong {
|
||||
width: 32.5%;
|
||||
}
|
||||
.race_itemwind {
|
||||
white-space: nowrap;
|
||||
}
|
||||
.race_itemwindflag {
|
||||
padding: 1.066666666666667em 0.666666666666667em 0.4em 1.333333333333333em;
|
||||
}
|
||||
img.race_item_windflag {
|
||||
max-width: 2.4em;
|
||||
max-height: 2.4em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.race_itemname {
|
||||
font-weight: 600;
|
||||
}
|
||||
.race_itemwinner {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
vertical-align: middle;
|
||||
min-width: 13.333333333333334em;
|
||||
max-width: 16.666666666666668em;
|
||||
}
|
||||
.race_item_flag {
|
||||
max-width: 1.6em;
|
||||
max-height: 1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.race_item_position {
|
||||
margin-right: 0.333333333333333em;
|
||||
}
|
||||
.race_item_winner {
|
||||
margin-left: 5px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.race_itemwinner {
|
||||
padding: 0.733333333333333em 1.333333333333333em;
|
||||
}
|
||||
.race_itemcenter {
|
||||
text-align: center;
|
||||
}
|
||||
.race_itemright {
|
||||
text-align: right;
|
||||
vertical-align: middle;
|
||||
padding-left: 0;
|
||||
padding-right: 0.666666666666667em;
|
||||
padding-top: 0.666666666666667em;
|
||||
}
|
||||
.race_itemright_button {
|
||||
padding: 0.666666666666667em;
|
||||
}
|
||||
.race_itemstatus {
|
||||
position: relative;
|
||||
}
|
||||
.race_itemstatus:first-letter {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
.race_itemstatus_container {
|
||||
min-width: 5.333333333333333em;
|
||||
display: inline-block;
|
||||
}
|
||||
.race_itemstatus_container_text {
|
||||
clip: auto;
|
||||
}
|
||||
.race_itemstatus_container_progressbar {
|
||||
height: 0.2em;
|
||||
position: relative;
|
||||
top: 0.2em;
|
||||
width: 100%;
|
||||
background-color: #dedede;
|
||||
}
|
||||
.race_itemstatus_container_progressbar_progress {
|
||||
height: 100%;
|
||||
background-color: #efaa00;
|
||||
}
|
||||
.racewinners .race_item {
|
||||
padding: 1.2em 0.666666666666667em 1.2em 1.333333333333333em;
|
||||
}
|
||||
.racewinners .race_item:nth-last-child(1) {
|
||||
display: none;
|
||||
}
|
||||
@media (min-width: 61em) {
|
||||
.racewinners .race_item:nth-last-child(1) {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
.racewinners .race_itemname {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.race_fleetcornerblue:before {
|
||||
border-top-color: #00f;
|
||||
}
|
||||
.race_fleetcornerred:before {
|
||||
border-top-color: #f00;
|
||||
}
|
||||
.race_fleetcornersilver:before {
|
||||
border-top-color: #c0c0c0;
|
||||
}
|
||||
.race_fleetcornergold:before {
|
||||
border-top-color: #ffd700;
|
||||
}
|
||||
.race_fleetcorneryellow:before {
|
||||
border-top-color: #ff0;
|
||||
}
|
||||
.regattalistitem {
|
||||
font-size: 1rem;
|
||||
float: left;
|
||||
width: 100%;
|
||||
margin-top: 2em;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 0.333333333333333em;
|
||||
overflow: hidden;
|
||||
}
|
||||
.regattalistitem div:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.regattalistitem_table {
|
||||
width: 100%;
|
||||
border-spacing: 0;
|
||||
border-collapse: separate;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
.regattalistitem_table:last-of-type {
|
||||
border-bottom: none;
|
||||
}
|
||||
.regattalistitem_tableborderTop {
|
||||
border-top: 1px solid #ebebeb;
|
||||
}
|
||||
.regattalistitem_steps {
|
||||
border-bottom: 1px solid #ddd;
|
||||
overflow: hidden;
|
||||
}
|
||||
.regattalistitem_steps_step {
|
||||
float: left;
|
||||
position: relative;
|
||||
height: 4em;
|
||||
line-height: 4em;
|
||||
text-transform: uppercase;
|
||||
padding: 0 0.666666666666667em 0 1.333333333333333em;
|
||||
}
|
||||
.regattalistitem_steps_stepinactive {
|
||||
color: #ddd;
|
||||
}
|
||||
.regattalistitem_steps_step:first-of-type {
|
||||
padding-left: 2em;
|
||||
}
|
||||
.regattalistitem_steps_step_check {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 2.133333333333333em;
|
||||
height: 2.133333333333333em;
|
||||
margin-left: -0.333333333333333em;
|
||||
background-image: url("../images/home/icon/icon-green-check.png");
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
}
|
||||
.regattalistitem_steps_step_text {
|
||||
margin-right: 2.4em;
|
||||
display: inline-block;
|
||||
font-size: 0;
|
||||
}
|
||||
.regattalistitem_steps_step_text::first-letter {
|
||||
font-size: 1rem;
|
||||
padding-right: 2.666666666666667em;
|
||||
}
|
||||
@media (min-width: 49.0625em) {
|
||||
.regattalistitem_steps_step_text {
|
||||
font-size: 1em;
|
||||
}
|
||||
.regattalistitem_steps_step_text::first-letter {
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
.regattalistitem_steps_step_count {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: 1.333333333333333em;
|
||||
font-size: 0.8em;
|
||||
line-height: 1.6em;
|
||||
width: 1.6em;
|
||||
height: 1.6em;
|
||||
text-align: center;
|
||||
background-color: #eee;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 0.2em;
|
||||
-webkit-transform: translateY(-50%);
|
||||
-moz-transform: translateY(-50%);
|
||||
-ms-transform: translateY(-50%);
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
.regattalistitem_steps_step:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0.333333333333333em;
|
||||
left: 100%;
|
||||
display: block;
|
||||
width: 3.333333333333333em;
|
||||
height: 3.333333333333333em;
|
||||
margin-left: -3.333333333333333em;
|
||||
border: 1px solid transparent;
|
||||
border-top-color: #ddd;
|
||||
border-right-color: #ddd;
|
||||
-webkit-transform: rotate(45deg);
|
||||
-moz-transform: rotate(45deg);
|
||||
-ms-transform: rotate(45deg);
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
.regattalistitem_steps_button {
|
||||
height: 100%;
|
||||
padding: 0.666666666666667em;
|
||||
text-align: right;
|
||||
}
|
||||
.regattalistitem_steps_button .button {
|
||||
margin-left: 0.8em;
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter;
|
||||
import com.sap.sailing.gwt.home.client.place.event.partials.regattaHeader.RegattaHeader;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaWithProgressDTO;
|
||||
|
||||
public class MultiRegattaListItem extends Composite {
|
||||
|
||||
private static MultiRegattaListItemUiBinder uiBinder = GWT.create(MultiRegattaListItemUiBinder.class);
|
||||
|
||||
interface MultiRegattaListItemUiBinder extends UiBinder<Widget, MultiRegattaListItem> {
|
||||
}
|
||||
|
||||
@UiField(provided = true) RegattaHeader regattaHeaderUi;
|
||||
@UiField(provided = true) MultiRegattaListSteps regattaStepsUi;
|
||||
|
||||
public MultiRegattaListItem(RegattaWithProgressDTO regattaWithProgress, Presenter presenter) {
|
||||
MultiRegattaListResources.INSTANCE.css().ensureInjected();
|
||||
regattaHeaderUi = new RegattaHeader(regattaWithProgress);
|
||||
regattaStepsUi = new MultiRegattaListSteps(regattaWithProgress.getProgress());
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
regattaHeaderUi.setRegattaNavigation(presenter.getRegattaNavigation(regattaWithProgress.getId()));
|
||||
}
|
||||
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui"
|
||||
xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" xmlns:p="urn:import:com.sap.sailing.gwt.home.client.place.event.partials">
|
||||
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
|
||||
<ui:with field="res" type="com.sap.sailing.gwt.common.client.SharedResources" />
|
||||
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaListResources" />
|
||||
<g:HTMLPanel>
|
||||
<div class="{local_res.css.regattalistitem}">
|
||||
<p:regattaHeader.RegattaHeader ui:field="regattaHeaderUi" />
|
||||
<p:multiRegattaList.MultiRegattaListSteps ui:field="regattaStepsUi" />
|
||||
<!--
|
||||
<ubi:multiRegattaList.MultiRegattaListRace ui:fields='races'> </ubi>
|
||||
<ubi:multiRegattaList.MultiRegattaListResult ui:fields='boatclass'> </ubi>
|
||||
<ubi:multiRegattaList.MultiRegattaListFinalresult ui:fields='boatclass'> </ubi>
|
||||
-->
|
||||
</div>
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
package com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.resources.client.ClientBundle;
|
||||
import com.google.gwt.resources.client.CssResource;
|
||||
|
||||
public interface MultiRegattaListResources extends ClientBundle {
|
||||
public static final MultiRegattaListResources INSTANCE = GWT.create(MultiRegattaListResources.class);
|
||||
|
||||
@Source("MultiRegattaList.gss")
|
||||
LocalCss css();
|
||||
|
||||
public interface LocalCss extends CssResource {
|
||||
String race();
|
||||
String race_item();
|
||||
String race_fleetcorner();
|
||||
String race_fleetcorner_icon();
|
||||
String button();
|
||||
String race_itemrank();
|
||||
String race_itemshort();
|
||||
String race_itemlong();
|
||||
String race_itemwind();
|
||||
String race_itemwindflag();
|
||||
String race_item_windflag();
|
||||
String race_itemname();
|
||||
String race_itemwinner();
|
||||
String race_item_flag();
|
||||
String race_item_position();
|
||||
String race_item_winner();
|
||||
String race_itemcenter();
|
||||
String race_itemright();
|
||||
String race_itemright_button();
|
||||
String race_itemstatus();
|
||||
String race_itemstatus_container();
|
||||
String race_itemstatus_container_text();
|
||||
String race_itemstatus_container_progressbar();
|
||||
String race_itemstatus_container_progressbar_progress();
|
||||
String racewinners();
|
||||
String race_fleetcornerblue();
|
||||
String race_fleetcornerred();
|
||||
String race_fleetcornersilver();
|
||||
String race_fleetcornergold();
|
||||
String race_fleetcorneryellow();
|
||||
String regattalistitem();
|
||||
String regattalistitem_table();
|
||||
String regattalistitem_tableborderTop();
|
||||
String regattalistitem_steps();
|
||||
String regattalistitem_steps_step();
|
||||
String regattalistitem_steps_stepinactive();
|
||||
String regattalistitem_steps_step_check();
|
||||
String regattalistitem_steps_step_text();
|
||||
String regattalistitem_steps_step_count();
|
||||
String regattalistitem_steps_button();
|
||||
}
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.AnchorElement;
|
||||
import com.google.gwt.dom.client.DivElement;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressSeriesDTO;
|
||||
|
||||
public class MultiRegattaListSteps extends Composite {
|
||||
|
||||
private static MultiRegattaListStepsUiBinder uiBinder = GWT.create(MultiRegattaListStepsUiBinder.class);
|
||||
|
||||
interface MultiRegattaListStepsUiBinder extends UiBinder<Widget, MultiRegattaListSteps> {
|
||||
}
|
||||
|
||||
@UiField DivElement stepsContainerUi;
|
||||
@UiField DivElement leaderboardButtonContainerUi;
|
||||
@UiField AnchorElement leaderboardButtonUi;
|
||||
|
||||
public MultiRegattaListSteps(RegattaProgressDTO regattaProgress) {
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
for(RegattaProgressSeriesDTO seriesProgress : regattaProgress.getSeries()) {
|
||||
stepsContainerUi.insertBefore(new MultiRegattaListStepsBody(seriesProgress).getElement(), leaderboardButtonContainerUi);
|
||||
}
|
||||
}
|
||||
|
||||
void setLeaderboardNavigation(PlaceNavigation<?> placeNavigation) {
|
||||
placeNavigation.configureAnchorElement(leaderboardButtonUi);
|
||||
leaderboardButtonUi.getStyle().clearDisplay();
|
||||
}
|
||||
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui"
|
||||
xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" xmlns:p="urn:import:com.sap.sailing.gwt.home.client.place.event.partials">
|
||||
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
|
||||
<ui:with field="res" type="com.sap.sailing.gwt.common.client.SharedResources" />
|
||||
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaListResources" />
|
||||
<g:HTMLPanel>
|
||||
<div class="{local_res.css.regattalistitem_steps}" ui:field="stepsContainerUi">
|
||||
<!-- EACH phase in regatta.phases
|
||||
<ubi:multiRegattaList.MultiRegattaListStepsBody ui:fields='phase'></ubi> -->
|
||||
<div class="{local_res.css.regattalistitem_steps_button}" ui:field="leaderboardButtonContainerUi">
|
||||
<a class="{res.mainCss.button} {res.mainCss.buttonstrong} {res.mainCss.buttonprimary} {res.mainCss.buttonarrowrightwhite}"
|
||||
style="display:none;" ui:field="leaderboardButtonUi">
|
||||
<ui:text from='{i18n.leaderboard}' />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
package com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList;
|
||||
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.DivElement;
|
||||
import com.google.gwt.dom.client.Element;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.user.client.DOM;
|
||||
import com.google.gwt.user.client.ui.UIObject;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressSeriesDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO;
|
||||
|
||||
public class MultiRegattaListStepsBody extends UIObject {
|
||||
|
||||
private static MultiRegattaListStepsBodyUiBinder uiBinder = GWT.create(MultiRegattaListStepsBodyUiBinder.class);
|
||||
|
||||
interface MultiRegattaListStepsBodyUiBinder extends UiBinder<Element, MultiRegattaListStepsBody> {
|
||||
}
|
||||
|
||||
public MultiRegattaListStepsBody(RegattaProgressSeriesDTO seriesProgress) {
|
||||
Element main = uiBinder.createAndBindUi(this);
|
||||
main.appendChild(getDetailsItem(seriesProgress.getName()));
|
||||
main.appendChild(getDetailsItem("Race count:" + seriesProgress.getTotalRaceCount()));
|
||||
for (Entry<FleetMetadataDTO, Integer> fleetState : seriesProgress.getFleetState().entrySet()) {
|
||||
DivElement div = getDetailsItem(fleetState.getKey().getFleetName() + " - " + fleetState.getValue());
|
||||
div.getStyle().setColor(fleetState.getKey().getFleetColor());
|
||||
main.appendChild(div);
|
||||
}
|
||||
setElement(main);
|
||||
}
|
||||
|
||||
private DivElement getDetailsItem(String text) {
|
||||
DivElement detailsItem = DOM.createDiv().cast();
|
||||
detailsItem.setInnerText(text);
|
||||
return detailsItem;
|
||||
}
|
||||
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui"
|
||||
xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" xmlns:p="urn:import:com.sap.sailing.gwt.home.client.place.event.partials">
|
||||
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
|
||||
<ui:with field="res" type="com.sap.sailing.gwt.common.client.SharedResources" />
|
||||
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaListResources" />
|
||||
<div>
|
||||
</div>
|
||||
</ui:UiBinder>
|
||||
Reference in new issue
Block a user