diff --git a/.classpath b/.classpath index 48309fc..d8ef8c7 100644 --- a/.classpath +++ b/.classpath @@ -1,12 +1,12 @@ - + - + @@ -35,5 +35,5 @@ - + diff --git a/.settings/com.gwtplugins.gdt.eclipse.core.prefs b/.settings/com.gwtplugins.gdt.eclipse.core.prefs index cd35c99..988b8c4 100644 --- a/.settings/com.gwtplugins.gdt.eclipse.core.prefs +++ b/.settings/com.gwtplugins.gdt.eclipse.core.prefs @@ -1,4 +1,4 @@ eclipse.preferences.version=1 -lastWarOutDir=/home/francescomangiacrapa/git/geoportal-data-viewer-app/target/geoportal-data-viewer-app-3.0.0 +lastWarOutDir=/home/francescomangiacrapa/git/geoportal-data-viewer-app/target/geoportal-data-viewer-app-3.0.1-SNAPSHOT warSrcDir=src/main/webapp warSrcDirIsOutput=false diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 3db9d25..5fe4fd0 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,5 +1,5 @@ - + @@ -35,8 +35,10 @@ - - + + + + @@ -73,7 +75,8 @@ - + + @@ -110,7 +113,8 @@ - + + @@ -147,7 +151,8 @@ - + + @@ -184,7 +189,8 @@ - + + @@ -221,7 +227,8 @@ - + + @@ -258,7 +265,8 @@ - + + @@ -295,7 +303,8 @@ - + + @@ -332,7 +341,8 @@ - + + diff --git a/CHANGELOG.md b/CHANGELOG.md index 9434001..5c26fd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [v3.0.1-SNAPSHOT] - 2022-12-13 + +- [#24300] Improved the GUI of the search functionality when multiple collections are available. + ## [v3.0.0] - 2022-11-28 - [#23940] Passed to CMS-UCD diff --git a/pom.xml b/pom.xml index f1c1100..56368a5 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ org.gcube.portlets.user geoportal-data-viewer-app war - 3.0.0 + 3.0.1-SNAPSHOT GeoPortal Data Viewer App The GeoPortal Data Viewer App is an application to access, discovery and navigate the Geoportal projects/documents by a Web-Map Interface diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.java index e7aacda..1cecd06 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.java @@ -30,6 +30,7 @@ import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BaseMapLayer; import com.github.gwtbootstrap.client.ui.Button; import com.github.gwtbootstrap.client.ui.CheckBox; import com.github.gwtbootstrap.client.ui.DropdownButton; +import com.github.gwtbootstrap.client.ui.ListBox; import com.github.gwtbootstrap.client.ui.NavLink; import com.github.gwtbootstrap.client.ui.NavList; import com.github.gwtbootstrap.client.ui.Paragraph; @@ -38,6 +39,8 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.event.dom.client.ChangeEvent; +import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.logical.shared.ValueChangeEvent; @@ -56,6 +59,8 @@ import com.google.gwt.user.client.ui.ScrollPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; +import ol.has.Has; + /** * The Class GeonaDataViewMainPanel. * @@ -65,6 +70,8 @@ import com.google.gwt.user.client.ui.Widget; */ public class GeonaDataViewMainPanel extends Composite { + private static final String PLACEHOLDER_SELECT_SEARCH_IN = "Select Collection..."; + private static GeonaDataViewMainPanelUiBinder uiBinder = GWT.create(GeonaDataViewMainPanelUiBinder.class); /** @@ -114,7 +121,7 @@ public class GeonaDataViewMainPanel extends Composite { DropdownButton searchFacilityButton; @UiField - NavList navListSearch; + ListBox navListSearch; @UiField ScrollPanel overlayLayersPanel; @@ -142,6 +149,10 @@ public class GeonaDataViewMainPanel extends Composite { private HashMap> mapCollectionCheckBoxes; + private SearchFacilityUI currentSearchFacility; + + private HashMap mapItemFieldsForUCD = new HashMap(); + public GeonaDataViewMainPanel(HandlerManager applicationBus, int mapHeight, List itemFieldsReponse) { initWidget(uiBinder.createAndBindUi(this)); @@ -171,53 +182,67 @@ public class GeonaDataViewMainPanel extends Composite { openCollectionDropDown.setIcon(IconType.COMPASS); + mapItemFieldsForUCD.clear(); + SearchingFilter initialSortFilter = new SearchingFilter(); initialSortFilter.setOrder(ORDER.ASC); - for (final ItemFieldsResponse ifResponse : itemFieldsReponse) { + navListSearch.addItem(PLACEHOLDER_SELECT_SEARCH_IN, PLACEHOLDER_SELECT_SEARCH_IN); + + navListSearch.getElement().getFirstChildElement().setAttribute("disabled", "disabled"); - List result = ifResponse.getListItemFields(); - List displayFields = new ArrayList(); - List searchByFields = new ArrayList(); - List sortByFields = new ArrayList(); - for (ItemFieldDV itemField : result) { - if (itemField.isDisplayAsResult()) { - displayFields.add(itemField); - } + for (final ItemFieldsResponse itemFieldResp : itemFieldsReponse) { - if (itemField.isSearchable()) { - searchByFields.add(itemField); - } + UseCaseDescriptorDV ucd = itemFieldResp.getUseCaseDescriptorDV(); + mapItemFieldsForUCD.put(ucd.getId(), itemFieldResp); + GWT.log("Added navLink for: " + ucd.getName()); + navListSearch.addItem(ucd.getName(), ucd.getProfileID()); + } - if (itemField.isSortable()) { - sortByFields.add(itemField); - } - } + navListSearch.addChangeHandler(new ChangeHandler() { - final UseCaseDescriptorDV ucd = ifResponse.getUseCaseDescriptorDV(); - NavLink navLink = new NavLink(ifResponse.getUseCaseDescriptorDV().getName()); - // navLink.setText(ucd.getName()); - navLink.addClickHandler(new ClickHandler() { + private SearchFacilityUI currentSearchFacility; - private SearchFacilityUI currentSearchFacility; + @Override + public void onChange(ChangeEvent event) { - @Override - public void onClick(ClickEvent event) { - if (this.currentSearchFacility != null) - this.currentSearchFacility.resetCurrentSearch(); + if (this.currentSearchFacility != null) + this.currentSearchFacility.resetCurrentSearch(); + String ucdProfileID = navListSearch.getValue(navListSearch.getSelectedIndex()); + GWT.log("UCD ProfileID selected: " + ucdProfileID); + + if (ucdProfileID.compareTo(PLACEHOLDER_SELECT_SEARCH_IN) != 0) { + searchFacilityPanel.clear(); - this.currentSearchFacility = new SearchFacilityUI(ucd.getProfileID(), applicationBus, displayFields, + ItemFieldsResponse itemFieldResp = mapItemFieldsForUCD.get(ucdProfileID); + + List result = itemFieldResp.getListItemFields(); + List displayFields = new ArrayList(); + List searchByFields = new ArrayList(); + List sortByFields = new ArrayList(); + for (ItemFieldDV itemField : result) { + if (itemField.isDisplayAsResult()) { + displayFields.add(itemField); + } + + if (itemField.isSearchable()) { + searchByFields.add(itemField); + } + + if (itemField.isSortable()) { + sortByFields.add(itemField); + } + } + + this.currentSearchFacility = new SearchFacilityUI(ucdProfileID, applicationBus, displayFields, sortByFields, searchByFields, initialSortFilter); searchFacilityPanel.add(currentSearchFacility); currentSearchFacility.setSearchButton(searchFacilityButton); } - }); - GWT.log("Added navLink for: " + ucd.getName()); - navListSearch.add(navLink); - - } + } + }); searchFacilityButton.setIcon(IconType.SEARCH); diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.ui.xml b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.ui.xml index e285014..9208321 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.ui.xml +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.ui.xml @@ -17,6 +17,14 @@ padding-right: 15px; } + .margin-left-top-5 { + margin-left: 5px; + margin-top: 5px; + } + + .margin-left-5 { + margin-left: 5px; + } @@ -43,7 +51,8 @@ - + - + + + Search in + + + + diff --git a/src/main/webapp/GeoportalDataViewer.css b/src/main/webapp/GeoportalDataViewer.css index 078f00a..e0d7769 100644 --- a/src/main/webapp/GeoportalDataViewer.css +++ b/src/main/webapp/GeoportalDataViewer.css @@ -488,6 +488,22 @@ body { width: 250px !important; } +.search-field { + margin: 5px; + background-color: #f9f9f9; + padding: 5px; +} + +.search-field div { + margin-left: 5px; +} + +.search-field select { + margin-left: 8px; + width: 505px !important; + margin-bottom: 0px; +} + .table-results { table-layout: fixed; /*width: 600px;*/