diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterTable.java index 06386ef5a..a10f9b253 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterTable.java @@ -204,6 +204,7 @@ public class TargetFilterTable extends Table { notification .displaySuccess(i18n.getMessage("message.delete.filter.success", deletedFilterName)); + eventBus.publish(this, CustomFilterUIEvent.REMOVE_TARGET_FILTERQUERY); refreshContainer(); } }); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/event/CustomFilterUIEvent.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/event/CustomFilterUIEvent.java index a09d3d397..6a70b97b3 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/event/CustomFilterUIEvent.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/event/CustomFilterUIEvent.java @@ -15,5 +15,5 @@ package org.eclipse.hawkbit.ui.filtermanagement.event; * */ public enum CustomFilterUIEvent { - FILTER_TARGET_BY_QUERY, FILTER_BY_CUST_FILTER_TEXT, FILTER_BY_CUST_FILTER_TEXT_REMOVE, CREATE_NEW_FILTER_CLICK, EXIT_CREATE_OR_UPDATE_FILTRER_VIEW, TARGET_FILTER_DETAIL_VIEW, TARGET_DETAILS_VIEW, CREATE_TARGET_FILTER_QUERY, UPDATED_TARGET_FILTER_QUERY, UPDATE_TARGET_FILTER_SEARCH_ICON, SHOW_FILTER_MANAGEMENT + FILTER_TARGET_BY_QUERY, FILTER_BY_CUST_FILTER_TEXT, FILTER_BY_CUST_FILTER_TEXT_REMOVE, CREATE_NEW_FILTER_CLICK, EXIT_CREATE_OR_UPDATE_FILTRER_VIEW, TARGET_FILTER_DETAIL_VIEW, TARGET_DETAILS_VIEW, CREATE_TARGET_FILTER_QUERY, UPDATED_TARGET_FILTER_QUERY, REMOVE_TARGET_FILTERQUERY, UPDATE_TARGET_FILTER_SEARCH_ICON, SHOW_FILTER_MANAGEMENT } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/ManagementUIEvent.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/ManagementUIEvent.java index f482cd795..f7037bfbb 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/ManagementUIEvent.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/ManagementUIEvent.java @@ -47,6 +47,7 @@ public enum ManagementUIEvent { // RESET_SIMPLE_FILTERS, // - RESET_TARGET_FILTER_QUERY - + RESET_TARGET_FILTER_QUERY, + // + REFRESH_TARGETS_ON_FILTER_UPDATE } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java index c7e0956e2..79f0aff30 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java @@ -219,13 +219,16 @@ public class TargetTable extends AbstractTable { @EventBusListenerMethod(scope = EventScope.UI) void onEvent(final ManagementUIEvent managementUIEvent) { - UI.getCurrent().access(() -> { - if (tableIsFilteredByTagsAndTagWasUnassignedFromTarget(managementUIEvent) - || tableIsFilteredByNoTagAndTagWasAssignedToTarget(managementUIEvent)) { - refreshFilter(); - } - }); - } + UI.getCurrent().access(() -> { + if ((managementUIEvent == ManagementUIEvent.REFRESH_TARGETS_ON_FILTER_UPDATE && + managementUIState.getTargetTableFilters().getTargetFilterQuery().isPresent()) || + (tableIsFilteredByTagsAndTagWasUnassignedFromTarget(managementUIEvent) || + tableIsFilteredByNoTagAndTagWasAssignedToTarget(managementUIEvent))) { + refreshFilter(); + getEventBus().publish(this, ManagementUIEvent.TARGET_TABLE_FILTER); + } + }); + } private boolean tableIsFilteredByTagsAndTagWasUnassignedFromTarget(final ManagementUIEvent managementUIEvent) { return managementUIEvent == ManagementUIEvent.UNASSIGN_TARGET_TAG && isFilteredByTags(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/filter/TargetFilterQueryButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/filter/TargetFilterQueryButtons.java index 45e0a8910..bb0d8b9bb 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/filter/TargetFilterQueryButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/filter/TargetFilterQueryButtons.java @@ -13,9 +13,11 @@ import java.util.Collections; import java.util.List; import org.eclipse.hawkbit.repository.model.TargetFilterQuery; +import org.eclipse.hawkbit.ui.components.RefreshableContainer; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.decorators.SPUITagButtonStyle; import org.eclipse.hawkbit.ui.filtermanagement.TargetFilterBeanQuery; +import org.eclipse.hawkbit.ui.filtermanagement.event.CustomFilterUIEvent; import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent; import org.eclipse.hawkbit.ui.management.state.ManagementUIState; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; @@ -28,15 +30,17 @@ import org.vaadin.spring.events.EventBus.UIEventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; +import com.vaadin.data.Container; import com.vaadin.data.Item; import com.vaadin.ui.Button; import com.vaadin.ui.Table; +import com.vaadin.ui.UI; import com.vaadin.ui.themes.ValoTheme; /** * Target filter query{#link {@link TargetFilterQuery} buttons layout. */ -public class TargetFilterQueryButtons extends Table { +public class TargetFilterQueryButtons extends Table implements RefreshableContainer{ private static final long serialVersionUID = 9188095103191937850L; protected static final String FILTER_BUTTON_COLUMN = "filterButton"; @@ -143,11 +147,38 @@ public class TargetFilterQueryButtons extends Table { setVisibleColumns(columnIds.toArray()); setColumnHeaderMode(ColumnHeaderMode.HIDDEN); } - + @EventBusListenerMethod(scope = EventScope.UI) void onEvent(final ManagementUIEvent event) { if (event == ManagementUIEvent.RESET_TARGET_FILTER_QUERY) { customTargetTagFilterButtonClick.clearAppliedTargetFilterQuery(); } } + + @EventBusListenerMethod(scope = EventScope.UI) + void onEvent(final CustomFilterUIEvent filterEvent) { + if (filterEvent == CustomFilterUIEvent.CREATE_TARGET_FILTER_QUERY || + filterEvent == CustomFilterUIEvent.UPDATED_TARGET_FILTER_QUERY || + filterEvent == CustomFilterUIEvent.REMOVE_TARGET_FILTERQUERY) { + UI.getCurrent().access(this::refreshContainer); + } + if (filterEvent == CustomFilterUIEvent.REMOVE_TARGET_FILTERQUERY) { + customTargetTagFilterButtonClick.clearAppliedTargetFilterQuery(); + } else if (filterEvent == CustomFilterUIEvent.UPDATED_TARGET_FILTER_QUERY) { + this.eventBus.publish(this, ManagementUIEvent.REFRESH_TARGETS_ON_FILTER_UPDATE); + } + } + + + /** + * {@inheritDoc} + */ + @Override + public void refreshContainer() { + final Container container = getContainerDataSource(); + if (!(container instanceof LazyQueryContainer)) { + return; + } + ((LazyQueryContainer) getContainerDataSource()).refresh(); + } }