diff --git a/springboot/src/main/java/de/thpeetz/kontor/comics/views/ComicView.java b/springboot/src/main/java/de/thpeetz/kontor/comics/views/ComicView.java index c13b6b5..b89cfde 100644 --- a/springboot/src/main/java/de/thpeetz/kontor/comics/views/ComicView.java +++ b/springboot/src/main/java/de/thpeetz/kontor/comics/views/ComicView.java @@ -37,19 +37,19 @@ public class ComicView extends VerticalLayout { @Getter Grid grid = new Grid<>(Comic.class, false); Grid.Column idColumn = grid.addColumn(Comic::getId) - .setHeader("ID").setResizable(true).setSortable(true); + .setHeader("ID").setResizable(true).setSortable(true); Grid.Column createdColumn = grid.addColumn(Comic::getCreatedDate) - .setHeader("Erstellt").setResizable(true).setSortable(true); + .setHeader("Erstellt").setResizable(true).setSortable(true); Grid.Column modifiedColumn = grid.addColumn(Comic::getLastModifiedDate) - .setHeader("Geändert").setResizable(true).setSortable(true); + .setHeader("Geändert").setResizable(true).setSortable(true); Grid.Column titleColumn = grid.addColumn(Comic::getTitle) - .setHeader("Titel").setResizable(true).setSortable(true); + .setHeader("Titel").setResizable(true).setSortable(true); Grid.Column publisherColumn = grid.addColumn(Comic::getPublisherName) - .setHeader("Verlag").setResizable(true).setSortable(true); + .setHeader("Verlag").setResizable(true).setSortable(true); Grid.Column currentOrderColumn = grid.addComponentColumn(comic -> StatusIcon.create(comic.getCurrentOrder())) - .setHeader("Bestellung").setWidth("6rem").setSortable(true); + .setHeader("Bestellung").setWidth("6rem").setSortable(true); Grid.Column completedColumn = grid.addComponentColumn(comic -> StatusIcon.create(comic.getCompleted())) - .setHeader("Abgeschlossen").setWidth("6rem").setSortable(true); + .setHeader("Abgeschlossen").setWidth("6rem").setSortable(true); TextField filterText = new TextField(); @Getter ComicForm form; diff --git a/springboot/src/main/java/de/thpeetz/kontor/tysc/SetupModuleTysc.java b/springboot/src/main/java/de/thpeetz/kontor/tysc/SetupModuleTysc.java index bf67367..c4a3a7c 100644 --- a/springboot/src/main/java/de/thpeetz/kontor/tysc/SetupModuleTysc.java +++ b/springboot/src/main/java/de/thpeetz/kontor/tysc/SetupModuleTysc.java @@ -84,25 +84,25 @@ public class SetupModuleTysc implements ApplicationListener vendor = new ComboBox<>("Vendor"); Button save = new Button("Save"); Button delete = new Button("Delete"); @@ -28,11 +32,13 @@ public class CardForm extends FormLayout { Binder binder = new BeanValidationBinder<>(Card.class); - public CardForm() { + public CardForm(List vendors) { addClassName("card-form"); binder.bindInstanceFields(this); - add(cardNumber, createButtonsLayout()); + vendor.setItems(vendors); + vendor.setItemLabelGenerator(Vendor::getName); + add(cardNumber, year, vendor, createButtonsLayout()); } private HorizontalLayout createButtonsLayout() { diff --git a/springboot/src/main/java/de/thpeetz/kontor/tysc/views/CardView.java b/springboot/src/main/java/de/thpeetz/kontor/tysc/views/CardView.java index 89cc1ce..f5251da 100644 --- a/springboot/src/main/java/de/thpeetz/kontor/tysc/views/CardView.java +++ b/springboot/src/main/java/de/thpeetz/kontor/tysc/views/CardView.java @@ -1,9 +1,12 @@ package de.thpeetz.kontor.tysc.views; +import de.thpeetz.kontor.comics.data.Comic; +import de.thpeetz.kontor.common.views.StatusIcon; import org.springframework.context.annotation.Scope; import com.vaadin.flow.component.Component; import com.vaadin.flow.component.button.Button; +import com.vaadin.flow.component.button.ButtonVariant; import com.vaadin.flow.component.grid.Grid; import com.vaadin.flow.component.orderedlayout.HorizontalLayout; import com.vaadin.flow.component.orderedlayout.VerticalLayout; @@ -13,11 +16,13 @@ import com.vaadin.flow.router.PageTitle; import com.vaadin.flow.router.Route; import com.vaadin.flow.spring.annotation.SpringComponent; +import de.thpeetz.kontor.common.views.ColumnToggleContextMenu; import de.thpeetz.kontor.common.views.MainLayout; import de.thpeetz.kontor.tysc.TyscConstants; import de.thpeetz.kontor.tysc.data.Card; import de.thpeetz.kontor.tysc.services.CardService; import jakarta.annotation.security.PermitAll; +import lombok.Getter; @SpringComponent @Scope("prototype") @@ -26,8 +31,30 @@ import jakarta.annotation.security.PermitAll; @PageTitle("Card | Tysc | Kontor") public class CardView extends VerticalLayout { - Grid grid = new Grid<>(Card.class); + @Getter + Grid grid = new Grid<>(Card.class, false); + Grid.Column idColumn = grid.addColumn(Card::getId).setHeader("ID") + .setResizable(true).setSortable(true); + Grid.Column createdColumn = grid.addColumn(Card::getCreatedDate) + .setHeader("Erstellt").setResizable(true).setSortable(true); + Grid.Column modifiedColumn = grid.addColumn(Card::getLastModifiedDate) + .setHeader("Geändert").setResizable(true).setSortable(true); + Grid.Column numberColumn = grid.addColumn(Card::getCardNumber) + .setHeader("Nummer").setResizable(true).setSortable(true); + Grid.Column yearColumn = grid.addColumn(Card::getYear) + .setHeader("Jahr").setResizable(true).setSortable(true); + Grid.Column vendorColumn = grid.addColumn(Card::getVendorName) + .setHeader("Hersteller").setResizable(true).setSortable(true); + Grid.Column cardSetColumn = grid.addColumn(Card::getCardSetName) + .setHeader("Cardset").setResizable(true).setSortable(true); + Grid.Column insertSetColumn = grid.addComponentColumn(card -> StatusIcon.create(card.getCardSet().isInsertSet())) + .setHeader("Inserts").setWidth("6rem").setSortable(true); + Grid.Column parallelSetColumn = grid.addComponentColumn(card -> StatusIcon.create(card.getCardSet().isParallelSet())) + .setHeader("Parallels").setWidth("6rem").setSortable(true); + + Grid.Column playerColumn = grid.addColumn(Card::getPlayerName).setHeader("Spieler").setResizable(true).setSortable(true); TextField filterText = new TextField(); + @Getter CardForm form; CardService service; @@ -42,24 +69,18 @@ public class CardView extends VerticalLayout { updateList(); } - public Grid getGrid() { - return grid; - } - private void configureGrid() { grid.addClassName("card-grid"); grid.setSizeFull(); - grid.setColumns("cardNumber", "year", "vendor.name", "cardSet.name", "rooster.player.fullName"); grid.getColumns().forEach(col -> col.setAutoWidth(true)); grid.asSingleSelect().addValueChangeListener(event -> editCard(event.getValue())); - } - - public CardForm getForm() { - return form; + idColumn.setVisible(false); + createdColumn.setVisible(false); + modifiedColumn.setVisible(false); } private void configureForm() { - form = new CardForm(); + form = new CardForm(service.findAllVendors(null)); form.setWidth("25em"); form.setVisible(false); form.addSaveListener(this::saveCard); @@ -97,7 +118,19 @@ public class CardView extends VerticalLayout { Button addCardButton = new Button("Add card"); addCardButton.addClickListener(click -> addCard()); - HorizontalLayout toolbar = new HorizontalLayout(filterText, addCardButton); + Button menuButton = new Button("Show/Hide Columns"); + menuButton.addThemeVariants(ButtonVariant.LUMO_TERTIARY); + ColumnToggleContextMenu columnToggleContextMenu = new ColumnToggleContextMenu<>(menuButton); + columnToggleContextMenu.addColumnToggleItem(idColumn); + columnToggleContextMenu.addColumnToggleItem(createdColumn); + columnToggleContextMenu.addColumnToggleItem(modifiedColumn); + columnToggleContextMenu.addColumnToggleItem(numberColumn); + columnToggleContextMenu.addColumnToggleItem(yearColumn); + columnToggleContextMenu.addColumnToggleItem(vendorColumn); + columnToggleContextMenu.addColumnToggleItem(cardSetColumn); + columnToggleContextMenu.addColumnToggleItem(playerColumn); + HorizontalLayout toolbar = new HorizontalLayout(filterText, addCardButton, menuButton); + toolbar.addClassName("toolbar"); return toolbar; }