kontor-spring: change IssueView to use StatusIcon
This commit is contained in:
+2
-1
@@ -1,9 +1,10 @@
|
||||
.idea/
|
||||
.theia/
|
||||
.vscode/
|
||||
__pycache__/
|
||||
bonus/
|
||||
icons/
|
||||
icons-shadowless/
|
||||
.vscode/
|
||||
springboot/.factorypath
|
||||
java-ee/.settings
|
||||
java-ee/.project
|
||||
|
||||
@@ -95,7 +95,7 @@ public class MetaDataView extends VerticalLayout {
|
||||
modifiedColumn.setVisible(false);
|
||||
versionColumn.setVisible(false);
|
||||
grid.setMultiSort(true);
|
||||
List sortOrder = new ArrayList();
|
||||
List<GridSortOrder<MetaDataColumn>> sortOrder = new ArrayList<>();
|
||||
sortOrder.add(new GridSortOrder<MetaDataColumn>(tableColumn, SortDirection.ASCENDING));
|
||||
sortOrder.add(new GridSortOrder<MetaDataColumn>(columnOrderColumn, SortDirection.ASCENDING));
|
||||
grid.sort(sortOrder);
|
||||
@@ -111,19 +111,6 @@ public class MetaDataView extends VerticalLayout {
|
||||
form.addCloseListener(e -> closeEditor());
|
||||
}
|
||||
|
||||
private void saveMetaData(MetaDataForm.SaveEvent event) {
|
||||
MetaDataColumn metaDataColumn = event.getMetaDataColumn();
|
||||
service.saveMetaDataColumn(metaDataColumn);
|
||||
updateList();
|
||||
closeEditor();
|
||||
}
|
||||
|
||||
private void deleteMetaData(MetaDataForm.DeleteEvent event) {
|
||||
service.deleteMetaDataColumn(event.getMetaDataColumn());
|
||||
updateList();
|
||||
closeEditor();
|
||||
}
|
||||
|
||||
private Component getContent() {
|
||||
HorizontalLayout content = new HorizontalLayout(grid, form);
|
||||
content.setFlexGrow(2, grid);
|
||||
@@ -166,6 +153,19 @@ public class MetaDataView extends VerticalLayout {
|
||||
return toolbar;
|
||||
}
|
||||
|
||||
private void saveMetaData(MetaDataForm.SaveEvent event) {
|
||||
MetaDataColumn metaDataColumn = event.getMetaDataColumn();
|
||||
service.saveMetaDataColumn(metaDataColumn);
|
||||
updateList();
|
||||
closeEditor();
|
||||
}
|
||||
|
||||
private void deleteMetaData(MetaDataForm.DeleteEvent event) {
|
||||
service.deleteMetaDataColumn(event.getMetaDataColumn());
|
||||
updateList();
|
||||
closeEditor();
|
||||
}
|
||||
|
||||
public void editMetaData(MetaDataColumn metaDataColumn) {
|
||||
if (metaDataColumn == null) {
|
||||
closeEditor();
|
||||
|
||||
@@ -39,4 +39,8 @@ public class Issue extends AbstractEntity {
|
||||
private Boolean isRead;
|
||||
|
||||
private Boolean inStock;
|
||||
|
||||
public String getComicTitle() {
|
||||
return comic.getTitle();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
package de.thpeetz.kontor.comics.views;
|
||||
|
||||
import com.vaadin.flow.component.button.ButtonVariant;
|
||||
import com.vaadin.flow.component.grid.GridSortOrder;
|
||||
import com.vaadin.flow.data.provider.SortDirection;
|
||||
import de.thpeetz.kontor.common.views.ColumnToggleContextMenu;
|
||||
import de.thpeetz.kontor.common.views.StatusIcon;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
|
||||
import com.vaadin.flow.component.Component;
|
||||
@@ -18,8 +23,12 @@ import de.thpeetz.kontor.comics.data.Issue;
|
||||
import de.thpeetz.kontor.comics.services.ComicService;
|
||||
import de.thpeetz.kontor.common.views.MainLayout;
|
||||
import jakarta.annotation.security.PermitAll;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@SpringComponent
|
||||
@Scope("prototype")
|
||||
@@ -28,8 +37,26 @@ import lombok.extern.slf4j.Slf4j;
|
||||
@PageTitle("Issue | Comics | Kontor")
|
||||
public class IssueView extends VerticalLayout {
|
||||
|
||||
Grid<Issue> grid = new Grid<>(Issue.class);
|
||||
@Getter
|
||||
Grid<Issue> grid = new Grid<>(Issue.class, false);
|
||||
Grid.Column<Issue> idColumn = grid.addColumn(Issue::getId)
|
||||
.setHeader("ID").setResizable(true).setSortable(true);
|
||||
Grid.Column<Issue> createdColumn = grid.addColumn(Issue::getCreatedDate)
|
||||
.setHeader("Erstellt").setResizable(true).setSortable(true);
|
||||
Grid.Column<Issue> modifiedColumn = grid.addColumn(Issue::getLastModifiedDate)
|
||||
.setHeader("Geändert").setResizable(true).setSortable(true);
|
||||
Grid.Column<Issue> versionColumn = grid.addColumn(Issue::getVersion)
|
||||
.setHeader("Version").setResizable(true).setSortable(true);
|
||||
Grid.Column<Issue> titleColumn = grid.addColumn(Issue::getComicTitle)
|
||||
.setHeader("Comic").setResizable(true).setSortable(true);
|
||||
Grid.Column<Issue> issueNumberColumn = grid.addColumn(Issue::getIssueNumber)
|
||||
.setHeader("Heft Nummer").setResizable(true).setSortable(true);
|
||||
Grid.Column<Issue> isReadColumn = grid.addComponentColumn(issueColumn -> StatusIcon.create(issueColumn.getIsRead()))
|
||||
.setHeader("Gelesen?").setWidth("6rem").setSortable(true);
|
||||
Grid.Column<Issue> inStockColumn = grid.addComponentColumn(issueColumn -> StatusIcon.create(issueColumn.getInStock()))
|
||||
.setHeader("Im Bestand?").setWidth("6rem").setSortable(true);
|
||||
ComboBox<Comic> comicFilter = new ComboBox<>("Comic");
|
||||
@Getter
|
||||
IssueForm form;
|
||||
ComicService service;
|
||||
|
||||
@@ -44,22 +71,22 @@ public class IssueView extends VerticalLayout {
|
||||
updateList();
|
||||
}
|
||||
|
||||
public Grid<Issue> getGrid() {
|
||||
return grid;
|
||||
}
|
||||
|
||||
private void configureGrid() {
|
||||
grid.addClassName("issue-grid");
|
||||
grid.setSizeFull();
|
||||
grid.setColumns("comic.title", "issueNumber", "isRead", "inStock");
|
||||
grid.getColumns().forEach(col -> col.setAutoWidth(true));
|
||||
idColumn.setVisible(false);
|
||||
createdColumn.setVisible(false);
|
||||
modifiedColumn.setVisible(false);
|
||||
versionColumn.setVisible(false);
|
||||
grid.setMultiSort(true);
|
||||
List<GridSortOrder<Issue>> sortOrder = new ArrayList<>();
|
||||
sortOrder.add(new GridSortOrder<Issue>(titleColumn, SortDirection.ASCENDING));
|
||||
sortOrder.add(new GridSortOrder<Issue>(issueNumberColumn, SortDirection.ASCENDING));
|
||||
grid.sort(sortOrder);
|
||||
grid.asSingleSelect().addValueChangeListener(event -> editIssue(event.getValue()));
|
||||
}
|
||||
|
||||
public IssueForm getForm() {
|
||||
return form;
|
||||
}
|
||||
|
||||
private void configureForm() {
|
||||
form = new IssueForm(service.findAllComics(null));
|
||||
form.setWidth("25em");
|
||||
@@ -69,18 +96,6 @@ public class IssueView extends VerticalLayout {
|
||||
form.addCloseListener(e -> closeEditor());
|
||||
}
|
||||
|
||||
private void saveIssue(IssueForm.SaveEvent event) {
|
||||
service.saveIssue(event.getIssue());
|
||||
updateList();
|
||||
closeEditor();
|
||||
}
|
||||
|
||||
private void deleteIssue(IssueForm.DeleteEvent event) {
|
||||
service.deleteIssue(event.getIssue());
|
||||
updateList();
|
||||
closeEditor();
|
||||
}
|
||||
|
||||
private Component getContent() {
|
||||
HorizontalLayout content = new HorizontalLayout(grid, form);
|
||||
content.setFlexGrow(2, grid);
|
||||
@@ -93,16 +108,40 @@ public class IssueView extends VerticalLayout {
|
||||
private HorizontalLayout getToolbar() {
|
||||
comicFilter.setItems(service.findAllComics(null));
|
||||
comicFilter.setItemLabelGenerator(Comic::getTitle);
|
||||
comicFilter.addValueChangeListener(e -> updateList());
|
||||
comicFilter.setClearButtonVisible(true);
|
||||
comicFilter.addValueChangeListener(e -> updateList());
|
||||
|
||||
Button addIssueButton = new Button("Add issue", click -> addIssue());
|
||||
Button addIssueButton = new Button("Add issue");
|
||||
addIssueButton.addClickListener(click -> addIssue());
|
||||
|
||||
HorizontalLayout toolbar = new HorizontalLayout(comicFilter, addIssueButton);
|
||||
Button menuButton = new Button("Show/Hide Columns");
|
||||
menuButton.addThemeVariants(ButtonVariant.LUMO_TERTIARY);
|
||||
ColumnToggleContextMenu<Issue> columnToggleContextMenu = new ColumnToggleContextMenu<>(menuButton);
|
||||
columnToggleContextMenu.addColumnToggleItem(idColumn);
|
||||
columnToggleContextMenu.addColumnToggleItem(createdColumn);
|
||||
columnToggleContextMenu.addColumnToggleItem(modifiedColumn);
|
||||
columnToggleContextMenu.addColumnToggleItem(versionColumn);
|
||||
columnToggleContextMenu.addColumnToggleItem(titleColumn);
|
||||
columnToggleContextMenu.addColumnToggleItem(issueNumberColumn);
|
||||
columnToggleContextMenu.addColumnToggleItem(isReadColumn);
|
||||
columnToggleContextMenu.addColumnToggleItem(inStockColumn);
|
||||
HorizontalLayout toolbar = new HorizontalLayout(comicFilter, addIssueButton, menuButton);
|
||||
toolbar.addClassName("toolbar");
|
||||
return toolbar;
|
||||
}
|
||||
|
||||
private void saveIssue(IssueForm.SaveEvent event) {
|
||||
service.saveIssue(event.getIssue());
|
||||
updateList();
|
||||
closeEditor();
|
||||
}
|
||||
|
||||
private void deleteIssue(IssueForm.DeleteEvent event) {
|
||||
service.deleteIssue(event.getIssue());
|
||||
updateList();
|
||||
closeEditor();
|
||||
}
|
||||
|
||||
public void editIssue(Issue issue) {
|
||||
if (issue == null) {
|
||||
closeEditor();
|
||||
|
||||
Reference in New Issue
Block a user