From 72ba5031a33f66b6f70945a01ea8a9ffb406bd93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20M=C4=85dry?= Date: Wed, 22 Jan 2025 13:37:06 +0100 Subject: [PATCH 1/3] Allow to perform action inside search results dataTable --- .../iq/dataverse/search/LastSearchValue.java | 35 +++++++++++++++++++ .../search/SearchIncludeFragment.java | 2 ++ .../main/webapp/search-include-fragment.xhtml | 34 +++++++++--------- 3 files changed, 54 insertions(+), 17 deletions(-) diff --git a/dataverse-webapp/src/main/java/edu/harvard/iq/dataverse/search/LastSearchValue.java b/dataverse-webapp/src/main/java/edu/harvard/iq/dataverse/search/LastSearchValue.java index a1e0bbf427..29bdb4185e 100644 --- a/dataverse-webapp/src/main/java/edu/harvard/iq/dataverse/search/LastSearchValue.java +++ b/dataverse-webapp/src/main/java/edu/harvard/iq/dataverse/search/LastSearchValue.java @@ -9,6 +9,13 @@ import edu.harvard.iq.dataverse.search.response.SolrSearchResult; +/** + * Results of the last performed search by the user. + * Existence of this bean is needed since {@link SearchIncludeFragment} + * bean is request scoped. When we perform some action on the search page + * (for example clicking on some button) we sometimes still need for search + * results to be present in the jsf context. + */ @SessionScoped @Named("lastSearchValue") public class LastSearchValue implements Serializable { @@ -16,14 +23,42 @@ public class LastSearchValue implements Serializable { private static final long serialVersionUID = 1L; private List searchResultsList = new ArrayList<>(); + private boolean rootDv; + private long dataverseId; public List getSearchResultsList() { return this.searchResultsList; } + /** + * Returns true if last search was inside root dataverse + */ + public boolean isRootDv() { + + return rootDv; + } + + /** + * Returns id of dataverse from which last search was performed + */ + public long getDataverseId() { + + return dataverseId; + } + public void setSearchResultsList(List searchResultsList) { this.searchResultsList = searchResultsList; } + + public void setRootDv(boolean rootDv) { + + this.rootDv = rootDv; + } + + public void setDataverseId(long dataverseId) { + + this.dataverseId = dataverseId; + } } diff --git a/dataverse-webapp/src/main/java/edu/harvard/iq/dataverse/search/SearchIncludeFragment.java b/dataverse-webapp/src/main/java/edu/harvard/iq/dataverse/search/SearchIncludeFragment.java index 69baf7c5f7..9832c1b34a 100644 --- a/dataverse-webapp/src/main/java/edu/harvard/iq/dataverse/search/SearchIncludeFragment.java +++ b/dataverse-webapp/src/main/java/edu/harvard/iq/dataverse/search/SearchIncludeFragment.java @@ -442,6 +442,8 @@ public void search(Dataverse dataverse) { setDisplayCardValues(dataversePath); this.lastSearchValue.setSearchResultsList(searchResultsList); + this.lastSearchValue.setRootDv(dataverse.isRoot()); + this.lastSearchValue.setDataverseId(dataverse.getId()); } public StreamedContent getSearchResultsFile() { diff --git a/dataverse-webapp/src/main/webapp/search-include-fragment.xhtml b/dataverse-webapp/src/main/webapp/search-include-fragment.xhtml index ca33874e24..bd76684679 100644 --- a/dataverse-webapp/src/main/webapp/search-include-fragment.xhtml +++ b/dataverse-webapp/src/main/webapp/search-include-fragment.xhtml @@ -180,7 +180,7 @@ - + @@ -450,18 +450,18 @@ - +