aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/sonar-core-plugin
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@sonarsource.com>2015-05-26 23:24:27 +0200
committerSimon Brandhof <simon.brandhof@sonarsource.com>2015-05-28 09:29:03 +0200
commitd228fadfa0c0cc7284d4920c9bb485049ff3f68f (patch)
treea74a8ce567a997ec32fb2f35ec8de165b6260732 /plugins/sonar-core-plugin
parent48dc03e1ff340af6ecb9f3bea6c5310f90af8df8 (diff)
downloadsonarqube-d228fadfa0c0cc7284d4920c9bb485049ff3f68f.tar.gz
sonarqube-d228fadfa0c0cc7284d4920c9bb485049ff3f68f.zip
SONAR-6370 move server extensions out of core plugin
Diffstat (limited to 'plugins/sonar-core-plugin')
-rw-r--r--plugins/sonar-core-plugin/pom.xml33
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/CorePlugin.java87
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/charts/DistributionAreaChart.java84
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/charts/DistributionBarChart.java130
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/charts/package-info.java23
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboard.java93
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/ProjectDefaultDashboard.java62
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/ProjectIssuesDashboard.java91
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/ProjectTimeMachineDashboard.java127
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/package-info.java23
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/measurefilters/MyFavouritesFilter.java49
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/measurefilters/ProjectFilter.java54
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/measurefilters/package-info.java21
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/AlertsWidget.java34
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/BubbleChartWidget.java40
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/ComplexityWidget.java27
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CoreWidget.java48
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CoverageWidget.java32
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CustomMeasuresWidget.java42
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DebtOverviewWidget.java33
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DescriptionWidget.java31
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DocumentationCommentsWidget.java29
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DuplicationsWidget.java32
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/EventsWidget.java27
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/HotspotMetricWidget.java37
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/ItCoverageWidget.java32
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/ProjectFileCloudWidget.java38
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/SizeWidget.java27
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TechnicalDebtPyramidWidget.java32
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TimeMachineWidget.java47
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TimelineWidget.java40
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TreemapWidget.java40
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/WelcomeWidget.java34
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/WidgetConstants.java33
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/ActionPlansWidget.java36
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/IssueFilterWidget.java46
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/IssueTagCloudWidget.java42
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/IssuesWidget.java31
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/ProjectIssueFilterWidget.java46
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/package-info.java23
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsBubbleChartWidget.java48
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsCloudWidget.java45
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsHistogramWidget.java45
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsPieChartWidget.java46
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsTreemapWidget.java61
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterListWidget.java43
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/package-info.java23
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/package-info.java23
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/_complexity_chart.html.erb18
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/alerts.html.erb95
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/bubbleChart.html.erb88
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/complexity.html.erb115
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/coverage.html.erb156
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/custom_measures.html.erb36
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/debt_overview.erb33
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/description.html.erb90
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/documentation_comments_widget.html.erb63
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/duplications_widget.html.erb41
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/events.html.erb120
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/hotspots/hotspot_metric.html.erb85
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/action_plans.html.erb97
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/issue_filter.html.erb52
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/issue_tag_cloud.html.erb61
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/issues.html.erb205
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/project_issue_filter.html.erb63
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/it_coverage.html.erb213
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measure_filter_list.html.erb28
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_bubble_chart.html.erb68
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_cloud.html.erb59
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_histogram.html.erb62
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_pie_chart.html.erb64
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_treemap.html.erb67
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/project_file_cloud.html.erb76
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/size.html.erb195
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/technical_debt_pyramid.html.erb156
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/time_machine.html.erb130
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/timeline.html.erb193
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/treemap.html.erb85
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/welcome.html.erb1
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/charts/AbstractChartTest.java99
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/charts/DistributionAreaChartTest.java62
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/charts/DistributionBarChartTest.java89
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboardTest.java97
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/ProjectDefaultDashboardTest.java49
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/ProjectIssuesDashboardTest.java77
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/ProjectTimeMachineDashboardTest.java56
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/measurefilters/MyFavouritesFilterTest.java46
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/measurefilters/ProjectFilterTest.java45
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/widgets/CoreWidgetsTest.java111
-rw-r--r--plugins/sonar-core-plugin/src/test/resources/org/sonar/plugins/core/dashboards/ProjectIssuesDashboardTest/filters.xml33
90 files changed, 1 insertions, 5748 deletions
diff --git a/plugins/sonar-core-plugin/pom.xml b/plugins/sonar-core-plugin/pom.xml
index f81408953c1..3df82a92539 100644
--- a/plugins/sonar-core-plugin/pom.xml
+++ b/plugins/sonar-core-plugin/pom.xml
@@ -69,11 +69,6 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.reflections</groupId>
- <artifactId>reflections</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>org.dbunit</groupId>
<artifactId>dbunit</artifactId>
<scope>test</scope>
@@ -100,37 +95,9 @@
</dependencies>
<build>
- <testResources>
- <testResource>
- <directory>${basedir}/src/main/resources</directory>
- </testResource>
- <testResource>
- <directory>${basedir}/src/test/resources</directory>
- </testResource>
- </testResources>
-
<plugins>
<plugin>
<groupId>org.codehaus.sonar</groupId>
- <artifactId>sonar-dev-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>trim</id>
- <phase>process-resources</phase>
- <goals>
- <goal>trim</goal>
- </goals>
- <configuration>
- <directory>${project.build.outputDirectory}</directory>
- <includes>
- <include>**/*.erb</include>
- </includes>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.sonar</groupId>
<artifactId>sonar-packaging-maven-plugin</artifactId>
<configuration>
<pluginKey>core</pluginKey>
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/CorePlugin.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/CorePlugin.java
index 7a6fdb979a2..0b1883d954b 100644
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/CorePlugin.java
+++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/CorePlugin.java
@@ -20,21 +20,14 @@
package org.sonar.plugins.core;
import com.google.common.collect.ImmutableList;
+import java.util.List;
import org.sonar.api.CoreProperties;
import org.sonar.api.Properties;
import org.sonar.api.Property;
import org.sonar.api.PropertyType;
import org.sonar.api.SonarPlugin;
-import org.sonar.plugins.core.charts.DistributionAreaChart;
-import org.sonar.plugins.core.charts.DistributionBarChart;
-import org.sonar.plugins.core.dashboards.GlobalDefaultDashboard;
-import org.sonar.plugins.core.dashboards.ProjectDefaultDashboard;
-import org.sonar.plugins.core.dashboards.ProjectIssuesDashboard;
-import org.sonar.plugins.core.dashboards.ProjectTimeMachineDashboard;
import org.sonar.plugins.core.issue.CountFalsePositivesDecorator;
import org.sonar.plugins.core.issue.CountUnresolvedIssuesDecorator;
-import org.sonar.plugins.core.measurefilters.MyFavouritesFilter;
-import org.sonar.plugins.core.measurefilters.ProjectFilter;
import org.sonar.plugins.core.notifications.alerts.NewAlerts;
import org.sonar.plugins.core.security.ApplyProjectRolesDecorator;
import org.sonar.plugins.core.sensors.BranchCoverageDecorator;
@@ -57,38 +50,6 @@ import org.sonar.plugins.core.timemachine.NewItCoverageFileAnalyzer;
import org.sonar.plugins.core.timemachine.NewOverallCoverageFileAnalyzer;
import org.sonar.plugins.core.timemachine.TimeMachineConfigurationPersister;
import org.sonar.plugins.core.timemachine.VariationDecorator;
-import org.sonar.plugins.core.widgets.AlertsWidget;
-import org.sonar.plugins.core.widgets.BubbleChartWidget;
-import org.sonar.plugins.core.widgets.ComplexityWidget;
-import org.sonar.plugins.core.widgets.CoverageWidget;
-import org.sonar.plugins.core.widgets.CustomMeasuresWidget;
-import org.sonar.plugins.core.widgets.DebtOverviewWidget;
-import org.sonar.plugins.core.widgets.DescriptionWidget;
-import org.sonar.plugins.core.widgets.DocumentationCommentsWidget;
-import org.sonar.plugins.core.widgets.DuplicationsWidget;
-import org.sonar.plugins.core.widgets.EventsWidget;
-import org.sonar.plugins.core.widgets.HotspotMetricWidget;
-import org.sonar.plugins.core.widgets.ItCoverageWidget;
-import org.sonar.plugins.core.widgets.ProjectFileCloudWidget;
-import org.sonar.plugins.core.widgets.SizeWidget;
-import org.sonar.plugins.core.widgets.TechnicalDebtPyramidWidget;
-import org.sonar.plugins.core.widgets.TimeMachineWidget;
-import org.sonar.plugins.core.widgets.TimelineWidget;
-import org.sonar.plugins.core.widgets.TreemapWidget;
-import org.sonar.plugins.core.widgets.WelcomeWidget;
-import org.sonar.plugins.core.widgets.issues.ActionPlansWidget;
-import org.sonar.plugins.core.widgets.issues.IssueFilterWidget;
-import org.sonar.plugins.core.widgets.issues.IssueTagCloudWidget;
-import org.sonar.plugins.core.widgets.issues.IssuesWidget;
-import org.sonar.plugins.core.widgets.issues.ProjectIssueFilterWidget;
-import org.sonar.plugins.core.widgets.measures.MeasureFilterAsBubbleChartWidget;
-import org.sonar.plugins.core.widgets.measures.MeasureFilterAsCloudWidget;
-import org.sonar.plugins.core.widgets.measures.MeasureFilterAsHistogramWidget;
-import org.sonar.plugins.core.widgets.measures.MeasureFilterAsPieChartWidget;
-import org.sonar.plugins.core.widgets.measures.MeasureFilterAsTreemapWidget;
-import org.sonar.plugins.core.widgets.measures.MeasureFilterListWidget;
-
-import java.util.List;
@Properties({
@Property(
@@ -258,55 +219,9 @@ public final class CorePlugin extends SonarPlugin {
DefaultResourceTypes.class,
UserManagedMetrics.class,
- // measure filters
- ProjectFilter.class,
- MyFavouritesFilter.class,
-
- // widgets
- AlertsWidget.class,
- CoverageWidget.class,
- ItCoverageWidget.class,
- DescriptionWidget.class,
- ComplexityWidget.class,
- IssuesWidget.class,
- SizeWidget.class,
- EventsWidget.class,
- CustomMeasuresWidget.class,
- TimelineWidget.class,
- BubbleChartWidget.class,
- TimeMachineWidget.class,
- HotspotMetricWidget.class,
- TreemapWidget.class,
- MeasureFilterListWidget.class,
- MeasureFilterAsTreemapWidget.class,
- WelcomeWidget.class,
- DocumentationCommentsWidget.class,
- DuplicationsWidget.class,
- TechnicalDebtPyramidWidget.class,
- MeasureFilterAsPieChartWidget.class,
- MeasureFilterAsCloudWidget.class,
- MeasureFilterAsHistogramWidget.class,
- MeasureFilterAsBubbleChartWidget.class,
- ProjectFileCloudWidget.class,
- DebtOverviewWidget.class,
-
- // dashboards
- ProjectDefaultDashboard.class,
- ProjectIssuesDashboard.class,
- ProjectTimeMachineDashboard.class,
- GlobalDefaultDashboard.class,
-
- // chart
- DistributionBarChart.class,
- DistributionAreaChart.class,
-
// issues
CountUnresolvedIssuesDecorator.class,
CountFalsePositivesDecorator.class,
- ActionPlansWidget.class,
- IssueFilterWidget.class,
- ProjectIssueFilterWidget.class,
- IssueTagCloudWidget.class,
// batch
UnitTestDecorator.class,
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/charts/DistributionAreaChart.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/charts/DistributionAreaChart.java
deleted file mode 100644
index 3687c85df9a..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/charts/DistributionAreaChart.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.charts;
-
-import org.apache.commons.lang.StringUtils;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.Plot;
-import org.jfree.chart.renderer.category.AreaRenderer;
-import org.jfree.data.category.DefaultCategoryDataset;
-import org.sonar.api.charts.AbstractChart;
-import org.sonar.api.charts.ChartParameters;
-
-import java.text.NumberFormat;
-
-public class DistributionAreaChart extends AbstractChart {
- private static final String PARAM_COLORS = "c";
-
- @Override
- public String getKey() {
- return "distarea";
- }
-
- @Override
- protected Plot getPlot(ChartParameters params) {
- DefaultCategoryDataset dataset = createDataset(params);
-
- CategoryAxis domainAxis = new CategoryAxis();
- domainAxis.setCategoryMargin(0.0);
- domainAxis.setLowerMargin(0.0);
- domainAxis.setUpperMargin(0.0);
-
- NumberAxis rangeAxis = new NumberAxis();
- rangeAxis.setNumberFormatOverride(NumberFormat.getIntegerInstance(params.getLocale()));
- rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
-
- AreaRenderer renderer = new AreaRenderer();
- CategoryPlot plot = new CategoryPlot(dataset, domainAxis, rangeAxis, renderer);
- plot.setForegroundAlpha(0.5f);
- plot.setDomainGridlinesVisible(true);
- configureColors(dataset, plot, params.getValues(PARAM_COLORS, ","));
- return plot;
- }
-
- private DefaultCategoryDataset createDataset(ChartParameters params) {
- DefaultCategoryDataset dataset = new DefaultCategoryDataset();
-
- String[] series = params.getValues("v", "|", true);
- int index = 0;
- while (index < series.length) {
- String[] pairs = StringUtils.split(series[index], ";");
- if (pairs.length == 0) {
- dataset.addValue((Number)0.0, index, "0");
-
- } else {
- for (String pair : pairs) {
- String[] keyValue = StringUtils.split(pair, "=");
- double val = Double.parseDouble(keyValue[1]);
- dataset.addValue((Number) val, index, keyValue[0]);
- }
- }
- index++;
- }
- return dataset;
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/charts/DistributionBarChart.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/charts/DistributionBarChart.java
deleted file mode 100644
index ef021132555..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/charts/DistributionBarChart.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.charts;
-
-import org.apache.commons.lang.StringUtils;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.Plot;
-import org.jfree.chart.renderer.category.BarRenderer;
-import org.jfree.data.category.DefaultCategoryDataset;
-import org.sonar.api.charts.AbstractChart;
-import org.sonar.api.charts.ChartParameters;
-
-import java.awt.*;
-import java.text.DecimalFormat;
-
-public class DistributionBarChart extends AbstractChart {
-
-
- public static final String PARAM_VALUES = "v";
- public static final String PARAM_COLORS = "c";
- public static final String PARAM_Y_SUFFIX = "ysuf";
- public static final String PARAM_X_SUFFIX = "xsuf";
- public static final String PARAM_FONT_SIZE = "fs";
-
- @Override
- public String getKey() {
- return "distbar";
- }
-
- @Override
- public Plot getPlot(ChartParameters params) {
- CategoryPlot plot = generateJFreeChart(params);
- plot.setOutlinePaint(OUTLINE_COLOR);
- plot.setDomainGridlinePaint(GRID_COLOR);
- plot.setRangeGridlinePaint(GRID_COLOR);
- return plot;
- }
-
- private CategoryPlot generateJFreeChart(ChartParameters params) {
- DefaultCategoryDataset dataset = new DefaultCategoryDataset();
- CategoryPlot plot = new CategoryPlot();
-
- Font font = getFont(params.getValue(PARAM_FONT_SIZE));
- configureDomainAxis(plot, font);
- configureRangeAxis(plot, params.getValue(PARAM_Y_SUFFIX, "", true), font);
- configureRenderer(plot);
- configureValues(dataset, params.getValues(PARAM_VALUES, "|", true), params.getValue(PARAM_X_SUFFIX, "", true));
- configureColors(dataset, plot, params.getValues(PARAM_COLORS, ","));
-
- plot.setDataset(dataset);
- return plot;
- }
-
- static void configureValues(DefaultCategoryDataset dataset, String[] series, String xSuffix) {
- int index = 0;
- while (index < series.length) {
- String[] pairs = StringUtils.split(series[index], ";");
- if (pairs.length == 0) {
- dataset.addValue((Number) 0.0, index, "0");
-
- } else {
- for (String pair : pairs) {
- String[] keyValue = StringUtils.split(pair, "=");
- double val = Double.parseDouble(keyValue[1]);
- dataset.addValue((Number) val, index, keyValue[0] + xSuffix);
- }
- }
- index++;
- }
-
- }
-
- private void configureRenderer(CategoryPlot plot) {
- BarRenderer renderer = new BarRenderer();
- renderer.setDrawBarOutline(true);
- renderer.setSeriesItemLabelsVisible(0, true);
- renderer.setItemMargin(0);
- plot.setRenderer(renderer);
- }
-
- private void configureDomainAxis(CategoryPlot plot, Font font) {
- CategoryAxis categoryAxis = new CategoryAxis();
- categoryAxis.setTickMarksVisible(true);
- categoryAxis.setTickLabelFont(font);
- categoryAxis.setTickLabelPaint(OUTLINE_COLOR);
- plot.setDomainAxis(categoryAxis);
- plot.setDomainGridlinesVisible(false);
- }
-
- private Font getFont(String fontSize) {
- int size = FONT_SIZE;
- if (!StringUtils.isBlank(fontSize)) {
- size = Integer.parseInt(fontSize);
- }
- return new Font("SansSerif", Font.PLAIN, size);
- }
-
- private void configureRangeAxis(CategoryPlot plot, String valueLabelSuffix, Font font) {
- NumberAxis numberAxis = new NumberAxis();
- numberAxis.setUpperMargin(0.3);
- numberAxis.setTickLabelFont(font);
- numberAxis.setTickLabelPaint(OUTLINE_COLOR);
- String suffix = "";
- if (valueLabelSuffix != null && !"".equals(valueLabelSuffix)) {
- suffix = new StringBuilder().append("'").append(valueLabelSuffix).append("'").toString();
- }
- numberAxis.setNumberFormatOverride(new DecimalFormat("0" + suffix));
- numberAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
- plot.setRangeAxis(numberAxis);
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/charts/package-info.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/charts/package-info.java
deleted file mode 100644
index 6d9fc80d519..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/charts/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-@ParametersAreNonnullByDefault
-package org.sonar.plugins.core.charts;
-
-import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboard.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboard.java
deleted file mode 100644
index 5e204b18537..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboard.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.dashboards;
-
-import org.sonar.api.web.Dashboard;
-import org.sonar.api.web.DashboardLayout;
-import org.sonar.api.web.DashboardTemplate;
-import org.sonar.core.measure.db.MeasureFilterDao;
-import org.sonar.core.measure.db.MeasureFilterDto;
-import org.sonar.plugins.core.measurefilters.MyFavouritesFilter;
-import org.sonar.plugins.core.measurefilters.ProjectFilter;
-import org.sonar.plugins.core.widgets.WelcomeWidget;
-import org.sonar.plugins.core.widgets.measures.MeasureFilterAsTreemapWidget;
-import org.sonar.plugins.core.widgets.measures.MeasureFilterListWidget;
-
-/**
- * Projects global dashboard for Sonar
- *
- * @since 3.1
- */
-public final class GlobalDefaultDashboard extends DashboardTemplate {
-
- private MeasureFilterDao filterDao;
-
- public GlobalDefaultDashboard(MeasureFilterDao filterDao) {
- this.filterDao = filterDao;
- }
-
- @Override
- public Dashboard createDashboard() {
- Dashboard dashboard = Dashboard.create()
- .setGlobal(true)
- .setLayout(DashboardLayout.TWO_COLUMNS);
-
- dashboard.addWidget(WelcomeWidget.ID, 1);
- addMyFavouritesWidget(dashboard);
- addProjectsWidgets(dashboard);
-
- return dashboard;
- }
-
- private void addMyFavouritesWidget(Dashboard dashboard) {
- MeasureFilterDto filter = findSystemFilter(MyFavouritesFilter.NAME);
- if (filter != null) {
- dashboard
- .addWidget(MeasureFilterListWidget.ID, 1)
- .setProperty(MeasureFilterListWidget.FILTER_PROPERTY, filter.getId().toString())
- .setProperty(MeasureFilterListWidget.PAGE_SIZE_PROPERTY, "50");
- }
- }
-
- private void addProjectsWidgets(Dashboard dashboard) {
- MeasureFilterDto filter = findSystemFilter(ProjectFilter.NAME);
- if (filter != null) {
- dashboard
- .addWidget(MeasureFilterListWidget.ID, 2)
- .setProperty(MeasureFilterListWidget.FILTER_PROPERTY, filter.getId().toString())
- .setProperty(MeasureFilterListWidget.PAGE_SIZE_PROPERTY, "20");
-
- dashboard
- .addWidget(MeasureFilterAsTreemapWidget.ID, 2)
- .setProperty(MeasureFilterListWidget.FILTER_PROPERTY, filter.getId().toString())
- .setProperty(MeasureFilterAsTreemapWidget.SIZE_METRIC_PROPERTY, "ncloc")
- .setProperty(MeasureFilterAsTreemapWidget.COLOR_METRIC_PROPERTY, "coverage");
- }
- }
-
- @Override
- public String getName() {
- return "Home";
- }
-
- private MeasureFilterDto findSystemFilter(String name) {
- return filterDao.findSystemFilterByName(name);
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/ProjectDefaultDashboard.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/ProjectDefaultDashboard.java
deleted file mode 100644
index 61d88fa3f59..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/ProjectDefaultDashboard.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.dashboards;
-
-import org.sonar.api.web.Dashboard;
-import org.sonar.api.web.DashboardLayout;
-import org.sonar.api.web.DashboardTemplate;
-
-/**
- * Default dashboard
- *
- * @since 2.13
- */
-public final class ProjectDefaultDashboard extends DashboardTemplate {
-
- @Override
- public String getName() {
- return "Dashboard";
- }
-
- @Override
- public Dashboard createDashboard() {
- Dashboard dashboard = Dashboard.create();
- dashboard.setLayout(DashboardLayout.TWO_COLUMNS);
- addFirstColumn(dashboard);
- addSecondColumn(dashboard);
- return dashboard;
- }
-
- private void addFirstColumn(Dashboard dashboard) {
- dashboard.addWidget("size", 1);
- dashboard.addWidget("duplications", 1);
- dashboard.addWidget("complexity", 1);
- dashboard.addWidget("events", 1);
- dashboard.addWidget("description", 1);
- }
-
- private void addSecondColumn(Dashboard dashboard) {
- dashboard.addWidget("debt_overview", 2);
- dashboard.addWidget("rules", 2);
- dashboard.addWidget("alerts", 2);
- dashboard.addWidget("code_coverage", 2);
- }
-
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/ProjectIssuesDashboard.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/ProjectIssuesDashboard.java
deleted file mode 100644
index 810211751ad..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/ProjectIssuesDashboard.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.dashboards;
-
-import com.google.common.base.Preconditions;
-import org.sonar.api.web.Dashboard;
-import org.sonar.api.web.DashboardLayout;
-import org.sonar.api.web.DashboardTemplate;
-import org.sonar.core.issue.db.IssueFilterDao;
-import org.sonar.core.issue.db.IssueFilterDto;
-import org.sonar.plugins.core.widgets.issues.ProjectIssueFilterWidget;
-
-/**
- * Issues dashboard for Sonar
- *
- * @since 3.6
- */
-public final class ProjectIssuesDashboard extends DashboardTemplate {
-
- private final IssueFilterDao issueFilterDao;
-
- public ProjectIssuesDashboard(IssueFilterDao issueFilterDao) {
- this.issueFilterDao = issueFilterDao;
- }
-
- @Override
- public String getName() {
- return "Issues";
- }
-
- @Override
- public Dashboard createDashboard() {
- Dashboard dashboard = Dashboard.create();
- dashboard.setLayout(DashboardLayout.TWO_COLUMNS);
-
- IssueFilterDto unresolvedIssues = getIssueFilterByName("Unresolved Issues");
- IssueFilterDto hiddenDebt = getIssueFilterByName("False Positive and Won't Fix Issues");
- IssueFilterDto myUnresolvedIssues = getIssueFilterByName("My Unresolved Issues");
-
- addFirstColumn(dashboard, unresolvedIssues);
- addSecondColumn(dashboard, unresolvedIssues, hiddenDebt, myUnresolvedIssues);
- return dashboard;
- }
-
- private IssueFilterDto getIssueFilterByName(String name) {
- IssueFilterDto filter = issueFilterDao.selectProvidedFilterByName(name);
- Preconditions.checkState(filter != null, String.format("Could not find a provided issue filter with name '%s'", name));
- return filter;
- }
-
- private void addFirstColumn(Dashboard dashboard, IssueFilterDto unresolvedIssues) {
- // Unresolved issues by status
- dashboard.addWidget(ProjectIssueFilterWidget.ID, 1)
- .setProperty(ProjectIssueFilterWidget.FILTER_PROPERTY, Long.toString(unresolvedIssues.getId()))
- .setProperty(ProjectIssueFilterWidget.DISTRIBUTION_AXIS_PROPERTY, "statuses");
- // Action plans
- dashboard.addWidget("action_plans", 1);
- }
-
- private void addSecondColumn(Dashboard dashboard, IssueFilterDto unresolvedIssues, IssueFilterDto hiddenDebt, IssueFilterDto myUnresolvedIssues) {
- // Unresolved issues by assignee
- dashboard.addWidget(ProjectIssueFilterWidget.ID, 2)
- .setProperty(ProjectIssueFilterWidget.FILTER_PROPERTY, Long.toString(unresolvedIssues.getId()))
- .setProperty(ProjectIssueFilterWidget.DISTRIBUTION_AXIS_PROPERTY, "assignees");
- // My unresolved issues
- dashboard.addWidget(ProjectIssueFilterWidget.ID, 2)
- .setProperty("filter", Long.toString(myUnresolvedIssues.getId()));
- // False positive and won't fix issues by resolution
- dashboard.addWidget(ProjectIssueFilterWidget.ID, 2)
- .setProperty(ProjectIssueFilterWidget.FILTER_PROPERTY, Long.toString(hiddenDebt.getId()))
- .setProperty(ProjectIssueFilterWidget.DISTRIBUTION_AXIS_PROPERTY, "resolutions");
- }
-
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/ProjectTimeMachineDashboard.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/ProjectTimeMachineDashboard.java
deleted file mode 100644
index e0024db1509..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/ProjectTimeMachineDashboard.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.dashboards;
-
-import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.web.Dashboard;
-import org.sonar.api.web.Dashboard.Widget;
-import org.sonar.api.web.DashboardLayout;
-import org.sonar.api.web.DashboardTemplate;
-
-/**
- * Time Machine dashboard for Sonar
- *
- * @since 3.0
- */
-public final class ProjectTimeMachineDashboard extends DashboardTemplate {
-
- private static final String METRIC1 = "metric1";
- private static final String METRIC2 = "metric2";
- private static final String METRIC3 = "metric3";
- private static final String METRIC4 = "metric4";
- private static final String METRIC5 = "metric5";
- private static final String METRIC6 = "metric6";
- private static final String METRIC7 = "metric7";
- private static final String METRIC8 = "metric8";
-
- @Override
- public String getName() {
- return "TimeMachine";
- }
-
- @Override
- public Dashboard createDashboard() {
- Dashboard dashboard = Dashboard.create();
- dashboard.setLayout(DashboardLayout.TWO_COLUMNS);
- addFirstColumn(dashboard);
- addSecondColumn(dashboard);
- return dashboard;
- }
-
- private void addFirstColumn(Dashboard dashboard) {
- Widget timelineWidget = dashboard.addWidget("timeline", 1);
- timelineWidget.setProperty(METRIC1, CoreMetrics.COMPLEXITY_KEY);
- timelineWidget.setProperty(METRIC2, CoreMetrics.TECHNICAL_DEBT_KEY);
- timelineWidget.setProperty(METRIC3, CoreMetrics.COVERAGE_KEY);
-
- Widget sizeTimeMachineWidget = addTimeMachineWidgetOnFirstColumn(dashboard);
- sizeTimeMachineWidget.setProperty(METRIC1, CoreMetrics.NCLOC_KEY);
- sizeTimeMachineWidget.setProperty(METRIC2, CoreMetrics.LINES_KEY);
- sizeTimeMachineWidget.setProperty(METRIC3, CoreMetrics.STATEMENTS_KEY);
- sizeTimeMachineWidget.setProperty(METRIC4, CoreMetrics.FILES_KEY);
- sizeTimeMachineWidget.setProperty(METRIC5, CoreMetrics.CLASSES_KEY);
- sizeTimeMachineWidget.setProperty(METRIC6, CoreMetrics.FUNCTIONS_KEY);
- sizeTimeMachineWidget.setProperty(METRIC7, CoreMetrics.ACCESSORS_KEY);
-
- Widget commentsTimeMachineWidget = addTimeMachineWidgetOnFirstColumn(dashboard);
- commentsTimeMachineWidget.setProperty(METRIC1, CoreMetrics.COMMENT_LINES_DENSITY_KEY);
- commentsTimeMachineWidget.setProperty(METRIC2, CoreMetrics.COMMENT_LINES_KEY);
- commentsTimeMachineWidget.setProperty(METRIC3, CoreMetrics.PUBLIC_DOCUMENTED_API_DENSITY_KEY);
- commentsTimeMachineWidget.setProperty(METRIC4, CoreMetrics.PUBLIC_UNDOCUMENTED_API_KEY);
-
- Widget duplicationTimeMachineWidget = addTimeMachineWidgetOnFirstColumn(dashboard);
- duplicationTimeMachineWidget.setProperty(METRIC1, CoreMetrics.DUPLICATED_LINES_DENSITY_KEY);
- duplicationTimeMachineWidget.setProperty(METRIC2, CoreMetrics.DUPLICATED_LINES_KEY);
- duplicationTimeMachineWidget.setProperty(METRIC3, CoreMetrics.DUPLICATED_BLOCKS_KEY);
- duplicationTimeMachineWidget.setProperty(METRIC4, CoreMetrics.DUPLICATED_FILES_KEY);
- }
-
- private void addSecondColumn(Dashboard dashboard) {
- Widget rulesTimeMachineWidget = addTimeMachineWidgetOnSecondColumn(dashboard);
- rulesTimeMachineWidget.setProperty(METRIC1, CoreMetrics.VIOLATIONS_KEY);
- rulesTimeMachineWidget.setProperty(METRIC2, CoreMetrics.BLOCKER_VIOLATIONS_KEY);
- rulesTimeMachineWidget.setProperty(METRIC3, CoreMetrics.CRITICAL_VIOLATIONS_KEY);
- rulesTimeMachineWidget.setProperty(METRIC4, CoreMetrics.MAJOR_VIOLATIONS_KEY);
- rulesTimeMachineWidget.setProperty(METRIC5, CoreMetrics.MINOR_VIOLATIONS_KEY);
- rulesTimeMachineWidget.setProperty(METRIC6, CoreMetrics.INFO_VIOLATIONS_KEY);
- rulesTimeMachineWidget.setProperty(METRIC7, CoreMetrics.TECHNICAL_DEBT_KEY);
-
- Widget complexityTimeMachineWidget = addTimeMachineWidgetOnSecondColumn(dashboard);
- complexityTimeMachineWidget.setProperty(METRIC1, CoreMetrics.COMPLEXITY_KEY);
- complexityTimeMachineWidget.setProperty(METRIC2, CoreMetrics.FUNCTION_COMPLEXITY_KEY);
- complexityTimeMachineWidget.setProperty(METRIC3, CoreMetrics.CLASS_COMPLEXITY_KEY);
- complexityTimeMachineWidget.setProperty(METRIC4, CoreMetrics.FILE_COMPLEXITY_KEY);
-
- Widget testsTimeMachineWidget = addTimeMachineWidgetOnSecondColumn(dashboard);
- testsTimeMachineWidget.setProperty(METRIC1, CoreMetrics.COVERAGE_KEY);
- testsTimeMachineWidget.setProperty(METRIC2, CoreMetrics.LINE_COVERAGE_KEY);
- testsTimeMachineWidget.setProperty(METRIC3, CoreMetrics.BRANCH_COVERAGE_KEY);
- testsTimeMachineWidget.setProperty(METRIC4, CoreMetrics.TEST_SUCCESS_DENSITY_KEY);
- testsTimeMachineWidget.setProperty(METRIC5, CoreMetrics.TEST_FAILURES_KEY);
- testsTimeMachineWidget.setProperty(METRIC6, CoreMetrics.TEST_ERRORS_KEY);
- testsTimeMachineWidget.setProperty(METRIC7, CoreMetrics.TESTS_KEY);
- testsTimeMachineWidget.setProperty(METRIC8, CoreMetrics.TEST_EXECUTION_TIME_KEY);
- }
-
- private Widget addTimeMachineWidgetOnFirstColumn(Dashboard dashboard) {
- return addTimeMachineWidget(dashboard, 1);
- }
-
- private Widget addTimeMachineWidgetOnSecondColumn(Dashboard dashboard) {
- return addTimeMachineWidget(dashboard, 2);
- }
-
- private Widget addTimeMachineWidget(Dashboard dashboard, int columnIndex) {
- Widget widget = dashboard.addWidget("time_machine", columnIndex);
- widget.setProperty("displaySparkLine", "true");
- return widget;
- }
-
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/package-info.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/package-info.java
deleted file mode 100644
index d901586ae25..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-@ParametersAreNonnullByDefault
-package org.sonar.plugins.core.dashboards;
-
-import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/measurefilters/MyFavouritesFilter.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/measurefilters/MyFavouritesFilter.java
deleted file mode 100644
index f5fb03feb20..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/measurefilters/MyFavouritesFilter.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.measurefilters;
-
-import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.web.Filter;
-import org.sonar.api.web.FilterColumn;
-import org.sonar.api.web.FilterTemplate;
-
-/**
- * Default filter for looking for user favourite resources.
- *
- * @since 3.1
- */
-public class MyFavouritesFilter extends FilterTemplate {
- public static final String NAME = "My favourites";
-
- @Override
- public String getName() {
- return NAME;
- }
-
- @Override
- public Filter createFilter() {
- return Filter.create()
- .setDisplayAs(Filter.LIST)
- .setFavouritesOnly(true)
- .add(FilterColumn.create("metric", CoreMetrics.ALERT_STATUS_KEY, FilterColumn.DESC, false))
- .add(FilterColumn.create("name", null, FilterColumn.ASC, false))
- .add(FilterColumn.create("date", null, FilterColumn.DESC, false));
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/measurefilters/ProjectFilter.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/measurefilters/ProjectFilter.java
deleted file mode 100644
index 19e33ac10dd..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/measurefilters/ProjectFilter.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.measurefilters;
-
-import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.resources.Qualifiers;
-import org.sonar.api.web.Criterion;
-import org.sonar.api.web.Filter;
-import org.sonar.api.web.FilterColumn;
-import org.sonar.api.web.FilterTemplate;
-
-/**
- * Default projects filter.
- *
- * @since 3.1
- */
-public class ProjectFilter extends FilterTemplate {
- public static final String NAME = "Projects";
-
- @Override
- public String getName() {
- return NAME;
- }
-
- @Override
- public Filter createFilter() {
- return Filter.create()
- .setDisplayAs(Filter.LIST)
- .add(Criterion.createForQualifier(Qualifiers.PROJECT))
- .add(FilterColumn.create("metric", CoreMetrics.ALERT_STATUS_KEY, FilterColumn.DESC, false))
- .add(FilterColumn.create("name", null, FilterColumn.ASC, false))
- .add(FilterColumn.create("version", null, FilterColumn.DESC, false))
- .add(FilterColumn.create("metric", CoreMetrics.NCLOC_KEY, FilterColumn.DESC, false))
- .add(FilterColumn.create("metric", CoreMetrics.TECHNICAL_DEBT_KEY, FilterColumn.DESC, false))
- .add(FilterColumn.create("date", null, FilterColumn.DESC, false));
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/measurefilters/package-info.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/measurefilters/package-info.java
deleted file mode 100644
index 4700c0a28ef..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/measurefilters/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-@javax.annotation.ParametersAreNonnullByDefault
-package org.sonar.plugins.core.measurefilters;
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/AlertsWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/AlertsWidget.java
deleted file mode 100644
index c794e898573..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/AlertsWidget.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-import org.sonar.api.web.*;
-
-@WidgetProperties({
- @WidgetProperty(key = "show_ok", type = WidgetPropertyType.BOOLEAN, defaultValue = "false"),
-})
-@WidgetLayout(WidgetLayoutType.NONE)
-public class AlertsWidget extends CoreWidget {
-
- public AlertsWidget() {
- super("alerts", "Alerts", "/org/sonar/plugins/core/widgets/alerts.html.erb");
- }
-
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/BubbleChartWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/BubbleChartWidget.java
deleted file mode 100644
index f583d6e24ea..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/BubbleChartWidget.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.web.WidgetProperties;
-import org.sonar.api.web.WidgetProperty;
-import org.sonar.api.web.WidgetPropertyType;
-
-@WidgetProperties({
- @WidgetProperty(key = "chartTitle", type = WidgetPropertyType.STRING),
- @WidgetProperty(key = "chartHeight", type = WidgetPropertyType.INTEGER, defaultValue = "300"),
- @WidgetProperty(key = "xMetric", type = WidgetPropertyType.METRIC, defaultValue = CoreMetrics.NCLOC_KEY, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "yMetric", type = WidgetPropertyType.METRIC, defaultValue = CoreMetrics.VIOLATIONS_KEY, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "sizeMetric", type = WidgetPropertyType.METRIC, defaultValue = CoreMetrics.TECHNICAL_DEBT_KEY, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "xLogarithmic", type = WidgetPropertyType.BOOLEAN),
- @WidgetProperty(key = "yLogarithmic", type = WidgetPropertyType.BOOLEAN)
-})
-public class BubbleChartWidget extends CoreWidget {
- public BubbleChartWidget() {
- super("bubble_chart", "Project File Bubble Chart", "/org/sonar/plugins/core/widgets/bubbleChart.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/ComplexityWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/ComplexityWidget.java
deleted file mode 100644
index d04a79d5249..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/ComplexityWidget.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-public class ComplexityWidget extends CoreWidget {
-
- public ComplexityWidget() {
- super("complexity", "Complexity", "/org/sonar/plugins/core/widgets/complexity.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CoreWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CoreWidget.java
deleted file mode 100644
index f01a23a57cc..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CoreWidget.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-import org.sonar.api.web.AbstractRubyTemplate;
-import org.sonar.api.web.RubyRailsWidget;
-
-public abstract class CoreWidget extends AbstractRubyTemplate implements RubyRailsWidget {
- private String id, title, templatePath;
-
- protected CoreWidget(String id, String title, String templatePath) {
- this.id = id;
- this.title = title;
- this.templatePath = templatePath;
- }
-
- @Override
- public String getId() {
- return id;
- }
-
- @Override
- public String getTitle() {
- return title;
- }
-
- @Override
- protected String getTemplatePath() {
- return templatePath;
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CoverageWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CoverageWidget.java
deleted file mode 100644
index 273487dbca5..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CoverageWidget.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-import org.sonar.api.web.UserRole;
-import org.sonar.api.web.WidgetCategory;
-
-@WidgetCategory("Tests")
-@UserRole(UserRole.USER)
-public class CoverageWidget extends CoreWidget {
-
- public CoverageWidget() {
- super("code_coverage", "Code coverage", "/org/sonar/plugins/core/widgets/coverage.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CustomMeasuresWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CustomMeasuresWidget.java
deleted file mode 100644
index d8b149c8422..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CustomMeasuresWidget.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-import org.sonar.api.web.WidgetProperties;
-import org.sonar.api.web.WidgetProperty;
-import org.sonar.api.web.WidgetPropertyType;
-
-@WidgetProperties({
- @WidgetProperty(key = "metric1", type = WidgetPropertyType.METRIC),
- @WidgetProperty(key = "metric2", type = WidgetPropertyType.METRIC),
- @WidgetProperty(key = "metric3", type = WidgetPropertyType.METRIC),
- @WidgetProperty(key = "metric4", type = WidgetPropertyType.METRIC),
- @WidgetProperty(key = "metric5", type = WidgetPropertyType.METRIC),
- @WidgetProperty(key = "metric6", type = WidgetPropertyType.METRIC),
- @WidgetProperty(key = "metric7", type = WidgetPropertyType.METRIC),
- @WidgetProperty(key = "metric8", type = WidgetPropertyType.METRIC),
- @WidgetProperty(key = "metric9", type = WidgetPropertyType.METRIC),
- @WidgetProperty(key = "metric10", type = WidgetPropertyType.METRIC)
-})
-public class CustomMeasuresWidget extends CoreWidget {
- public CustomMeasuresWidget() {
- super("custom_measures", "Custom Measures", "/org/sonar/plugins/core/widgets/custom_measures.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DebtOverviewWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DebtOverviewWidget.java
deleted file mode 100644
index 9af75bbbdd3..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DebtOverviewWidget.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-package org.sonar.plugins.core.widgets;
-
-import org.sonar.api.web.UserRole;
-import org.sonar.api.web.WidgetCategory;
-
-@UserRole(UserRole.USER)
-@WidgetCategory("Technical Debt")
-public final class DebtOverviewWidget extends CoreWidget {
-
- public DebtOverviewWidget() {
- super("debt_overview", "Technical Debt Overview", "/org/sonar/plugins/core/widgets/debt_overview.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DescriptionWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DescriptionWidget.java
deleted file mode 100644
index 89baad496c4..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DescriptionWidget.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-import org.sonar.api.web.WidgetLayout;
-import org.sonar.api.web.WidgetLayoutType;
-
-@WidgetLayout(WidgetLayoutType.NONE)
-public class DescriptionWidget extends CoreWidget {
-
- public DescriptionWidget() {
- super("description", "Description", "/org/sonar/plugins/core/widgets/description.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DocumentationCommentsWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DocumentationCommentsWidget.java
deleted file mode 100644
index 38a6a50a2a4..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DocumentationCommentsWidget.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-
-public class DocumentationCommentsWidget extends CoreWidget {
-
- public DocumentationCommentsWidget() {
- super("documentation_comments", "Documentation Metrics", "/org/sonar/plugins/core/widgets/documentation_comments_widget.html.erb");
- }
-
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DuplicationsWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DuplicationsWidget.java
deleted file mode 100644
index 30371c07a2b..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/DuplicationsWidget.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-/**
- * @author Patroklos PAPAPETROU
- */
-
-public class DuplicationsWidget extends CoreWidget {
-
- public DuplicationsWidget() {
- super("duplications", "Duplications", "/org/sonar/plugins/core/widgets/duplications_widget.html.erb");
- }
-
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/EventsWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/EventsWidget.java
deleted file mode 100644
index 8cf081d045b..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/EventsWidget.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-public class EventsWidget extends CoreWidget {
-
- public EventsWidget() {
- super("events", "Events", "/org/sonar/plugins/core/widgets/events.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/HotspotMetricWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/HotspotMetricWidget.java
deleted file mode 100644
index 11986e6f558..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/HotspotMetricWidget.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-import org.sonar.api.web.WidgetCategory;
-import org.sonar.api.web.WidgetProperties;
-import org.sonar.api.web.WidgetProperty;
-import org.sonar.api.web.WidgetPropertyType;
-
-@WidgetCategory({ "Hotspots" })
-@WidgetProperties({
- @WidgetProperty(key = "title", type = WidgetPropertyType.STRING),
- @WidgetProperty(key = "metric", type = WidgetPropertyType.METRIC, defaultValue = "ncloc", options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "numberOfLines", type = WidgetPropertyType.INTEGER, defaultValue = "5")
-})
-public class HotspotMetricWidget extends CoreWidget {
- public HotspotMetricWidget() {
- super("hotspot_metric", "Metric hotspot", "/org/sonar/plugins/core/widgets/hotspots/hotspot_metric.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/ItCoverageWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/ItCoverageWidget.java
deleted file mode 100644
index 98f438751c0..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/ItCoverageWidget.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-import org.sonar.api.web.UserRole;
-import org.sonar.api.web.WidgetCategory;
-
-@WidgetCategory("Tests")
-@UserRole(UserRole.USER)
-public class ItCoverageWidget extends CoreWidget {
-
- public ItCoverageWidget() {
- super("it-coverage", "Integration Test Coverage", "/org/sonar/plugins/core/widgets/it_coverage.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/ProjectFileCloudWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/ProjectFileCloudWidget.java
deleted file mode 100644
index f712e68b0a1..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/ProjectFileCloudWidget.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-package org.sonar.plugins.core.widgets;
-
-import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.web.WidgetProperties;
-import org.sonar.api.web.WidgetProperty;
-import org.sonar.api.web.WidgetPropertyType;
-
-@WidgetProperties({
- @WidgetProperty(key = "chartTitle", type = WidgetPropertyType.STRING),
- @WidgetProperty(key = "colorMetric", type = WidgetPropertyType.METRIC, defaultValue = CoreMetrics.COVERAGE_KEY, options = "type:PERCENT"),
- @WidgetProperty(key = "sizeMetric", type = WidgetPropertyType.METRIC, defaultValue = CoreMetrics.COMPLEXITY_KEY, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "maxItems", type = WidgetPropertyType.INTEGER, defaultValue = "100")
-})
-public class ProjectFileCloudWidget extends CoreWidget {
- public ProjectFileCloudWidget() {
- super("project_file_cloud", "Project File Word Cloud", "/org/sonar/plugins/core/widgets/project_file_cloud.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/SizeWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/SizeWidget.java
deleted file mode 100644
index b3330c7833f..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/SizeWidget.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-public class SizeWidget extends CoreWidget {
-
- public SizeWidget() {
- super("size", "Size metrics", "/org/sonar/plugins/core/widgets/size.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TechnicalDebtPyramidWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TechnicalDebtPyramidWidget.java
deleted file mode 100644
index d1c2bcf762c..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TechnicalDebtPyramidWidget.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-import org.sonar.api.web.UserRole;
-import org.sonar.api.web.WidgetCategory;
-
-@UserRole(UserRole.USER)
-@WidgetCategory("Technical Debt")
-public final class TechnicalDebtPyramidWidget extends CoreWidget {
-
- public TechnicalDebtPyramidWidget() {
- super("technical_debt_pyramid", "Technical Debt Pyramid", "/org/sonar/plugins/core/widgets/technical_debt_pyramid.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TimeMachineWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TimeMachineWidget.java
deleted file mode 100644
index 7a494b4ea5f..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TimeMachineWidget.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-import org.sonar.api.web.WidgetCategory;
-import org.sonar.api.web.WidgetProperties;
-import org.sonar.api.web.WidgetProperty;
-import org.sonar.api.web.WidgetPropertyType;
-
-@WidgetCategory("History")
-@WidgetProperties({
- @WidgetProperty(key = "title", type = WidgetPropertyType.STRING),
- @WidgetProperty(key = "numberOfColumns", type = WidgetPropertyType.INTEGER, defaultValue = "3"),
- @WidgetProperty(key = "displaySparkLine", type = WidgetPropertyType.BOOLEAN),
- @WidgetProperty(key = "metric1", type = WidgetPropertyType.METRIC, defaultValue = "ncloc", options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "metric2", type = WidgetPropertyType.METRIC, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "metric3", type = WidgetPropertyType.METRIC, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "metric4", type = WidgetPropertyType.METRIC, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "metric5", type = WidgetPropertyType.METRIC, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "metric6", type = WidgetPropertyType.METRIC, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "metric7", type = WidgetPropertyType.METRIC, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "metric8", type = WidgetPropertyType.METRIC, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "metric9", type = WidgetPropertyType.METRIC, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "metric10", type = WidgetPropertyType.METRIC, options = {WidgetConstants.FILTER_OUT_NEW_METRICS})
-})
-public class TimeMachineWidget extends CoreWidget {
- public TimeMachineWidget() {
- super("time_machine", "History Table", "/org/sonar/plugins/core/widgets/time_machine.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TimelineWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TimelineWidget.java
deleted file mode 100644
index 26533d23f40..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TimelineWidget.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-import org.sonar.api.web.WidgetCategory;
-import org.sonar.api.web.WidgetProperties;
-import org.sonar.api.web.WidgetProperty;
-import org.sonar.api.web.WidgetPropertyType;
-
-@WidgetCategory("History")
-@WidgetProperties({
- @WidgetProperty(key = "chartTitle", type = WidgetPropertyType.STRING),
- @WidgetProperty(key = "metric1", type = WidgetPropertyType.METRIC, defaultValue = "ncloc", options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "metric2", type = WidgetPropertyType.METRIC, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "metric3", type = WidgetPropertyType.METRIC, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "hideEvents", type = WidgetPropertyType.BOOLEAN),
- @WidgetProperty(key = "chartHeight", type = WidgetPropertyType.INTEGER, defaultValue = "180")
-})
-public class TimelineWidget extends CoreWidget {
- public TimelineWidget() {
- super("timeline", "Timeline", "/org/sonar/plugins/core/widgets/timeline.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TreemapWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TreemapWidget.java
deleted file mode 100644
index e0787c4c5a8..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/TreemapWidget.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-package org.sonar.plugins.core.widgets;
-
-import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.web.WidgetProperties;
-import org.sonar.api.web.WidgetProperty;
-import org.sonar.api.web.WidgetPropertyType;
-
-@WidgetProperties({
- @WidgetProperty(key = "chartTitle", type = WidgetPropertyType.STRING),
- @WidgetProperty(key = "sizeMetric", type = WidgetPropertyType.METRIC, defaultValue = CoreMetrics.NCLOC_KEY, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "colorMetric", type = WidgetPropertyType.METRIC, defaultValue = CoreMetrics.COVERAGE_KEY,
- options = {WidgetConstants.FILTER_OUT_NEW_METRICS, "type:PERCENT,RATING,LEVEL"}),
- @WidgetProperty(key = "heightInPercents", type = WidgetPropertyType.INTEGER, optional = true, defaultValue = "55"),
- @WidgetProperty(key = "maxItems", type = WidgetPropertyType.INTEGER, defaultValue = "100")
-})
-public class TreemapWidget extends CoreWidget {
- public TreemapWidget() {
- super("treemap-widget", "Treemap of Components", "/org/sonar/plugins/core/widgets/treemap.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/WelcomeWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/WelcomeWidget.java
deleted file mode 100644
index 936e8cdcc07..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/WelcomeWidget.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-import org.sonar.api.web.WidgetScope;
-
-import static org.sonar.api.web.WidgetScope.GLOBAL;
-
-@WidgetScope(GLOBAL)
-public class WelcomeWidget extends CoreWidget {
-
- public static final String ID = "welcome";
-
- public WelcomeWidget() {
- super(ID, "Welcome", "/org/sonar/plugins/core/widgets/welcome.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/WidgetConstants.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/WidgetConstants.java
deleted file mode 100644
index 0a74fa3d754..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/WidgetConstants.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-/**
- * Constants shared accross multiple widgets
- */
-public interface WidgetConstants {
-
- /**
- * Widget property option used to filter out all the metrics which keys start with "new_".
- *
- * @see org.sonar.api.web.WidgetProperty#options()
- */
- String FILTER_OUT_NEW_METRICS = "key:^(?!new_).*";
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/ActionPlansWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/ActionPlansWidget.java
deleted file mode 100644
index e2bee019b6f..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/ActionPlansWidget.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets.issues;
-
-import org.sonar.api.web.WidgetCategory;
-import org.sonar.api.web.WidgetProperties;
-import org.sonar.api.web.WidgetProperty;
-import org.sonar.api.web.WidgetPropertyType;
-import org.sonar.plugins.core.widgets.CoreWidget;
-
-@WidgetCategory({"Issues"})
-@WidgetProperties({
- @WidgetProperty(key = "showResolvedIssues", type = WidgetPropertyType.BOOLEAN, defaultValue = "true")
-})
-public class ActionPlansWidget extends CoreWidget {
- public ActionPlansWidget() {
- super("action_plans", "Issues action plans", "/org/sonar/plugins/core/widgets/issues/action_plans.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/IssueFilterWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/IssueFilterWidget.java
deleted file mode 100644
index f02fda9677d..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/IssueFilterWidget.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets.issues;
-
-import org.sonar.api.web.*;
-import org.sonar.plugins.core.widgets.CoreWidget;
-
-import static org.sonar.api.web.WidgetScope.GLOBAL;
-
-@WidgetCategory({"Filters", "Issues"})
-@WidgetScope(GLOBAL)
-@WidgetProperties({
- @WidgetProperty(key = IssueFilterWidget.FILTER_PROPERTY, type = WidgetPropertyType.ISSUE_FILTER, optional = false),
- @WidgetProperty(key = IssueFilterWidget.DISTRIBUTION_AXIS_PROPERTY, type = WidgetPropertyType.SINGLE_SELECT_LIST, defaultValue = "severities",
- options = {"severities", "resolutions", "statuses", "rules", "tags", "projectUuids", "assignees", "reporters",
- "authors", "languages", "actionPlans", "createdAt"}),
- @WidgetProperty(key = IssueFilterWidget.DISPLAY_FILTER_DESCRIPTION, type = WidgetPropertyType.BOOLEAN, defaultValue = "false")
-})
-public class IssueFilterWidget extends CoreWidget {
-
- public static final String FILTER_PROPERTY = "filter";
- public static final String DISTRIBUTION_AXIS_PROPERTY = "distributionAxis";
- public static final String DISPLAY_FILTER_DESCRIPTION = "displayFilterDescription";
- public static final String ID = "issue_filter";
-
- public IssueFilterWidget() {
- super(ID, "Issue Filter", "/org/sonar/plugins/core/widgets/issues/issue_filter.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/IssueTagCloudWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/IssueTagCloudWidget.java
deleted file mode 100644
index cba0aa3f835..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/IssueTagCloudWidget.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets.issues;
-
-import org.sonar.api.web.WidgetCategory;
-import org.sonar.api.web.WidgetProperties;
-import org.sonar.api.web.WidgetProperty;
-import org.sonar.api.web.WidgetPropertyType;
-import org.sonar.api.web.WidgetScope;
-import org.sonar.plugins.core.widgets.CoreWidget;
-
-import static org.sonar.api.web.WidgetScope.PROJECT;
-
-@WidgetCategory({"Issues"})
-@WidgetScope(PROJECT)
-@WidgetProperties({
- @WidgetProperty(key = "maxItems", type = WidgetPropertyType.INTEGER, defaultValue = "100")
-})
-public class IssueTagCloudWidget extends CoreWidget {
-
- public IssueTagCloudWidget() {
- super("issue_tag_cloud", "Issue Tag Cloud", "/org/sonar/plugins/core/widgets/issues/issue_tag_cloud.html.erb");
- }
-
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/IssuesWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/IssuesWidget.java
deleted file mode 100644
index f92d9ab4e73..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/IssuesWidget.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets.issues;
-
-import org.sonar.api.web.WidgetCategory;
-import org.sonar.plugins.core.widgets.CoreWidget;
-
-@WidgetCategory({"Issues", "Technical Debt"})
-public class IssuesWidget extends CoreWidget {
-
- public IssuesWidget() {
- super("rules", "Issues and Technical Debt", "/org/sonar/plugins/core/widgets/issues/issues.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/ProjectIssueFilterWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/ProjectIssueFilterWidget.java
deleted file mode 100644
index 5e45af9272a..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/ProjectIssueFilterWidget.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets.issues;
-
-import org.sonar.api.web.*;
-import org.sonar.plugins.core.widgets.CoreWidget;
-
-import static org.sonar.api.web.WidgetScope.PROJECT;
-
-@WidgetCategory({"Filters", "Issues"})
-@WidgetScope(PROJECT)
-@WidgetProperties({
- @WidgetProperty(key = ProjectIssueFilterWidget.FILTER_PROPERTY, type = WidgetPropertyType.ISSUE_FILTER, optional = false),
- @WidgetProperty(key = ProjectIssueFilterWidget.DISTRIBUTION_AXIS_PROPERTY, type = WidgetPropertyType.SINGLE_SELECT_LIST, defaultValue = "severities",
- options = {"severities", "resolutions", "statuses", "rules", "tags", "assignees", "reporters", "authors",
- "languages", "actionPlans", "createdAt"}),
- @WidgetProperty(key = ProjectIssueFilterWidget.DISPLAY_FILTER_DESCRIPTION, type = WidgetPropertyType.BOOLEAN, defaultValue = "false")
-})
-public class ProjectIssueFilterWidget extends CoreWidget {
-
- public static final String FILTER_PROPERTY = "filter";
- public static final String DISTRIBUTION_AXIS_PROPERTY = "distributionAxis";
- public static final String DISPLAY_FILTER_DESCRIPTION = "displayFilterDescription";
- public static final String ID = "project_issue_filter";
-
- public ProjectIssueFilterWidget() {
- super(ID, "Project Issue Filter", "/org/sonar/plugins/core/widgets/issues/project_issue_filter.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/package-info.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/package-info.java
deleted file mode 100644
index 528f5fa3dae..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/issues/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-@ParametersAreNonnullByDefault
-package org.sonar.plugins.core.widgets.issues;
-
-import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsBubbleChartWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsBubbleChartWidget.java
deleted file mode 100644
index bac50919643..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsBubbleChartWidget.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets.measures;
-
-import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.web.*;
-import org.sonar.plugins.core.widgets.CoreWidget;
-import org.sonar.plugins.core.widgets.WidgetConstants;
-
-import static org.sonar.api.web.WidgetScope.GLOBAL;
-
-@WidgetCategory({"Filters"})
-@WidgetScope(GLOBAL)
-@WidgetProperties({
- @WidgetProperty(key = "chartTitle", type = WidgetPropertyType.STRING),
- @WidgetProperty(key = "chartHeight", type = WidgetPropertyType.INTEGER, defaultValue = "300"),
- @WidgetProperty(key = "filter", type = WidgetPropertyType.FILTER, optional = false),
- @WidgetProperty(key = "xMetric", type = WidgetPropertyType.METRIC, defaultValue = CoreMetrics.NCLOC_KEY, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "yMetric", type = WidgetPropertyType.METRIC, defaultValue = CoreMetrics.VIOLATIONS_KEY, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "sizeMetric", type = WidgetPropertyType.METRIC, defaultValue = CoreMetrics.TECHNICAL_DEBT_KEY, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "xLogarithmic", type = WidgetPropertyType.BOOLEAN),
- @WidgetProperty(key = "yLogarithmic", type = WidgetPropertyType.BOOLEAN),
- @WidgetProperty(key = "maxItems", type = WidgetPropertyType.INTEGER)
-})
-public class MeasureFilterAsBubbleChartWidget extends CoreWidget {
-
- public MeasureFilterAsBubbleChartWidget() {
- super("measure_filter_bubble_chart", "Measure Filter as Bubble Chart", "/org/sonar/plugins/core/widgets/measures/measure_filter_bubble_chart.html.erb");
- }
-
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsCloudWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsCloudWidget.java
deleted file mode 100644
index 9bb13aa4225..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsCloudWidget.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets.measures;
-
-import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.web.*;
-import org.sonar.plugins.core.widgets.CoreWidget;
-import org.sonar.plugins.core.widgets.WidgetConstants;
-
-import static org.sonar.api.web.WidgetScope.GLOBAL;
-
-@WidgetCategory({"Filters"})
-@WidgetScope(GLOBAL)
-@WidgetProperties({
- @WidgetProperty(key = "filter", type = WidgetPropertyType.FILTER, optional = false),
- @WidgetProperty(key = "chartTitle", type = WidgetPropertyType.STRING),
- @WidgetProperty(key = "sizeMetric", type = WidgetPropertyType.METRIC, defaultValue = CoreMetrics.COMPLEXITY_KEY, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "colorMetric", type = WidgetPropertyType.METRIC, defaultValue = CoreMetrics.COVERAGE_KEY,
- options = { WidgetConstants.FILTER_OUT_NEW_METRICS, "type:PERCENT" }),
- @WidgetProperty(key = "maxItems", type = WidgetPropertyType.INTEGER, defaultValue = "100")
-})
-public class MeasureFilterAsCloudWidget extends CoreWidget {
-
- public MeasureFilterAsCloudWidget() {
- super("measure_filter_cloud", "Measure Filter as Cloud", "/org/sonar/plugins/core/widgets/measures/measure_filter_cloud.html.erb");
- }
-
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsHistogramWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsHistogramWidget.java
deleted file mode 100644
index 8dafd420381..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsHistogramWidget.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets.measures;
-
-import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.web.*;
-import org.sonar.plugins.core.widgets.CoreWidget;
-import org.sonar.plugins.core.widgets.WidgetConstants;
-
-import static org.sonar.api.web.WidgetScope.GLOBAL;
-
-@WidgetCategory({"Filters"})
-@WidgetScope(GLOBAL)
-@WidgetProperties({
- @WidgetProperty(key = "chartTitle", type = WidgetPropertyType.STRING),
- @WidgetProperty(key = "filter", type = WidgetPropertyType.FILTER, optional = false),
- @WidgetProperty(key = "metric", type = WidgetPropertyType.METRIC, defaultValue = CoreMetrics.TECHNICAL_DEBT_KEY, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "maxItems", type = WidgetPropertyType.INTEGER, defaultValue = "40"),
- @WidgetProperty(key = "reverseOrder", type = WidgetPropertyType.BOOLEAN, defaultValue = "false"),
- @WidgetProperty(key = "relativeScale", type = WidgetPropertyType.BOOLEAN, defaultValue = "false")
-})
-public class MeasureFilterAsHistogramWidget extends CoreWidget {
-
- public MeasureFilterAsHistogramWidget() {
- super("measure_filter_histogram", "Measure Filter as Histogram", "/org/sonar/plugins/core/widgets/measures/measure_filter_histogram.html.erb");
- }
-
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsPieChartWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsPieChartWidget.java
deleted file mode 100644
index f3a057b4fe9..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsPieChartWidget.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets.measures;
-
-import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.web.*;
-import org.sonar.plugins.core.widgets.CoreWidget;
-import org.sonar.plugins.core.widgets.WidgetConstants;
-
-import static org.sonar.api.web.WidgetScope.GLOBAL;
-
-@WidgetCategory({"Filters"})
-@WidgetScope(GLOBAL)
-@WidgetProperties({
- @WidgetProperty(key = "chartTitle", type = WidgetPropertyType.STRING),
- @WidgetProperty(key = "chartHeight", type = WidgetPropertyType.INTEGER, defaultValue = "300"),
- @WidgetProperty(key = "filter", type = WidgetPropertyType.FILTER, optional = false),
- @WidgetProperty(key = "mainMetric", type = WidgetPropertyType.METRIC, defaultValue = CoreMetrics.TECHNICAL_DEBT_KEY, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "extraMetric1", type = WidgetPropertyType.METRIC, defaultValue = CoreMetrics.NCLOC_KEY, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "extraMetric2", type = WidgetPropertyType.METRIC, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = "maxItems", type = WidgetPropertyType.INTEGER, defaultValue = "20")
-})
-public class MeasureFilterAsPieChartWidget extends CoreWidget {
-
- public MeasureFilterAsPieChartWidget() {
- super("measure_filter_pie_chart", "Measure Filter as Donut Chart", "/org/sonar/plugins/core/widgets/measures/measure_filter_pie_chart.html.erb");
- }
-
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsTreemapWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsTreemapWidget.java
deleted file mode 100644
index ba0c06d891a..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterAsTreemapWidget.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets.measures;
-
-import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.web.WidgetCategory;
-import org.sonar.api.web.WidgetProperties;
-import org.sonar.api.web.WidgetProperty;
-import org.sonar.api.web.WidgetPropertyType;
-import org.sonar.api.web.WidgetScope;
-import org.sonar.plugins.core.widgets.CoreWidget;
-import org.sonar.plugins.core.widgets.WidgetConstants;
-
-import static org.sonar.api.web.WidgetScope.GLOBAL;
-
-@WidgetCategory({"Filters"})
-@WidgetScope(GLOBAL)
-@WidgetProperties({
- @WidgetProperty(key = MeasureFilterAsTreemapWidget.FILTER_PROPERTY, type = WidgetPropertyType.FILTER,
- optional = false),
- @WidgetProperty(key = MeasureFilterAsTreemapWidget.CHART_TITLE_PROPERTY, type = WidgetPropertyType.STRING),
- @WidgetProperty(key = MeasureFilterAsTreemapWidget.SIZE_METRIC_PROPERTY, type = WidgetPropertyType.METRIC,
- defaultValue = CoreMetrics.NCLOC_KEY, options = {WidgetConstants.FILTER_OUT_NEW_METRICS}),
- @WidgetProperty(key = MeasureFilterAsTreemapWidget.COLOR_METRIC_PROPERTY, type = WidgetPropertyType.METRIC,
- defaultValue = CoreMetrics.COVERAGE_KEY,
- options = {WidgetConstants.FILTER_OUT_NEW_METRICS, "type:PERCENT,RATING,LEVEL"}),
- @WidgetProperty(key = MeasureFilterAsTreemapWidget.HEIGHT_PERCENTS_PROPERTY, type = WidgetPropertyType.INTEGER,
- optional = true, defaultValue = "55", description = "Height in percents of width"),
- @WidgetProperty(key = MeasureFilterAsTreemapWidget.MAX_ITEMS_PROPERTY, type = WidgetPropertyType.INTEGER,
- defaultValue = "30")
-})
-public class MeasureFilterAsTreemapWidget extends CoreWidget {
- public static final String FILTER_PROPERTY = "filter";
- public static final String SIZE_METRIC_PROPERTY = "sizeMetric";
- public static final String COLOR_METRIC_PROPERTY = "colorMetric";
- public static final String HEIGHT_PERCENTS_PROPERTY = "heightInPercents";
- public static final String CHART_TITLE_PROPERTY = "chartTitle";
- public static final String MAX_ITEMS_PROPERTY = "maxItems";
- public static final String ID = "measure_filter_treemap";
-
- public MeasureFilterAsTreemapWidget() {
- super(ID, "Measure Filter as Treemap", "/org/sonar/plugins/core/widgets/measures/measure_filter_treemap.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterListWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterListWidget.java
deleted file mode 100644
index e8b3eaf583a..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterListWidget.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets.measures;
-
-import org.sonar.api.web.*;
-import org.sonar.plugins.core.widgets.CoreWidget;
-
-import static org.sonar.api.web.WidgetScope.GLOBAL;
-
-@WidgetCategory({"Filters"})
-@WidgetScope(GLOBAL)
-@WidgetProperties({
- @WidgetProperty(key = MeasureFilterListWidget.FILTER_PROPERTY, type = WidgetPropertyType.FILTER, optional = false),
- @WidgetProperty(key = MeasureFilterListWidget.PAGE_SIZE_PROPERTY, type = WidgetPropertyType.INTEGER, defaultValue = "30"),
- @WidgetProperty(key = MeasureFilterListWidget.DISPLAY_FILTER_DESCRIPTION, type = WidgetPropertyType.BOOLEAN, defaultValue = "false")
-})
-public class MeasureFilterListWidget extends CoreWidget {
- public static final String FILTER_PROPERTY = "filter";
- public static final String PAGE_SIZE_PROPERTY = "pageSize";
- public static final String DISPLAY_FILTER_DESCRIPTION = "displayFilterDescription";
- public static final String ID = "measure_filter_list";
-
- public MeasureFilterListWidget() {
- super(ID, "Measure Filter as List", "/org/sonar/plugins/core/widgets/measure_filter_list.html.erb");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/package-info.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/package-info.java
deleted file mode 100644
index d781bea9c69..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-@ParametersAreNonnullByDefault
-package org.sonar.plugins.core.widgets.measures;
-
-import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/package-info.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/package-info.java
deleted file mode 100644
index dc52f477867..00000000000
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-@ParametersAreNonnullByDefault
-package org.sonar.plugins.core.widgets;
-
-import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/_complexity_chart.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/_complexity_chart.html.erb
deleted file mode 100644
index b75db5d24fd..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/_complexity_chart.html.erb
+++ /dev/null
@@ -1,18 +0,0 @@
-<% dist_measure = measure(metric)
- if dist_measure && !dist_measure.data.blank?
-%>
-<div id="chart_<%=metric -%>" class="chart" style="display: <%= visible ? "block" : "none" %>">
-<%
- query="ck=distbar&c=777777&v=" + u(dist_measure.data)
- small_size_query=query + '&w=220&h=100&fs=8&bgc=ffffff'
- big_size_query=query + '&w=300&h=150&fs=12&bgc=CAE3F2'
-%><%= chart(small_size_query, :id => 'chart_img_' + metric, :alt => title) -%>
-
- <script type='text/javascript'>
- //<![CDATA[
- new Tip('chart_img_<%=metric-%>', '<div style="width:300px;"><b><%= title -%></b><br>'+
- '<%= chart(big_size_query, :id => 'chart_img_' + metric, :alt => title) -%></div>');
- //]]>
- </script>
-</div>
-<% end %> \ No newline at end of file
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/alerts.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/alerts.html.erb
deleted file mode 100644
index d50c712836a..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/alerts.html.erb
+++ /dev/null
@@ -1,95 +0,0 @@
-<% m=measure(Metric::QUALITY_GATE_DETAILS)
- if m && !m.data.blank?
- details = JSON.parse m.data
- m.alert_status = details['level']
- raw_conditions = details['conditions']
- conditions = []
- missing_metric = false
- raw_conditions.each do |condition|
- if metric(condition['metric']).nil?
- missing_metric = true
- else
- conditions << condition
- end
- end
- alert_metric = metric(Metric::ALERT_STATUS)
-
- warn_message = message('measure_filter.criteria.alert.warn')
- error_message = message('measure_filter.criteria.alert.error')
-
- css_class = "color_#{m.alert_status}"
- if m.alert_status==Metric::TYPE_LEVEL_OK
- label = "#{message('widget.alerts.no_alert')}."
- elsif m.alert_status==Metric::TYPE_LEVEL_WARN
- label = "#{message('widget.alerts.warnings')}"
- else
- label = "#{message('widget.alerts.errors')}"
- end
--%><div class="widget <%= css_class -%>" style="color: black !important" id="quality_gate_widget_<%= widget.id -%>">
- <div><%= format_measure(measure(Metric::ALERT_STATUS)) -%> <%= label -%></div>
- <% if conditions.any? {|condition| condition['level'] != 'OK'} || widget_properties['show_ok'] && !conditions.empty? -%>
- <% conditions.sort_by {|condition| [ -condition['level'].length, metric(condition['metric']).short_name] }.each do |condition|
-
- level = condition['level']
- condition_metric = metric(condition['metric'])
- operator = message("quality_gates.operator.#{condition['op']}.short")
- period = condition['period']
- warning_value = condition['warning']
- error_value = condition['error']
- actual_value = condition['actual']
-
- detail_measure = ProjectMeasure.new :metric => alert_metric, :alert_status => level
-
- drilldown_url = period.blank? ? url_for_drilldown(condition_metric) : url_for_drilldown(condition_metric, :period => period)
-
- actual_measure = ProjectMeasure.new :metric => condition_metric, :value => actual_value, :alert_status => level
- warning_measure = ProjectMeasure.new :metric => condition_metric, :value => warning_value
- error_measure = ProjectMeasure.new :metric => condition_metric, :value => error_value
-
- is_difference_measure = condition_metric.name.start_with?('new_')
- is_issue_measure = get_issue_metrics.include? condition_metric.name
- is_not_difference_measure_with_period = !is_difference_measure && !period.blank? && !is_issue_measure
-
- tooltip = message('widget.as_calculated_on_x', :params => l(@snapshot.created_at))
-
-
- unless level == 'OK' && !widget_properties['show_ok']
- -%>
- <div class="dashbox" style="margin: 10px; vertical-align: baseline">
- <p class="title"><%= condition_metric.short_name -%></p>
- <% if is_not_difference_measure_with_period %>
- <span class="big" title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom"><%= format_measure(actual_measure) -%></span>
- <% else %>
- <span class="big" title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom"><%= format_measure(actual_measure, :url => drilldown_url) -%></span>
- <% end %>
- <% if level == 'WARN' -%><%= operator -%> <%= format_measure(warning_measure) -%><% end -%>
- <% if level == 'ERROR' -%><%= operator -%> <%= format_measure(error_measure) -%><% end -%>
- <% if level == 'OK' -%>
- <% unless warning_value.blank? -%><%= warn_message -%> <%= operator -%> <%= format_measure(warning_measure) -%> <%= '|' unless error_value.blank? -%><% end -%>
- <% unless error_value.blank? -%><%= error_message -%> <%= operator -%> <%= format_measure(error_measure) -%><% end -%>
- <% end -%>
- <p><%= period_label(@snapshot, period) unless period.blank? -%></p>
- </div>
- <% end
- end
- end
- if missing_metric -%>
- <div class="warning" style="clear: left"><%= message('widget.alerts.missing_metric') -%></div>
- <% end -%>
-</div>
-<% else -%>
-<% m=measure(Metric::ALERT_STATUS)
- if m && !m.alert_status.blank?
- css_class = "widget color_#{m.alert_status}"
- if m.alert_status==Metric::TYPE_LEVEL_OK
- label = "<b>#{message('widget.alerts.no_alert')}</b>."
- elsif m.alert_status==Metric::TYPE_LEVEL_WARN
- label = "<b>#{message('widget.alerts.warnings')}</b>#{h(m.alert_text)}."
- else
- label = "<b>#{message('widget.alerts.errors')}</b>#{h(m.alert_text)}."
- end
--%><div class="<%= css_class -%>" id="alerts_widget">
- <div><%= format_measure(m) -%> <%= label -%></div>
-</div>
-<% end
-end -%>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/bubbleChart.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/bubbleChart.html.erb
deleted file mode 100644
index e0188194dd2..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/bubbleChart.html.erb
+++ /dev/null
@@ -1,88 +0,0 @@
-<%
- containerId = 'bubble-chart-widget' + widget.id.to_s
- xMetric = widget_properties["xMetric"]
- yMetric = widget_properties["yMetric"]
- sizeMetric = widget_properties["sizeMetric"]
- xLog = !!widget_properties["xLogarithmic"]
- yLog = !!widget_properties["yLogarithmic"]
- chartHeight = widget_properties["chartHeight"]
- chartTitle = widget_properties["chartTitle"]
-%>
-
-<div class="bubble-chart-widget" id="<%= containerId %>">
- <!--[if lte IE 8 ]> <h3><%= message('widget.unsupported_browser_warning') -%></h3> <![endif]-->
-
- <!--[if (gte IE 9)|!(IE)]><!-->
- <% if chartTitle %>
- <h3><%= h(chartTitle) -%></h3>
- <% end %>
- <!--<![endif]-->
-</div>
-
-<!--[if (gte IE 9)|!(IE)]><!-->
-<script>
- (function () {
- <%
- filter = MeasureFilter.new
- # Test files should not be returned
- qualifiers = Api::Utils.java_facade.getResourceLeavesQualifiers(@project.qualifier).to_a.reject {|q| q == 'UTS'}
- filter.criteria = {:qualifiers => qualifiers, :base => @project.key}
- filter.metrics = [xMetric.name, yMetric.name, sizeMetric.name]
- filter.execute(self, :user => current_user)
- %>
-
- var data = {
- metrics: {
- <%= xMetric.name -%>: {
- name: '<%= xMetric.short_name -%>'
- },
- <%= yMetric.name -%>: {
- name: '<%= yMetric.short_name -%>'
- },
- <%= sizeMetric.name -%>: {
- name: '<%= sizeMetric.short_name -%>'
- }
- },
- components: [
- <%
- filter.rows.each do |row|
- x = row.measure(xMetric)
- y = row.measure(yMetric)
- size = row.measure(sizeMetric)
- %>
- {
- key: '<%= escape_javascript row.resource.key -%>',
- name: '<%= escape_javascript row.resource.name -%>',
- longName: '<%= escape_javascript row.resource.long_name -%>',
- qualifier: '<%= escape_javascript row.resource.qualifier -%>',
- measures: {
- <%= xMetric.name -%>: { val: <%= x ? x.value : 0 -%>, fval: '<%= x ? x.formatted_value : "-" -%>' },
- <%= yMetric.name -%>: { val: <%= y ? y.value : 0 -%>, fval: '<%= y ? y.formatted_value : "-" -%>' },
- <%= sizeMetric.name -%>: { val: <%= size ? size.value : 0 -%>, fval: '<%= size ? size.formatted_value : "-" -%>' }
- }
- },
- <% end %>
- ]
- },
- widget = new SonarWidgets.BubbleChart();
-
- widget
- .metrics(data.metrics)
- .metricsPriority(['<%= xMetric.name -%>', '<%= yMetric.name -%>', '<%= sizeMetric.name -%>'])
- .components(data.components)
- .height(<%= chartHeight -%>)
- .options({
- baseUrl: baseUrl + '/dashboard/index',
- xLog: <%= xLog -%>,
- yLog: <%= yLog -%>,
- noData: '<%= message('no_data') -%>',
- noMainMetric: '<%= message('widget.measure_filter.no_main_metric') -%>'
- })
- .render('#<%= containerId -%>');
-
- autoResize(500, function() {
- widget.update('#<%= containerId -%>');
- });
- })();
-</script>
-<!--<![endif]-->
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/complexity.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/complexity.html.erb
deleted file mode 100644
index 62832d2335a..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/complexity.html.erb
+++ /dev/null
@@ -1,115 +0,0 @@
-<%
- file_complexity=measure('file_complexity')
- function_complexity=measure('function_complexity')
- class_complexity=measure('class_complexity')
-
- if file_complexity || function_complexity || class_complexity
- complexity=measure('complexity')
-%>
-
- <div class="widget-row">
- <div class="widget-span widget-span-5">
- <div class="widget-measure-container">
- <% if complexity %>
- <p class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('metric.complexity.name') %></span>
- <span class="nowrap">
- <%= format_measure(complexity, :url => url_for_drilldown(complexity)) %>
- <%= format_variation(complexity) if dashboard_configuration.selected_period? -%>
- </span>
- </p>
- <% end %>
- <% if function_complexity %>
- <p class="widget-measure">
- <span class="widget-label"><%= message('widget.complexity.per_method.suffix') %></span>
- <span class="nowrap">
- <%= format_measure(function_complexity, :url => url_for_drilldown(function_complexity)) %>
- <%= format_variation(function_complexity) if dashboard_configuration.selected_period? -%>
- </span>
- </p>
- <% end %>
- <% if class_complexity %>
- <p class="widget-measure">
- <span class="widget-label"><%= message('widget.complexity.per_class.suffix') %></span>
- <span class="nowrap">
- <%= format_measure(class_complexity, :url => url_for_drilldown(class_complexity)) %>
- <%= format_variation(class_complexity) if dashboard_configuration.selected_period? -%>
- </span>
- </p>
- <% end %>
- <% if file_complexity %>
- <p class="widget-measure">
- <span class="widget-label"><%= message('widget.complexity.per_file.suffix') %></span>
- <span class="nowrap">
- <%= format_measure(file_complexity, :url => url_for_drilldown(file_complexity)) %>
- <%= format_variation(file_complexity) if dashboard_configuration.selected_period? -%>
- </span>
- </p>
- <% end %>
- </div>
- </div>
-
- <div class="widget-span widget-span-7">
- <%
- function_distribution=measure('function_complexity_distribution')
- class_distribution=measure('class_complexity_distribution')
- file_distribution=measure('file_complexity_distribution')
- distributions=[function_distribution, class_distribution, file_distribution].compact
- selected_distribution=nil
- if distributions.size>0
- selected_distribution=distributions.first
- end
- if selected_distribution
- %>
- <div class="dashbox" id="cmp_charts">
- <script type='text/javascript'>
- //<![CDATA[
- function selectComplexity(metric) {
- $j('#cmp_charts .chart').hide();
- $j('#chart_' + metric).show();
- }
- </script>
- <style>
- #cmp_charts form {
- font-size: 93%; padding-left: 30px;
- }
-
- #cmp_charts form label {
- padding-right: 5px;
- }
- </style>
- <% distributions.each do |distribution_measure| %>
- <%= render :partial => 'project/widgets/complexity_chart', :locals => {:metric => distribution_measure.metric.key, :title => distribution_measure.metric.description, :visible => (selected_distribution==distribution_measure)} %>
- <% end %>
-
- <form>
- <%
- count_dist=0
- if function_distribution
- count_dist+=1
- %>
- <input type="radio" name="cmp_dist" value="function_complexity_distribution" id="cmp_dist_function_complexity_distribution" onClick="selectComplexity('function_complexity_distribution');" <%= 'checked' if function_distribution==selected_distribution -%>/>
- <label for="cmp_dist_function_complexity_distribution"><%= message('metric.functions.name') -%></label>
- <%
- end
- if class_distribution
- count_dist+=1
- %>
- <input type="radio" name="cmp_dist" value="class_complexity_distribution" id="cmp_dist_class_complexity_distribution" onClick="selectComplexity('class_complexity_distribution');" <%= 'checked' if class_distribution==selected_distribution -%>/>
- <label for="cmp_dist_class_complexity_distribution"><%= message('metric.classes.name') -%></label><%= '<br/>' if count_dist==2 %>
- <%
- end
- if file_distribution
- count_dist+=1
- %>
- <input type="radio" name="cmp_dist" value="file_complexity_distribution" id="cmp_dist_file_complexity_distribution" onClick="selectComplexity('file_complexity_distribution');" <%= 'checked' if file_distribution==selected_distribution -%>/>
- <label for="cmp_dist_file_complexity_distribution"><%= message('metric.files.name') -%></label>
- <% end %>
-
- </form>
-
- </div>
- <% end %>
- </div>
- </div>
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/coverage.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/coverage.html.erb
deleted file mode 100644
index e293cfa0d56..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/coverage.html.erb
+++ /dev/null
@@ -1,156 +0,0 @@
-<%
- code_coverage_measure=measure('coverage')
- tests_measure=measure('tests')
- execution_time=measure('test_execution_time')
- success_percentage=measure('test_success_density')
-
- if code_coverage_measure || tests_measure
-%>
- <div class="widget-row">
- <div class="widget-span widget-span-6">
- <div class="widget-measure-container">
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('widget.code_coverage.name') -%></span>
- <span class="nowrap">
- <%= format_measure(code_coverage_measure, :suffix => '', :url => url_for_drilldown('coverage'), :default => '-') %>
- <%= format_variation(code_coverage_measure) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- <%
- line_coverage=measure('line_coverage')
- if line_coverage
- %>
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.code_coverage.line_coverage.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(line_coverage, :url => url_for_drilldown('uncovered_lines', :highlight => 'line_coverage')) %>
- <%= format_variation(line_coverage) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- <% end %>
- <%
- branch_coverage=measure('branch_coverage')
- if branch_coverage
- %>
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.code_coverage.condition_coverage.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(branch_coverage, :url => url_for_drilldown('uncovered_conditions', :highlight => 'branch_coverage')) %>
- <%= format_variation(branch_coverage) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- <% end %>
-
- <%
- if dashboard_configuration.selected_period?
- new_lines_to_cover_measure=measure('new_lines_to_cover')
- if new_lines_to_cover_measure
- new_lines=new_lines_to_cover_measure.variation(dashboard_configuration.period_index)
- if new_lines
- new_coverage=measure('new_coverage') if variation_value('new_coverage')
- new_line_coverage=measure('new_line_coverage') if variation_value('new_line_coverage')
- new_branch_coverage=measure('new_branch_coverage') if variation_value('new_branch_coverage')
- %>
- <% if new_lines.to_i==0 %>
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('widget.code_coverage.on_new_code') -%></span>
- <p><%= message('widget.code_coverage.no_new_lines_to_cover') -%></p>
- </div>
- <% else %>
- <% if new_coverage %>
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('widget.code_coverage.on_new_code') -%></span>
- <%= format_measure(new_coverage,
- :period => dashboard_configuration.period_index,
- :url => url_for_drilldown('new_coverage', :period => dashboard_configuration.period_index)) %>
- </div>
- <% end %>
- <% if new_line_coverage %>
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.code_coverage.line_coverage.suffix') -%></span>
- <%= format_measure(new_line_coverage,
- :period => dashboard_configuration.period_index,
- :url => url_for_drilldown('new_uncovered_lines', :highlight => 'new_line_coverage', :period => dashboard_configuration.period_index),
- :default => '-') %>
- </div>
- <% end %>
- <% if new_branch_coverage %>
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.code_coverage.condition_coverage.suffix') -%></span>
- <%= format_measure(new_branch_coverage,
- :period => dashboard_configuration.period_index,
- :url => url_for_drilldown('new_uncovered_conditions', :highlight => 'new_branch_coverage', :period => dashboard_configuration.period_index),
- :default => '-') %>
- </div>
- <% end %>
- <% end %>
- <%
- end
- end
- end
- %>
- </div>
- </div>
- <div class="widget-span widget-span-6">
- <%
- if tests_measure
- %>
- <div class="widget-measure-container">
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('widget.code_coverage.test_success') -%></span>
- <span class="nowrap">
- <%= format_measure(success_percentage, :url => url_for_drilldown(success_percentage)) %>
- <%= format_variation(success_percentage) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
-
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.code_coverage.failures.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(Metric::TEST_FAILURES, :url => url_for_drilldown(Metric::TEST_FAILURES)) %>
- <%= format_variation(Metric::TEST_FAILURES) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
-
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.code_coverage.errors.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(Metric::TEST_ERRORS, :url => url_for_drilldown(Metric::TEST_ERRORS)) %>
- <%= format_variation(Metric::TEST_ERRORS) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
-
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.code_coverage.tests.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(tests_measure, :url => url_for_drilldown('tests')) %>
- <%= format_variation(tests_measure) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
-
- <% skipped_measure=measure(Metric::SKIPPED_TESTS)
- if dashboard_configuration.selected_period? || (skipped_measure && skipped_measure.value && skipped_measure.value>0)
- %>
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.code_coverage.skipped.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(skipped_measure, :url => url_for_drilldown(Metric::SKIPPED_TESTS)) %>
- <%= format_variation(skipped_measure) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- <% end %>
-
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.code_coverage.execution_time') -%></span>
- <span class="nowrap">
- <%= format_measure(execution_time, :url => url_for_drilldown('test_execution_time')) %>
- <%= format_variation(execution_time) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- </div>
- <% end %>
- </div>
- </div>
-<% end %>
-
-
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/custom_measures.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/custom_measures.html.erb
deleted file mode 100644
index c817403bc8c..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/custom_measures.html.erb
+++ /dev/null
@@ -1,36 +0,0 @@
-<%
- measures=[]
- (1..10).each do |index|
- metric=widget_properties["metric#{index}"]
- m=(metric ? measure(metric) : nil)
- measures << m if m
- end
- period = params[:period]
- unless measures.empty? || measures.none? { |measure| measure.visible?(period.to_i) }
-%>
- <div class="widget-row">
- <%
- measures.each do |measure|
- if measure.visible?(period.to_i)
- -%>
- <div class="widget-span widget-span-3">
- <div class="widget-measure-container">
- <p class="widget-measure widget-measure-main">
- <span class="widget-label"><%= measure.metric.short_name -%></span>
- <span class="nowrap">
- <% if measure.value.nil? && measure.text_value.nil? -%>
- <%= format_measure(measure, :url => url_for_drilldown(measure, :period => period), :period => period) -%>
- <% else %>
- <%= format_measure(measure, :url => url_for_drilldown(measure)) -%>
- <%= format_variation(measure) if dashboard_configuration.selected_period? -%>
- <% end -%>
- </span>
- </p>
- </div>
- </div>
- <%
- end
- end
- -%>
- </div>
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/debt_overview.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/debt_overview.erb
deleted file mode 100644
index 87cceb5ff3b..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/debt_overview.erb
+++ /dev/null
@@ -1,33 +0,0 @@
-<%
- sqale_rating = @snapshot.measure('sqale_rating')
- sqale_debt_ratio = @snapshot.measure('sqale_debt_ratio')
- if sqale_rating && sqale_rating.text_value && sqale_debt_ratio
-%>
- <% if sqale_rating && sqale_rating.text_value %>
- <div class="widget-row">
- <div class="widget-span widget-span-6">
- <div class="widget-measure-container">
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('metric.sqale_rating.name') -%></span>
- <span class="nowrap">
- <%= format_measure(sqale_rating, :url => url_for_drilldown(sqale_rating)) %>
- </span>
- </div>
- </div>
- </div>
- <% end %>
- <% if sqale_debt_ratio %>
- <div class="widget-span widget-span-6">
- <div class="widget-measure-container">
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('metric.sqale_debt_ratio.name') -%></span>
- <span class="nowrap">
- <%= format_measure(sqale_debt_ratio, :url => url_for_drilldown(sqale_debt_ratio)) %>
- <%= format_variation(sqale_debt_ratio) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- </div>
- </div>
- </div>
- <% end %>
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/description.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/description.html.erb
deleted file mode 100644
index 6d587793407..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/description.html.erb
+++ /dev/null
@@ -1,90 +0,0 @@
-<div class="widget">
- <h3 class="description-widget-project">
- <i class="icon-qualifier-<%= @project.qualifier.downcase -%>"></i>
- <%= @project.name -%>
- </h3>
- <span class="description-widget-key"><%= h @project.key -%></span>
-
- <% if @project.description.present? %>
- <p class="description-widget-description"><%= h @project.description -%></p>
- <% end %>
-
- <%
- qprofiles_measure = measure(Metric::QUALITY_PROFILES)
- if qprofiles_measure && !qprofiles_measure.data.blank?
- qprofiles = JSON.parse qprofiles_measure.data
- if qprofiles.size>0
- %>
- <p class="description-widget-description">
- <%= message('widget.description.profiles') -%>:
- <% qprofiles.each_with_index do |profile, i| %>
- <span class="nowrap">
- <span id="resource_profile">
- <%= link_to profile['name'], {:controller => 'profiles', :action => 'show', :key => profile['key']}, :class => 'widget-link', :id => profile['language'] + '_profile_link' -%>
- </span>
- <span class="subtitle">
- (<%= Api::Utils.language_name(profile['language']) -%>)
- </span>
- <% if i < (qprofiles.size - 1) %>,<% end %>
- </span>
- <% end
- end %>
- </p>
- <%
- else
- profile_measure=@snapshot.measure('profile')
- if profile_measure
- %>
- <p class="description-widget-description">
- <%= message('widget.description.profile') -%>:
- <span id="resource_profile">
- <%= link_to profile_measure.data, {:controller => 'profiles', :action => 'show', :id => profile_measure.value.to_i}, :class => 'widget-link', :id => 'profile_link' -%>
- </span>
- </p>
- <% end
- end %>
-
- <%
- unless @resource.qualifier == 'DEV' or @resource.qualifier == 'VW' or @resource.qualifier == 'SVW'
- using_default=false
- quality_gate=Property.value('sonar.qualitygate', @resource && @resource.id, nil)
- unless quality_gate
- quality_gate=Property.value('sonar.qualitygate', nil, nil)
- using_default=false || quality_gate
- end
- if quality_gate
- qgate = Internal.quality_gates.get(quality_gate.to_i)
- %>
- <p class="description-widget-description">
- <span id="resource_qgate">
- <%= message('widget.description.qualitygate') -%>:
- <%= link_to qgate.getName(), (url_for :controller => '/quality_gates') + '#show/' + quality_gate, :class => 'widget-link', :id => 'qgate_link' -%>
- <% if using_default %>
- <span class="subtitle">(<%= message('default') -%>)</span>
- <% end %>
- </span>
- </p>
- <% end end %>
-
- <% unless @project.project_links.empty? %>
- <ul class="description-widget-links">
- <% @project.project_links.sort.each do |link| %>
- <li>
- <% if link.href.starts_with?('http') %>
- <a class="widget-link link-<%= h link.link_type -%>" target="_blank" href="<%= link.href -%>">
- <i class="icon-<%= h link.link_type -%>"></i>
- <%= h link.name -%>
- </a>
- <% else %>
- <a class="widget-link link-<%= h link.link_type -%>" href="#" onclick="$j('#link_<%= link.id -%>').toggle();return false;">
- <i class="icon-<%= h link.link_type -%>"></i>
- <%= h(link.name) -%>
- </a>
-
- <div class="description-widget-link-data" id="link_<%= link.id -%>" style="display:none"><%= h(link.href) -%></div>
- <% end %>
- </li>
- <% end %>
- </ul>
- <% end %>
-</div>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/documentation_comments_widget.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/documentation_comments_widget.html.erb
deleted file mode 100644
index 06423d5c029..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/documentation_comments_widget.html.erb
+++ /dev/null
@@ -1,63 +0,0 @@
-<%
- if measure(Metric::LINES) || measure(Metric::NCLOC)
- public_api=measure('public_api')
- public_documented_api_density=measure('public_documented_api_density')
- public_undocumented_api=measure('public_undocumented_api')
- comment_lines=measure('comment_lines')
- comment_lines_density=measure('comment_lines_density')
-%>
-<div class="widget-row">
- <div class="widget-span widget-span-6">
- <% if public_documented_api_density || public_api || public_undocumented_api %>
- <div class="widget-measure-container">
- <%
- if public_documented_api_density
- %>
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('widget.documentation_comments.documentation') -%></span>
- <span class="nowrap">
- <%= format_measure(public_documented_api_density, :url => url_for_drilldown(Metric::PUBLIC_UNDOCUMENTED_API, :highlight => Metric::PUBLIC_DOCUMENTED_API_DENSITY)) %>
- <%= format_variation('public_documented_api_density') if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- <% end %>
- <div class="widget-measure">
- <span class="widget-label"><%= message('metric.public_api.name') -%></span>
- <span class="nowrap">
- <%= format_measure(public_api,:url => url_for_drilldown(public_api)) %>
- <%= format_variation(public_api) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- <div class="widget-measure">
- <span class="widget-label"><%= message('metric.public_undocumented_api.abbreviation') -%></span>
- <span class="nowrap">
- <%= format_measure(public_undocumented_api,:url => url_for_drilldown(public_undocumented_api)) %>
- <%= format_variation(public_undocumented_api) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- </div>
- <% end %>
- </div>
-
- <div class="widget-span widget-span-6">
- <div class="widget-measure-container">
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('widget.documentation_comments.comments') -%></span>
- <span class="nowrap">
- <%= format_measure(comment_lines_density,:url => url_for_drilldown(comment_lines_density))%>
- <%= format_variation(comment_lines_density) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- <div class="widget-measure">
- <span class="widget-label"><%= message('metric.comment_lines.name') -%></span>
- <span class="nowrap">
- <%= format_measure(comment_lines,:url => url_for_drilldown(comment_lines)) %>
- <%= format_variation(comment_lines) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- </div>
- </div>
-</div>
-<%
- end
-%>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/duplications_widget.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/duplications_widget.html.erb
deleted file mode 100644
index 99b487a57a7..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/duplications_widget.html.erb
+++ /dev/null
@@ -1,41 +0,0 @@
-<%
- duplicated_lines_density=measure('duplicated_lines_density')
- if duplicated_lines_density
-%>
-<div class="widget-row">
- <div class="widget-span widget-span-12">
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('widget.duplications.duplications') -%></span>
- <span class="nowrap">
- <%= format_measure(duplicated_lines_density, :url => url_for_drilldown('duplicated_lines', :highlight => 'duplicated_lines_density')) %>
- <%= format_variation('duplicated_lines_density') if dashboard_configuration.selected_period? -%>
- </span>
- </div>
-
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.duplications.lines.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(measure('duplicated_lines'), :url => url_for_drilldown('duplicated_lines'))%>
- <%= format_variation('duplicated_lines') if dashboard_configuration.selected_period? -%>
- </span>
- </div>
-
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.duplications.blocks.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(measure('duplicated_blocks'), :url => url_for_drilldown('duplicated_blocks'))%>
- <%= format_variation('duplicated_blocks') if dashboard_configuration.selected_period? -%>
- </span>
- </div>
-
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.duplications.files.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(measure('duplicated_files'), :url => url_for_drilldown('duplicated_files'))%>
- <%= format_variation('duplicated_files') if dashboard_configuration.selected_period? -%>
- </span>
- </div>
-
- </div>
-</div>
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/events.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/events.html.erb
deleted file mode 100644
index d6be1d2e667..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/events.html.erb
+++ /dev/null
@@ -1,120 +0,0 @@
-<%
- if @resource.scope=='PRJ'
-
- conditions = "component_uuid=:component_uuid"
- values = {:component_uuid => @resource.uuid}
- # in order to not display events linked to deleted snapshot, we build the SQL request with 'NOT IN' as most of the time, there won't be unprocessed snapshots
- snapshots_to_be_deleted = Snapshot.find(:all, :conditions => ["status='U' AND project_id=?", @resource.id])
- unless snapshots_to_be_deleted.empty?
- conditions << " AND snapshot_id NOT IN (:sids)"
- values[:sids] = snapshots_to_be_deleted.map { |s| s.id }
- end
-
- events=Event.find(:all, :conditions => [conditions, values], :order => 'event_date desc')
-
- categories = EventCategory.categories(true)
-%>
-
-<script type="text/javascript">
- function changeCategory(categoryId, widgetId) {
- var eventTableMaxSize = 8;
- $j('#events_' + widgetId + ' tr.event').hide();
- var elements;
- if (categoryId=='all') {
- elements = $j('#events_' + widgetId + ' tr.event');
- } else {
- elements = $j('#events_' + widgetId + ' tr.cat_' + categoryId);
- }
- var elementsToDisplay = elements.slice(0,eventTableMaxSize);
- if (elementsToDisplay.size()==0) {
- $j('#events_' + widgetId).hide();
- $j('#show_more_events_' + widgetId).hide();
- $j('#no_event_message_' + widgetId).show();
- } else {
- $j('#events_' + widgetId).show();
- $j('#no_event_message_' + widgetId).hide();
- elementsToDisplay.show();
- if (elements.size() > eventTableMaxSize) {
- $j('#show_more_events_' + widgetId).show();
- } else {
- $j('#show_more_events_' + widgetId).hide();
- }
- }
- }
-
- function showAllEvents(widgetId) {
- var selectedCategory = $j('#select_category_' + widgetId).val();
- if (selectedCategory=='all') {
- $j('#events_' + widgetId + ' tr.event').show();
- } else {
- $j('#events_' + widgetId + ' tr.cat_' + selectedCategory).show();
- }
- $j('#show_more_events_' + widgetId).hide();
- }
-</script>
-
-
-<h3><%= message('widget.events.title') -%> &nbsp;&nbsp;
-
- <select class="small" id="select_category_<%= widget.id -%>" onchange="changeCategory(this.value, <%= widget.id -%>);">
- <option value="all"><%= message('widget.events.all') -%></option>
- <% categories.each do |categ| %>
- <option value="<%= categ.name.parameterize -%>"><%= h message('event.category.' + categ.name, :default => categ.name) %></option>
- <% end %>
- </select>
-
- <script>
- $j(function() {
- $j('#select_category_<%= widget.id -%>').select2({ width: '150px' });
- });
- </script>
-
-</h3>
-
-<table id="events_<%= widget.id -%>" class="spaced data">
- <thead>
- <tr>
- <th colspan="4"></th>
- </tr>
- </thead>
-
- <tbody>
-<%
- events.each do |event|
- categ = event.category
- profile_data={}
- if categ=='Profile' && event.event_data
- profile_data=Hash[*(event.event_data.split(';').map { |elt| elt.split('=') }.flatten)]
- end
-%>
-<tr class="<%= cycle 'even','odd' -%> event cat_<%= categ.parameterize -%>">
- <td x="<%= event.event_date -%>"><%= l(event.event_date.to_date) %></td>
- <td><%= h message('event.category.' + categ, :default => categ) %></td>
- <td>
- <%= link_to_if profile_data['key'] && profile_data['from'] && profile_data['to'], event.name,
- :controller => 'profiles', :action => 'changelog', :key => profile_data['key'],
- :since => profile_data['from'], :to => profile_data['to'] -%>
- </td>
- <td>
- <% unless event.description.blank? %>
- <i class="icon-info" title="<%= h event.description -%>"></i>
- <% end %>
- </td>
-</tr>
-<%
- end
-%>
- </tbody>
-</table>
-
-<div id="no_event_message_<%= widget.id -%>" style="margin: 5px">
- <span class="empty_widget"><%= message('widget.events.no_event') -%></span>
-</div>
-
-<a href="#" onclick="showAllEvents(<%= widget.id -%>);return false;" id="show_more_events_<%= widget.id -%>" class="action"><%= message('widget.events.show_all') -%></a>
-
-<script type="text/javascript">
- changeCategory('all', <%= widget.id -%>);
-</script>
-
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/hotspots/hotspot_metric.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/hotspots/hotspot_metric.html.erb
deleted file mode 100644
index bf2872762d8..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/hotspots/hotspot_metric.html.erb
+++ /dev/null
@@ -1,85 +0,0 @@
-<%
- metric = widget_properties["metric"] || Metric.by_key('ncloc')
-
- if measure(metric)
-
- limit = widget_properties["numberOfLines"]
- title = widget_properties["title"]
- title = message('widget.hotspot_metric.hotspots_by_x', :params => metric.short_name) if title.blank?
-
- snapshots = nil
- if metric.numeric? && !@snapshot.leaves_qualifiers.empty?
- snapshots_conditions=["snapshots.qualifier in (:qualifiers)", "snapshots.islast=:islast", "snapshots.status = 'P'"]
- snapshots_values={:qualifiers => @snapshot.leaves_qualifiers, :islast => true}
- snapshots_conditions << '(snapshots.root_snapshot_id=:root_sid AND snapshots.path LIKE :path)'
- snapshots_values[:root_sid] = (@snapshot.root_snapshot_id || @snapshot.id)
- snapshots_values[:path]="#{@snapshot.path}#{@snapshot.id}.%"
-
- measures_conditions = ["project_measures.rule_id IS NULL", "project_measures.characteristic_id IS NULL", "project_measures.person_id IS NULL"]
- measures_values = {}
- measures_conditions << "project_measures.metric_id = :m_id"
- measures_values[:m_id] = metric.id
-
- measures=ProjectMeasure.find(:all,
- :joins => :snapshot,
- :conditions => [(snapshots_conditions + measures_conditions).join(' AND '), snapshots_values.merge(measures_values)],
- :order => "project_measures.value #{'DESC' if metric.direction<0}",
- :limit => limit)
-
- snapshots=Snapshot.find(measures.map { |m| m.snapshot_id }, :include => 'project')
- snapshots_by_id = {}
- snapshots.each do |s|
- snapshots_by_id[s.id]=s
- end
- end
-
- unless snapshots && !snapshots.empty? %>
- <h3><%= title -%></h3>
- <span class="empty_widget"><%= message('no_results') -%></span>
- <% else %>
-
- <div class="line-block">
- <div style="float:right">
- <a class="underlined-link" href="<%= url_for_drilldown(metric) -%>"><%= message('widget.hotspot_metric.more') -%></a>
- </div>
- <h3><%= title -%></h3>
- </div>
-
- <table id="hotspots-<%= metric.name -%>-<%= widget.id -%>" class="data">
- <thead>
- <tr>
- <th colspan="3"/>
- </tr>
- </thead>
- <tbody>
- <%
- if metric.direction > 0
- metric_max_value = measures.last.value
- else
- metric_max_value = measures.first.value
- end
- measures.each do |measure|
- resource = snapshots_by_id[measure.snapshot_id].resource
- %>
- <tr class="<%= cycle 'even', 'odd', :name => ('hotspot_metric' + widget.id.to_s) -%>">
- <td>
- <%= link_to_resource(resource, h(resource.name), {:metric => metric.name, :class => 'underlined-link'}) -%>
- </td>
- <td class="right nowrap">
- <%= format_measure(measure) -%>
- </td>
- <td class="barchart">
- <div class="barchart" style="width: <%= (measure.value*100/metric_max_value).round.to_i -%>%">
- <div style="width: 100%;"></div>
- </div>
- </td>
- </tr>
- <%
- end
- %>
- </tbody>
- </table>
-
- <% end %>
-
-<% end %> \ No newline at end of file
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/action_plans.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/action_plans.html.erb
deleted file mode 100644
index 75553d3de15..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/action_plans.html.erb
+++ /dev/null
@@ -1,97 +0,0 @@
-<%
- # This widget should only be display on root projects
- if @project.qualifier == 'TRK' && has_role?(:user, @project)
- action_plans = Internal.issues.findActionPlanStats(@resource.key)
- open_action_plans = action_plans.select {|plan| plan.isOpen()}
-
- div_id = "issues-action-plan-widget-#{widget.id.to_s}"
-%>
-
-<div class="line-block">
- <% if has_role?(:admin, @project) %>
- <div style="float:right">
- <a href="<%= url_for :controller => 'action_plans', :action => 'index', :id => @project.id -%>">
- <%= message('widgets.more') -%>
- </a>
- </div>
- <% end %>
-
- <h3><%= message('widget.action_plans.title') -%></h3>
-</div>
-
-
-<div id="<%= div_id -%>">
-
-<% if open_action_plans.size ==0 %>
-
- <span class="empty_widget"><%= message('widget.action_plans.no_action_plan') -%></span>
-
-<%
- else
- show_resolved_issues = widget_properties["showResolvedIssues"]
- if show_resolved_issues
- line_class = "top"
- else
- line_class = "middle"
- max_unresolved_issues = open_action_plans.map {|plan| plan.unresolvedIssues()}.max
- end
-%>
-
- <table class="width100 <%= show_resolved_issues ? 'actionPlans' : 'data' -%>">
- <thead>
- <tr>
- <th colspan="<%= show_resolved_issues ? '3' : '4' %>"></th>
- </tr>
- </thead>
- <tbody>
- <%
- open_action_plans.each do |plan|
- %>
- <tr class="<%= show_resolved_issues ? '' : cycle("even", "odd", :name => "action_plan_" + widget.id.to_s) -%>">
- <td class="nowrap <%= line_class -%>"><%= h(plan.name) -%></td>
- <td class="nowrap small <%= line_class -%> <%= 'over-due' if plan.overDue() -%>" style="text-align: right; padding-left:10px"><%= format_date(plan.deadLine()) -%></td>
-
- <% if show_resolved_issues %>
- <% if plan.totalIssues()==0 %>
- <td class="noprogress nowrap <%= line_class -%>"><%= message('action_plans.no_issues_linked_to_action_plan') -%></td>
- <% else %>
- <td class="progress <%= line_class -%>">
- <%= render :partial => 'action_plans/progress', :locals => {:action_plan => plan} -%>
- </td>
- <% end %>
- <%
- else
- unresolved_issues_size = plan.unresolvedIssues()
- %>
- <td class="right <%= line_class -%>" style="padding-left:20px">
- <% if unresolved_issues_size == 0 %>
- <%= unresolved_issues_size -%>
- <% else %>
- <%
- search_options = {}
- search_options['actionPlans'] = plan.key
- search_options['resolved'] = false
- %>
- <a href="<%= url_for_component_issues(@project, search_options) -%>"
- title="<%= message('widget.action_plans.x_unresolved_issues', :params => unresolved_issues_size.to_s) -%>"><%= unresolved_issues_size -%></a>
- <% end %>
- </td>
- <td class="<%= line_class -%>" style="padding: 0 40px 0 10px; width: 300px;">
- <div class="barchart" style="width: 100%">
- <div style="width: <%= max_unresolved_issues > 0 ? 100 * unresolved_issues_size / max_unresolved_issues : 0 -%>%;background-color:#777;"></div>
- </div>
- </td>
- <% end %>
-
- </tr>
- <%
- end
- %>
- </tbody>
- </table>
-
-<% end %>
-
-</div>
-
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/issue_filter.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/issue_filter.html.erb
deleted file mode 100644
index f70e79ec85b..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/issue_filter.html.erb
+++ /dev/null
@@ -1,52 +0,0 @@
-<%
- container_id = 'widget-issue-filter-' + widget.id.to_s
- filter_id = widget_properties['filter']
- filter = Internal.issues.findIssueFilterById(filter_id.to_i)
- distribution_axis = widget_properties['distributionAxis']
- is_enough_permissions = filter.shared || (current_user && filter.userLogin == current_user.login)
-%>
-
-<% if filter %>
-
- <% if is_enough_permissions %>
-
- <% @widget_title = "<a href=\"#{url_for({:controller => 'issues', :action => 'index'})}#id=#{filter.id}\">#{h(filter.name)}</a>" %>
- <% if widget_properties['displayFilterDescription'] && !filter.description.blank? %>
- <p class="note spacer-bottom"><%= h filter.description -%></p>
- <% end %>
-
- <div id="<%= container_id -%>"></div>
- <script>
- (function () {
- var query = '<%= filter.data -%>';
-
- // do not show widget if the filter contains "my" criterion,
- // and a user is not authenticated
- if (query && query.indexOf('__me__') !== -1 && !window.SS.user) {
- jQuery('#<%= container_id -%>').closest('.block').addClass('hidden');
- return;
- }
-
- require(['widgets/issue-filter/widget'], function (IssueFilter) {
- window.requestMessages().done(function () {
- new IssueFilter({
- el: '#<%= container_id -%>',
- query: query,
- distributionAxis: '<%= distribution_axis -%>'
- });
- });
- });
- })();
- </script>
-
- <% else %>
-
- <p class="alert alert-warning"><%= message 'widget.issue_filter.insufficient_privileges_warning' -%></p>
-
- <% end %>
-
-<% else %>
-
- <p class="alert alert-warning"><%= message 'widget.issue_filter.unknown_filter_warning' -%></p>
-
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/issue_tag_cloud.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/issue_tag_cloud.html.erb
deleted file mode 100644
index 99012a289e5..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/issue_tag_cloud.html.erb
+++ /dev/null
@@ -1,61 +0,0 @@
-<%
- containerId = 'issue-tag-cloud' + widget.id.to_s
- maxItems = widget_properties['maxItems'].to_i
-
- if has_role?(:user, @project) && !Internal.issues.listTagsForComponent(@project.uuid, maxItems).isEmpty()
- search_options = {
- 'resolved' => 'false'
- }
- if @project
- search_options['componentUuids'] = @project.uuid
- end
- if @dashboard_configuration.selected_period?
- search_options['createdAfter'] = @snapshot.period_datetime(@dashboard_configuration.period_index).strftime('%FT%T%z')
- end
-
- title = message('widget.issue_tag_cloud.title')
-%>
-
-<div class="histogram-widget" id="<%= containerId %>">
- <!--[if lte IE 8 ]> <h3><%= message('widget.unsupported_browser_warning') -%></h3> <![endif]-->
-
- <!--[if (gte IE 9)|!(IE)]><!-->
- <h3 style="margin-bottom: 5px;"><%= title -%></h3>
- <!--<![endif]-->
-
-</div>
-
-<!--[if (gte IE 9)|!(IE)]><!-->
-<script>
- (function () {
- var createdAfter = '';
- <% if @dashboard_configuration.selected_period? -%>
- createdAfter = moment('<%= search_options['createdAfter'] -%>').format('YYYY-MM-DD');
- <% end -%>
-
- var queryParams = [
- 'componentUuid=<%= @project.uuid() -%>',
- 'ps=<%= maxItems -%>',
- 'createdAfter=' + createdAfter
- ],
- query = queryParams.join('&'),
- widget = new SonarWidgets.Widget();
-
- widget
- .type('TagCloud')
- .source(baseUrl + '/api/issues/component_tags?' + query)
- .options({
- maxItemsReachedMessage: '<%= message("widget.measure_filter_histogram.max_items_reached", :params => [maxItems]) -%>',
- baseUrl: baseUrl + '/component_issues/index?id=<%= @project.key -%>#resolved=false',
- noData: '<%= message('no_data') -%>',
- createdAfter: createdAfter
- })
- .render('#<%= containerId -%>');
-
- autoResize(500, function() {
- widget.update('#<%= containerId -%>');
- });
- })();
-</script>
-<!--<![endif]-->
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/issues.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/issues.html.erb
deleted file mode 100644
index 0b2fe0c63f8..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/issues.html.erb
+++ /dev/null
@@ -1,205 +0,0 @@
-<%
- issues = @snapshot.measure('violations')
- blocker_issues = @snapshot.measure('blocker_violations')
- critical_issues = @snapshot.measure('critical_violations')
- major_issues = @snapshot.measure('major_violations')
- minor_issues = @snapshot.measure('minor_violations')
- info_issues = @snapshot.measure('info_violations')
-
- new_issues = @snapshot.measure('new_violations')
- new_blocker_issues = @snapshot.measure('new_blocker_violations')
- new_critical_issues = @snapshot.measure('new_critical_violations')
- new_major_issues = @snapshot.measure('new_major_violations')
- new_minor_issues = @snapshot.measure('new_minor_violations')
- new_info_issues = @snapshot.measure('new_info_violations')
-
- technical_debt = @snapshot.measure('sqale_index')
- new_technical_debt = @snapshot.measure('new_technical_debt')
-
- if @dashboard_configuration.selected_period?
- period_date = @snapshot.period_datetime(@dashboard_configuration.period_index).strftime('%FT%T%z')
- end
-
- tooltip = message('widget.as_calculated_on_x', :params => l(@snapshot.created_at))
-%>
-
-<div class="widget-row">
-
- <% if technical_debt %>
- <div class="widget-span widget-span-3">
- <div class="widget-measure-container">
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('metric.sqale_index.short_name') -%></span>
- <a href="<%= url_for_drilldown('sqale_index') -%>" class="widget-link link-<%= widget.key %>-debt"
- title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom">
- <%= format_measure(technical_debt) -%>
- </a>
- <%= format_variation(technical_debt) if dashboard_configuration.selected_period? -%>
- </div>
- <div class="widget-measure-delta">
- <%
- if @dashboard_configuration.selected_period?
- technical_debt_variation = variation_value(technical_debt)
- new_technical_debt_variation = variation_value(new_technical_debt)
- estimated_cleared_technical_debt = (new_technical_debt_variation - technical_debt_variation).to_i if technical_debt_variation && new_technical_debt_variation
- %>
- <% if new_technical_debt_variation && new_technical_debt_variation > 0 %>
- <p class="small">
- <%= message('widget.rules.added') %>
- <a href="<%= url_for_drilldown('new_technical_debt', :period => @dashboard_configuration.period_index) -%>"
- class="varw widget-link widget-link-red link-<%= widget.key %>-new-debt"
- title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom">+<%= format_variation(new_technical_debt, :style => 'none', :default => '-') -%></a>
- </p>
- <% end %>
- <% if estimated_cleared_technical_debt && estimated_cleared_technical_debt > 0 %>
- <p class="small">
- <%= message('widget.rules.removed') %>
- <span class="varb">-<%= Internal.i18n.formatLongDuration(estimated_cleared_technical_debt, 'SHORT') -%></span>
- </p>
- <% end %>
- <% end %>
- </div>
- </div>
- </div>
- <% end %>
-
- <div class="widget-span widget-span-3">
- <div class="widget-measure-container">
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('widget.rules.issues') -%></span>
- <span class="nowrap">
- <span class="link-<%= widget.key %>-issues">
- <a href="<%= "#{url_for(:controller => 'component_issues', :action => 'index')}?id=#{url_encode(@project.key)}" -%>" class="widget-link link-<%= widget.key %>-debt"
- title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom">
- <%= format_measure(issues) -%>
- </a>
- </span>
- <%= format_variation(issues) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- <div class="widget-measure-delta">
- <%
- if @dashboard_configuration.selected_period?
- issues_variation = variation_value(issues)
- new_issues_variation = variation_value(new_issues)
- estimated_cleared_issues = (new_issues_variation - issues_variation).to_i if issues_variation && new_issues_variation
- %>
- <% if new_issues_variation && new_issues_variation > 0 %>
- <p class="small">
- <%= message('widget.rules.added') %>
- <a href="<%= url_for(:controller => 'component_issues', :action => 'index') -%>?id=<%= url_encode(@project.key) -%>#resolved=false|createdAfter=<%= period_date -%>"
- class="varw widget-link widget-link-red link-<%= widget.key %>-new-issues"
- title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom">+<%= format_variation(new_issues, :style => 'none', :default => '-') -%></a>
- </p>
- <% end %>
- <% if estimated_cleared_issues && estimated_cleared_issues > 0 %>
- <p class="small">
- <%= message('widget.rules.removed') %>
- <span class="varb">-<%= number_with_precision(estimated_cleared_issues, :precision => 0) -%></span>
- </p>
- <% end %>
- <% end %>
- </div>
- </div>
- </div>
-
- <div class="widget-span widget-span-4">
- <table class="data widget-barchar">
- <tr>
- <td class="thin nowrap">
- <i class="icon-severity-blocker"></i>
- <%= message('blocker') -%>
- </td>
- <td class="thin right nowrap">
- <a href="<%= url_for(:controller => 'component_issues', :action => 'index') -%>?id=<%= url_encode(@project.key) -%>#resolved=false|severities=BLOCKER"
- class="widget-link drilldown_BLOCKER" title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom">
- <%= format_measure(blocker_issues) -%>
- </a>
- </td>
- <td class="thin nowrap">
- <% if @dashboard_configuration.selected_period? %>
- <a href="<%= url_for(:controller => 'component_issues', :action => 'index') -%>?id=<%= url_encode(@project.key) -%>#resolved=false|severities=BLOCKER|createdAfter=<%= url_encode(period_date) -%>"
- class="widget-link <% if variation_value(new_blocker_issues).to_i > 0 %>varw text-danger<% end -%> link-<%= widget.key %>-new-blocker-issues"
- title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom">+<%= format_variation(new_blocker_issues, :style => 'none', :default => '-') -%></a>
- <% end %>
- </td>
- </tr>
- <tr>
- <td class="thin nowrap">
- <i class="icon-severity-critical"></i>
- <%= message('critical') -%>
- </td>
- <td class="thin right nowrap">
- <a href="<%= url_for(:controller => 'component_issues', :action => 'index') -%>?id=<%= url_encode(@project.key) -%>#resolved=false|severities=CRITICAL"
- class="widget-link drilldown_CRITICAL" title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom">
- <%= format_measure(critical_issues) -%>
- </a>
- </td>
- <td class="thin nowrap">
- <% if @dashboard_configuration.selected_period? %>
- <a href="<%= url_for(:controller => 'component_issues', :action => 'index') -%>?id=<%= url_encode(@project.key) -%>#resolved=false|severities=CRITICAL|createdAfter=<%= url_encode(period_date) -%>"
- class="widget-link <% if variation_value(new_critical_issues).to_i > 0 %>varw text-danger<% end -%> link-<%= widget.key %>-new-critical-issues"
- title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom">+<%= format_variation(new_critical_issues, :style => 'none', :default => '-') -%></a>
- <% end %>
- </td>
- </tr>
- <tr>
- <td class="thin nowrap">
- <i class="icon-severity-major"></i>
- <%= message('major') -%>
- </td>
- <td class="thin right nowrap">
- <a href="<%= url_for(:controller => 'component_issues', :action => 'index') -%>?id=<%= url_encode(@project.key) -%>#resolved=false|severities=MAJOR"
- class="widget-link drilldown_MAJOR" title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom">
- <%= format_measure(major_issues) -%>
- </a>
- </td>
- <td class="thin nowrap">
- <% if @dashboard_configuration.selected_period? %>
- <a href="<%= url_for(:controller => 'component_issues', :action => 'index') -%>?id=<%= url_encode(@project.key) -%>#resolved=false|severities=MAJOR|createdAfter=<%= url_encode(period_date) -%>"
- class="widget-link <% if variation_value(new_major_issues).to_i > 0 %>varw text-danger<% end -%> link-<%= widget.key %>-new-major-issues"
- title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom">+<%= format_variation(new_major_issues, :style => 'none', :default => '-') -%></a>
- <% end %>
- </td>
- </tr>
- <tr>
- <td class="thin nowrap">
- <i class="icon-severity-minor"></i>
- <%= message('minor') -%>
- </td>
- <td class="thin right nowrap">
- <a href="<%= url_for(:controller => 'component_issues', :action => 'index') -%>?id=<%= url_encode(@project.key) -%>#resolved=false|severities=MINOR"
- class="widget-link drilldown_MINOR" title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom">
- <%= format_measure(minor_issues) -%>
- </a>
- </td>
- <td class="thin nowrap">
- <% if @dashboard_configuration.selected_period? %>
- <a href="<%= url_for(:controller => 'component_issues', :action => 'index') -%>?id=<%= url_encode(@project.key) -%>#resolved=false|severities=MINOR|createdAfter=<%= url_encode(period_date) -%>"
- class="widget-link <% if variation_value(new_minor_issues).to_i > 0 %>varw text-danger<% end -%> link-<%= widget.key %>-new-minor-issues"
- title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom">+<%= format_variation(new_minor_issues, :style => 'none', :default => '-') -%></a>
- <% end %>
- </td>
- </tr>
- <tr>
- <td class="thin nowrap">
- <i class="icon-severity-info"></i>
- <%= message('info') -%>
- </td>
- <td class="thin right nowrap">
- <a href="<%= url_for(:controller => 'component_issues', :action => 'index') -%>?id=<%= url_encode(@project.key) -%>#resolved=false|severities=INFO"
- class="widget-link drilldown_INFO" title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom">
- <%= format_measure(info_issues) -%>
- </a>
- </td>
- <td class="thin nowrap">
- <% if @dashboard_configuration.selected_period? %>
- <a href="<%= url_for(:controller => 'component_issues', :action => 'index') -%>?id=<%= url_encode(@project.key) -%>#resolved=false|severities=INFO|createdAfter=<%= url_encode(period_date) -%>"
- class="widget-link <% if variation_value(new_info_issues).to_i > 0 %>varw text-danger<% end -%> link-<%= widget.key %>-new-info-issues"
- title="<%= tooltip -%>" data-toggle="tooltip" data-placement="bottom">+<%= format_variation(new_info_issues, :style => 'none', :default => '-') -%></a>
- <% end %>
- </td>
- </tr>
- </table>
- </div>
-</div>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/project_issue_filter.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/project_issue_filter.html.erb
deleted file mode 100644
index 16edb8192d1..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/issues/project_issue_filter.html.erb
+++ /dev/null
@@ -1,63 +0,0 @@
-<%
- container_id = 'widget-issue-filter-' + widget.id.to_s
- filter_id = widget_properties['filter']
- filter = Internal.issues.findIssueFilterById(filter_id.to_i)
- distribution_axis = widget_properties['distributionAxis']
- is_enough_permissions = filter.shared || (current_user && filter.userLogin == current_user.login)
-
- if @dashboard_configuration.selected_period?
- period_date = @snapshot.period_datetime(@dashboard_configuration.period_index).strftime('%FT%T%z')
- else
- period_date = nil
- end
-%>
-
-<% if filter %>
-
- <% if is_enough_permissions %>
-
- <% @widget_title = "<a href=\"#{url_for({:controller => 'component_issues', :action => 'index'})}?id=#{u(@project.key)}##{filter.data}\">#{h(filter.name)}</a>" %>
- <% if widget_properties['displayFilterDescription'] && !filter.description.blank? %>
- <p class="note spacer-bottom"><%= h filter.description -%></p>
- <% end %>
-
- <div id="<%= container_id -%>"></div>
- <script>
- (function () {
- var query = '<%= filter.data -%>';
-
- // do not show widget if the filter contains "my" criterion,
- // and a user is not authenticated
- if (query && query.indexOf('__me__') !== -1 && !window.SS.user) {
- jQuery('#<%= container_id -%>').closest('.block').addClass('hidden');
- return;
- }
-
- require(['widgets/issue-filter/widget'], function (IssueFilter) {
- window.requestMessages().done(function () {
- new IssueFilter({
- el: '#<%= container_id -%>',
- query: query,
- distributionAxis: '<%= distribution_axis -%>',
- <% if period_date %>
- periodDate: '<%= period_date -%>',
- <% end %>
- componentUuid: '<%= @project.uuid -%>',
- componentKey: '<%= @project.key -%>'
- });
- });
- });
- })();
- </script>
-
- <% else %>
-
- <p class="alert alert-warning"><%= message 'widget.issue_filter.insufficient_privileges_warning' -%></p>
-
- <% end %>
-
-<% else %>
-
- <p class="alert alert-warning"><%= message 'widget.issue_filter.unknown_filter_warning' -%></p>
-
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/it_coverage.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/it_coverage.html.erb
deleted file mode 100644
index 52c01fe6728..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/it_coverage.html.erb
+++ /dev/null
@@ -1,213 +0,0 @@
-<%
- it_coverage=measure('it_coverage')
- overall_coverage=measure('overall_coverage')
-
- if it_coverage || overall_coverage
--%>
- <div class="widget-row">
-
- <% if it_coverage -%>
- <div class="widget-span widget-span-6">
- <div class="widget-measure-container">
-
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('widget.it-coverage.name') -%></span>
- <span class="nowrap">
- <%= format_measure(it_coverage, :url => url_for_drilldown('it_coverage'), :default => '-') %>
- <%= format_variation(it_coverage) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
-
- <%
- it_line_coverage=measure('it_line_coverage')
- if it_line_coverage
- %>
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.it-coverage.line_coverage.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(it_line_coverage, :url => url_for_drilldown('it_uncovered_lines', :highlight => 'it_line_coverage')) %>
- <%= format_variation(it_line_coverage) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- <% end %>
-
- <%
- it_branch_coverage=measure('it_branch_coverage')
- if it_branch_coverage
- %>
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.it-coverage.condition_coverage.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(it_branch_coverage, :url => url_for_drilldown('it_uncovered_conditions', :highlight => 'it_branch_coverage')) %>
- <%= format_variation(it_branch_coverage) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- <% end %>
-
- <%
- if dashboard_configuration.selected_period?
- new_lines_to_cover_measure=measure('new_it_lines_to_cover')
- if new_lines_to_cover_measure
- new_lines=new_lines_to_cover_measure.variation(dashboard_configuration.period_index)
- if new_lines
- new_coverage=measure('new_it_coverage')
- new_line_coverage=measure('new_it_line_coverage')
- new_branch_coverage=measure('new_it_branch_coverage')
- %>
- <% if new_lines.to_i==0 %>
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('widget.it-coverage.on_new_code') -%></span>
-
- <p><%= message('widget.it-coverage.no_new_lines_to_cover') -%></p>
- </div>
- <% else %>
-
- <% if new_coverage %>
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('widget.it-coverage.on_new_code') -%></span>
- <span class="nowrap">
- <%= format_measure(new_coverage,
- :period => dashboard_configuration.period_index,
- :url => url_for_drilldown(new_coverage, :period => dashboard_configuration.period_index),
- :default => '-') %>
- </span>
- </div>
- <% end %>
-
- <% if new_line_coverage %>
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.it-coverage.line_coverage.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(new_line_coverage,
- :period => dashboard_configuration.period_index,
- :url => url_for_drilldown(new_line_coverage, :period => dashboard_configuration.period_index)) %>
- </span>
- </div>
- <% end %>
-
- <% if new_branch_coverage %>
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.it-coverage.condition_coverage.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(new_branch_coverage,
- :period => dashboard_configuration.period_index,
- :url => url_for_drilldown(new_branch_coverage, :period => dashboard_configuration.period_index)) %>
- </span>
- </div>
- <% end %>
-
- <% end %>
-
- <% end %>
- <% end %>
- <% end %>
-
- </div>
- </div>
- <% end %>
-
- <% if overall_coverage -%>
- <div class="widget-span widget-span-6">
- <div class="widget-measure-container">
-
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('widget.overall-coverage.name') -%></span>
- <span class="nowrap">
- <%= format_measure(overall_coverage, :url => url_for_drilldown('overall_coverage'), :default => '-') %>
- <%= format_variation(overall_coverage) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
-
- <%
- overall_line_coverage=measure('overall_line_coverage')
- if overall_line_coverage
- %>
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.overall-coverage.line_coverage.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(overall_line_coverage, :url => url_for_drilldown('overall_uncovered_lines', :highlight => 'overall_line_coverage')) %>
- <%= format_variation(overall_line_coverage) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- <% end %>
-
- <%
- overall_branch_coverage=measure('overall_branch_coverage')
- if overall_branch_coverage
- %>
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.overall-coverage.condition_coverage.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(overall_branch_coverage, :url => url_for_drilldown('overall_uncovered_conditions', :highlight => 'overall_branch_coverage')) %>
- <%= format_variation(overall_branch_coverage) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- <% end %>
-
- <%
- if dashboard_configuration.selected_period?
- new_lines_to_cover_measure=measure('new_overall_lines_to_cover')
- if new_lines_to_cover_measure
- new_lines=new_lines_to_cover_measure.variation(dashboard_configuration.period_index)
- if new_lines
- new_coverage=measure('new_overall_coverage')
- new_line_coverage=measure('new_overall_line_coverage')
- new_branch_coverage=measure('new_overall_branch_coverage')
- %>
- <% if new_lines.to_i==0 %>
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('widget.overall-coverage.on_new_code') -%></span>
-
- <p><%= message('widget.overall-coverage.no_new_lines_to_cover') -%></p>
- </div>
- <% else %>
-
- <% if new_coverage %>
- <div class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('widget.overall-coverage.on_new_code') -%></span>
- <span class="nowrap">
- <%= format_measure(new_coverage,
- :period => dashboard_configuration.period_index,
- :url => url_for_drilldown(new_coverage, :period => dashboard_configuration.period_index),
- :default => '-') %>
- <%= format_variation(new_coverage) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- <% end %>
-
- <% if new_line_coverage %>
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.overall-coverage.line_coverage.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(new_line_coverage,
- :period => dashboard_configuration.period_index,
- :url => url_for_drilldown(new_line_coverage, :period => dashboard_configuration.period_index)) %>
- <%= format_variation(new_line_coverage) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- <% end %>
-
- <% if new_branch_coverage %>
- <div class="widget-measure">
- <span class="widget-label"><%= message('widget.overall-coverage.condition_coverage.suffix') -%></span>
- <span class="nowrap">
- <%= format_measure(new_branch_coverage,
- :period => dashboard_configuration.period_index,
- :url => url_for_drilldown(new_branch_coverage, :period => dashboard_configuration.period_index)) %>
- <%= format_variation(new_branch_coverage) if dashboard_configuration.selected_period? -%>
- </span>
- </div>
- <% end %>
-
- <% end %>
-
- <% end %>
- <% end %>
- <% end %>
-
- </div>
- </div>
- <% end %>
-
- </div>
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measure_filter_list.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measure_filter_list.html.erb
deleted file mode 100644
index 438c7f49d5b..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measure_filter_list.html.erb
+++ /dev/null
@@ -1,28 +0,0 @@
-<%
- filter_id = widget_properties['filter']
- page_size = widget_properties['pageSize']
- filter = MeasureFilter.find_by_id(filter_id.to_i) if filter_id
- if filter
- filter.load_criteria_from_data
- if !filter.require_authentication? || logged_in?
- filter.set_criteria_value('display', 'list')
- filter.set_criteria_value('pageSize', page_size)
- filter.execute(self, :user => current_user)
- @widget_title = link_to h(filter.name), {:controller => 'measures', :action => 'filter', :id => filter.id}
-%>
-
- <% if widget_properties['displayFilterDescription'] && !filter.description.blank? %>
- <div style="padding-bottom: 5px">
- <span class="note"><%= h filter.description -%></span>
- </div>
- <% end %>
-
- <%= render :partial => 'measures/display_list', :locals => {:edit_mode => false, :filter => filter, :widget_id => widget.id} -%>
-<%
- end
- else
-%>
- <p><%= image_tag 'warning.png' %> <%= message 'measure_filter.widget.unknown_filter_warning' -%></p>
-<%
- end
-%>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_bubble_chart.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_bubble_chart.html.erb
deleted file mode 100644
index c5a23025495..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_bubble_chart.html.erb
+++ /dev/null
@@ -1,68 +0,0 @@
-<%
- containerId = 'bubble-chart-widget' + widget.id.to_s
- chartTitle = widget_properties["chartTitle"]
- chartHeight = widget_properties["chartHeight"]
- filterId = widget_properties["filter"].to_i
- xMetric = widget_properties["xMetric"]
- yMetric = widget_properties["yMetric"]
- sizeMetric = widget_properties["sizeMetric"]
- xLog = !!widget_properties["xLogarithmic"]
- yLog = !!widget_properties["yLogarithmic"]
- maxItems = widget_properties["maxItems"].to_i
-
- filter = MeasureFilter.find_by_id(filterId.to_i)
- if filter
- @widget_title = link_to h(filter.name), {:controller => 'measures', :action => 'filter', :id => filter.id, :display => 'list'}
-%>
-
-<div class="bubble-chart-widget" id="<%= containerId %>">
- <!--[if lte IE 8 ]> <h3><%= message('widget.unsupported_browser_warning') -%></h3> <![endif]-->
-
- <!--[if (gte IE 9)|!(IE)]><!-->
- <% if chartTitle %>
- <h3><%= h(chartTitle) -%></h3>
- <% end %>
- <!--<![endif]-->
-</div>
-
-<!--[if (gte IE 9)|!(IE)]><!-->
-<script>
- (function () {
- var metrics = [
- '<%= xMetric.name -%>', '<%= yMetric.name -%>', '<%= sizeMetric.name -%>'
- ],
- query = [
- 'filter=<%= filterId -%>',
- 'metrics=' + metrics.join(','),
- 'fields=name,longName,qualifier',
- <% if (maxItems > 0) %>
- 'pageSize=<%= maxItems -%>',
- <% end %>
- 'page=1',
- 'sort=metric:' + metrics[0]
- ].join('&'),
- widget = new SonarWidgets.Widget();
-
- widget
- .type('BubbleChart')
- .source(baseUrl + '/measures/search_filter?' + query)
- .metricsPriority(metrics)
- .height(<%= chartHeight -%>)
- .options({
- baseUrl: baseUrl + '/dashboard/index',
- xLog: <%= xLog -%>,
- yLog: <%= yLog -%>,
- noData: '<%= message('no_data') -%>',
- noMainMetric: '<%= message('widget.measure_filter.no_main_metric') -%>'
- })
- .render('#<%= containerId -%>');
-
- autoResize(500, function() {
- widget.update('#<%= containerId -%>');
- });
- })();
-</script>
-<!--<![endif]-->
-<% else %>
- <p><%= image_tag 'warning.png' %> <%= message 'measure_filter.widget.unknown_filter_warning' -%></p>
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_cloud.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_cloud.html.erb
deleted file mode 100644
index c45bb01cfcc..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_cloud.html.erb
+++ /dev/null
@@ -1,59 +0,0 @@
-<%
- containerId = 'word-cloud' + widget.id.to_s
- chartTitle = widget_properties['chartTitle']
- filterId = widget_properties['filter'].to_i
- maxItems = widget_properties['maxItems'].to_i
-
- filter = MeasureFilter.find_by_id(filterId.to_i)
- if filter
- @widget_title = link_to h(filter.name), {:controller => 'measures', :action => 'filter', :id => filter.id, :display => 'list'}
-%>
-
-<div class="histogram-widget" id="<%= containerId %>">
- <!--[if lte IE 8 ]> <h3><%= message('widget.unsupported_browser_warning') -%></h3> <![endif]-->
-
- <!--[if (gte IE 9)|!(IE)]><!-->
- <% if chartTitle %>
- <h3 style="margin-bottom: 5px;"><%= h(chartTitle) -%></h3>
- <% end %>
- <!--<![endif]-->
-</div>
-
-<!--[if (gte IE 9)|!(IE)]><!-->
-<script>
- (function () {
- var metrics = [
- '<%= widget_properties['colorMetric'].name -%>',
- '<%= widget_properties['sizeMetric'].name -%>'
- ],
- query = [
- 'filter=<%= filterId -%>',
- 'metrics=' + metrics.join(','),
- 'fields=name,longName,qualifier',
- 'pageSize=<%= maxItems -%>',
- 'page=1',
- 'sort=metric:' + metrics[1],
- 'asc=false'
- ].join('&'),
- widget = new SonarWidgets.Widget();
-
- widget
- .type('WordCloud')
- .source(baseUrl + '/measures/search_filter?' + query)
- .metricsPriority(metrics)
- .options({
- maxItemsReachedMessage: '<%= message("widget.measure_filter_histogram.max_items_reached", :params => [maxItems]) -%>',
- baseUrl: baseUrl + '/dashboard/index',
- noData: '<%= message('no_data') -%>'
- })
- .render('#<%= containerId -%>');
-
- autoResize(500, function() {
- widget.update('#<%= containerId -%>');
- });
- })();
-</script>
-<!--<![endif]-->
-<% else %>
- <p><%= image_tag 'warning.png' %> <%= message 'measure_filter.widget.unknown_filter_warning' -%></p>
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_histogram.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_histogram.html.erb
deleted file mode 100644
index 98842071f46..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_histogram.html.erb
+++ /dev/null
@@ -1,62 +0,0 @@
-<%
- containerId = 'histogram-widget' + widget.id.to_s
- chartTitle = widget_properties["chartTitle"]
- filterId = widget_properties["filter"].to_i
- maxItems = widget_properties["maxItems"].to_i
- reverseOrder = widget_properties["reverseOrder"]
- relativeScale = widget_properties["relativeScale"]
-
- filter = MeasureFilter.find_by_id(filterId.to_i)
- if filter
- @widget_title = link_to h(filter.name), {:controller => 'measures', :action => 'filter', :id => filter.id, :display => 'list'}
-%>
-
-<div class="histogram-widget" id="<%= containerId %>">
- <!--[if lte IE 8 ]> <h3><%= message('widget.unsupported_browser_warning') -%></h3> <![endif]-->
-
- <!--[if (gte IE 9)|!(IE)]><!-->
- <% if chartTitle %>
- <h3><%= h(chartTitle) -%></h3>
- <% end %>
- <!--<![endif]-->
-</div>
-
-<!--[if (gte IE 9)|!(IE)]><!-->
-<script>
- (function () {
- var metrics = [
- '<%= widget_properties["metric"].name -%>'
- ],
- query = [
- 'filter=<%= filterId -%>',
- 'metrics=' + metrics.join(','),
- 'fields=name,longName,qualifier',
- 'pageSize=<%= maxItems -%>',
- 'page=1',
- 'sort=metric:' + metrics[0],
- 'asc=<%= reverseOrder -%>'
- ].join('&'),
- widget = new SonarWidgets.Widget();
-
- widget
- .type('Histogram')
- .source(baseUrl + '/measures/search_filter?' + query)
- .metricsPriority(metrics)
- .options({
- baseUrl: baseUrl + '/dashboard/index',
- relativeScale: <%= relativeScale -%>,
- maxItemsReachedMessage: '<%= message("widget.measure_filter_histogram.max_items_reached", :params => [maxItems]) -%>',
- noData: '<%= message('no_data') -%>',
- noMainMetric: '<%= message('widget.measure_filter.no_main_metric') -%>'
- })
- .render('#<%= containerId -%>');
-
- autoResize(500, function() {
- widget.update('#<%= containerId -%>');
- });
- })();
-</script>
-<!--<![endif]-->
-<% else %>
- <p><%= image_tag 'warning.png' %> <%= message 'measure_filter.widget.unknown_filter_warning' -%></p>
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_pie_chart.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_pie_chart.html.erb
deleted file mode 100644
index c011ede3f1d..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_pie_chart.html.erb
+++ /dev/null
@@ -1,64 +0,0 @@
-<%
- containerId = 'pie-chart-widget' + widget.id.to_s
- chartHeight = widget_properties["chartHeight"]
- chartTitle = widget_properties["chartTitle"]
- filterId = widget_properties["filter"].to_i
- maxItems = widget_properties["maxItems"].to_i
-
- filter = MeasureFilter.find_by_id(filterId.to_i)
- if filter
- @widget_title = link_to h(filter.name), {:controller => 'measures', :action => 'filter', :id => filter.id, :display => 'list'}
-%>
-
-<div class="pie-chart-widget" id="<%= containerId %>">
- <!--[if lte IE 8 ]> <h3><%= message('widget.unsupported_browser_warning') -%></h3> <![endif]-->
-
- <!--[if (gte IE 9)|!(IE)]><!-->
- <% if chartTitle %>
- <h3><%= h(chartTitle) -%></h3>
- <% end %>
- <!--<![endif]-->
-</div>
-
-<!--[if (gte IE 9)|!(IE)]><!-->
-<script>
- (function () {
- var metrics = [
- '<%= widget_properties["mainMetric"].name -%>',
- '<%= widget_properties["extraMetric1"].name -%>'
- <% if (widget_properties["extraMetric2"]) %>
- , '<%= widget_properties["extraMetric2"].name -%>'
- <% end %>
- ],
- query = [
- 'filter=<%= filterId -%>',
- 'metrics=' + metrics.join(','),
- 'fields=name,qualifier',
- 'pageSize=<%= maxItems -%>',
- 'page=1',
- 'sort=metric:' + metrics[0],
- 'asc=false'
- ].join('&'),
- widget = new SonarWidgets.Widget();
-
- widget
- .type('PieChart')
- .source(baseUrl + '/measures/search_filter?' + query)
- .metricsPriority(metrics)
- .height(<%= chartHeight %>)
- .options({
- baseUrl: baseUrl + '/dashboard/index',
- noData: '<%= message('no_data') -%>',
- noMainMetric: '<%= message('widget.measure_filter.no_main_metric') -%>'
- })
- .render('#<%= containerId -%>');
-
- autoResize(500, function() {
- widget.update('#<%= containerId -%>');
- });
- })();
-</script>
-<!--<![endif]-->
-<% else %>
- <p><%= image_tag 'warning.png' %> <%= message 'measure_filter.widget.unknown_filter_warning' -%></p>
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_treemap.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_treemap.html.erb
deleted file mode 100644
index 48c08f864f2..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_treemap.html.erb
+++ /dev/null
@@ -1,67 +0,0 @@
-<%
- containerId = 'treemap-widget' + widget.id.to_s
- chartTitle = widget_properties['chartTitle']
- filterId = widget_properties['filter'].to_i
- maxItems = widget_properties['maxItems'].to_i
-
- # SONAR-2456
- # When metrics are removed, we have to manually set them to the default ones
- colorMetric = widget_properties['colorMetric'] || Metric.by_key('coverage')
- sizeMetric = widget_properties['sizeMetric'] || Metric.by_key('ncloc')
-
- filter = MeasureFilter.find_by_id(filterId.to_i)
- if filter
- @widget_title = link_to h(filter.name), {:controller => 'measures', :action => 'filter', :id => filter.id, :display => 'list'}
-%>
-
-<div class="treemap-widget" id="<%= containerId %>">
- <!--[if lte IE 8 ]> <h3><%= message('widget.unsupported_browser_warning') -%></h3> <![endif]-->
-
- <!--[if (gte IE 9)|!(IE)]><!-->
- <% if chartTitle %>
- <h3 style="margin-bottom: 5px;"><%= h(chartTitle) -%></h3>
- <% end %>
- <!--<![endif]-->
-</div>
-
-<!--[if (gte IE 9)|!(IE)]><!-->
-<script>
- (function () {
- var metrics = [
- '<%= colorMetric.name -%>',
- '<%= sizeMetric.name -%>'
- ],
- query = [
- 'filter=<%= filterId -%>',
- 'metrics=' + metrics.join(','),
- 'fields=name,longName,qualifier',
- 'pageSize=<%= maxItems -%>',
- 'page=1',
- 'sort=metric:' + metrics[1],
- 'asc=false'
- ].join('&'),
- widget = new SonarWidgets.Widget();
-
- widget
- .type('Treemap')
- .source(baseUrl + '/measures/search_filter?' + query)
- .metricsPriority(metrics)
- .options({
- heightInPercents: '<%= widget_properties['heightInPercents'] -%>',
- maxItems: <%= maxItems -%>,
- maxItemsReachedMessage: '<%= message("widget.measure_filter_histogram.max_items_reached", :params => [maxItems]) -%>',
- baseUrl: baseUrl + '/dashboard/index',
- noData: '<%= message('no_data') -%>',
- resource: '<%= filter.name -%>'
- })
- .render('#<%= containerId -%>');
-
- autoResize(500, function() {
- widget.update('#<%= containerId -%>');
- });
- })();
-</script>
-<!--<![endif]-->
-<% else %>
- <p><%= image_tag 'warning.png' %> <%= message 'measure_filter.widget.unknown_filter_warning' -%></p>
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/project_file_cloud.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/project_file_cloud.html.erb
deleted file mode 100644
index 8cb1c029938..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/project_file_cloud.html.erb
+++ /dev/null
@@ -1,76 +0,0 @@
-<%
- containerId = 'project-file-widget' + widget.id.to_s
- colorMetric = widget_properties['colorMetric']
- sizeMetric = widget_properties['sizeMetric']
- chartTitle = widget_properties['chartTitle']
- maxItems = widget_properties['maxItems'].to_i
-%>
-
-<div class="word-cloud-widget" id="<%= containerId %>">
- <!--[if lte IE 8 ]> <h3><%= message('widget.unsupported_browser_warning') -%></h3> <![endif]-->
-
- <!--[if (gte IE 9)|!(IE)]><!-->
- <% if chartTitle %>
- <h3 style="margin-bottom: 5px;"><%= h(chartTitle) -%></h3>
- <% end %>
- <!--<![endif]-->
-</div>
-
-<!--[if (gte IE 9)|!(IE)]><!-->
-<script>
- (function () {
- <%
- filter = MeasureFilter.new
- # Test files should not be returned
- qualifiers = Api::Utils.java_facade.getResourceLeavesQualifiers(@project.qualifier).to_a.reject {|q| q == 'UTS'}
- filter.criteria = {:qualifiers => qualifiers, :base => @project.key, :pageSize => maxItems, :sort => 'metric:' + sizeMetric.name, :asc => false}
- filter.metrics = [colorMetric.name, sizeMetric.name]
- filter.execute(self, :user => current_user)
- %>
-
- var data = {
- metrics: {
- <%= colorMetric.name -%>: {
- name: '<%= colorMetric.short_name -%>',
- direction: <%= colorMetric.direction -%>
- },
- <%= sizeMetric.name -%>: {
- name: '<%= sizeMetric.short_name -%>'
- }
- },
- components: [
- <%
- filter.rows.each do |row|
- color = row.measure(colorMetric)
- size = row.measure(sizeMetric)
- %>
- {
- key: '<%= escape_javascript row.resource.key -%>',
- name: '<%= escape_javascript row.resource.name -%>',
- longName: '<%= escape_javascript row.resource.long_name -%>',
- qualifier: '<%= escape_javascript row.resource.qualifier -%>',
- measures: {
- <%= colorMetric.name -%>: { val: <%= color ? color.value : "null" -%>, fval: '<%= color ? color.formatted_value : "-" -%>' },
- <%= sizeMetric.name -%>: { val: <%= size ? size.value : "null" -%>, fval: '<%= size ? size.formatted_value : "-" -%>' }
- }
- },
- <% end %>
- ]
- },
- widget = new SonarWidgets.WordCloud();
-
- widget
- .metrics(data.metrics)
- .metricsPriority(['<%= colorMetric.name -%>', '<%= sizeMetric.name -%>'])
- .components(data.components)
- .options({
- baseUrl: baseUrl + '/dashboard/index/'
- })
- .render('#<%= containerId -%>');
-
- autoResize(500, function() {
- widget.update('#<%= containerId -%>');
- });
- })();
-</script>
-<!--<![endif]-->
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/size.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/size.html.erb
deleted file mode 100644
index 1a4387b1ecc..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/size.html.erb
+++ /dev/null
@@ -1,195 +0,0 @@
-<%
- lines=measure('lines')
- ncloc=measure('ncloc')
- ncloc_language_distribution = measure('ncloc_language_distribution')
- ncloc_language_dist_hash = Hash[*(ncloc_language_distribution.data.split(';').map { |elt| elt.split('=') }.flatten)] if ncloc && ncloc_language_distribution
- generated_ncloc=measure('generated_ncloc')
- generated_lines=measure('generated_lines')
- accessors=measure('accessors')
- classes=measure('classes')
- files=measure('files')
- directories=measure('directories')
- functions=measure('functions')
- projects=measure('projects')
- if measure('lines') || ncloc
- files=measure('files')
- statements=measure('statements')
- languages = Api::Utils.java_facade.getLanguages()
-%>
-
-<div class="widget-row widget-row-x">
-
- <div class="widget-span widget-span-3-5">
- <div class="widget-measure-container">
- <% if ncloc %>
- <p class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('metric.ncloc.name') -%></span>
- <span class="nowrap">
- <%= format_measure(ncloc, :url => url_for_drilldown(ncloc)) %>
- <%= format_variation(ncloc) if dashboard_configuration.selected_period? -%>
- </span>
- </p>
- <% if generated_ncloc && generated_ncloc.value>0 %>
- <p class="widget-label nowrap" style="margin-bottom: 7px">
- <%= message('including_abbreviated') -%>
- <%= format_measure(generated_ncloc, :url => url_for_drilldown(generated_ncloc)) -%> <%= format_variation(generated_ncloc) if dashboard_configuration.selected_period? -%>
- <%= message('metric.generated_ncloc.name.suffix') -%>
- </p>
- <% end %>
-
- <% if ncloc_language_dist_hash %>
- <% if ncloc_language_dist_hash.size > 1 %>
- <table class="data widget-barchar" id="size-widget-language-dist">
- <%
- max = Math.sqrt(ncloc_language_dist_hash.max_by{|_k,v| v.to_i}[1].to_i)
-
- # Sort lines language distribution by lines count
- languages_by_key = Hash[languages.collect { |l| [l.getKey(), l.getName] }]
- ncloc_language_dist_hash.sort {|v1,v2| v2[1].to_i <=> v1[1].to_i }.each do |language_key, language_ncloc|
- %>
- <tr>
- <td>
- <% if language_key.eql? '<null>' %>
- <%= message('unknown') -%>
- <% else %>
- <% language = languages.find { |l| l.getKey()==language_key.to_s } -%>
- <%= language ? language.getName() : language_key -%>
- <% end %>
- </td>
- <td class="thin right nowrap">
- <%= ncloc.format_numeric_value(language_ncloc) %>
- </td>
- </tr>
- <% end %>
- </table>
- <script>
- jQuery(function () {
- var chart = jQuery('#size-widget-language-dist'),
- count = chart.find('tr').length;
- if (count > 3) {
- chart.find('tr:gt(2)').hide();
- var moreLinkBox = jQuery('<div></div>').addClass('widget-barchart-more').insertAfter(chart),
- moreLink = jQuery('<a><%= message('more') -%></a>').appendTo(moreLinkBox).on('click', function () {
- jQuery(this).hide();
- chart.find('tr').show();
- });
- }
- });
- </script>
- <% else %>
- <%
- language_key = ncloc_language_dist_hash.first[0]
- if language_key.eql? '<null>' %>
- <%= message('unknown') -%>
- <% else %>
- <% language = languages.find { |l| l.getKey()==language_key.to_s } -%>
- <%= language ? language.getName() : language_key -%>
- <% end %>
- <% end %>
- <% end %>
- <% else %>
- <p class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('metric.lines.name') -%></span>
- <span class="nowrap">
- <%= format_measure(lines, :url => url_for_drilldown(ncloc)) %>
- <%= format_variation(lines) if dashboard_configuration.selected_period? -%>
- </span>
- </p>
- <% end %>
- </div>
- </div>
-
- <div class="widget-span widget-span-3-5">
- <div class="widget-measure-container">
- <p class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('metric.files.name') -%></span>
- <span class="nowrap">
- <%= format_measure(files, :url => url_for_drilldown(files)) %>
- <%= format_variation(files) if dashboard_configuration.selected_period? -%>
- </span>
- </p>
-
- <% if directories %>
- <p class="widget-measure">
- <span class="widget-label"><%= message('metric.directories.name') -%></span>
- <span class="nowrap">
- <%= format_measure(directories, :url => url_for_drilldown(directories)) %>
- <%= format_variation(directories) if dashboard_configuration.selected_period? -%>
- </span>
- </p>
- <% end %>
-
- <p class="widget-measure">
- <span class="widget-label"><%= message('metric.lines.name') -%></span>
- <span class="nowrap">
- <%= format_measure(lines, :url => url_for_drilldown(lines)) %>
- <%= format_variation(lines) if dashboard_configuration.selected_period? -%>
- </span>
- </p>
-
- <% if generated_lines && generated_lines.value>0 %>
- <p class="widget-label nowrap" style="margin-bottom: 7px">
- <%= message('including_abbreviated') -%>
- <%= format_measure(generated_lines, :url => url_for_drilldown(generated_lines)) -%> <%= format_variation(generated_lines) if dashboard_configuration.selected_period? -%>
- <%= message('metric.generated_lines.name.suffix') -%>
- </p>
- <% end %>
-
- <% if projects %>
- <p class="widget-measure">
- <span class="widget-label"><%= message('projects') -%></span>
- <span class="nowrap">
- <span class="widget-number"><%= format_measure(projects) %></span>
- <%= format_variation(projects) if dashboard_configuration.selected_period? -%>
- </span>
- </p>
- <% end %>
- </div>
- </div>
-
- <div class="widget-span widget-span-5">
- <div class="widget-measure-container">
- <% if functions %>
- <p class="widget-measure widget-measure-main">
- <span class="widget-label"><%= message('metric.functions.name') -%></span>
- <span class="nowrap">
- <%= format_measure(functions, :url => url_for_drilldown(functions)) %>
- <%= format_variation(functions) if dashboard_configuration.selected_period? -%>
- </span>
- </p>
- <% end %>
-
- <% if classes %>
- <p class="widget-measure">
- <span class="widget-label"><%= message('metric.classes.name') -%></span>
- <span class="nowrap">
- <%= format_measure(classes, :url => url_for_drilldown(classes)) %>
- <%= format_variation(classes) if dashboard_configuration.selected_period? -%>
- </span>
- </p>
- <% end %>
-
- <% if statements %>
- <p class="widget-measure">
- <span class="widget-label"><%= message('metric.statements.name') -%></span>
- <span class="nowrap">
- <%= format_measure(statements, :url => url_for_drilldown(statements)) %>
- <%= format_variation(statements) if dashboard_configuration.selected_period? -%>
- </span>
- </p>
- <% end %>
-
- <% if accessors %>
- <p class="widget-measure">
- <span class="widget-label"><%= message('metric.accessors.name') -%></span>
- <span class="nowrap">
- <%= format_measure(accessors, :url => url_for_drilldown(accessors)) %>
- <%= format_variation(accessors) if dashboard_configuration.selected_period? -%>
- </span>
- </p>
- <% end %>
- </div>
- </div>
-
-</div>
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/technical_debt_pyramid.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/technical_debt_pyramid.html.erb
deleted file mode 100644
index 6f5464e92ea..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/technical_debt_pyramid.html.erb
+++ /dev/null
@@ -1,156 +0,0 @@
-<%
- technical_debt = measure('sqale_index')
-
- root_characteristics = Internal.debt.characteristics().to_a
-
- should_display_diff_measures = dashboard_configuration.selected_period? && technical_debt.variation(dashboard_configuration.period_index)!=nil
- if technical_debt.nil? || root_characteristics.empty?
-%>
-
- <h3><%= message('widget.technical_debt_pyramid.name') -%></h3>
- <span style="color: #777777; font-size: 93%; font-style:italic"><%= message('widget.technical_debt_pyramid.no_info_available') -%></span>
-
-<%
- else
-%>
- <style>
- table.technicalDebtPyramid td {
- padding: 4px 10px 4px 0;
- }
-
- table.technicalDebtPyramid td.label {
- width: 1%;
- white-space: nowrap;
- text-align: left;
- padding: 5px 10px 5px 0;
- }
-
- table.technicalDebtPyramid th.val {
- width: 1%;
- white-space: nowrap;
- text-align: right;
- padding: 0 0 0 10px;
- }
-
- table.technicalDebtPyramid td.val {
- width: 1%;
- white-space: nowrap;
- text-align: right;
- padding: 0 0 0 10px;
- }
-
- table.technicalDebtPyramid td.bar {
- width: 97%;
- }
-
- table.technicalDebtPyramid .legendValue {
- width: 10px;
- height: 10px;
- background-color: #4b9fd5;
- display: inline-block;
- zoom: 1; /* IE hack to trigger hasLayout */
- *display: inline; /* IE hack to achieve inline-block behavior */
- }
-
- table.technicalDebtPyramid .legendTotal {
- width: 10px;
- height: 10px;
- background-color: #cae3f2;
- display: inline-block;
- zoom: 1; /* IE hack to trigger hasLayout */
- *display: inline; /* IE hack to achieve inline-block behavior */
- }
-
- table.technicalDebtPyramid td.bar>a>div>div {
- float: right;
- }
- </style>
-
- <table class="technicalDebtPyramid">
- <thead>
- <tr>
- <th colspan="2"><div class="marginbottom10">
- <h3><%= message('widget.technical_debt_pyramid.name') -%></h3>
- </div></th>
- <th class="val"><div class="marginbottom10">
- <h3><div class="legendValue"></div>&nbsp;<%= message('widget.technical_debt_pyramid.technical_debt') -%></h3>
- </div></th>
- <th class="val"><div class="marginbottom10">
- <h3><%= message('widget.technical_debt_pyramid.total') -%></h3>
- </div></th>
- </tr>
- </thead>
- <tbody>
- <%
- measures_by_characteristic_id={}
- ProjectMeasure.find(:all,
- :conditions => ['characteristic_id IN (?) AND snapshot_id=? AND metric_id=?',
- root_characteristics.map{|c| c.id}, @snapshot.id, technical_debt.metric().id]).each do |measure|
- measures_by_characteristic_id[measure.characteristic_id]=measure
- end
-
- total = technical_debt.value
- cumulated=total
-
- if should_display_diff_measures
- diff_by_characteristic_id={}
- total_diff = 0;
- root_characteristics.each do |c|
- measure = measures_by_characteristic_id[c.id]
- if measure && measure.variation(dashboard_configuration.period_index)
- diff_by_characteristic_id[c.id] = measure.variation(dashboard_configuration.period_index)
- total_diff += measure.variation(dashboard_configuration.period_index)
- end
- end
- end
-
- root_characteristics.sort_by {|characteristic| characteristic.order}.each do |characteristic|
- measure=measures_by_characteristic_id[characteristic.id]
- value=(measure && measure.value ? measure.value : 0)
- total_size=(total>0 ? (100*cumulated/total).round(3): 0)
- value_size=(cumulated>0 ? (100*value/cumulated).round(3): 100)
- drilldown_url = url_for_drilldown('sqale_index', :characteristic => characteristic.key)
- %>
- <tr>
- <td class="label"><%= h(characteristic.name) -%></td>
- <td class="bar">
- <a href="<%= drilldown_url -%>">
- <div style="width: <%=total_size-%>%; height: 17px;background-color: #cae3f2;">
- <div style="width: <%=value_size-%>%; height: 17px;background-color: #4b9fd5;"></div>
- </div>
- </a>
- </td>
- <td class="val value-debt-<%= h(characteristic.key) -%>">
- <a href="<%= drilldown_url -%>" class="underlined-link link-debt-<%= h(characteristic.key) -%>"><%= Internal.i18n.formatLongDuration(value.to_i, 'SHORT') -%></a>
- <% if should_display_diff_measures %>
- <% if diff_by_characteristic_id[characteristic.id] %>
- <%= format_variation(measure) -%>
- <% else %>
- <span class="var"><b>(+0)</b></span>
- <% end %>
- <% end %>
- </td>
- <td class="val value-total-<%= h(characteristic.key) -%>">
- <%= Internal.i18n.formatLongDuration(cumulated.to_i, 'SHORT') -%>
- <%
- if should_display_diff_measures
- css_style = 'var'
- css_style += 'b' if total_diff < 0
- css_style += 'w' if total_diff > 0
- diff_to_display = (total_diff < 0 ? '' : '+') + Internal.i18n.formatLongDuration(total_diff.to_i, 'SHORT')
- %>
- <span class="<%= css_style -%>"><b>(<%= diff_to_display -%>)</b></span>
- <%
- total_diff -= diff_by_characteristic_id[characteristic.id] if diff_by_characteristic_id[characteristic.id]
- end
- %>
- </td>
- </tr>
- <%
- cumulated-=value
- end
- %>
- </tbody>
- </table>
-
-<% end %>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/time_machine.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/time_machine.html.erb
deleted file mode 100644
index 3c00988eae9..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/time_machine.html.erb
+++ /dev/null
@@ -1,130 +0,0 @@
-<%
- rows_by_metric_id={}
-
- # Retrieve widget settings
- metric_ids = []
- (1..10).each do |index|
- metric=widget_properties["metric#{index}"]
- if metric
- metric_ids << metric.id
- row=Sonar::TimemachineRow.new(metric)
- rows_by_metric_id[metric.id]=row
- end
- end
- if metric_ids.empty?
- # No metric has been selected, it's the first time the widget is displayed: 'ncloc' is the default metric
- ncloc = Metric.find(:first, :conditions => "name = 'ncloc'")
- metric_ids << ncloc.id
- end
- number_of_columns = widget_properties["numberOfColumns"]
-
- # Retrieve the measures for each metric on each snapshot
- options = {}
- from_date = dashboard_configuration.from_datetime
- if from_date
- options[:from] = from_date
- end
- snapshots=Snapshot.for_timemachine_widget(@resource, number_of_columns, options)
- sids = snapshots.collect { |s| s.id }.uniq
- measures=ProjectMeasure.find(:all,
- :conditions =>
- ["snapshot_id IN (:snapshot_id) AND metric_id IN (:metric_id) AND rule_id IS NULL AND characteristic_id IS NULL AND person_id IS NULL",
- {:snapshot_id => sids, :metric_id => metric_ids}
- ]
- )
-
-
- # Prepare the rows to display
- snapshot_by_id={}
- snapshots.each do |s|
- snapshot_by_id[s.id]=s
- end
- measures.each do |measure|
- next unless measure.metric
-
- if measure.metric.timemachine? && (measure.value || measure.text_value)
- row=rows_by_metric_id[measure.metric_id]
-
- #optimization : avoid eager loading of snapshots
- measure.snapshot=snapshot_by_id[measure.snapshot_id]
- row.add_measure(measure)
- end
- end
-
- # Create the list of rows to display in the same order as defined by the user
- rows=[]
- metric_ids.each do |metric_id|
- row = rows_by_metric_id[metric_id]
- if row
- rows<<row
- end
- end
-
- # Should display the sparkline?
- sparkline_urls_by_row = {}
- if widget_properties["displaySparkLine"]
- rows.each do |row|
- sparkline_url = row.sparkline_url
- sparkline_urls_by_row[row] = sparkline_url if sparkline_url
- end
- end
- display_sparkline = !sparkline_urls_by_row.empty?
-%>
-
-<% if widget_properties["title"] %>
- <div style="position: absolute">
- <h3><%= h(widget_properties["title"]) -%></h3>
- </div>
-<% end %>
-
-<div style="overflow: auto;font-size: 12px;padding: 1px;">
- <table class="table table-bordered">
-
- <thead>
- <tr>
- <th></th>
- <%
- snapshots.each do |snapshot|
- event = snapshot.event('Version')
- %>
- <th nowrap="nowrap" style="vertical-align:top;text-align: right;font-size: 10px">
- <%= l snapshot.created_at.to_date -%>
- <br/>
- <%= event.name unless event==nil -%>
- </th>
- <% end %>
- <% if display_sparkline %>
- <th></th>
- <% end %>
- </tr>
- </thead>
-
- <tbody>
- <%
- rows.select { |row| row.metric.val_type != Metric::VALUE_TYPE_DISTRIB }.each do |row|
- %>
- <tr class="<%= cycle 'even', 'odd', :name => ('time_machine' + widget.id.to_s) -%>">
- <td width="1%" nowrap="nowrap" class="left text">
- <%= row.metric.short_name %>
- </td>
- <%
- snapshots.each do |snapshot|
- measure=row.measure(snapshot)
- %>
- <td width="1%" nowrap="nowrap" class="right"><%= format_measure(measure, :skip_span_id => true) %></td>
- <% end %>
- <%
- if display_sparkline
- sparkline_url = sparkline_urls_by_row[row]
- %>
- <td width="1%">
- <%= image_tag(sparkline_url) if sparkline_url %>
- </td>
- <% end %>
- </tr>
- <% end %>
- </tbody>
-
- </table>
-
-</div>
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/timeline.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/timeline.html.erb
deleted file mode 100644
index 7e7ad6ec44f..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/timeline.html.erb
+++ /dev/null
@@ -1,193 +0,0 @@
-<%
- # Retrieve widget settings
- metric_data_map = {}
- metric_map = {}
- metrics_specified = false
- (1..3).each do |index|
- metric=widget_properties["metric#{index}"]
- # we check that the current resource has the selected metric on the last snapshot
- # => if not, we do not display this metric at all
- if metric
- metrics_specified = true
- if measure(metric)
- metric_data_map[metric.id] = []
- metric_map[metric.id] = metric
- end
- end
- end
- unless metrics_specified
- # No metric has been selected, it's the first time the widget is displayed: 'ncloc' is the default metric
- ncloc = Metric.by_name('ncloc')
- metric_data_map[ncloc.id] = []
- metric_map[ncloc.id] = ncloc
- end
- chartHeight = widget_properties["chartHeight"]
-
- unless metric_data_map.values.empty?
- # Retrieve metric trend information
- options = {}
- from_date = dashboard_configuration.from_datetime
- if from_date
- options[:from] = from_date
- end
- metric_count_per_snapshot_id = {}
- TrendsChart.time_machine_measures(@resource, metric_data_map.keys, options).each() do |trend_item|
- sid = trend_item["sid"]
- if metric_count_per_snapshot_id[sid]
- metric_count_per_snapshot_id[sid] += 1
- else
- metric_count_per_snapshot_id[sid] = 1
- end
- metric_data_map[trend_item["metric_id"].to_i] << {:date => Time.at(trend_item["created_at"].to_i/1000), :value => trend_item["value"], :sid => trend_item["sid"]}
- end
-
- # Create JS structures to print out in the HTML page
- js_data = "["
- js_snapshots = "["
- js_metrics = "["
- total_number_of_metrics = metric_map.keys.size()
- metric_data_map.keys.each_with_index() do |metric_id, index|
- unless metric_data_map[metric_id].empty?
- js_metrics += "\"" + metric_map[metric_id].short_name + "\","
- js_data += "["
- metric_data_map[metric_id].each() do |metric_data|
- # for every metric value, we need to check that the corresponding snapshot has values for each metric
- if metric_count_per_snapshot_id[metric_data[:sid]]==total_number_of_metrics
- m_date = metric_data[:date]
- m_value = sprintf("%0.02f", metric_data[:value])
- m_value_localized = ProjectMeasure.new(:metric => metric_map[metric_id]).format_numeric_value(metric_data[:value], {})
- js_data += "{x:d("
- js_data += m_date.year.to_s
- js_data += ","
- # Need to decrease by 1 the month as the JS Date object start months at 0 (= January)
- js_data += (m_date.month - 1).to_s
- js_data += ","
- js_data += m_date.day.to_s
- js_data += ","
- js_data += m_date.hour.to_s
- js_data += ","
- js_data += m_date.min.to_s
- js_data += ","
- js_data += m_date.sec.to_s
- js_data += "),y:"
- js_data += m_value
- js_data += ",yl:\""
- js_data += m_value_localized
- js_data += "\"},"
- if index == 0
- # we fill the js_snapshots array (no need to do this more than once)
- js_snapshots += "{sid:"
- js_snapshots += metric_data[:sid].to_s
- js_snapshots += ",d:\""
- js_snapshots += human_short_date m_date
- js_snapshots += "\"},"
- end
- end
- end
- js_data = js_data.chomp(',') + "],"
- end
- end
- js_data = js_data.chomp(',') + "]"
- js_snapshots = js_snapshots.chomp(',') + "]"
- js_metrics = js_metrics.chomp(',') + "]"
-
- # Prepare also event structure if required
- unless widget_properties["hideEvents"]
- events = {}
- unless from_date
- # find the oldest date
- metric_data_map.values.each() do |metric_data_array|
- first_date = metric_data_array[0][:date]
- from_date = first_date if !from_date || from_date > first_date
- end
- end
- Event.find(:all, :conditions => ["component_uuid=? AND event_date>=?", @resource.uuid, from_date.to_i*1000], :order => 'event_date').each() do |event|
- if events[event.event_date]
- events[event.event_date] << event
- else
- date_entry = [event]
- events[event.event_date] = date_entry
- end
- end
- js_events = "["
- events.keys().sort.each() do |e_date|
- e_details = events[e_date]
- js_events += "{sid:"
- js_events += e_details[0].snapshot_id.to_s
- js_events += ",d:d("
- js_events += e_date.year.to_s
- js_events += ","
- # Need to decrease by 1 the month as the JS Date object start months at 0 (= January)
- js_events += (e_date.month - 1).to_s
- js_events += ","
- js_events += e_date.day.to_s
- js_events += ","
- js_events += e_date.hour.to_s
- js_events += ","
- js_events += e_date.min.to_s
- js_events += ","
- js_events += e_date.sec.to_s
- js_events += "),l:["
- e_details.each() do |e|
- js_events += "{n:\""
- js_events += json_escape(e.name)
- js_events += "\"},"
- end
- js_events = js_events.chomp(',') + "]},"
- end
- js_events = js_events.chomp(',') + "]"
- end
- end
-
-
-%>
-
-<!--[if lte IE 8 ]> <h3><%= message('widget.unsupported_browser_warning') -%></h3> <![endif]-->
-
-<!--[if (gte IE 9)|!(IE)]><!-->
-<% if widget_properties["chartTitle"] %>
- <h3 style="margin-bottom: 10px"><%= h(widget_properties["chartTitle"]) -%></h3>
-<% end %>
-<!--<![endif]-->
-
-
-<!--[if (gte IE 9)|!(IE)]><!-->
-<%
- unless metric_data_map.values.empty?
-
- if metric_data_map.values[0].size == 1
-%>
-
- <span class="empty_widget"><%= message('widget.timeline.timeline_not_displayed') -%></span>
-
-<% else %>
- <% timeline = 'timeline' + widget.id.to_s %>
-
- <div id="timeline-chart-<%= widget.id -%>"></div>
- <script>
- function d(y, m, d, h, min, s) {
- return new Date(y, m, d, h, min, s);
- }
- var data = <%= js_data -%>;
- var snapshots = <%= js_snapshots -%>;
- var metrics = <%= js_metrics -%>;
- var events = <%= js_events ? js_events : "[]" -%>;
- var <%= timeline -%> = new SonarWidgets.Timeline('timeline-chart-<%= widget.id -%>')
- .height(<%= chartHeight -%>)
- .data(data)
- .snapshots(snapshots)
- .metrics(metrics)
- .events(events);
- <%= timeline -%>.limitedHistoricalData = '<%= message('widget.timeline.limited_histortical_data') -%>';
- <%= timeline -%>.render();
-
- autoResize(200, function() {
- <%= timeline -%>.update();
- });
- </script>
-
-<%
- end
- end
-%>
-<!--<![endif]-->
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/treemap.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/treemap.html.erb
deleted file mode 100644
index f6a1fbc2b6b..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/treemap.html.erb
+++ /dev/null
@@ -1,85 +0,0 @@
-<%
- containerId = 'project-file-widget' + widget.id.to_s
- colorMetric = widget_properties['colorMetric']
- sizeMetric = widget_properties['sizeMetric']
- chartTitle = widget_properties['chartTitle']
- maxItems = widget_properties['maxItems'].to_i
-%>
-
-<div class="treemap-widget" id="<%= containerId %>">
- <!--[if lte IE 8 ]> <h3><%= message('widget.unsupported_browser_warning') -%></h3> <![endif]-->
-
- <!--[if (gte IE 9)|!(IE)]><!-->
- <% if chartTitle %>
- <h3 style="margin-bottom: 5px;"><%= h(chartTitle) -%></h3>
- <% end %>
- <!--<![endif]-->
-</div>
-
-<!--[if (gte IE 9)|!(IE)]><!-->
-<script>
- (function () {
- <%
- filter = MeasureFilter.new
- filter.set_criteria_value(:base, @resource.key)
- filter.set_criteria_value(:onBaseComponents, 'true')
- filter.set_criteria_value(:pageSize, 100)
- filter.set_criteria_value(:page, 1)
- filter.set_criteria_value(:sort, 'metric:' + sizeMetric.name)
- filter.set_criteria_value(:asc, false)
- filter.metrics=([sizeMetric, colorMetric].compact)
- filter.execute(self, :user => current_user)
- %>
-
- var data = {
- metrics: {
- <%= colorMetric.name -%>: {
- name: '<%= colorMetric.short_name -%>',
- direction: <%= colorMetric.direction -%>,
- type: '<%= colorMetric.val_type -%>'
- },
- <%= sizeMetric.name -%>: {
- name: '<%= sizeMetric.short_name -%>'
- }
- },
- components: [
- <%
- filter.rows.each do |row|
- color = row.measure(colorMetric)
- size = row.measure(sizeMetric)
- %>
- {
- key: '<%= escape_javascript row.resource.key -%>',
- name: '<%= escape_javascript row.resource.name -%>',
- longName: '<%= escape_javascript row.resource.long_name -%>',
- qualifier: '<%= escape_javascript row.resource.qualifier -%>',
- measures: {
- <%= colorMetric.name -%>: { val: <%= color ? color.value : "null" -%>, fval: '<%= color ? color.formatted_value : "-" -%>' },
- <%= sizeMetric.name -%>: { val: <%= size ? size.value : "null" -%>, fval: '<%= size ? size.formatted_value : "-" -%>' }
- }
- },
- <% end %>
- ]
- },
- widget = new SonarWidgets.Treemap();
-
- widget
- .metrics(data.metrics)
- .metricsPriority(['<%= colorMetric.name -%>', '<%= sizeMetric.name -%>'])
- .components(data.components)
- .options({
- heightInPercents: '<%= widget_properties['heightInPercents'] -%>',
- maxItems: <%= maxItems -%>,
- maxItemsReachedMessage: '<%= message("widget.measure_filter_histogram.max_items_reached", :params => [maxItems]) -%>',
- baseUrl: baseUrl + '/dashboard/index',
- noData: '<%= message('no_data') -%>',
- resource: '<%= @resource.name -%>'
- })
- .render('#<%= containerId -%>');
-
- autoResize(500, function() {
- widget.update('#<%= containerId -%>');
- });
- })();
-</script>
-<!--<![endif]-->
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/welcome.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/welcome.html.erb
deleted file mode 100644
index a3e651d4f03..00000000000
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/welcome.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<%= message('widget.welcome.html') -%> \ No newline at end of file
diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/charts/AbstractChartTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/charts/AbstractChartTest.java
deleted file mode 100644
index 31223db492f..00000000000
--- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/charts/AbstractChartTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.charts;
-
-import org.apache.commons.io.FileUtils;
-import org.jfree.chart.ChartUtilities;
-import org.jfree.ui.ApplicationFrame;
-import org.jfree.ui.RefineryUtilities;
-
-import javax.swing.JPanel;
-
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import static org.junit.Assert.assertTrue;
-
-public abstract class AbstractChartTest {
- protected void assertChartSizeGreaterThan(BufferedImage img, int size) throws IOException {
- ByteArrayOutputStream output = new ByteArrayOutputStream();
- ChartUtilities.writeBufferedImageAsPNG(output, img);
- assertTrue("PNG size in bits=" + output.size(), output.size() > size);
- }
-
- protected void assertChartSizeLesserThan(BufferedImage img, int size) throws IOException {
- ByteArrayOutputStream output = new ByteArrayOutputStream();
- ChartUtilities.writeBufferedImageAsPNG(output, img);
- assertTrue("PNG size in bits=" + output.size(), output.size() < size);
- }
-
- protected void saveChart(BufferedImage img, String name) throws IOException {
- File target = new File("target/tmp-chart", name);
- FileUtils.forceMkdir(target.getParentFile());
- ByteArrayOutputStream imgOutput = new ByteArrayOutputStream();
- ChartUtilities.writeBufferedImageAsPNG(imgOutput, img);
- OutputStream out = new FileOutputStream(target);
- out.write(imgOutput.toByteArray());
- out.close();
-
- }
-
- protected static void displayTestPanel(BufferedImage image) {
- ApplicationFrame frame = new ApplicationFrame("testframe");
- BufferedPanel imgPanel = new BufferedPanel(image);
- frame.setContentPane(imgPanel);
- frame.pack();
- RefineryUtilities.centerFrameOnScreen(frame);
- frame.setVisible(true);
- }
-
- protected static Date stringToDate(String sDate) throws ParseException {
- SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yy hh'h'mm");
- return sdf.parse(sDate);
- }
-
- private static class BufferedPanel extends JPanel {
- private final BufferedImage chartImage;
-
- public BufferedPanel(BufferedImage chartImage) {
- this.chartImage = chartImage;
- }
-
- @Override
- protected void paintComponent(Graphics graphics) {
- super.paintComponent(graphics);
- graphics.drawImage(chartImage, 0, 0, null);
- }
-
- @Override
- public Dimension getPreferredSize() {
- return new Dimension(chartImage.getWidth(), chartImage.getHeight());
- }
- }
-}
diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/charts/DistributionAreaChartTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/charts/DistributionAreaChartTest.java
deleted file mode 100644
index 6a535abad16..00000000000
--- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/charts/DistributionAreaChartTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.charts;
-
-import org.junit.Test;
-import org.sonar.api.charts.ChartParameters;
-
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-
-public class DistributionAreaChartTest extends AbstractChartTest {
-
- @Test
- public void oneSerie() throws IOException {
- DistributionAreaChart chart = new DistributionAreaChart();
- BufferedImage image = chart.generateImage(new ChartParameters("v=0%3D5%3B1%3D22%3B2%3D2"));
- assertChartSizeGreaterThan(image, 1000);
- saveChart(image, "DistributionAreaChartTest/oneSerie.png");
- }
-
- @Test
- public void manySeries() throws IOException {
- DistributionAreaChart chart = new DistributionAreaChart();
- BufferedImage image = chart.generateImage(new ChartParameters("v=0%3D5%3B1%3D22%3B2%3D2|0%3D7%3B1%3D15%3B2%3D4"));
- assertChartSizeGreaterThan(image, 1000);
- saveChart(image, "DistributionAreaChartTest/manySeries.png");
- }
-
- @Test
- public void manySeriesWithDifferentCategories() throws IOException {
- DistributionAreaChart chart = new DistributionAreaChart();
- BufferedImage image = chart.generateImage(new ChartParameters("v=0%3D5%3B1%3D22%3B2%3D2|2%3D7%3B4%3D15%3B9%3D4"));
- assertChartSizeGreaterThan(image, 1000);
- saveChart(image, "DistributionAreaChartTest/manySeriesWithDifferentCategories.png");
- }
-
- @Test
- public void manySeriesIncludingAnEmptySerie() throws IOException {
- // the third serie should not have the second default color, but the third one !
- DistributionAreaChart chart = new DistributionAreaChart();
- BufferedImage image = chart.generateImage(new ChartParameters("v=0%3D5%3B1%3D22%3B2%3D2||2%3D7%3B4%3D15%3B9%3D4"));
- assertChartSizeGreaterThan(image, 1000);
- saveChart(image, "DistributionAreaChartTest/manySeriesIncludingAnEmptySerie.png");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/charts/DistributionBarChartTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/charts/DistributionBarChartTest.java
deleted file mode 100644
index 8e50f49ab24..00000000000
--- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/charts/DistributionBarChartTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.charts;
-
-import org.junit.Test;
-import org.sonar.api.charts.ChartParameters;
-
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-
-public class DistributionBarChartTest extends AbstractChartTest {
- DistributionBarChart chart = new DistributionBarChart();
-
- @Test
- public void simpleSample() throws IOException {
- BufferedImage image = chart.generateImage(new ChartParameters("v=0%3D5%3B1%3D22%3B2%3D2"));
- assertChartSizeGreaterThan(image, 1000);
- saveChart(image, "DistributionBarChartTest/simpleSample.png");
- }
-
- @Test
- public void addXSuffix() throws IOException {
- // should suffix x labels with +
- BufferedImage image = chart.generateImage(new ChartParameters("v=0%3D5%3B1%3D22%3B2%3D2&xsuf=%2B"));
- assertChartSizeGreaterThan(image, 1000);
- saveChart(image, "DistributionBarChartTest/addXSuffix.png");
- }
-
- @Test
- public void addYSuffix() throws IOException {
- // should suffix y labels with %
- BufferedImage image = chart.generateImage(new ChartParameters("v=0%3D5%3B1%3D22%3B2%3D2&ysuf=%25"));
- assertChartSizeGreaterThan(image, 1000);
- saveChart(image, "DistributionBarChartTest/addYSuffix.png");
- }
-
- @Test
- public void manySeries() throws IOException {
- BufferedImage image = chart.generateImage(new ChartParameters("v=0%3D5%3B1%3D22%3B2%3D2|0%3D7%3B1%3D15%3B2%3D4"));
- assertChartSizeGreaterThan(image, 1000);
- saveChart(image, "DistributionBarChartTest/manySeries.png");
- }
-
- @Test
- public void manySeriesIncludingAnEmptySerie() throws IOException {
- // the third serie should not have the second default color, but the third one !
- BufferedImage image = chart.generateImage(new ChartParameters("v=0%3D5%3B1%3D22%3B2%3D2||0%3D7%3B1%3D15%3B2%3D4"));
- assertChartSizeGreaterThan(image, 1000);
- saveChart(image, "DistributionBarChartTest/manySeriesIncludingAnEmptySerie.png");
- }
-
- @Test
- public void overridenSize() throws IOException {
- BufferedImage image = chart.generateImage(new ChartParameters("v=0%3D5%3B1%3D22%3B2%3D2|0%3D7%3B1%3D15%3B2%3D4&w=500&h=200"));
- assertChartSizeGreaterThan(image, 1000);
- saveChart(image, "DistributionBarChartTest/overridenSize.png");
- }
-
- @Test
- public void changeColor() throws IOException {
- BufferedImage image = chart.generateImage(new ChartParameters("v=0%3D5%3B1%3D22%3B2%3D2&c=777777&bgc=777777"));
- assertChartSizeGreaterThan(image, 1000);
- saveChart(image, "DistributionBarChartTest/changeColor.png");
- }
-
- @Test
- public void smallSize() throws IOException {
- BufferedImage image = chart.generateImage(new ChartParameters("v=0%3D5%3B1%3D22%3B2%3D2%3B4%3D22%3B5%3D22%3B6%3D22&c=777777&w=120&h=80&fs=8"));
- assertChartSizeGreaterThan(image, 500);
- saveChart(image, "DistributionBarChartTest/smallSize.png");
- }
-}
diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboardTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboardTest.java
deleted file mode 100644
index a89ebdbfa59..00000000000
--- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboardTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.dashboards;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.sonar.api.web.Dashboard;
-import org.sonar.api.web.Dashboard.Widget;
-import org.sonar.core.measure.db.MeasureFilterDao;
-import org.sonar.core.measure.db.MeasureFilterDto;
-import org.sonar.plugins.core.CorePlugin;
-import org.sonar.plugins.core.measurefilters.MyFavouritesFilter;
-import org.sonar.plugins.core.measurefilters.ProjectFilter;
-import org.sonar.plugins.core.widgets.WelcomeWidget;
-import org.sonar.plugins.core.widgets.measures.MeasureFilterAsTreemapWidget;
-import org.sonar.plugins.core.widgets.measures.MeasureFilterListWidget;
-
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-public class GlobalDefaultDashboardTest {
- GlobalDefaultDashboard template;
- MeasureFilterDao dao;
-
- @Before
- public void init() {
- dao = mock(MeasureFilterDao.class);
- template = new GlobalDefaultDashboard(dao);
- }
-
- @Test
- public void should_have_a_name() {
- assertThat(template.getName()).isEqualTo("Home");
- }
-
- @Test
- public void should_be_registered_as_an_extension() {
- assertThat(new CorePlugin().getExtensions()).contains(template.getClass());
- }
-
- @Test
- public void should_create_global_dashboard_with_four_widgets() {
- when(dao.findSystemFilterByName(MyFavouritesFilter.NAME)).thenReturn(
- new MeasureFilterDto().setId(100L)
- );
- when(dao.findSystemFilterByName(ProjectFilter.NAME)).thenReturn(
- new MeasureFilterDto().setId(101L)
- );
- Dashboard dashboard = template.createDashboard();
- List<Widget> firstColumn = dashboard.getWidgetsOfColumn(1);
- assertThat(firstColumn).hasSize(2);
- assertThat(firstColumn.get(0).getId()).isEqualTo(WelcomeWidget.ID);
- assertThat(firstColumn.get(1).getId()).isEqualTo(MeasureFilterListWidget.ID);
- assertThat(firstColumn.get(1).getProperty("filter")).isEqualTo("100");
-
- List<Widget> secondColumn = dashboard.getWidgetsOfColumn(2);
- assertThat(secondColumn).hasSize(2);
- assertThat(secondColumn.get(0).getId()).isEqualTo(MeasureFilterListWidget.ID);
- assertThat(secondColumn.get(0).getProperty("filter")).isEqualTo("101");
- assertThat(secondColumn.get(1).getId()).isEqualTo(MeasureFilterAsTreemapWidget.ID);
- assertThat(secondColumn.get(1).getProperty("filter")).isEqualTo("101");
- }
-
- @Test
- public void should_not_fail_if_filter_widgets_not_found() {
- when(dao.findSystemFilterByName(MyFavouritesFilter.NAME)).thenReturn(null);
- when(dao.findSystemFilterByName(ProjectFilter.NAME)).thenReturn(null);
-
- Dashboard dashboard = template.createDashboard();
- List<Widget> firstColumn = dashboard.getWidgetsOfColumn(1);
- assertThat(firstColumn).hasSize(1);
- assertThat(firstColumn.get(0).getId()).isEqualTo(WelcomeWidget.ID);
-
- List<Widget> secondColumn = dashboard.getWidgetsOfColumn(2);
- assertThat(secondColumn).isEmpty();
- }
-}
diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/ProjectDefaultDashboardTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/ProjectDefaultDashboardTest.java
deleted file mode 100644
index a5168888bed..00000000000
--- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/ProjectDefaultDashboardTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.dashboards;
-
-import org.junit.Test;
-import org.sonar.api.web.Dashboard;
-import org.sonar.api.web.DashboardLayout;
-import org.sonar.plugins.core.CorePlugin;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class ProjectDefaultDashboardTest {
- ProjectDefaultDashboard template = new ProjectDefaultDashboard();
-
- @Test
- public void should_have_a_name() {
- assertThat(template.getName()).isEqualTo("Dashboard");
- }
-
- @Test
- public void should_be_registered_as_an_extension() {
- assertThat(new CorePlugin().getExtensions()).contains(template.getClass());
- }
-
- @Test
- public void should_create_dashboard() {
- Dashboard dashboard = template.createDashboard();
-
- assertThat(dashboard.getLayout()).isEqualTo(DashboardLayout.TWO_COLUMNS);
- assertThat(dashboard.getWidgets()).hasSize(9);
- }
-}
diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/ProjectIssuesDashboardTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/ProjectIssuesDashboardTest.java
deleted file mode 100644
index 716a43843b6..00000000000
--- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/ProjectIssuesDashboardTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-package org.sonar.plugins.core.dashboards;
-
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.sonar.api.web.Dashboard;
-import org.sonar.api.web.DashboardLayout;
-import org.sonar.core.issue.db.IssueFilterDao;
-import org.sonar.core.persistence.DbTester;
-import org.sonar.plugins.core.CorePlugin;
-import org.sonar.test.DbTests;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Category(DbTests.class)
-public class ProjectIssuesDashboardTest {
-
- @ClassRule
- public static final DbTester dbTester = new DbTester();
-
- ProjectIssuesDashboard template;
-
- @Before
- public void setUp() {
- IssueFilterDao issueFilterDao = new IssueFilterDao(dbTester.myBatis());
- template = new ProjectIssuesDashboard(issueFilterDao);
- }
-
- @Test
- public void should_have_a_name() {
- assertThat(template.getName()).isEqualTo("Issues");
- }
-
- @Test
- public void should_be_registered_as_an_extension() {
- assertThat(new CorePlugin().getExtensions()).contains(template.getClass());
- }
-
- @Test
- public void should_create_dashboard() {
- dbTester.prepareDbUnit(getClass(), "filters.xml");
- Dashboard dashboard = template.createDashboard();
-
- assertThat(dashboard.getLayout()).isEqualTo(DashboardLayout.TWO_COLUMNS);
- assertThat(dashboard.getWidgets()).hasSize(5);
- }
-
- @Test
- public void should_provide_clean_error_message_on_failure() {
- try {
- template.createDashboard();
- } catch (IllegalStateException illegalState) {
- assertThat(illegalState).hasMessage("Could not find a provided issue filter with name 'Unresolved Issues'");
- }
- }
-}
diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/ProjectTimeMachineDashboardTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/ProjectTimeMachineDashboardTest.java
deleted file mode 100644
index e207bfe2be8..00000000000
--- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/ProjectTimeMachineDashboardTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.dashboards;
-
-import org.junit.Test;
-import org.sonar.api.web.Dashboard;
-import org.sonar.api.web.Dashboard.Widget;
-import org.sonar.api.web.DashboardLayout;
-import org.sonar.plugins.core.CorePlugin;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class ProjectTimeMachineDashboardTest {
- ProjectTimeMachineDashboard template = new ProjectTimeMachineDashboard();
-
- @Test
- public void should_have_a_name() {
- assertThat(template.getName()).isEqualTo("TimeMachine");
- }
-
- @Test
- public void should_be_registered_as_an_extension() {
- assertThat(new CorePlugin().getExtensions()).contains(template.getClass());
- }
-
- @Test
- public void should_create_dashboard() {
- Dashboard dashboard = template.createDashboard();
-
- assertThat(dashboard.getLayout()).isEqualTo(DashboardLayout.TWO_COLUMNS);
- assertThat(dashboard.getWidgets()).hasSize(7);
-
- for (Widget widget : dashboard.getWidgets()) {
- if (widget.getId().equals("time_machine")) {
- assertThat(widget.getProperty("displaySparkLine")).isEqualTo("true");
- }
- }
- }
-}
diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/measurefilters/MyFavouritesFilterTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/measurefilters/MyFavouritesFilterTest.java
deleted file mode 100644
index 3c894cdb439..00000000000
--- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/measurefilters/MyFavouritesFilterTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.measurefilters;
-
-import org.junit.Test;
-import org.sonar.api.web.Filter;
-import org.sonar.plugins.core.CorePlugin;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class MyFavouritesFilterTest {
- @Test
- public void should_create_filter() {
- MyFavouritesFilter template = new MyFavouritesFilter();
-
- Filter filter = template.createFilter();
-
- assertThat(template.getName()).isEqualTo("My favourites");
- assertThat(filter).isNotNull();
- assertThat(filter.isFavouritesOnly()).isTrue();
- assertThat(filter.getCriteria()).isEmpty();
- assertThat(filter.getColumns()).hasSize(3);
- }
-
- @Test
- public void should_be_registered_as_an_extension() {
- assertThat(new CorePlugin().getExtensions()).contains(MyFavouritesFilter.class);
- }
-}
diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/measurefilters/ProjectFilterTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/measurefilters/ProjectFilterTest.java
deleted file mode 100644
index 9e7a96a5781..00000000000
--- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/measurefilters/ProjectFilterTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.measurefilters;
-
-import org.junit.Test;
-import org.sonar.api.web.Filter;
-import org.sonar.plugins.core.CorePlugin;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class ProjectFilterTest {
- @Test
- public void should_create_filter() {
- ProjectFilter template = new ProjectFilter();
-
- Filter filter = template.createFilter();
-
- assertThat(template.getName()).isEqualTo("Projects");
- assertThat(filter).isNotNull();
- assertThat(filter.getCriteria()).hasSize(1);
- assertThat(filter.getColumns()).hasSize(6);
- }
-
- @Test
- public void should_be_registered_as_an_extension() {
- assertThat(new CorePlugin().getExtensions()).contains(ProjectFilter.class);
- }
-}
diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/widgets/CoreWidgetsTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/widgets/CoreWidgetsTest.java
deleted file mode 100644
index 0cf8aeb9eb0..00000000000
--- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/widgets/CoreWidgetsTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.plugins.core.widgets;
-
-import com.google.common.base.Function;
-import com.google.common.base.Throwables;
-import com.google.common.collect.Collections2;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
-import org.junit.Test;
-import org.reflections.Reflections;
-import org.sonar.plugins.core.CorePlugin;
-
-import javax.annotation.Nullable;
-
-import java.util.Collection;
-import java.util.Set;
-
-import static com.google.common.collect.Lists.newArrayList;
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class CoreWidgetsTest {
-
- @Test
- public void widget_ids_should_be_unique() {
- Collection<CoreWidget> widgets = widgets();
- Collection<String> widgetIds = Collections2.transform(widgets, new Function<CoreWidget, String>() {
- public String apply(@Nullable CoreWidget widget) {
- return widget.getId();
- }
- });
- assertThat(widgetIds).hasSize(Sets.newHashSet(widgetIds).size());
- }
-
- @Test
- public void widget_templates_should_be_unique() {
- Collection<CoreWidget> widgets = widgets();
- Collection<String> templates = Collections2.transform(widgets, new Function<CoreWidget, String>() {
- public String apply(@Nullable CoreWidget widget) {
- return widget.getTemplatePath();
- }
- });
- assertThat(templates).hasSize(Sets.newHashSet(templates).size());
- }
-
- @Test
- public void widget_titles_should_be_unique() {
- Collection<CoreWidget> widgets = widgets();
- Collection<String> templates = Collections2.transform(widgets, new Function<CoreWidget, String>() {
- public String apply(@Nullable CoreWidget widget) {
- return widget.getTitle();
- }
- });
- assertThat(templates).hasSize(Sets.newHashSet(templates).size());
- }
-
- @Test
- public void should_find_templates() {
- for (CoreWidget widget : widgets()) {
- assertThat(widget.getClass().getResource(widget.getTemplatePath()))
- .as("Template not found: " + widget.getTemplatePath())
- .isNotNull();
- }
- }
-
- @Test
- public void should_be_registered_as_an_extension() {
- for (CoreWidget widget : widgets()) {
- assertThat(new CorePlugin().getExtensions()).contains(widget.getClass());
- }
- }
-
- @Test
- public void should_find_core_widgets() {
- assertThat(widgets().size()).isGreaterThan(23);
- }
-
- private Set<Class<? extends CoreWidget>> widgetClasses() {
- String[] packages = {"org.sonar.plugins.core.widgets", "org.sonar.plugins.core.widgets.issues"};
- return new Reflections(packages).getSubTypesOf(CoreWidget.class);
- }
-
- private Collection<CoreWidget> widgets() {
- return newArrayList(Iterables.transform(widgetClasses(), new Function<Class<? extends CoreWidget>, CoreWidget>() {
- public CoreWidget apply(@Nullable Class<? extends CoreWidget> aClass) {
- try {
- return aClass.newInstance();
- } catch (Exception e) {
- throw Throwables.propagate(e);
- }
- }
- }));
- }
-}
diff --git a/plugins/sonar-core-plugin/src/test/resources/org/sonar/plugins/core/dashboards/ProjectIssuesDashboardTest/filters.xml b/plugins/sonar-core-plugin/src/test/resources/org/sonar/plugins/core/dashboards/ProjectIssuesDashboardTest/filters.xml
deleted file mode 100644
index 8ec92ddcdbf..00000000000
--- a/plugins/sonar-core-plugin/src/test/resources/org/sonar/plugins/core/dashboards/ProjectIssuesDashboardTest/filters.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<dataset>
-
- <issue_filters
- id="1"
- name="Unresolved Issues"
- user_login="[null]"
- shared="[true]"
- description="[null]"
- data="resolved=false"
- created_at="2011-04-25 01:15:00"
- updated_at="2011-04-25 01:15:00" />
-
- <issue_filters
- id="2"
- name="False Positive and Won't Fix Issues"
- user_login="[null]"
- shared="[true]"
- description="[null]"
- data="resolutions=FALSE-POSITIVE,WONTFIX"
- created_at="2011-04-25 01:15:00"
- updated_at="2011-04-25 01:15:00" />
-
- <issue_filters
- id="3"
- name="My Unresolved Issues"
- user_login="[null]"
- shared="[true]"
- description="[null]"
- data="resolved=false|assignees=__me__"
- created_at="2011-04-25 01:15:00"
- updated_at="2011-04-25 01:15:00" />
-
-</dataset>