Person Edit involved

master
Markus Kreth 7 years ago
parent 0cfea53023
commit 7deff438de
  1. 6
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java
  2. 11
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java
  3. 14
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/HeadView.java
  4. 2
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/PersonEditView.java
  5. 43
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonEditDetails.java
  6. 6
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java

@ -13,6 +13,12 @@ public class PersonDaoImpl extends AbstractDaoImpl<Person> implements PersonDao
super(Person.class); super(Person.class);
} }
@Override
public Person update(Person obj) {
return super.update(obj);
}
@Override @Override
public Person findLoginUser(String username, String password) { public Person findLoginUser(String username, String password) {
TypedQuery<Person> query = entityManager.createNamedQuery(Person.QUERY_FINDLOGIN, Person.class); TypedQuery<Person> query = entityManager.createNamedQuery(Person.QUERY_FINDLOGIN, Person.class);

@ -311,6 +311,17 @@ public class Person extends BaseEntity implements Serializable {
this.startpass = startpass; this.startpass = startpass;
} }
public void setStartpass(String startpass) {
if (this.startpass == null) {
if (startpass == null || startpass.isBlank()) {
return;
}
this.startpass = new Startpass();
this.startpass.setPerson(this);
}
this.startpass.setStartpassNr(startpass);
}
@Override @Override
public int hashCode() { public int hashCode() {
final int prime = 31; final int prime = 31;

@ -81,6 +81,7 @@ public class HeadView extends HorizontalLayout {
personLabel = new Label(); personLabel = new Label();
personLabel.setStyleName("title_caption"); personLabel.setStyleName("title_caption");
personLabel.addStyleName("bold-caption");
this.addComponent(popupButton); this.addComponent(popupButton);
this.addComponent(monthName); this.addComponent(monthName);
@ -125,9 +126,14 @@ public class HeadView extends HorizontalLayout {
if (loggedinPerson != null) { if (loggedinPerson != null) {
Set<GroupDef> groups = loggedinPerson.getGroups(); Set<GroupDef> groups = loggedinPerson.getGroups();
if (contains(groups, "ADMIN") || contains(groups, "Übungsleiter")) { if (contains(groups, "ADMIN") || contains(groups, "Übungsleiter")) {
contextMenu.addItem("Personen verwalten", ev1 -> switchToPersonEditUi()); contextMenu.addItem("Personen verwalten", ev1 -> navigator.navigateTo(PersonEditView.VIEW_NAME));
} }
contextMenu.addItem("Abmelden", ev1 -> session.setAttribute(Person.SESSION_LOGIN, null)); contextMenu.addItem("Abmelden", ev1 -> {
session.setAttribute(Person.SESSION_LOGIN, null);
navigator.navigateTo(MainView.VIEW_NAME);
});
} else {
contextMenu.addItem("Anmelden", ev1 -> navigator.navigateTo(LoginUI.VIEW_NAME));
} }
contextMenu.open(50, 50); contextMenu.open(50, 50);
} }
@ -141,10 +147,6 @@ public class HeadView extends HorizontalLayout {
return false; return false;
} }
private void switchToPersonEditUi() {
navigator.navigateTo(PersonEditView.VIEW_NAME);
}
private void calendarExport(MenuItem ev1) { private void calendarExport(MenuItem ev1) {
boolean monthOnly = ev1.getId() == monthItemId; boolean monthOnly = ev1.getId() == monthItemId;

@ -24,10 +24,10 @@ public class PersonEditView extends HorizontalLayout implements NamedView {
personGrid.setSizeFull(); personGrid.setSizeFull();
personGrid.onPersonEdit(); personGrid.onPersonEdit();
personGrid.onPersonSelect(ev -> selectedPerson(ev)); personGrid.onPersonSelect(ev -> selectedPerson(ev));
// personGrid.setSelectionMode(SelectionMode.SINGLE);
personDetails = new PersonEditDetails(groupDao.listAll(), personDao, false); personDetails = new PersonEditDetails(groupDao.listAll(), personDao, false);
personDetails.setSizeFull(); personDetails.setSizeFull();
personDetails.setPersonChangeHandler(personGrid::refreshItem);
HorizontalLayout layout = new HorizontalLayout(); HorizontalLayout layout = new HorizontalLayout();
layout.addComponents(personGrid, personDetails); layout.addComponents(personGrid, personDetails);

@ -1,28 +1,34 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components; package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components;
import java.util.List; import java.util.List;
import java.util.function.Consumer;
import org.vaadin.teemu.switchui.Switch; import org.vaadin.teemu.switchui.Switch;
import com.vaadin.data.Binder; import com.vaadin.data.Binder;
import com.vaadin.ui.Button; import com.vaadin.ui.Button;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.DateField; import com.vaadin.ui.DateField;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Panel; import com.vaadin.ui.Panel;
import com.vaadin.ui.TextField; import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.VerticalLayout;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.PersonDao; import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.PersonDao;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Gender;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.GroupDef; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.GroupDef;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Startpass;
public class PersonEditDetails extends VerticalLayout { public class PersonEditDetails extends HorizontalLayout {
private static final long serialVersionUID = 4692332924201974714L; private static final long serialVersionUID = 4692332924201974714L;
private final TextField textPrename; private final TextField textPrename;
private final TextField textSureName; private final TextField textSureName;
private final DateField birthday;
private final Binder<Person> binder; private final Binder<Person> binder;
private DateField birthday; private Consumer<Person> personChangeHandler;
private Person current; private Person current;
public PersonEditDetails(List<GroupDef> groups, PersonDao dao) { public PersonEditDetails(List<GroupDef> groups, PersonDao dao) {
@ -31,17 +37,27 @@ public class PersonEditDetails extends VerticalLayout {
public PersonEditDetails(List<GroupDef> groups, PersonDao dao, boolean showCloseButton) { public PersonEditDetails(List<GroupDef> groups, PersonDao dao, boolean showCloseButton) {
textPrename = new TextField(); textPrename = new TextField("Vorname");
textPrename.setCaption("Vorname"); textSureName = new TextField("Nachname");
textSureName = new TextField(); birthday = new DateField("Geburtstag");
textSureName.setCaption("Nachname"); ComboBox<Gender> genderBox = new ComboBox<>("Geschlecht");
birthday = new DateField(); genderBox.setEmptySelectionAllowed(false);
birthday.setCaption("Geburtstag"); genderBox.setItemCaptionGenerator(item -> item.localized());
genderBox.setItems(Gender.values());
TextField textStartPass = new TextField("Startpass");
binder = new Binder<>(); binder = new Binder<>();
binder.forField(textPrename).bind(Person::getPrename, Person::setPrename); binder.forField(textPrename).bind(Person::getPrename, Person::setPrename);
binder.forField(textSureName).bind(Person::getSurname, Person::setSurname); binder.forField(textSureName).bind(Person::getSurname, Person::setSurname);
binder.forField(birthday).bind(Person::getBirth, Person::setBirth); binder.forField(birthday).bind(Person::getBirth, Person::setBirth);
binder.forField(genderBox).bind(Person::getGender, Person::setGender);
binder.forField(textStartPass).bind(p -> {
Startpass startpass = p.getStartpass();
if (startpass == null) {
return null;
}
return startpass.getStartpassNr();
}, (p, value) -> p.setStartpass(value));
Panel groupPanel = new Panel("Gruppen"); Panel groupPanel = new Panel("Gruppen");
VerticalLayout glay = new VerticalLayout(); VerticalLayout glay = new VerticalLayout();
@ -72,11 +88,20 @@ public class PersonEditDetails extends VerticalLayout {
if (binder.validate().isOk()) { if (binder.validate().isOk()) {
binder.writeBeanIfValid(current); binder.writeBeanIfValid(current);
dao.update(current); dao.update(current);
if (personChangeHandler != null) {
personChangeHandler.accept(current);
}
} }
}); });
addComponents(textPrename, textSureName, birthday, groupPanel, close, ok); VerticalLayout layout = new VerticalLayout(textPrename, textSureName, birthday, genderBox, textStartPass, close,
ok);
addComponents(layout, groupPanel);
}
public void setPersonChangeHandler(Consumer<Person> personChangeHandler) {
this.personChangeHandler = personChangeHandler;
} }
public void setBean(Person person) { public void setBean(Person person) {

@ -154,6 +154,10 @@ public class PersonGrid extends VerticalLayout {
dataProvider.refreshAll(); dataProvider.refreshAll();
} }
public void refreshItem(Person item) {
dataProvider.refreshItem(item);
}
public void onPersonSelect(SelectionListener<Person> listener) throws UnsupportedOperationException { public void onPersonSelect(SelectionListener<Person> listener) throws UnsupportedOperationException {
grid.addSelectionListener(listener); grid.addSelectionListener(listener);
} }
@ -209,7 +213,7 @@ public class PersonGrid extends VerticalLayout {
} else { } else {
selectItems(new Person[0]); selectItems(new Person[0]);
} }
} else { } else if (ev != null) {
Collection<Person> items = dataProvider.getItems(); Collection<Person> items = dataProvider.getItems();
items.clear(); items.clear();
items.addAll(ev.getPersons()); items.addAll(ev.getPersons());

Loading…
Cancel
Save