diff --git a/src/main/java/de/kreth/clubhelperbackend/google/calendar/ClubEvent.java b/src/main/java/de/kreth/clubhelperbackend/google/calendar/ClubEvent.java index 42d74b2..71377e6 100644 --- a/src/main/java/de/kreth/clubhelperbackend/google/calendar/ClubEvent.java +++ b/src/main/java/de/kreth/clubhelperbackend/google/calendar/ClubEvent.java @@ -24,6 +24,12 @@ public class ClubEvent extends BasicItem { return location; } + @Override + public String toString() { + return "ClubEvent [Caption=" + getCaption() + ", Start=" + getStart() + + ", location=" + location + "]"; + } + public static ClubEvent parse(Event ev) { ClubEvent clubEvent = new ClubEvent(); clubEvent.setCaption(ev.getSummary()); @@ -39,7 +45,7 @@ public class ClubEvent extends BasicItem { return clubEvent; } - private static ZonedDateTime toZoned(Date parse) { + public static ZonedDateTime toZoned(Date parse) { if (parse != null) { Instant instant = parse.toInstant(); return ZonedDateTime.ofInstant(instant, ZoneId.systemDefault()); diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainUi.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainUi.java index f000335..b775a6f 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainUi.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainUi.java @@ -15,7 +15,6 @@ import org.vaadin.addon.calendar.ui.CalendarComponentEvents; import com.vaadin.server.VaadinRequest; import com.vaadin.spring.annotation.SpringUI; import com.vaadin.ui.HorizontalLayout; -import com.vaadin.ui.Label; import com.vaadin.ui.Notification; import com.vaadin.ui.UI; @@ -40,7 +39,6 @@ public class MainUi extends UI { protected void init(VaadinRequest request) { HorizontalLayout layout = new HorizontalLayout(); - layout.addComponent(new Label("Persons found:")); List persons = dao.list(); personGrid = new PersonGrid(); @@ -50,6 +48,7 @@ public class MainUi extends UI { eventGrid = new EventGrid(); eventGrid.setCaption("Termine"); + eventGrid.addItemClickListener(ev -> showDetails(ev.getItem())); dataProvider = new ClubEventProvider(); Calendar calendar = new Calendar<>(dataProvider) @@ -66,6 +65,7 @@ public class MainUi extends UI { List events = business.loadEvents(request); dataProvider.setItems(events); eventGrid.setItems(events); + eventGrid.getDataProvider().refreshAll(); System.out.println("Updated data: " + events); }); exec.shutdown(); @@ -73,7 +73,14 @@ public class MainUi extends UI { private void onItemClick(CalendarComponentEvents.ItemClickEvent event) { ClubEvent ev = (ClubEvent) event.getCalendarItem(); - Notification.show("Clicked: " + ev); + showDetails(ev); + } + + private void showDetails(ClubEvent ev) { + eventGrid.setVisible(false); + personGrid.setVisible(true); + + Notification.show("" + ev); } class ClubEventProvider extends BasicItemProvider { diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/EventGrid.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/EventGrid.java index e5f6f7a..2160513 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/EventGrid.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/EventGrid.java @@ -1,5 +1,8 @@ package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components; +import java.time.format.DateTimeFormatter; +import java.time.format.FormatStyle; + import com.vaadin.ui.Grid; import de.kreth.clubhelperbackend.google.calendar.ClubEvent; @@ -7,9 +10,14 @@ import de.kreth.clubhelperbackend.google.calendar.ClubEvent; public class EventGrid extends Grid { private static final long serialVersionUID = -5435770187868470290L; + private final DateTimeFormatter df = DateTimeFormatter + .ofLocalizedDate(FormatStyle.MEDIUM); public EventGrid() { - addColumn(ClubEvent::getStart).setCaption("Start"); + + addColumn(ClubEvent::getStart, dt -> { + return dt != null ? df.format(dt) : ""; + }).setCaption("Start"); addColumn(ClubEvent::getCaption).setCaption("Bezeichnung"); addColumn(ClubEvent::getLocation).setCaption("Ort"); } diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java index 2206393..e6b8cb1 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java @@ -1,22 +1,55 @@ package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components; import java.text.DateFormat; +import java.util.Collection; +import com.vaadin.ui.CheckBox; +import com.vaadin.ui.ComboBox; +import com.vaadin.ui.CustomComponent; import com.vaadin.ui.Grid; +import com.vaadin.ui.Grid.SelectionMode; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.VerticalLayout; +import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.GroupDef; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; -public class PersonGrid extends Grid { +public class PersonGrid extends CustomComponent { private static final long serialVersionUID = -8148097982839343673L; + private final DateFormat birthFormat = DateFormat .getDateInstance(DateFormat.MEDIUM); + private final Grid grid = new Grid<>(); + + private CheckBox checkIncluded; + private ComboBox comboGroups; + public PersonGrid() { - addColumn(Person::getPrename).setCaption("Vorname"); - addColumn(Person::getSurname).setCaption("Nachname"); - addColumn(Person::getBirth, b -> b != null ? birthFormat.format(b) : "") + checkIncluded = new CheckBox("Nur gemeldete"); + comboGroups = new ComboBox<>("Gruppenfilter"); + + HorizontalLayout filters = new HorizontalLayout(); + filters.addComponents(checkIncluded, comboGroups); + + grid.addColumn(Person::getPrename).setCaption("Vorname"); + grid.addColumn(Person::getSurname).setCaption("Nachname"); + grid.addColumn(Person::getBirth, + b -> b != null ? birthFormat.format(b) : "") .setCaption("Geburtstag"); + grid.setSelectionMode(SelectionMode.MULTI); + + VerticalLayout panel = new VerticalLayout(); + panel.addComponents(filters, grid); + setCompositionRoot(panel); + } + + public void setItems(Collection items) { + grid.setItems(items); } + public void setItems(Person... items) { + grid.setItems(items); + } }