diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTable.java index a4f8a8f70..bd9291473 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTable.java @@ -78,6 +78,8 @@ public class SoftwareModuleTable extends AbstractTable { @Autowired private UploadViewAcceptCriteria uploadViewAcceptCriteria; + + private Boolean isFilterEvent = false; /** * Initialize the filter layout. @@ -105,7 +107,19 @@ public class SoftwareModuleTable extends AbstractTable { if (filterEvent == SMFilterEvent.FILTER_BY_TYPE || filterEvent == SMFilterEvent.FILTER_BY_TEXT || filterEvent == SMFilterEvent.REMOVER_FILTER_BY_TYPE || filterEvent == SMFilterEvent.REMOVER_FILTER_BY_TEXT) { - refreshFilter(); + + if(prepareQueryConfigFilters().size()<1 && isFilterEvent==false){ + UI.getCurrent().access(() -> ((LazyQueryContainer) getContainerDataSource()).refresh()); + + }else { + refreshFilter(); + if(prepareQueryConfigFilters().size()<1){ + isFilterEvent = false; + }else{ + isFilterEvent = true; + } + } + //refreshFilter(); } }); } @@ -127,12 +141,7 @@ public class SoftwareModuleTable extends AbstractTable { */ @Override protected Container createContainer() { - final Map queryConfiguration = new HashMap(); - artifactUploadState.getSoftwareModuleFilters().getSearchText() - .ifPresent(value -> queryConfiguration.put(SPUIDefinitions.FILTER_BY_TEXT, value)); - - artifactUploadState.getSoftwareModuleFilters().getSoftwareModuleType() - .ifPresent(type -> queryConfiguration.put(SPUIDefinitions.BY_SOFTWARE_MODULE_TYPE, type)); + final Map queryConfiguration = prepareQueryConfigFilters(); final BeanQueryFactory swQF = new BeanQueryFactory( BaseSwModuleBeanQuery.class); @@ -142,6 +151,19 @@ public class SoftwareModuleTable extends AbstractTable { new LazyQueryDefinition(true, SPUIDefinitions.PAGE_SIZE, "swId"), swQF); return container; } + + private Map prepareQueryConfigFilters() { + final Map queryConfig = new HashMap(); + artifactUploadState.getSoftwareModuleFilters().getSearchText() + .ifPresent(value -> queryConfig.put(SPUIDefinitions.FILTER_BY_TEXT, value)); + + artifactUploadState.getSoftwareModuleFilters().getSoftwareModuleType() + .ifPresent(type -> queryConfig.put(SPUIDefinitions.BY_SOFTWARE_MODULE_TYPE, type)); + + return queryConfig; + } + + @Override protected void addContainerProperties(final Container container) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTable.java index 107ed0299..a6f55cbc2 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTable.java @@ -114,6 +114,8 @@ public class DistributionSetTable extends AbstractTable { @Autowired private transient TargetManagement targetManagement; + + private Boolean isFilterEvent = false; /** * Initialize the component. @@ -157,15 +159,8 @@ public class DistributionSetTable extends AbstractTable { @Override protected Container createContainer() { - final Map queryConfiguration = new HashMap(); - manageDistUIState.getManageDistFilters().getSearchText() - .ifPresent(value -> queryConfiguration.put(SPUIDefinitions.FILTER_BY_TEXT, value)); - - if (null != manageDistUIState.getManageDistFilters().getClickedDistSetType()) { - queryConfiguration.put(SPUIDefinitions.FILTER_BY_DISTRIBUTION_SET_TYPE, - manageDistUIState.getManageDistFilters().getClickedDistSetType()); - } - + final Map queryConfiguration = prepareQueryConfigFilters(); + final BeanQueryFactory distributionQF = new BeanQueryFactory( ManageDistBeanQuery.class); distributionQF.setQueryConfiguration(queryConfiguration); @@ -175,6 +170,20 @@ public class DistributionSetTable extends AbstractTable { return distContainer; } + + private Map prepareQueryConfigFilters() { + final Map queryConfig = new HashMap(); + manageDistUIState.getManageDistFilters().getSearchText() + .ifPresent(value -> queryConfig.put(SPUIDefinitions.FILTER_BY_TEXT, value)); + + if (null != manageDistUIState.getManageDistFilters().getClickedDistSetType()) { + queryConfig.put(SPUIDefinitions.FILTER_BY_DISTRIBUTION_SET_TYPE, + manageDistUIState.getManageDistFilters().getClickedDistSetType()); + } + + return queryConfig; + } + /* * (non-Javadoc) @@ -612,7 +621,19 @@ public class DistributionSetTable extends AbstractTable { if (event == DistributionTableFilterEvent.FILTER_BY_TEXT || event == DistributionTableFilterEvent.REMOVE_FILTER_BY_TEXT || event == DistributionTableFilterEvent.FILTER_BY_TAG) { - UI.getCurrent().access(() -> refreshFilter()); + if(prepareQueryConfigFilters().size()<1 && isFilterEvent==false){ + UI.getCurrent().access(() -> ((LazyQueryContainer) getContainerDataSource()).refresh()); + + }else { + UI.getCurrent().access(() -> refreshFilter()); + if(prepareQueryConfigFilters().size()<1){ + isFilterEvent = false; + }else{ + isFilterEvent = true; + } + } + + // UI.getCurrent().access(() -> refreshFilter()); } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTable.java index 17ee9b8af..6d5b7dcd5 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTable.java @@ -94,6 +94,8 @@ public class SwModuleTable extends AbstractTable { @Autowired private ArtifactDetailsLayout artifactDetailsLayout; + + private Boolean isFilterEvent = false; /** * Initialize the filter layout. @@ -124,9 +126,23 @@ public class SwModuleTable extends AbstractTable { if (filterEvent == SMFilterEvent.FILTER_BY_TYPE || filterEvent == SMFilterEvent.FILTER_BY_TEXT || filterEvent == SMFilterEvent.REMOVER_FILTER_BY_TYPE || filterEvent == SMFilterEvent.REMOVER_FILTER_BY_TEXT) { - refreshFilter(); - styleTableOnDistSelection(); - } + if(prepareQueryConfigFilters().size()<2 && isFilterEvent==false){ + UI.getCurrent().access(() -> ((LazyQueryContainer) getContainerDataSource()).refresh()); + + }else { + UI.getCurrent().access(() ->{ refreshFilter(); + styleTableOnDistSelection(); + }); + if(prepareQueryConfigFilters().size()<2){ + isFilterEvent = false; + }else{ + isFilterEvent = true; + } + } + + /* refreshFilter(); + styleTableOnDistSelection();*/ + } }); } @@ -177,15 +193,7 @@ public class SwModuleTable extends AbstractTable { */ @Override protected Container createContainer() { - final Map queryConfiguration = new HashMap(); - manageDistUIState.getSoftwareModuleFilters().getSearchText() - .ifPresent(value -> queryConfiguration.put(SPUIDefinitions.FILTER_BY_TEXT, value)); - - manageDistUIState.getSoftwareModuleFilters().getSoftwareModuleType() - .ifPresent(type -> queryConfiguration.put(SPUIDefinitions.BY_SOFTWARE_MODULE_TYPE, type)); - - manageDistUIState.getLastSelectedDistribution().ifPresent( - distIdName -> queryConfiguration.put(SPUIDefinitions.ORDER_BY_DISTRIBUTION, distIdName.getId())); + final Map queryConfiguration = prepareQueryConfigFilters(); final BeanQueryFactory swQF = new BeanQueryFactory( SwModuleBeanQuery.class); @@ -195,6 +203,20 @@ public class SwModuleTable extends AbstractTable { new LazyQueryDefinition(true, SPUIDefinitions.PAGE_SIZE, "swId"), swQF); return container; } + + private Map prepareQueryConfigFilters() { + final Map queryConfig = new HashMap(); + manageDistUIState.getSoftwareModuleFilters().getSearchText() + .ifPresent(value -> queryConfig.put(SPUIDefinitions.FILTER_BY_TEXT, value)); + + manageDistUIState.getSoftwareModuleFilters().getSoftwareModuleType() + .ifPresent(type -> queryConfig.put(SPUIDefinitions.BY_SOFTWARE_MODULE_TYPE, type)); + + manageDistUIState.getLastSelectedDistribution().ifPresent( + distIdName -> queryConfig.put(SPUIDefinitions.ORDER_BY_DISTRIBUTION, distIdName.getId())); + + return queryConfig; + } /* * (non-Javadoc) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java index 225407b84..e8f9e57ac 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java @@ -112,6 +112,8 @@ public class DistributionTable extends AbstractTable { private Boolean isDistPinned = false; private Button distributinPinnedBtn; + + private Boolean isFilterEvent = false; /** * Initialize the distribution table. @@ -140,7 +142,24 @@ public class DistributionTable extends AbstractTable { if (event == DistributionTableFilterEvent.FILTER_BY_TEXT || event == DistributionTableFilterEvent.REMOVE_FILTER_BY_TEXT || event == DistributionTableFilterEvent.FILTER_BY_TAG) { - UI.getCurrent().access(() -> refreshFilter()); + if(((boolean)prepareQueryConfigFilters().get(SPUIDefinitions.FILTER_BY_NO_TAG)==false) + && ((List)prepareQueryConfigFilters().get(SPUIDefinitions.FILTER_BY_TAG)).isEmpty() + && prepareQueryConfigFilters().size()<3 + && isFilterEvent==false){ + UI.getCurrent().access(() -> ((LazyQueryContainer) getContainerDataSource()).refresh()); + + }else { + UI.getCurrent().access(() -> refreshFilter()); + if(((boolean)prepareQueryConfigFilters().get(SPUIDefinitions.FILTER_BY_NO_TAG)==false) + && ((List)prepareQueryConfigFilters().get(SPUIDefinitions.FILTER_BY_TAG)).isEmpty() + && prepareQueryConfigFilters().size()<3){ + isFilterEvent = false; + }else{ + isFilterEvent = true; + } + } + + // UI.getCurrent().access(() -> refreshFilter()); } } @@ -219,18 +238,8 @@ public class DistributionTable extends AbstractTable { */ @Override protected Container createContainer() { - final Map queryConfiguration = new HashMap(); - managementUIState.getDistributionTableFilters().getSearchText() - .ifPresent(value -> queryConfiguration.put(SPUIDefinitions.FILTER_BY_TEXT, value)); - managementUIState.getDistributionTableFilters().getPinnedTargetId() - .ifPresent(value -> queryConfiguration.put(SPUIDefinitions.ORDER_BY_PINNED_TARGET, value)); - final List list = new ArrayList(); - queryConfiguration.put(SPUIDefinitions.FILTER_BY_NO_TAG, - managementUIState.getDistributionTableFilters().isNoTagSelected()); - if (!managementUIState.getDistributionTableFilters().getDistSetTags().isEmpty()) { - list.addAll(managementUIState.getDistributionTableFilters().getDistSetTags()); - } - queryConfiguration.put(SPUIDefinitions.FILTER_BY_TAG, list); + final Map queryConfiguration = prepareQueryConfigFilters(); + final BeanQueryFactory distributionQF = new BeanQueryFactory( DistributionBeanQuery.class); distributionQF.setQueryConfiguration(queryConfiguration); @@ -239,6 +248,22 @@ public class DistributionTable extends AbstractTable { distributionQF); return distributionContainer; } + + private Map prepareQueryConfigFilters() { + final Map queryConfig = new HashMap(); + managementUIState.getDistributionTableFilters().getSearchText() + .ifPresent(value -> queryConfig.put(SPUIDefinitions.FILTER_BY_TEXT, value)); + managementUIState.getDistributionTableFilters().getPinnedTargetId() + .ifPresent(value -> queryConfig.put(SPUIDefinitions.ORDER_BY_PINNED_TARGET, value)); + final List list = new ArrayList(); + queryConfig.put(SPUIDefinitions.FILTER_BY_NO_TAG, + managementUIState.getDistributionTableFilters().isNoTagSelected()); + if (!managementUIState.getDistributionTableFilters().getDistSetTags().isEmpty()) { + list.addAll(managementUIState.getDistributionTableFilters().getDistSetTags()); + } + queryConfig.put(SPUIDefinitions.FILTER_BY_TAG, list); + return queryConfig; + } /* * (non-Javadoc) 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 62276346e..186207c50 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 @@ -15,6 +15,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -138,6 +139,9 @@ public class TargetTable extends AbstractTable implements Handler { private Boolean isTargetPinned = Boolean.FALSE; private ShortcutAction actionSelectAll; private ShortcutAction actionUnSelectAll; + + private Boolean isFilterEvent = Boolean.FALSE;; + @Override @PostConstruct @@ -207,7 +211,20 @@ public class TargetTable extends AbstractTable implements Handler { void onEvent(final TargetFilterEvent filterEvent) { UI.getCurrent().access(() -> { if (checkFilterEvent(filterEvent)) { - refreshFilter(); + if(((boolean)prepareQueryConfigFilters().get(SPUIDefinitions.FILTER_BY_NO_TAG)==false) + && prepareQueryConfigFilters().size()<2 + && isFilterEvent==Boolean.FALSE){ + ((LazyQueryContainer) getContainerDataSource()).refresh(); + + }else { + refreshFilter(); + if(prepareQueryConfigFilters().size()<2){ + isFilterEvent = Boolean.FALSE; + }else{ + isFilterEvent = Boolean.TRUE; + } + } + eventBus.publish(this, ManagementUIEvent.TARGET_TABLE_FILTER); } });