Regatta list - Added MultiRegattaList partial

This commit is contained in:
Benjamin Barth committed 2015-07-07 18:04:27 +02:00
1 parent 945f95abfb
commit 4e696dd688
8 files changed
+469

No files matched your search

@@ -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;
}
@@ -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()));
}
}
@@ -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>
@@ -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();
}
}
@@ -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();
}
}
@@ -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>
@@ -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;
}
}
@@ -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>