From def12c0752dae492e4aa9ba8c1fb3b65404b6e33 Mon Sep 17 00:00:00 2001 From: simonbrandhof Date: Tue, 30 Nov 2010 15:19:54 +0000 Subject: [PATCH] SONAR-249 add variation values to Ruby API --- .../org/sonar/plugins/core/CorePlugin.java | 4 +- ...Decorator.java => VariationDecorator.java} | 6 +- .../core/widgets/CodeCoverageWidget.java | 1 + .../widgets/CommentsDuplicationsWidget.java | 2 + .../core/widgets/ComplexityWidget.java | 2 + .../plugins/core/widgets/RulesWidget.java | 1 + .../plugins/core/widgets/SizeWidget.java | 2 + .../core/widgets/code_coverage.html.erb | 18 +-- .../widgets/comments_duplications.html.erb | 20 +-- .../plugins/core/widgets/complexity.html.erb | 12 +- .../sonar/plugins/core/widgets/rules.html.erb | 24 ++-- .../sonar/plugins/core/widgets/size.html.erb | 28 ++--- ...rTest.java => VariationDecoratorTest.java} | 18 +-- .../shared.xml | 0 .../api/web/SupportVariationDashboard.java | 36 ++++++ .../java/org/sonar/server/ui/JRubyFacade.java | 4 +- .../java/org/sonar/server/ui/ViewProxy.java | 9 ++ .../main/java/org/sonar/server/ui/Views.java | 11 +- .../app/controllers/columns_controller.rb | 2 +- .../app/controllers/components_controller.rb | 2 +- .../app/controllers/dashboard_controller.rb | 3 +- .../app/controllers/project_controller.rb | 13 -- .../WEB-INF/app/helpers/application_helper.rb | 118 +++++++++++++----- .../app/models/api/dashboard_configuration.rb | 50 ++++++++ .../WEB-INF/app/models/project_measure.rb | 38 ++++++ ...uration.rb => components_configuration.rb} | 2 +- .../dashboard/_configure_widget.html.erb | 2 +- .../app/views/dashboard/_widget.html.erb | 2 +- .../migrate/052_remove_columns_views_table.rb | 12 +- .../java/org/sonar/server/ui/ViewsTest.java | 6 +- 30 files changed, 318 insertions(+), 130 deletions(-) rename plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/{DifferentialValueDecorator.java => VariationDecorator.java} (95%) rename plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/{DifferentialValueDecoratorTest.java => VariationDecoratorTest.java} (73%) rename plugins/sonar-core-plugin/src/test/resources/org/sonar/plugins/core/timemachine/{DifferentialValueDecoratorTest => VariationDecoratorTest}/shared.xml (100%) create mode 100644 sonar-plugin-api/src/main/java/org/sonar/api/web/SupportVariationDashboard.java create mode 100644 sonar-server/src/main/webapp/WEB-INF/app/models/api/dashboard_configuration.rb rename sonar-server/src/main/webapp/WEB-INF/app/models/sonar/{dashboard_configuration.rb => components_configuration.rb} (99%) 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 a354846e9a9..a3495af0c0b 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 @@ -40,7 +40,7 @@ import org.sonar.plugins.core.metrics.UserManagedMetrics; import org.sonar.plugins.core.security.ApplyProjectRolesDecorator; import org.sonar.plugins.core.sensors.*; import org.sonar.plugins.core.testdetailsviewer.TestsViewerDefinition; -import org.sonar.plugins.core.timemachine.DifferentialValueDecorator; +import org.sonar.plugins.core.timemachine.VariationDecorator; import org.sonar.plugins.core.timemachine.PeriodLocator; import org.sonar.plugins.core.timemachine.TendencyDecorator; import org.sonar.plugins.core.timemachine.TimeMachineConfiguration; @@ -195,7 +195,7 @@ public class CorePlugin implements Plugin { // time machine extensions.add(TendencyDecorator.class); extensions.add(PeriodLocator.class); - extensions.add(DifferentialValueDecorator.class); + extensions.add(VariationDecorator.class); extensions.add(TimeMachineConfiguration.class); return extensions; diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/DifferentialValueDecorator.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/VariationDecorator.java similarity index 95% rename from plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/DifferentialValueDecorator.java rename to plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/VariationDecorator.java index 2ece3f89ff1..d4bdf234a6c 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/DifferentialValueDecorator.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/VariationDecorator.java @@ -38,13 +38,13 @@ import java.util.List; import java.util.Map; @DependedUpon(DecoratorBarriers.END_OF_TIME_MACHINE) -public class DifferentialValueDecorator implements Decorator { +public class VariationDecorator implements Decorator { private Snapshot[] projectTargetSnapshots; private Map metricByIds; private DatabaseSession session; - public DifferentialValueDecorator(DatabaseSession session, PeriodLocator periodLocator, Configuration configuration, MetricFinder metricFinder) { + public VariationDecorator(DatabaseSession session, PeriodLocator periodLocator, Configuration configuration, MetricFinder metricFinder) { this.session = session; Snapshot snapshot = periodLocator.locate(5); projectTargetSnapshots = new Snapshot[]{snapshot}; @@ -54,7 +54,7 @@ public class DifferentialValueDecorator implements Decorator { /** * only for unit tests */ - DifferentialValueDecorator(DatabaseSession session, Snapshot[] projectTargetSnapshots, Collection metrics) { + VariationDecorator(DatabaseSession session, Snapshot[] projectTargetSnapshots, Collection metrics) { this.session = session; this.projectTargetSnapshots = projectTargetSnapshots; initMetrics(metrics); diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CodeCoverageWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CodeCoverageWidget.java index fc028d5b8cf..cdc3054543c 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CodeCoverageWidget.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CodeCoverageWidget.java @@ -23,6 +23,7 @@ import org.sonar.api.web.*; @WidgetCategory({"Tests"}) @Description("Reports on units tests and code coverage by unit tests.") +@SupportVariationDashboard public class CodeCoverageWidget extends AbstractRubyTemplate implements RubyRailsWidget { public String getId() { return "code_coverage"; diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CommentsDuplicationsWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CommentsDuplicationsWidget.java index 62446403366..deaf2312209 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CommentsDuplicationsWidget.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/CommentsDuplicationsWidget.java @@ -22,8 +22,10 @@ package org.sonar.plugins.core.widgets; import org.sonar.api.web.AbstractRubyTemplate; import org.sonar.api.web.Description; import org.sonar.api.web.RubyRailsWidget; +import org.sonar.api.web.SupportVariationDashboard; @Description("Reports on copy/paste and documentation") +@SupportVariationDashboard public class CommentsDuplicationsWidget extends AbstractRubyTemplate implements RubyRailsWidget { public String getId() { return "comments_duplications"; 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 index 90dba687ae3..48253c89b82 100644 --- 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 @@ -22,8 +22,10 @@ package org.sonar.plugins.core.widgets; import org.sonar.api.web.AbstractRubyTemplate; import org.sonar.api.web.Description; import org.sonar.api.web.RubyRailsWidget; +import org.sonar.api.web.SupportVariationDashboard; @Description("Reports on complexity, average complexity and complexity distribution.") +@SupportVariationDashboard public class ComplexityWidget extends AbstractRubyTemplate implements RubyRailsWidget { public String getId() { return "complexity"; diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/RulesWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/RulesWidget.java index d9d166aefda..da43347c7c0 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/RulesWidget.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/RulesWidget.java @@ -23,6 +23,7 @@ import org.sonar.api.web.*; @WidgetCategory({"Rules"}) @Description("Reports violations and compliance index on coding standards.") +@SupportVariationDashboard public class RulesWidget extends AbstractRubyTemplate implements RubyRailsWidget { public String getId() { return "rules"; 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 index 3c6a5c42055..df04453f03c 100644 --- 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 @@ -22,8 +22,10 @@ package org.sonar.plugins.core.widgets; import org.sonar.api.web.AbstractRubyTemplate; import org.sonar.api.web.Description; import org.sonar.api.web.RubyRailsWidget; +import org.sonar.api.web.SupportVariationDashboard; @Description("Reports general metrics on the size of the project.") +@SupportVariationDashboard public class SizeWidget extends AbstractRubyTemplate implements RubyRailsWidget { public String getId() { return "size"; diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/code_coverage.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/code_coverage.html.erb index 53f08f4d849..3ca7e36b1b5 100644 --- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/code_coverage.html.erb +++ b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/code_coverage.html.erb @@ -7,22 +7,22 @@ if code_coverage_measure || tests_measure %>

Code coverage

-

<%= format_measure(code_coverage_measure, :suffix => '', :url => url_for_drilldown(Metric::COVERAGE), :default => '-') %> <%= tendency_icon(code_coverage_measure, false) %>

+

<%= format_measure(code_coverage_measure, :suffix => '', :url => url_for_drilldown(Metric::COVERAGE), :default => '-') %> <%= trend_icon(code_coverage_measure, :big => true) %>

<% line_coverage=measure(Metric::LINE_COVERAGE) if line_coverage %> -

<%= format_measure(line_coverage, :suffix => ' line coverage', :url => url_for_drilldown(Metric::UNCOVERED_LINES, :highlight => Metric::LINE_COVERAGE)) %> <%= tendency_icon(line_coverage) %>

+

<%= format_measure(line_coverage, :suffix => ' line coverage', :url => url_for_drilldown(Metric::UNCOVERED_LINES, :highlight => Metric::LINE_COVERAGE)) %> <%= trend_icon(line_coverage) %>

<% end %> <% branch_coverage=measure(Metric::BRANCH_COVERAGE) if branch_coverage %> -

<%= format_measure(branch_coverage, :suffix => ' branch coverage', :url => url_for_drilldown(Metric::UNCOVERED_CONDITIONS, :highlight => Metric::BRANCH_COVERAGE)) %> <%= tendency_icon(branch_coverage) %>

+

<%= format_measure(branch_coverage, :suffix => ' branch coverage', :url => url_for_drilldown(Metric::UNCOVERED_CONDITIONS, :highlight => Metric::BRANCH_COVERAGE)) %> <%= trend_icon(branch_coverage) %>

<% end %> -

<%= format_measure(tests_measure, :suffix => ' tests', :url => url_for_drilldown(Metric::TESTS)) %> <%= tendency_icon(tests_measure) %>

+

<%= format_measure(tests_measure, :suffix => ' tests', :url => url_for_drilldown(Metric::TESTS)) %> <%= trend_icon(tests_measure) %>

<% skipped_measure=measure(Metric::SKIPPED_TESTS) if skipped_measure && skipped_measure.value>0 %> -

+<%= format_measure(skipped_measure, :suffix => ' skipped', :url => url_for_drilldown(Metric::SKIPPED_TESTS)) %> <%= tendency_icon(skipped_measure) %>

+

+<%= format_measure(skipped_measure, :suffix => ' skipped', :url => url_for_drilldown(Metric::SKIPPED_TESTS)) %> <%= trend_icon(skipped_measure) %>

<% end %> -

<%= format_measure(Metric::TEST_EXECUTION_TIME, :suffix => '', :url => url_for_drilldown(Metric::TEST_EXECUTION_TIME)) %> <%= tendency_icon(measure(Metric::TEST_EXECUTION_TIME)) %>

+

<%= format_measure(Metric::TEST_EXECUTION_TIME, :suffix => '', :url => url_for_drilldown(Metric::TEST_EXECUTION_TIME)) %> <%= trend_icon(measure(Metric::TEST_EXECUTION_TIME)) %>

@@ -32,12 +32,12 @@ if code_coverage_measure || tests_measure %> %>

Test success

-

<%= format_measure(success_percentage, :suffix => '', :url => url_for_drilldown(success_percentage)) %> <%= tendency_icon(measure(Metric::TEST_SUCCESS_DENSITY), false) %>

+

<%= format_measure(success_percentage, :suffix => '', :url => url_for_drilldown(success_percentage)) %> <%= trend_icon(measure(Metric::TEST_SUCCESS_DENSITY), :big => true) %>

- <%= format_measure(Metric::TEST_FAILURES, :suffix => ' failures', :url => url_for_drilldown(Metric::TEST_FAILURES)) %> <%= tendency_icon(measure(Metric::TEST_FAILURES)) %> + <%= format_measure(Metric::TEST_FAILURES, :suffix => ' failures', :url => url_for_drilldown(Metric::TEST_FAILURES)) %> <%= trend_icon(measure(Metric::TEST_FAILURES)) %>

- <%= format_measure(Metric::TEST_ERRORS, :suffix => ' errors', :url => url_for_drilldown(Metric::TEST_ERRORS)) %> <%= tendency_icon(measure(Metric::TEST_ERRORS)) %> + <%= format_measure(Metric::TEST_ERRORS, :suffix => ' errors', :url => url_for_drilldown(Metric::TEST_ERRORS)) %> <%= trend_icon(measure(Metric::TEST_ERRORS)) %>

<% end %> diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/comments_duplications.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/comments_duplications.html.erb index 078822eb556..53582cd0f27 100644 --- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/comments_duplications.html.erb +++ b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/comments_duplications.html.erb @@ -5,17 +5,17 @@ <% if (measure(Metric::COMMENT_LINES)) %>

Comments

-

<%= format_measure(Metric::COMMENT_LINES_DENSITY, :suffix => '', :url => url_for_drilldown(Metric::COMMENT_LINES_DENSITY)) -%> <%= tendency_icon(Metric::COMMENT_LINES_DENSITY, false) -%>

-

<%= format_measure(Metric::COMMENT_LINES, :suffix => ' lines', :url => url_for_drilldown(Metric::COMMENT_LINES)) -%> <%= tendency_icon(Metric::COMMENT_LINES) -%>

+

<%= format_measure(Metric::COMMENT_LINES_DENSITY, :suffix => '', :url => url_for_drilldown(Metric::COMMENT_LINES_DENSITY)) -%> <%= trend_icon(Metric::COMMENT_LINES_DENSITY, :big => true) -%>

+

<%= format_measure(Metric::COMMENT_LINES, :suffix => ' lines', :url => url_for_drilldown(Metric::COMMENT_LINES)) -%> <%= trend_icon(Metric::COMMENT_LINES) -%>

<% comment_blank_lines=measure('comment_blank_lines') if comment_blank_lines && comment_blank_lines.value>0 %> -

+<%= format_measure(comment_blank_lines, :suffix => ' blank', :url => url_for_drilldown(comment_blank_lines)) -%> <%= tendency_icon(comment_blank_lines) -%>

+

+<%= format_measure(comment_blank_lines, :suffix => ' blank', :url => url_for_drilldown(comment_blank_lines)) -%> <%= trend_icon(comment_blank_lines) -%>

<% end %> -

<%= format_measure(Metric::PUBLIC_DOCUMENTED_API_DENSITY, :suffix => ' docu. API', :url => url_for_drilldown(Metric::PUBLIC_UNDOCUMENTED_API, :highlight => Metric::PUBLIC_DOCUMENTED_API_DENSITY)) -%> <%= tendency_icon(Metric::PUBLIC_DOCUMENTED_API_DENSITY) -%>

-

<%= format_measure(Metric::PUBLIC_UNDOCUMENTED_API, :suffix => ' undocu. API', :url => url_for_drilldown(Metric::PUBLIC_UNDOCUMENTED_API, :highlight => Metric::PUBLIC_UNDOCUMENTED_API)) -%> <%= tendency_icon(Metric::PUBLIC_UNDOCUMENTED_API) -%>

-

<%= format_measure(Metric::COMMENTED_OUT_CODE_LINES, :suffix => ' commented LOCs', :url => url_for_drilldown(Metric::COMMENTED_OUT_CODE_LINES, :highlight => Metric::COMMENTED_OUT_CODE_LINES)) -%> <%= tendency_icon(Metric::COMMENTED_OUT_CODE_LINES) -%>

+

<%= format_measure(Metric::PUBLIC_DOCUMENTED_API_DENSITY, :suffix => ' docu. API', :url => url_for_drilldown(Metric::PUBLIC_UNDOCUMENTED_API, :highlight => Metric::PUBLIC_DOCUMENTED_API_DENSITY)) -%> <%= trend_icon(Metric::PUBLIC_DOCUMENTED_API_DENSITY) -%>

+

<%= format_measure(Metric::PUBLIC_UNDOCUMENTED_API, :suffix => ' undocu. API', :url => url_for_drilldown(Metric::PUBLIC_UNDOCUMENTED_API, :highlight => Metric::PUBLIC_UNDOCUMENTED_API)) -%> <%= trend_icon(Metric::PUBLIC_UNDOCUMENTED_API) -%>

+

<%= format_measure(Metric::COMMENTED_OUT_CODE_LINES, :suffix => ' commented LOCs', :url => url_for_drilldown(Metric::COMMENTED_OUT_CODE_LINES, :highlight => Metric::COMMENTED_OUT_CODE_LINES)) -%> <%= trend_icon(Metric::COMMENTED_OUT_CODE_LINES) -%>

<% end %> @@ -23,10 +23,10 @@ <% if (measure(Metric::DUPLICATED_LINES_DENSITY)) %>

Duplications

-

<%= format_measure(Metric::DUPLICATED_LINES_DENSITY, :suffix => '', :url => url_for_drilldown(Metric::DUPLICATED_LINES, :highlight => Metric::DUPLICATED_LINES_DENSITY)) -%> <%= tendency_icon(Metric::DUPLICATED_LINES_DENSITY, false) -%>

-

<%= format_measure(Metric::DUPLICATED_LINES, :suffix => ' lines', :url => url_for_drilldown(Metric::DUPLICATED_LINES)) -%> <%= tendency_icon(Metric::DUPLICATED_LINES) -%>

-

<%= format_measure(Metric::DUPLICATED_BLOCKS, :suffix => ' blocks', :url => url_for_drilldown(Metric::DUPLICATED_BLOCKS)) -%> <%= tendency_icon(Metric::DUPLICATED_BLOCKS) -%>

-

<%= format_measure(Metric::DUPLICATED_FILES, :suffix => ' files', :url => url_for_drilldown(Metric::DUPLICATED_FILES)) -%> <%= tendency_icon(Metric::DUPLICATED_FILES) -%>

+

<%= format_measure(Metric::DUPLICATED_LINES_DENSITY, :suffix => '', :url => url_for_drilldown(Metric::DUPLICATED_LINES, :highlight => Metric::DUPLICATED_LINES_DENSITY)) -%> <%= trend_icon(Metric::DUPLICATED_LINES_DENSITY, :big => true) -%>

+

<%= format_measure(Metric::DUPLICATED_LINES, :suffix => ' lines', :url => url_for_drilldown(Metric::DUPLICATED_LINES)) -%> <%= trend_icon(Metric::DUPLICATED_LINES) -%>

+

<%= format_measure(Metric::DUPLICATED_BLOCKS, :suffix => ' blocks', :url => url_for_drilldown(Metric::DUPLICATED_BLOCKS)) -%> <%= trend_icon(Metric::DUPLICATED_BLOCKS) -%>

+

<%= format_measure(Metric::DUPLICATED_FILES, :suffix => ' files', :url => url_for_drilldown(Metric::DUPLICATED_FILES)) -%> <%= trend_icon(Metric::DUPLICATED_FILES) -%>

<% end %> 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 index 43bc5683a5d..df900e95bbb 100644 --- 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 @@ -16,27 +16,27 @@ complexity=measure('complexity')

Complexity

<% if function_complexity %>

- <%= format_measure(function_complexity, :suffix => '', :url => url_for_drilldown(function_complexity)) -%> <%= tendency_icon(function_complexity, false) -%>/ method + <%= format_measure(function_complexity, :suffix => '', :url => url_for_drilldown(function_complexity)) -%> <%= trend_icon(function_complexity, :big => true) -%>/ method

<% end %> <% if paragraph_complexity %>

- <%= format_measure(paragraph_complexity, :suffix => '', :url => url_for_drilldown(paragraph_complexity)) -%> <%= tendency_icon(paragraph_complexity, false) -%>/ paragraph + <%= format_measure(paragraph_complexity, :suffix => '', :url => url_for_drilldown(paragraph_complexity)) -%> <%= trend_icon(paragraph_complexity, :big => true) -%>/ paragraph

<% end %> <% if class_complexity %>

- <%= format_measure(class_complexity, :suffix => '', :url => url_for_drilldown(class_complexity)) -%> <%= tendency_icon(class_complexity, false) -%>/ class + <%= format_measure(class_complexity, :suffix => '', :url => url_for_drilldown(class_complexity)) -%> <%= trend_icon(class_complexity, :big => true) -%>/ class

<% end %> <% if file_complexity %>

- <%= format_measure(file_complexity, :suffix => '', :url => url_for_drilldown(file_complexity)) -%> <%= tendency_icon(file_complexity, false) -%>/ file + <%= format_measure(file_complexity, :suffix => '', :url => url_for_drilldown(file_complexity)) -%> <%= trend_icon(file_complexity, :big => true) -%>/ file

<% end %> <% if complexity %>

- Total: <%= format_measure(complexity, :url => url_for_drilldown(complexity)) -%> <%= tendency_icon(complexity) -%> + Total: <%= format_measure(complexity, :url => url_for_drilldown(complexity)) -%> <%= trend_icon(complexity) -%>

<% end %> @@ -52,7 +52,7 @@ complexity=measure('complexity') if distributions.size>0 selected_distribution=distributions.first end - if selected_distribution + if selected_distribution && !dashboard_configuration.variation? %>