From 23e0a7f5ead02dba3724ce7fdbdcb6f24d8b7d5b Mon Sep 17 00:00:00 2001 From: Andreas Svanberg <andreass@dsv.su.se> Date: Wed, 5 Mar 2025 14:07:47 +0100 Subject: [PATCH] Improvements to the Excel export of projects (#126) The research area column show the string "null" instead of being an empty cell for projects without a research area. This has been fixed everywhere and not just on the project export. The reviewer column showed weird technical details (`User#toString()`) instead of the reviewers name. ## How to test 1. On `develop` branch 2. Log in as the default admin 3. Go to "Project management / Projects" 4. Click "Excel export" under the table 5. Open the file and see 6. Repeat 1-5 on this branch Co-authored-by: Nico Athanassiadis <nico@dsv.su.se> Reviewed-on: https://gitea.dsv.su.se/DMC/scipro/pulls/126 Reviewed-by: Nico Athanassiadis <nico@dsv.su.se> Co-authored-by: Andreas Svanberg <andreass@dsv.su.se> Co-committed-by: Andreas Svanberg <andreass@dsv.su.se> --- .../dsv/scipro/datatables/project/ProjectDataPanel.java | 8 +++++--- view/src/main/java/se/su/dsv/scipro/io/ExcelExporter.java | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/view/src/main/java/se/su/dsv/scipro/datatables/project/ProjectDataPanel.java b/view/src/main/java/se/su/dsv/scipro/datatables/project/ProjectDataPanel.java index 04b5d7b3f8..e58b5cce94 100644 --- a/view/src/main/java/se/su/dsv/scipro/datatables/project/ProjectDataPanel.java +++ b/view/src/main/java/se/su/dsv/scipro/datatables/project/ProjectDataPanel.java @@ -1,6 +1,5 @@ package se.su.dsv.scipro.datatables.project; -import com.google.common.eventbus.EventBus; import jakarta.inject.Inject; import java.util.*; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -33,7 +32,6 @@ import se.su.dsv.scipro.components.datatables.MultipleUsersColumn; import se.su.dsv.scipro.components.datatables.UserColumn; import se.su.dsv.scipro.dataproviders.FilteredDataProvider; import se.su.dsv.scipro.datatables.AjaxCheckboxWrapper; -import se.su.dsv.scipro.notifications.NotificationController; import se.su.dsv.scipro.profile.UserLinkPanel; import se.su.dsv.scipro.project.Project; import se.su.dsv.scipro.project.ProjectService; @@ -45,7 +43,6 @@ import se.su.dsv.scipro.system.ProjectType; import se.su.dsv.scipro.system.ProjectTypeService; import se.su.dsv.scipro.system.ResearchArea; import se.su.dsv.scipro.system.User; -import se.su.dsv.scipro.system.UserService; import se.su.dsv.scipro.util.PageParameterKeys; public class ProjectDataPanel extends Panel { @@ -170,6 +167,11 @@ public class ProjectDataPanel extends Panel { ) { cellItem.add(new ReviewerColumnCell(componentId, rowModel)); } + + @Override + public IModel<?> getDataModel(IModel<Project> rowModel) { + return rowModel.map(Project::getReviewer).map(User::getFullName); + } }; } diff --git a/view/src/main/java/se/su/dsv/scipro/io/ExcelExporter.java b/view/src/main/java/se/su/dsv/scipro/io/ExcelExporter.java index 14946fc9a4..7e4edfd722 100644 --- a/view/src/main/java/se/su/dsv/scipro/io/ExcelExporter.java +++ b/view/src/main/java/se/su/dsv/scipro/io/ExcelExporter.java @@ -72,7 +72,9 @@ public class ExcelExporter extends AbstractDataExporter { for (int i = 0; i < columns.size(); i++) { Object cellValue = columns.get(i).getDataModel(data).getObject(); Cell cell = row.createCell(i); - cell.setCellValue(String.valueOf(cellValue)); + if (cellValue != null) { + cell.setCellValue(cellValue.toString()); + } } } }