modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java | 15 ++++++++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/event/EventCompositeDatasource.java | 17 +++++++--- 2 files changed, 27 insertions(+), 5 deletions(-)
New commits: commit 769949fb28b0beeeba6c076130708c8a534cce88 Author: John Mazzitelli mazz@redhat.com Date: Mon Mar 28 15:00:25 2011 -0400
in our GWT UI, the alert and event severity filters are represented with a drop down selection menu containing one checkbox for each severity enum (alert: hi, med, lo; event: debug, info, warn, et...). If you don't select any severity (i.e. all the checkboxes are unchecked), we used to assume this means there is no filtering to be performed and the query returns everything.
However, because the UI renders these in individual checkboxes, that behavior doesn't really make sense and will confuse the user. Because, if the user doesn't select any severities, it seems as though the user is asking it to show nothing - since no event or alert will match the selected severities (and there are NO selected severities). So to make the query results/UI more sensical, if the user de-selects all severity check boxes, the table will show 0 rows.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java index f776d56..3e51b24 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java @@ -204,6 +204,13 @@ public class AlertDataSource extends RPCDataSource<Alert, AlertCriteria> {
@Override protected void executeFetch(final DSRequest request, final DSResponse response, final AlertCriteria criteria) { + if (criteria == null) { + // the user selected no severities in the filter - it makes sense from the UI perspective to show 0 rows + response.setTotalRows(0); + processResponse(request.getRequestId(), response); + return; + } + final long start = System.currentTimeMillis();
this.alertService.findAlertsByCriteria(criteria, new AsyncCallback<PageList<Alert>>() { @@ -272,10 +279,16 @@ public class AlertDataSource extends RPCDataSource<Alert, AlertCriteria> {
@Override protected AlertCriteria getFetchCriteria(DSRequest request) { + AlertPriority[] severitiesFilter = getArrayFilter(request, "severities", AlertPriority.class); + + if (severitiesFilter == null || severitiesFilter.length == 0) { + return null; // user didn't select any severities - return null to indicate no data should be displayed + } + AlertCriteria criteria = new AlertCriteria(); criteria.setPageControl(getPageControl(request));
- criteria.addFilterPriorities(getArrayFilter(request, "severities", AlertPriority.class)); + criteria.addFilterPriorities(severitiesFilter); criteria.addFilterEntityContext(entityContext); criteria.fetchConditionLogs(true);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/event/EventCompositeDatasource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/event/EventCompositeDatasource.java index e7f93e4..490ee4f 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/event/EventCompositeDatasource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/event/EventCompositeDatasource.java @@ -109,6 +109,13 @@ public class EventCompositeDatasource extends RPCDataSource<EventComposite, Even
@Override protected void executeFetch(final DSRequest request, final DSResponse response, final EventCriteria criteria) { + if (criteria == null) { + // the user selected no severities in the filter - it makes sense from the UI perspective to show 0 rows + response.setTotalRows(0); + processResponse(request.getRequestId(), response); + return; + } + GWTServiceLookup.getEventService().findEventCompositesByCriteria(criteria, new AsyncCallback<PageList<EventComposite>>() { public void onFailure(Throwable caught) { @@ -128,6 +135,11 @@ public class EventCompositeDatasource extends RPCDataSource<EventComposite, Even
@Override protected EventCriteria getFetchCriteria(final DSRequest request) { + EventSeverity[] severities = getArrayFilter(request, "severities", EventSeverity.class); + if (severities == null || severities.length == 0) { + return null; // user didn't select any severities - return null to indicate no data should be displayed + } + EventCriteria criteria = new EventCriteria();
PageControl pageControl = getPageControl(request); @@ -144,10 +156,7 @@ public class EventCompositeDatasource extends RPCDataSource<EventComposite, Even criteria.addFilterSourceName((String) criteriaMap.get("source")); criteria.addFilterDetail((String) criteriaMap.get("details"));
- if (criteriaMap.get("severities") != null) { - EventSeverity[] severities = getArrayFilter(request, "severities", EventSeverity.class); - criteria.addFilterSeverities(severities); - } + criteria.addFilterSeverities(severities);
criteria.addFilterEntityContext(entityContext);
rhq-commits@lists.fedorahosted.org