From dcbf1fc1630fa311fdbbe883e4e286d2fa74bd76 Mon Sep 17 00:00:00 2001 From: simonbrandhof Date: Thu, 16 Dec 2010 17:47:59 +0000 Subject: SONAR-1941 add a period filter on violations tab --- .../violationsviewer/client/ViolationsPanel.java | 11 ++- .../violationsviewer/client/ViolationsViewer.java | 82 +++++++++++++++++----- .../plugins/core/violationsviewer/public/test.html | 20 ++++-- 3 files changed, 84 insertions(+), 29 deletions(-) (limited to 'plugins') diff --git a/plugins/sonar-core-gwt/src/main/java/org/sonar/plugins/core/violationsviewer/client/ViolationsPanel.java b/plugins/sonar-core-gwt/src/main/java/org/sonar/plugins/core/violationsviewer/client/ViolationsPanel.java index 8f2f85acabd..42b63b4b87f 100644 --- a/plugins/sonar-core-gwt/src/main/java/org/sonar/plugins/core/violationsviewer/client/ViolationsPanel.java +++ b/plugins/sonar-core-gwt/src/main/java/org/sonar/plugins/core/violationsviewer/client/ViolationsPanel.java @@ -19,6 +19,7 @@ */ package org.sonar.plugins.core.violationsviewer.client; +import com.google.gwt.user.client.Window; import org.sonar.gwt.Links; import org.sonar.gwt.Utils; import org.sonar.gwt.ui.Icons; @@ -37,9 +38,9 @@ public class ViolationsPanel extends SourcePanel { private Map> filteredViolationsByLine = new HashMap>(); private final static Date now = new Date(); - public ViolationsPanel(Resource resource, String filter) { + public ViolationsPanel(Resource resource, String filter, Date fromDate) { super(resource); - loadViolations(resource, filter, null); + loadViolations(resource, filter, fromDate); } protected void loadViolations(final Resource resource, final String filter, final Date fromDate) { @@ -65,7 +66,11 @@ public class ViolationsPanel extends SourcePanel { public void filter(String filter, Date fromDate) { filteredViolationsByLine.clear(); for (Violation violation : violations) { - if (filter == null || filter.equals("") || violation.getRuleKey().equals(filter) || violation.getSeverity().equals(filter) || violation.isCreatedAfter(fromDate)) { + if (// check text filter + (filter == null || filter.equals("") || violation.getRuleKey().equals(filter) || violation.getSeverity().equals(filter)) && + + // check date filter + (fromDate == null || violation.isCreatedAfter(fromDate))) { Integer line = 0; if (violation.getLine() != null) { line = violation.getLine(); diff --git a/plugins/sonar-core-gwt/src/main/java/org/sonar/plugins/core/violationsviewer/client/ViolationsViewer.java b/plugins/sonar-core-gwt/src/main/java/org/sonar/plugins/core/violationsviewer/client/ViolationsViewer.java index 35e00a660d7..804b143edb8 100644 --- a/plugins/sonar-core-gwt/src/main/java/org/sonar/plugins/core/violationsviewer/client/ViolationsViewer.java +++ b/plugins/sonar-core-gwt/src/main/java/org/sonar/plugins/core/violationsviewer/client/ViolationsViewer.java @@ -26,6 +26,7 @@ import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.gen2.table.override.client.Grid; import com.google.gwt.user.client.ui.*; import org.sonar.gwt.Configuration; +import org.sonar.gwt.JsonUtils; import org.sonar.gwt.Metrics; import org.sonar.gwt.ui.Icons; import org.sonar.gwt.ui.Loading; @@ -36,8 +37,7 @@ import org.sonar.wsclient.services.Measure; import org.sonar.wsclient.services.Resource; import org.sonar.wsclient.services.ResourceQuery; -import java.util.Collections; -import java.util.Comparator; +import java.util.*; public class ViolationsViewer extends Page { public static final String GWT_ID = "org.sonar.plugins.core.violationsviewer.ViolationsViewer"; @@ -49,6 +49,7 @@ public class ViolationsViewer extends Page { // header private Grid header = null; private ListBox filterBox = null, periodBox = null; + private List dateFilters = new ArrayList(); private CheckBox expandCheckbox = null; private String defaultFilter; @@ -70,26 +71,11 @@ public class ViolationsViewer extends Page { header.setStylePrimaryName("gwt-ViewerHeader"); header.getCellFormatter().setStyleName(0, 0, "thin left"); - initDefaultFilter(); - sourcePanel = new ViolationsPanel(resource, defaultFilter); header.getCellFormatter().setStyleName(0, 1, "right"); - filterBox = new ListBox(); - filterBox.addItem(I18nConstants.INSTANCE.noFilters(), ""); - filterBox.setStyleName("small"); - filterBox.addChangeHandler(new ChangeHandler() { - public void onChange(ChangeEvent event) { - String filter = filterBox.getValue(filterBox.getSelectedIndex()); - loadSources(); - sourcePanel.filter(filter, null); - sourcePanel.refresh(); - } - }); - - periodBox = new ListBox(); - periodBox.addItem(I18nConstants.INSTANCE.noFilters(), ""); - periodBox.setStyleName("small"); + initDefaultFilter(); + initFilterBoxes(); header.setWidget(0, 1, periodBox); header.getCellFormatter().setStyleName(0, 1, "thin cell right"); @@ -111,10 +97,68 @@ public class ViolationsViewer extends Page { header.setWidget(0, 4, expandCheckbox); header.getCellFormatter().setStyleName(0, 4, "thin cell left"); + sourcePanel = new ViolationsPanel(resource, getCurrentRuleFilter(), getCurrentDateFilter()); + loadRuleSeverities(); return mainPanel; } + private void initFilterBoxes() { + initFilterBox(); + initPeriodBox(); + + ChangeHandler changeHandler = new ChangeHandler() { + public void onChange(ChangeEvent event) { + loadSources(); + sourcePanel.filter(getCurrentRuleFilter(), getCurrentDateFilter()); + sourcePanel.refresh(); + } + }; + filterBox.addChangeHandler(changeHandler); + periodBox.addChangeHandler(changeHandler); + } + + private void initFilterBox() { + filterBox = new ListBox(); + filterBox.addItem(I18nConstants.INSTANCE.noFilters(), ""); + filterBox.setStyleName("small"); + } + + private void initPeriodBox() { + periodBox = new ListBox(); + periodBox.setStyleName("small"); + periodBox.addItem(I18nConstants.INSTANCE.noFilters()); + + initPeriod(1); + initPeriod(2); + initPeriod(3); + initPeriod(4); + initPeriod(5); + } + + private void initPeriod(int periodIndex) { + String period = Configuration.getParameter("period" + periodIndex); + if (period != null) { + Date date = JsonUtils.parseDateTime(Configuration.getParameter("period" + periodIndex + "_date")); + if (date != null) { + periodBox.addItem(period); + dateFilters.add(date); + } + } + } + + private Date getCurrentDateFilter() { + Date dateFilter = null; + if (periodBox.getSelectedIndex() > 0) { + dateFilter = dateFilters.get(periodBox.getSelectedIndex() - 1); + } + return dateFilter; + } + + private String getCurrentRuleFilter() { + return filterBox.getValue(filterBox.getSelectedIndex()); + } + private void initDefaultFilter() { defaultFilter = Configuration.getRequestParameter("rule"); if (defaultFilter == null) { diff --git a/plugins/sonar-core-gwt/src/main/resources/org/sonar/plugins/core/violationsviewer/public/test.html b/plugins/sonar-core-gwt/src/main/resources/org/sonar/plugins/core/violationsviewer/public/test.html index 7c0a06d111e..dd3e877e5bd 100644 --- a/plugins/sonar-core-gwt/src/main/resources/org/sonar/plugins/core/violationsviewer/public/test.html +++ b/plugins/sonar-core-gwt/src/main/resources/org/sonar/plugins/core/violationsviewer/public/test.html @@ -5,19 +5,23 @@ Violations - - - - - + + + + + @@ -33,6 +37,8 @@
+
+
-- cgit v1.2.3