Personlist with filter UI

master
Markus Kreth 7 years ago
parent ae507e7dee
commit d43ce6b7ac
  1. 8
      src/main/java/de/kreth/clubhelperbackend/google/calendar/ClubEvent.java
  2. 13
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainUi.java
  3. 10
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/EventGrid.java
  4. 41
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java

@ -24,6 +24,12 @@ public class ClubEvent extends BasicItem {
return location; return location;
} }
@Override
public String toString() {
return "ClubEvent [Caption=" + getCaption() + ", Start=" + getStart()
+ ", location=" + location + "]";
}
public static ClubEvent parse(Event ev) { public static ClubEvent parse(Event ev) {
ClubEvent clubEvent = new ClubEvent(); ClubEvent clubEvent = new ClubEvent();
clubEvent.setCaption(ev.getSummary()); clubEvent.setCaption(ev.getSummary());
@ -39,7 +45,7 @@ public class ClubEvent extends BasicItem {
return clubEvent; return clubEvent;
} }
private static ZonedDateTime toZoned(Date parse) { public static ZonedDateTime toZoned(Date parse) {
if (parse != null) { if (parse != null) {
Instant instant = parse.toInstant(); Instant instant = parse.toInstant();
return ZonedDateTime.ofInstant(instant, ZoneId.systemDefault()); return ZonedDateTime.ofInstant(instant, ZoneId.systemDefault());

@ -15,7 +15,6 @@ import org.vaadin.addon.calendar.ui.CalendarComponentEvents;
import com.vaadin.server.VaadinRequest; import com.vaadin.server.VaadinRequest;
import com.vaadin.spring.annotation.SpringUI; import com.vaadin.spring.annotation.SpringUI;
import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.Notification; import com.vaadin.ui.Notification;
import com.vaadin.ui.UI; import com.vaadin.ui.UI;
@ -40,7 +39,6 @@ public class MainUi extends UI {
protected void init(VaadinRequest request) { protected void init(VaadinRequest request) {
HorizontalLayout layout = new HorizontalLayout(); HorizontalLayout layout = new HorizontalLayout();
layout.addComponent(new Label("Persons found:"));
List<Person> persons = dao.list(); List<Person> persons = dao.list();
personGrid = new PersonGrid(); personGrid = new PersonGrid();
@ -50,6 +48,7 @@ public class MainUi extends UI {
eventGrid = new EventGrid(); eventGrid = new EventGrid();
eventGrid.setCaption("Termine"); eventGrid.setCaption("Termine");
eventGrid.addItemClickListener(ev -> showDetails(ev.getItem()));
dataProvider = new ClubEventProvider(); dataProvider = new ClubEventProvider();
Calendar<ClubEvent> calendar = new Calendar<>(dataProvider) Calendar<ClubEvent> calendar = new Calendar<>(dataProvider)
@ -66,6 +65,7 @@ public class MainUi extends UI {
List<ClubEvent> events = business.loadEvents(request); List<ClubEvent> events = business.loadEvents(request);
dataProvider.setItems(events); dataProvider.setItems(events);
eventGrid.setItems(events); eventGrid.setItems(events);
eventGrid.getDataProvider().refreshAll();
System.out.println("Updated data: " + events); System.out.println("Updated data: " + events);
}); });
exec.shutdown(); exec.shutdown();
@ -73,7 +73,14 @@ public class MainUi extends UI {
private void onItemClick(CalendarComponentEvents.ItemClickEvent event) { private void onItemClick(CalendarComponentEvents.ItemClickEvent event) {
ClubEvent ev = (ClubEvent) event.getCalendarItem(); 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<ClubEvent> { class ClubEventProvider extends BasicItemProvider<ClubEvent> {

@ -1,5 +1,8 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components; package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import com.vaadin.ui.Grid; import com.vaadin.ui.Grid;
import de.kreth.clubhelperbackend.google.calendar.ClubEvent; import de.kreth.clubhelperbackend.google.calendar.ClubEvent;
@ -7,9 +10,14 @@ import de.kreth.clubhelperbackend.google.calendar.ClubEvent;
public class EventGrid extends Grid<ClubEvent> { public class EventGrid extends Grid<ClubEvent> {
private static final long serialVersionUID = -5435770187868470290L; private static final long serialVersionUID = -5435770187868470290L;
private final DateTimeFormatter df = DateTimeFormatter
.ofLocalizedDate(FormatStyle.MEDIUM);
public EventGrid() { 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::getCaption).setCaption("Bezeichnung");
addColumn(ClubEvent::getLocation).setCaption("Ort"); addColumn(ClubEvent::getLocation).setCaption("Ort");
} }

@ -1,22 +1,55 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components; package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components;
import java.text.DateFormat; 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;
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; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person;
public class PersonGrid extends Grid<Person> { public class PersonGrid extends CustomComponent {
private static final long serialVersionUID = -8148097982839343673L; private static final long serialVersionUID = -8148097982839343673L;
private final DateFormat birthFormat = DateFormat private final DateFormat birthFormat = DateFormat
.getDateInstance(DateFormat.MEDIUM); .getDateInstance(DateFormat.MEDIUM);
private final Grid<Person> grid = new Grid<>();
private CheckBox checkIncluded;
private ComboBox<GroupDef> comboGroups;
public PersonGrid() { public PersonGrid() {
addColumn(Person::getPrename).setCaption("Vorname"); checkIncluded = new CheckBox("Nur gemeldete");
addColumn(Person::getSurname).setCaption("Nachname"); comboGroups = new ComboBox<>("Gruppenfilter");
addColumn(Person::getBirth, b -> b != null ? birthFormat.format(b) : "")
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"); .setCaption("Geburtstag");
grid.setSelectionMode(SelectionMode.MULTI);
VerticalLayout panel = new VerticalLayout();
panel.addComponents(filters, grid);
setCompositionRoot(panel);
}
public void setItems(Collection<Person> items) {
grid.setItems(items);
} }
public void setItems(Person... items) {
grid.setItems(items);
}
} }

Loading…
Cancel
Save