Erweiterungen

This commit is contained in:
2025-08-28 11:43:41 +02:00
parent 8b8cfb6207
commit 68c21b9f19
2 changed files with 17 additions and 9 deletions

View File

@@ -24,13 +24,11 @@ import org.springframework.beans.factory.annotation.Autowired;
public class AppUserView extends VerticalLayout { public class AppUserView extends VerticalLayout {
private final AppUserService appUserService; private final AppUserService appUserService;
private final AppDeviceService appDeviceService;
private final Grid<AppUser> appUserGrid; private final Grid<AppUser> appUserGrid;
@Autowired @Autowired
public AppUserView(AppUserService appUserService, AppDeviceService appDeviceService) { public AppUserView(AppUserService appUserService, AppDeviceService appDeviceService) {
this.appUserService = appUserService; this.appUserService = appUserService;
this.appDeviceService = appDeviceService;
setSizeFull(); setSizeFull();
setPadding(true); setPadding(true);

View File

@@ -23,8 +23,6 @@ public class ShowJobsView extends VerticalLayout {
private final DatePicker startDate = new DatePicker("Startdatum"); private final DatePicker startDate = new DatePicker("Startdatum");
private final DatePicker endDate = new DatePicker("Enddatum"); private final DatePicker endDate = new DatePicker("Enddatum");
private final Button applyFilter = new Button("Anwenden");
private final Button exportButton = new Button("CSV Export");
private final JobRepository jobRepository; private final JobRepository jobRepository;
private final Grid<Job> grid = new Grid<>(Job.class, false); private final Grid<Job> grid = new Grid<>(Job.class, false);
@@ -35,12 +33,14 @@ public class ShowJobsView extends VerticalLayout {
setPadding(true); setPadding(true);
setSpacing(true); setSpacing(true);
// Filterleiste mit Export-Button am rechten Rand // Filterleiste mit Export-Button am rechten Rand
Button applyFilter = new Button("Anwenden");
HorizontalLayout leftFilters = new HorizontalLayout(startDate, endDate, applyFilter); HorizontalLayout leftFilters = new HorizontalLayout(startDate, endDate, applyFilter);
leftFilters.setAlignItems(Alignment.END); leftFilters.setAlignItems(Alignment.END);
HorizontalLayout filterBar = new HorizontalLayout(); HorizontalLayout filterBar = new HorizontalLayout();
filterBar.setWidthFull(); filterBar.setWidthFull();
filterBar.add(leftFilters); filterBar.add(leftFilters);
Button exportButton = new Button("CSV Export");
filterBar.add(exportButton); filterBar.add(exportButton);
filterBar.setJustifyContentMode(JustifyContentMode.BETWEEN); filterBar.setJustifyContentMode(JustifyContentMode.BETWEEN);
filterBar.setAlignItems(Alignment.END); filterBar.setAlignItems(Alignment.END);
@@ -64,6 +64,19 @@ public class ShowJobsView extends VerticalLayout {
grid.setMultiSort(true); grid.setMultiSort(true);
grid.setSizeFull(); grid.setSizeFull();
// Make grid rows clickable
grid.setSelectionMode(Grid.SelectionMode.SINGLE);
grid.getStyle().set("cursor", "pointer");
// Add click listener to navigate to job summary view
grid.addItemClickListener(event -> {
Job job = event.getItem();
if (job != null && job.getId() != null) {
getUI().ifPresent(ui -> ui.navigate("job_summary/" + job.getId().toHexString()));
}
});
add(grid); add(grid);
loadData(); loadData();
@@ -90,10 +103,7 @@ public class ShowJobsView extends VerticalLayout {
private void exportToCsv() { private void exportToCsv() {
var items = grid.getListDataView().getItems().toList(); var items = grid.getListDataView().getItems().toList();
StreamResource resource = new StreamResource("auftraege.csv", () -> { StreamResource resource = new StreamResource("auftraege.csv", () -> new java.io.ByteArrayInputStream(generateCsv(items).getBytes(java.nio.charset.StandardCharsets.UTF_8)));
java.io.ByteArrayInputStream stream = new java.io.ByteArrayInputStream(generateCsv(items).getBytes(java.nio.charset.StandardCharsets.UTF_8));
return stream;
});
resource.setContentType("text/csv"); resource.setContentType("text/csv");
resource.setCacheTime(0); resource.setCacheTime(0);