finished recent and upcoming events

This commit is contained in:
fmittag committed 2014-06-11 19:11:37 +02:00
1 parent ec151ba514
commit 5e052bcd23
12 files changed
+151 -41

No files matched your search

@@ -1,6 +1,8 @@
package com.sap.sailing.gwt.home.client.place.events;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -37,6 +39,11 @@ public abstract class AbstractEventsView extends Composite implements EventsView
}
}
}
for(List<EventBaseDTO> eventsPerYear: recentEventsOrderedByYear.values()) {
Collections.sort(eventsPerYear, EVENTS_BY_DESCENDING_DATE_COMPARATOR);
}
Collections.sort(upcomingEvents, EVENTS_BY_DESCENDING_DATE_COMPARATOR);
updateEventsUI();
}
@@ -49,4 +56,11 @@ public abstract class AbstractEventsView extends Composite implements EventsView
public List<EventBaseDTO> getUpcomingEvents() {
return upcomingEvents;
}
public static Comparator<EventBaseDTO> EVENTS_BY_DESCENDING_DATE_COMPARATOR = new Comparator<EventBaseDTO>() {
@Override
public int compare(EventBaseDTO e1, EventBaseDTO e2) {
return e2.endDate.compareTo(e1.endDate);
}
};
}
@@ -24,7 +24,6 @@ import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.view.client.SelectionModel;
import com.google.gwt.view.client.SingleSelectionModel;
import com.sap.sailing.gwt.home.client.place.event.EventPlace;
import com.sap.sailing.gwt.ui.shared.ClickableSafeHtmlCell;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sse.common.Util;
@@ -46,8 +45,6 @@ public class EventsTable extends Composite {
@UiField(provided = true)
SimplePager pager;
private final EventsActivity activity;
/**
* Constructor.
*
@@ -55,7 +52,6 @@ public class EventsTable extends Composite {
* the constants
*/
public EventsTable(EventsActivity activity) {
this.activity = activity;
initTable();
initWidget(uiBinder.createAndBindUi(this));
}
@@ -5,8 +5,9 @@ import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.home.client.HomeResources;
import com.sap.sailing.gwt.home.client.app.PlaceNavigator;
import com.sap.sailing.gwt.home.client.place.events.recent.EventsOverviewRecent;
import com.sap.sailing.gwt.home.client.place.events.upcoming.EventsOverviewUpcoming;
@@ -14,18 +15,21 @@ import com.sap.sailing.gwt.home.client.place.events.upcoming.EventsOverviewUpcom
public class TabletAndDesktopEventsView extends AbstractEventsView {
private static EventsPageViewUiBinder uiBinder = GWT.create(EventsPageViewUiBinder.class);
private final HomeResources homeRes = GWT.create(HomeResources.class);
interface EventsPageViewUiBinder extends UiBinder<Widget, TabletAndDesktopEventsView> {
}
@UiField(provided=true) EventsOverviewRecent recentEventsWidget;
@UiField(provided=true) EventsOverviewUpcoming upcomingEventsWidget;
@UiField Hyperlink recentEventsLink;
@UiField Hyperlink upcomingEventsLink;
@UiField Anchor recentEventsLink;
@UiField Anchor upcomingEventsLink;
public TabletAndDesktopEventsView(PlaceNavigator navigator) {
super();
recentEventsWidget = new EventsOverviewRecent(navigator);
upcomingEventsWidget = new EventsOverviewUpcoming(navigator);
upcomingEventsWidget.setVisible(false);
initWidget(uiBinder.createAndBindUi(this));
}
@@ -33,16 +37,19 @@ public class TabletAndDesktopEventsView extends AbstractEventsView {
@UiHandler("recentEventsLink")
void recentsEventsClicked(ClickEvent event) {
recentEventsWidget.setVisible(true);
// set style buttoninactive
upcomingEventsWidget.setVisible(false);
recentEventsLink.getElement().removeClassName(homeRes.mainCss().buttoninactive());
upcomingEventsLink.getElement().addClassName(homeRes.mainCss().buttoninactive());
}
@UiHandler("upcomingEventsLink")
void upcomingEventsClicked(ClickEvent event) {
recentEventsWidget.setVisible(false);
upcomingEventsWidget.setVisible(true);
recentEventsLink.getElement().addClassName(homeRes.mainCss().buttoninactive());
upcomingEventsLink.getElement().removeClassName(homeRes.mainCss().buttoninactive());
}
@Override
@@ -20,8 +20,8 @@
<div class="{style.eventsoverviewnavigation}">
<div class="{res.mainCss.grid}">
<div class="{res.mediaCss.small6} {res.mediaCss.columns}">
<g:Hyperlink ui:field="recentEventsLink" text="Recent Events" styleName="{res.mainCss.button} {style.eventsoverviewnavigation_button}" />
<g:Hyperlink ui:field="upcomingEventsLink" text="Upcoming Schedule" styleName="{res.mainCss.button} {style.eventsoverviewnavigation_button}" />
<g:Anchor ui:field="recentEventsLink" text="Recent Events" styleName="{res.mainCss.button} {style.eventsoverviewnavigation_button}" />
<g:Anchor ui:field="upcomingEventsLink" text="Upcoming Schedule" styleName="{res.mainCss.button} {res.mainCss.buttoninactive} {style.eventsoverviewnavigation_button}" />
</div>
</div>
</div>
@@ -1,16 +1,21 @@
package com.sap.sailing.gwt.home.client.place.events.upcoming;
import java.util.ArrayList;
import java.util.List;
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.HTMLPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.home.client.app.PlaceNavigator;
import com.sap.sailing.gwt.ui.shared.EventBaseDTO;
public class EventsOverviewUpcoming extends Composite {
@UiField HTMLPanel eventsPlaceholder;
interface EventsOverviewUiBinder extends UiBinder<Widget, EventsOverviewUpcoming> {
}
@@ -18,15 +23,27 @@ public class EventsOverviewUpcoming extends Composite {
private final PlaceNavigator navigator;
private final List<UpcomingEvent> upcomingEventComposites;
public EventsOverviewUpcoming(PlaceNavigator navigator) {
this.navigator = navigator;
upcomingEventComposites = new ArrayList<UpcomingEvent>();
EventsOverviewUpcomingResources.INSTANCE.css().ensureInjected();
initWidget(uiBinder.createAndBindUi(this));
}
public void updateEvents(List<EventBaseDTO> events) {
eventsPlaceholder.clear();
upcomingEventComposites.clear();
for(EventBaseDTO event: events) {
UpcomingEvent upcomingEvent = new UpcomingEvent(navigator);
upcomingEvent.setEvent(event);
upcomingEventComposites.add(upcomingEvent);
eventsPlaceholder.add(upcomingEvent);
}
}
}
@@ -8,12 +8,11 @@
<g:HTMLPanel>
<!-- Page displays all upcoming events-->
<!--
<div class="{local_res.css.eventsoverviewupcoming}">{#each upcomingYear in upcomingYears}
<div class="{local_res.css.eventsoverviewupcoming}">
<div class="{local_res.css.eventsoverviewupcoming}">
<div class="{res.mainCss.grid}">
<div class="{res.mediaCss.small12} {res.mediaCss.columns}">
<h2>{upcomingYear.title}</h2>
<h2>Coming soon</h2>
</div>
</div>
<div class="{local_res.css.eventslist_header}">
@@ -23,22 +22,16 @@
<div class="{res.mediaCss.small4} {res.mediaCss.columns} {local_res.css.eventslist_header_item}">Location</div>
<div class="{res.mediaCss.small2} {res.mediaCss.columns} {local_res.css.eventslist_header_item} {local_res.css.eventslist_header_itemseries}">Series</div>
</div>
</div>{#each event in upcomingYear.events}
<div class="{local_res.css.eventslist_event}"><a href="event-overview.html" class="{res.mainCss.grid} {local_res.css.eventslist_event_link}">
<div class="{res.mediaCss.small3} {res.mediaCss.columns} {local_res.css.eventslist_event_item}">{event.date}</div>
<div class="{res.mediaCss.small3} {res.mediaCss.columns} {local_res.css.eventslist_event_item} {local_res.css.eventslist_event_itemname}">{event.name}</div>
<div class="{res.mediaCss.small4} {res.mediaCss.columns} {local_res.css.eventslist_event_item}">{event.venue.name}</div>
<div class="{res.mediaCss.small2} {res.mediaCss.columns} {local_res.css.eventslist_event_item} {local_res.css.eventslist_event_itemseries}">
<div data-labeltype="{event.series.id}" class="{res.mainCss.label}">{event.series.name}</div>
</div></a></div>{/each}
</div>{/each}
</div>
<g:HTMLPanel ui:field='eventsPlaceholder' >
<!-- the upcoming event widgets will be inserted here -->
</g:HTMLPanel>
</div>
<div class="{local_res.css.eventsoverviewupcoming_teaser}">
<div class="{res.mainCss.grid}">
<div class="{res.mediaCss.small12} {res.mediaCss.columns}">More Events To Be Announced Soon!</div>
</div>
</div>
</div>
-->
</g:HTMLPanel>
</ui:UiBinder>
@@ -0,0 +1,48 @@
package com.sap.sailing.gwt.home.client.place.events.upcoming;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.SpanElement;
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.app.PlaceNavigator;
import com.sap.sailing.gwt.home.client.shared.EventDatesFormatterUtil;
import com.sap.sailing.gwt.ui.shared.EventBaseDTO;
public class UpcomingEvent extends Composite {
@UiField SpanElement eventName;
@UiField SpanElement seriesName;
@UiField SpanElement venueName;
@UiField SpanElement eventStartDate;
@SuppressWarnings("unused")
private final PlaceNavigator navigator;
private EventBaseDTO event;
interface UpcomingEventUiBinder extends UiBinder<Widget, UpcomingEvent> {
}
private static UpcomingEventUiBinder uiBinder = GWT.create(UpcomingEventUiBinder.class);
public UpcomingEvent(PlaceNavigator navigator) {
this.navigator = navigator;
EventsOverviewUpcomingResources.INSTANCE.css().ensureInjected();
initWidget(uiBinder.createAndBindUi(this));
}
public void setEvent(EventBaseDTO event) {
this.event = event;
updateUI();
}
private void updateUI() {
eventName.setInnerText(event.getName());
venueName.setInnerText(event.venue.getName());
eventStartDate.setInnerText(EventDatesFormatterUtil.formatDateRangeWithoutYear(event.startDate, event.endDate));
}
}
@@ -0,0 +1,20 @@
<!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">
<ui:with field="i18n" type="com.sap.sailing.gwt.home.client.i18n.TextMessages"/>
<ui:with field="res" type="com.sap.sailing.gwt.home.client.HomeResources" />
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.place.events.upcoming.EventsOverviewUpcomingResources" />
<g:HTMLPanel>
<div class="{local_res.css.eventslist_event}">
<g:Anchor styleName="{res.mainCss.grid} {local_res.css.eventslist_event_link}">
<div class="{res.mediaCss.small3} {res.mediaCss.columns} {local_res.css.eventslist_event_item}"><span ui:field='eventStartDate' /></div>
<div class="{res.mediaCss.small3} {res.mediaCss.columns} {local_res.css.eventslist_event_item} {local_res.css.eventslist_event_itemname}"><span ui:field='eventName' /></div>
<div class="{res.mediaCss.small4} {res.mediaCss.columns} {local_res.css.eventslist_event_item}"><span ui:field='venueName' /></div>
<div class="{res.mediaCss.small2} {res.mediaCss.columns} {local_res.css.eventslist_event_item} {local_res.css.eventslist_event_itemseries}">
<div class="{res.mainCss.label}"><span ui:field='seriesName' /></div>
</div>
</g:Anchor>
</div>
</g:HTMLPanel>
</ui:UiBinder>
@@ -19,7 +19,7 @@
filter: literal("alpha(opacity=90)");
}
.eventteaser_image {
position: relative;
height: auto;
}
.eventteaser_series {
position: absolute;
@@ -5,14 +5,21 @@
<ui:with field="i18n" type="com.sap.sailing.gwt.home.client.i18n.TextMessages"/>
<ui:with field="res" type="com.sap.sailing.gwt.home.client.HomeResources" />
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.shared.recentevent.RecentEventResources" />
<ui:style>
.img-fixedsize-temp {
width: 370px;
height: auto;
}
</ui:style>
<g:HTMLPanel>
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large4} {res.mediaCss.columns}">
<g:Anchor ui:field="eventOverviewLink" styleName="{local_res.css.eventteaser}" href="javascript:;">
<figure class="{local_res.css.eventteaser_image}"><img ui:field='eventImage' />
<g:Anchor ui:field="eventOverviewLink" styleName="{local_res.css.eventteaser}">
<figure class="{local_res.css.eventteaser_image}"><img ui:field='eventImage' class='{style.img-fixedsize-temp}' />
<div class="{local_res.css.eventteaser_series} {res.mainCss.label}"></div>
</figure>
<div class="{local_res.css.eventteaser_name}"><span ui:field="eventName" /></div>
<div class="{local_res.css.eventteaser_location}"><span ui:field="venueName" />,&nbsp;<span ui:field="eventStartDate" />
<div class="{local_res.css.eventteaser_location}">
<span ui:field="venueName" />,&nbsp;<span ui:field="eventStartDate" />
</div>
</g:Anchor>
</div>
@@ -9,6 +9,7 @@ import com.google.gwt.dom.client.HeadingElement;
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.HTMLPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.home.client.app.PlaceNavigator;
import com.sap.sailing.gwt.ui.shared.EventBaseDTO;
@@ -16,9 +17,12 @@ import com.sap.sailing.gwt.ui.shared.EventBaseDTO;
public class RecentEvents extends Composite {
@UiField DivElement recentEventsGrid;
@UiField DivElement headlineDiv;
@UiField HTMLPanel headline;
@UiField HeadingElement titleHeading;
/** Attention: This must be a widget -> otherwise the events of the child widgets would not be propagated */
@UiField HTMLPanel eventsPlaceholder;
private final List<RecentEvent> recentEventComposites;
interface RecentEventsUiBinder extends UiBinder<Widget, RecentEvents> {
@@ -37,21 +41,23 @@ public class RecentEvents extends Composite {
}
public void setEvents(List<EventBaseDTO> events, String headlineText) {
recentEventsGrid.removeAllChildren();
eventsPlaceholder.clear();
recentEventComposites.clear();
if(headlineText != null) {
titleHeading.setInnerText(headlineText);
recentEventsGrid.appendChild(headlineDiv);
headline.setVisible(true);
} else {
titleHeading.setInnerText("");
headline.setVisible(false);
}
for(EventBaseDTO event: events) {
RecentEvent recentEvent = new RecentEvent(navigator);
recentEvent.setEvent(event);
recentEventComposites.add(recentEvent);
recentEventsGrid.appendChild(recentEvent.getElement());
eventsPlaceholder.add(recentEvent);
}
}
@@ -7,12 +7,14 @@
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.shared.recentevent.RecentEventResources" />
<g:HTMLPanel>
<div class="{local_res.css.eventsoverviewrecent}">
<div ui:field="recentEventsGrid" class="{res.mainCss.grid}">
<div ui:field="headlineDiv" class="{res.mediaCss.small12} {res.mediaCss.columns}">
<div ui:field="recentEventsGrid" class="{res.mainCss.grid}">
<g:HTMLPanel ui:field="headline" styleName="{res.mediaCss.small12} {res.mediaCss.columns}">
<h3 ui:field="titleHeading" />
</div>
<!-- the recent event widget will be inserted here -->
</div>
</g:HTMLPanel>
<g:HTMLPanel ui:field="eventsPlaceholder">
<!-- the recent event widgets will be inserted here -->
</g:HTMLPanel>
</div>
</div>
</g:HTMLPanel>
</ui:UiBinder>