summaryrefslogtreecommitdiffstats
path: root/sonar-server
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@gmail.com>2012-02-17 15:30:05 +0100
committerSimon Brandhof <simon.brandhof@gmail.com>2012-02-17 15:32:08 +0100
commitd5d1c9f30d4bdc653056af0debfbee9e84958637 (patch)
tree2d30ee46d9d24ba83c11a9bea96ca7411c0714d8 /sonar-server
parent64af84362db4394146582f311485045377e594b1 (diff)
downloadsonarqube-d5d1c9f30d4bdc653056af0debfbee9e84958637.tar.gz
sonarqube-d5d1c9f30d4bdc653056af0debfbee9e84958637.zip
Improve the way to switch between views and projects
Diffstat (limited to 'sonar-server')
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/controllers/dashboard_controller.rb6
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/helpers/application_helper.rb6
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/models/drilldown.rb9
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/models/project.rb13
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/models/sonar/treemap.rb2
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/views/cloud/index.html.erb78
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/views/components/_list_table_header.rhtml2
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/views/components/index.html.erb4
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/views/dashboard/_header.html.erb5
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/views/drilldown/measures.html.erb60
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/views/drilldown/violations.html.erb95
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/lib/resourceable.rb5
-rw-r--r--sonar-server/src/main/webapp/stylesheets/style.css15
13 files changed, 164 insertions, 136 deletions
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/dashboard_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/dashboard_controller.rb
index 6b741f87e9c..f089ad08464 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/dashboard_controller.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/dashboard_controller.rb
@@ -26,9 +26,9 @@ class DashboardController < ApplicationController
def index
# TODO display error page if no dashboard or no resource
- load_resource()
+ load_resource
if @resource.display_dashboard?
- load_dashboard()
+ load_dashboard
load_authorized_widget_definitions()
unless @dashboard
redirect_to home_path
@@ -185,7 +185,7 @@ class DashboardController < ApplicationController
@resource=Project.by_key(params[:id])
not_found("Resource not found") unless @resource
- @resource=Project.find(@resource.copy_resource_id) if @resource.copy_resource_id
+ @resource=@resource.switch_resource if @resource.switch_resource
access_denied unless has_role?(:user, @resource)
@snapshot = @resource.last_snapshot
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/helpers/application_helper.rb b/sonar-server/src/main/webapp/WEB-INF/app/helpers/application_helper.rb
index 03de08a5dfd..81c4a3915c5 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/helpers/application_helper.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/helpers/application_helper.rb
@@ -328,10 +328,10 @@ module ApplicationHelper
period_index=nil if period_index && period_index<=0
if resource.display_dashboard?
if options[:dashboard]
- link_to(name || resource.name, {:overwrite_params => {:controller => 'dashboard', :action => 'index', :id => (resource.copy_resource_id||resource.id), :period => period_index, :tab => options[:tab], :rule => options[:rule]}}, :title => options[:title])
+ link_to(name || resource.name, {:overwrite_params => {:controller => 'dashboard', :action => 'index', :id => resource.id, :period => period_index, :tab => options[:tab], :rule => options[:rule]}}, :title => options[:title])
else
# stay on the same page (for example components)
- link_to(name || resource.name, {:overwrite_params => {:id => (resource.copy_resource_id||resource.id), :period => period_index, :tab => options[:tab], :rule => options[:rule]}}, :title => options[:title])
+ link_to(name || resource.name, {:overwrite_params => {:id => resource.id, :period => period_index, :tab => options[:tab], :rule => options[:rule]}}, :title => options[:title])
end
else
if options[:line]
@@ -415,7 +415,7 @@ module ApplicationHelper
def link_to_favourite(resource, options={})
return '' unless (logged_in?)
return '' if resource.nil?
- resource_id=(resource.is_a?(Fixnum) ? resource : (resource.copy_resource_id || resource.id))
+ resource_id=(resource.is_a?(Fixnum) ? resource : resource.switch_resource_or_self.id)
html_id=options['html_id'] || "fav#{resource_id}"
initial_class='notfav'
initial_tooltip=message('click_to_add_to_favourites')
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/models/drilldown.rb b/sonar-server/src/main/webapp/WEB-INF/app/models/drilldown.rb
index 2af2543e806..1104067b628 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/models/drilldown.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/models/drilldown.rb
@@ -83,8 +83,8 @@ class DrilldownColumn
end
# switch
- if @base_snapshot.resource.copy
- @base_snapshot=@base_snapshot.resource.copy.last_snapshot
+ if @base_snapshot.resource.copy_resource
+ @base_snapshot=@base_snapshot.resource.copy_resource.last_snapshot
@qualifiers = Drilldown.qualifier_children(@base_snapshot.qualifier)
elsif previous_column
@@ -93,7 +93,6 @@ class DrilldownColumn
else
@qualifiers=Drilldown.qualifier_children(drilldown.snapshot.qualifier)
end
-
@resource_per_sid={}
end
@@ -173,4 +172,8 @@ class DrilldownColumn
def valid?
@base_snapshot && @qualifiers && !@qualifiers.empty?
end
+
+ def switch?
+ selected_snapshot && selected_snapshot.resource && selected_snapshot.resource.copy_resource
+ end
end \ No newline at end of file
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/models/project.rb b/sonar-server/src/main/webapp/WEB-INF/app/models/project.rb
index 299c71c1e0d..79ed708f2b3 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/models/project.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/models/project.rb
@@ -30,7 +30,7 @@ class Project < ActiveRecord::Base
has_many :group_roles, :foreign_key => 'resource_id'
has_many :manual_measures, :foreign_key => 'resource_id'
belongs_to :root, :class_name => 'Project', :foreign_key => 'root_id'
- belongs_to :copy, :class_name => 'Project', :foreign_key => 'copy_resource_id'
+ belongs_to :copy_resource, :class_name => 'Project', :foreign_key => 'copy_resource_id'
belongs_to :person, :class_name => 'Project', :foreign_key => 'person_id'
def self.by_key(k)
@@ -59,6 +59,17 @@ class Project < ActiveRecord::Base
end
end
+ def switch_resource
+ @switch_resource ||=
+ begin
+ (copy_resource && copy_resource.qualifier==qualifier) ? copy_resource : nil
+ end
+ end
+
+ def switch_resource_or_self
+ switch_resource||self
+ end
+
def last_snapshot
@last_snapshot ||=
begin
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/models/sonar/treemap.rb b/sonar-server/src/main/webapp/WEB-INF/app/models/sonar/treemap.rb
index af9bf6f2bd9..86631103061 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/models/sonar/treemap.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/models/sonar/treemap.rb
@@ -107,7 +107,7 @@ class Sonar::Treemap
:title => escape_javascript(resource.name(true)),
:tooltip => tooltip(resource, size_measure, color_measure),
:color => html_color(color_measure),
- :rid => resource.copy_resource_id || resource.id,
+ :rid => resource.switch_resource_or_self.id,
:browsable => resource.display_dashboard?)
node.add_child(child)
end
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/cloud/index.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/cloud/index.html.erb
index 5edc83b7fc1..d7ac85e483a 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/views/cloud/index.html.erb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/views/cloud/index.html.erb
@@ -18,49 +18,47 @@
</script>
<div>
-<form id="cloudform" action="<%= ApplicationController.root_context -%>/cloud/index/<%= @project.id -%>" method="GET">
- <ul class="headerLine">
- <li>
- <span><%= message('color') -%>:</span>
- <select name="color" onchange="document.forms['cloudform'].submit()">
- <% if @snapshot.measure('coverage') %>
- <option value="coverage" <%= 'selected' if @color_metric.key=='coverage' -%>><%= message('metric.coverage.name') -%></option>
- <% end %>
- <option value="violations_density" <%= 'selected' if @color_metric.key=='violations_density' -%>><%= message('metric.violations_density.name') -%></option>
- </select>
- </li>
- <li class="sep"> </li>
- <li>
- <input type="radio" name="size" value="ncloc" <%= 'checked' if @size_metric.key=='ncloc' -%> onclick="document.forms['cloudform'].submit()" id="radio-quick">
- <label for="radio-quick"><%= message('cloud.quick_wins') -%></label></option>
- &nbsp;
- <input type="radio" name="size" value="function_complexity" <%= 'checked' if @size_metric.key=='function_complexity' -%> onclick="document.forms['cloudform'].submit()" id="radio-top">
- <label for="radio-top"><%= message('cloud.top_risk') -%></label></input>
- </li>
- </ul>
-</form>
+ <form id="cloudform" action="<%= ApplicationController.root_context -%>/cloud/index/<%= @project.id -%>" method="GET">
+ <ul class="headerLine">
+ <li>
+ <span><%= message('color') -%>:</span>
+ <select name="color" onchange="document.forms['cloudform'].submit()">
+ <% if @snapshot.measure('coverage') %>
+ <option value="coverage" <%= 'selected' if @color_metric.key=='coverage' -%>><%= message('metric.coverage.name') -%></option>
+ <% end %>
+ <option value="violations_density" <%= 'selected' if @color_metric.key=='violations_density' -%>><%= message('metric.violations_density.name') -%></option>
+ </select>
+ </li>
+ <li class="sep"></li>
+ <li>
+ <input type="radio" name="size" value="ncloc" <%= 'checked' if @size_metric.key=='ncloc' -%> onclick="document.forms['cloudform'].submit()" id="radio-quick">
+ <label for="radio-quick"><%= message('cloud.quick_wins') -%></label></option>
+ &nbsp;
+ <input type="radio" name="size" value="function_complexity" <%= 'checked' if @size_metric.key=='function_complexity' -%> onclick="document.forms['cloudform'].submit()" id="radio-top">
+ <label for="radio-top"><%= message('cloud.top_risk') -%></label></input>
+ </li>
+ </ul>
+ </form>
</div>
<div id="cloud">
- <%
- color_options={
- :check_alert_status => false,
- :min_color => Color::RGB.from_html("EE0000"), # red
- :mean_color => Color::RGB.from_html("4D05B1"), # purple
- :max_color => Color::RGB.from_html("2360BF")} # blue
- @snapshots.each do |s|
- size_measure=@size_measure_by_sid[s.id]
- if size_measure && size_measure.value
- color_measure=@color_measure_by_sid[s.id]
- if s.resource.copy_resource_id
- link="ov(#{s.resource.copy_resource_id})"
- else
- link="of(#{s.project_id})"
- end
- title="#{s.resource.long_name} | #{@size_metric.short_name}: #{size_measure.formatted_value}"
- if color_measure && color_measure.value
- title += " | #{@color_metric.short_name}: #{color_measure.formatted_value}"
- end
+ <%
+ color_options={
+ :check_alert_status => false,
+ :min_color => Color::RGB.from_html("EE0000"), # red
+ :mean_color => Color::RGB.from_html("4D05B1"), # purple
+ :max_color => Color::RGB.from_html("2360BF") # blue
+ }
+ @snapshots.each do |s|
+ size_measure=@size_measure_by_sid[s.id]
+ if size_measure && size_measure.value
+ color_measure=@color_measure_by_sid[s.id]
+ link="of(#{s.project_id})"
+
+ title="#{s.resource.long_name} | #{@size_metric.short_name}: #{size_measure.formatted_value}"
+ if color_measure && color_measure.value
+ title += " | #{@color_metric.short_name}: #{color_measure.formatted_value}"
+ end
%>
<a href="#" onclick="<%= link -%>" title="<%= title -%>"><span style="font-size:<%= font_size(size_measure.value) -%>%;color: <%= MeasureColor.color(color_measure, color_options).html -%>"><%= s.resource.name %></span></a>
<% end
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/components/_list_table_header.rhtml b/sonar-server/src/main/webapp/WEB-INF/app/views/components/_list_table_header.rhtml
index c86ae1b5185..5e162deeec0 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/views/components/_list_table_header.rhtml
+++ b/sonar-server/src/main/webapp/WEB-INF/app/views/components/_list_table_header.rhtml
@@ -16,7 +16,7 @@
<th><% if logged_in? %><%= link_to_favourite(@snapshot.project) -%><% end %></th>
<th class="left text <%= 'sortfirstasc' if @components_configuration.sorted_by_project_name? -%>">
<%= qualifier_icon(@snapshot) -%>
- <a x="<%= u(@snapshot.project.name) -%>" href="<%= ApplicationController.root_context + "/project/index/#{@snapshot.project.copy_resource_id || @snapshot.project.id}" -%>"><%= @snapshot.project.name -%></a>
+ <a x="<%= u(@snapshot.project.name) -%>" href="<%= ApplicationController.root_context + "/project/index/#{@snapshot.project.id}" -%>"><%= @snapshot.project.name -%></a>
</th>
<% @columns.each do |column| %>
<%= get_header_content(column, @snapshot) -%>
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/components/index.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/components/index.html.erb
index 7bba5487427..0b2c1b1d556 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/views/components/index.html.erb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/views/components/index.html.erb
@@ -30,7 +30,7 @@
<tbody>
<% if @snapshots.empty? %>
<tr>
- <td colspan="<%= @columns.size + 2 -%>">No components</td>
+ <td colspan="<%= @columns.size + 3 -%>">No components</td>
</tr>
<% else
@snapshots.each do |snapshot| %>
@@ -48,7 +48,7 @@
<td class="left" x="<%= u(snapshot.project.name) -%>">
<%= qualifier_icon(snapshot) %>
<% if snapshot.project.display_dashboard? %>
- <a href="<%= ApplicationController.root_context + "/dashboard/index/#{snapshot.project.copy_resource_id || snapshot.project.id}" -%>"><%= snapshot.project.name -%></a>
+ <a href="<%= ApplicationController.root_context + "/dashboard/index/#{snapshot.project.id}" -%>"><%= snapshot.project.name -%></a>
<% else %>
<%= snapshot.project.name %>
<% end %>
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/dashboard/_header.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/dashboard/_header.html.erb
index 5809988093a..dea93b5444a 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/views/dashboard/_header.html.erb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/views/dashboard/_header.html.erb
@@ -16,10 +16,9 @@
<% if @snapshot %>
<div id="snapshot_title" class="page_title">
<h4>
- <%= link_to_favourite(@project) -%> <%= "Version #{@snapshot.version}" if @snapshot.version.present? -%> - <%= l @snapshot.created_at -%>
+ <%= link_to_favourite(@project) -%> <%= "Version #{@snapshot.version} - " if @snapshot.version.present? -%><%= l @snapshot.created_at -%>
<% if @snapshot.project_snapshot.periods? %>
- -
- <form method="GET" action="<%= url_for :controller => 'dashboard', :action => 'index', :id => @resource.id -%>" style="display: inline">
+ <form method="GET" action="<%= url_for :controller => 'dashboard', :action => 'index', :id => @resource.id -%>" style="display: inline" class="spacer-left">
<input type="hidden" name="did" value="<%= @dashboard.id -%>" />
<select id="select-comparison" name="period" onchange="submit()" class="small">
<option value=""><%= message('time_changes') -%>...</option>
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/drilldown/measures.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/drilldown/measures.html.erb
index c4228a1252d..04a895828f1 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/views/drilldown/measures.html.erb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/views/drilldown/measures.html.erb
@@ -20,13 +20,7 @@
<% end %>
<div class="dashbox">
- <% if @committer %>
- <h3><%= @highlighted_metric.short_name -%> / <%= h(@committer) -%></h3>
-
- <p class="big">
- <%= format_measure(@snapshot.committer_measure(@highlighted_metric, @committer), :period => @period) %>
- </p>
- <% elsif @characteristic %>
+ <% if @characteristic %>
<h3><%= @highlighted_metric.short_name -%> / <%= h(@characteristic.name(true)) -%></h3>
<p class="big"><%= format_measure(@snapshot.characteristic_measure(@highlighted_metric, @characteristic)) %></p>
@@ -37,26 +31,28 @@
<%= format_measure(@snapshot.measure(@highlighted_metric.key), :period => @period) %>
</p>
<% end %>
+ <% if @highlighted_metric!=@metric %>
+ <p>
+ <%= message('drilldown.drilldown_on') -%>&nbsp;
+ <b><%= format_measure(@metric.key, :period => @period) -%> <%= @metric.short_name -%></b>
+ </p>
+ <% end %>
</div>
&nbsp;<!-- keep &nbsp; for IE6 ! -->
-<table id="drilldown" class="width100" style="clear:left">
- <% if @highlighted_metric!=@metric %>
- <tr>
- <td colspan="<%= @drilldown.columns.size -%>"><%= message('drilldown.drilldown_on') -%>&nbsp;
- <% if @committer %>
- <b><%= format_measure(@snapshot.committer_measure(@metric, @committer), :period => @period) -%> <%= @metric.short_name -%></b>
- <% else %>
- <b><%= format_measure(@metric.key, :period => @period) -%> <%= @metric.short_name -%></b>
- <% end %>
- </td>
- </tr>
- <tr>
- <% end
+
+<div id="drilldown" class="width100">
+ <%
rids=[]
+ first_column=true
@drilldown.columns.each_with_index do |column, index|
%>
- <td class="column <%= 'first' if index==0 -%>" nowrap>
+ <% if first_column %>
+ <table class="width100 spacer-bottom" style="clear:left">
+ <tr>
+ <% end %>
+
+ <td class="<%= 'spacer-left' unless first_column -%>" nowrap>
<div class="scrollable" id="col_<%= index -%>">
<table class="spaced">
<% column.measures.each do |measure|
@@ -69,9 +65,9 @@
<td nowrap>
<%
if !resource.display_dashboard? %>
- <%= qualifier_icon(resource) -%>&nbsp;
- <a href="#" onclick="d(<%= resource.id -%>)" alt="<%= resource.name(true) -%>" title="<%= resource.name(true) -%>"><%= resource.name(false) -%></a>
- <% else %>
+ <%= qualifier_icon(resource) -%>&nbsp;
+ <a href="#" onclick="d(<%= resource.id -%>)" alt="<%= resource.name(true) -%>" title="<%= resource.name(true) -%>"><%= resource.name(false) -%></a>
+ <% else %>
<%= link_to(image_tag('zoom.png'), {:id => resource.id, :metric => @metric.id}, {:class => 'nolink'}) -%>
<%= qualifier_icon(resource) -%>&nbsp;
<%= link_to(resource.name, {:only_path => true, :overwrite_params => {:rids => (selected ? rids-[resource.id] : rids+[resource.id])}}) -%>
@@ -85,12 +81,16 @@
</table>
</div>
</td>
- <%
- rids<<column.selected_snapshot.project_id if column.selected_snapshot
- end
- %>
- </tr>
-</table>
+
+ <% if column.switch? || index==@drilldown.columns.size-1 %>
+ </tr>
+ </table>
+ <% end
+ first_column = column.switch?
+ rids<<column.selected_snapshot.project_id if column.selected_snapshot
+ end
+ %>
+</div>
<script>
<% for i in 0...@drilldown.columns.size do %>
$$('#col_<%= i -%> tr.selected').each(function (item) {
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/drilldown/violations.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/drilldown/violations.html.erb
index a6067ef6446..a380b3b83ee 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/views/drilldown/violations.html.erb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/views/drilldown/violations.html.erb
@@ -116,51 +116,56 @@
</tr>
</table>
<br/>
-<table width="100%">
- <tr>
- <%
- paths=[]
- rids=[]
- column_width=(100/@drilldown.columns.size).to_i if @drilldown.columns.size>0
- @drilldown.columns.each_with_index do |column, index|
- %>
- <td class="column <%= 'first' if index==0 -%>" nowrap width="<%= column_width -%>%">
- <div class="scrollable" id="col_<%= index -%>">
- <table class="spaced">
- <%
- column.measures.each do |measure|
- resource=column.resource(measure)
- clazz = cycle('even', 'odd', :name => "col_#{index}")
- selected = column.selected_snapshot && column.selected_snapshot.project_id==resource.id
- if selected
- clazz += ' selected'
- paths << [h(resource.name), @selected_rids-[resource.id]]
- end
- %>
- <tr class="<%= clazz -%>">
- <td nowrap>
- <% if !resource.display_dashboard? %>
- <%= qualifier_icon(resource) -%>&nbsp;
- <a href="#" onclick="d(<%= resource.id -%>, '<%= @period_index -%>', '<%= @rule ? @rule.key : @severity -%>');" alt="<%= resource.name(true) -%>" title="<%= resource.name(true) -%>"><%= resource.name(false) %></a>
- <% else %>
- <%= link_to(image_tag('zoom.png'), {:id => resource.id}, {:class => 'nolink'}) %>
- <%= qualifier_icon(resource) %>&nbsp;
- <%= link_to(h(resource.name), {:only_path => true, :overwrite_params => {:rids => (selected ? rids-[resource.id] : rids+[resource.id])}}) -%>
- <% end %>
- </td>
- <td class="right last" nowrap>
- <%= @period ? format_variation(measure, :period => @period, :style => 'light') : measure.formatted_value -%>
- </td>
- </tr>
- <% end %>
- </table>
- </div>
- </td>
- <%
- rids<<column.selected_snapshot.project_id if column.selected_snapshot
- end %>
- </tr>
-</table>
+<%
+ paths=[]
+ rids=[]
+ first_column=true
+ @drilldown.columns.each_with_index do |column, index|
+%>
+ <% if first_column %>
+ <table class="width100 spacer-bottom" style="clear:left">
+ <tr>
+ <% end %>
+ <td class="<%= 'spacer-left' unless first_column -%>" nowrap>
+ <div class="scrollable" id="col_<%= index -%>">
+ <table class="spaced">
+ <%
+ column.measures.each do |measure|
+ resource=column.resource(measure)
+ clazz = cycle('even', 'odd', :name => "col_#{index}")
+ selected = column.selected_snapshot && column.selected_snapshot.project_id==resource.id
+ if selected
+ clazz += ' selected'
+ paths << [h(resource.name), @selected_rids-[resource.id]]
+ end
+ %>
+ <tr class="<%= clazz -%>">
+ <td nowrap>
+ <% if !resource.display_dashboard? %>
+ <%= qualifier_icon(resource) -%>&nbsp;
+ <a href="#" onclick="d(<%= resource.id -%>, '<%= @period_index -%>', '<%= @rule ? @rule.key : @severity -%>');" alt="<%= resource.name(true) -%>" title="<%= resource.name(true) -%>"><%= resource.name(false) %></a>
+ <% else %>
+ <%= link_to(image_tag('zoom.png'), {:id => resource.id}, {:class => 'nolink'}) %>
+ <%= qualifier_icon(resource) %>&nbsp;
+ <%= link_to(h(resource.name), {:only_path => true, :overwrite_params => {:rids => (selected ? rids-[resource.id] : rids+[resource.id])}}) -%>
+ <% end %>
+ </td>
+ <td class="right last" nowrap>
+ <%= @period ? format_variation(measure, :period => @period, :style => 'light') : measure.formatted_value -%>
+ </td>
+ </tr>
+ <% end %>
+ </table>
+ </div>
+ </td>
+ <% if column.switch? || index==@drilldown.columns.size-1 %>
+ </tr>
+ </table>
+ <% end
+ first_column = column.switch?
+ rids<<column.selected_snapshot.project_id if column.selected_snapshot
+ end
+ %>
<script>
$$('#col_rules tr.selected').each(function (item) {
diff --git a/sonar-server/src/main/webapp/WEB-INF/lib/resourceable.rb b/sonar-server/src/main/webapp/WEB-INF/lib/resourceable.rb
index 3229bd10b78..6e44e392bae 100644
--- a/sonar-server/src/main/webapp/WEB-INF/lib/resourceable.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/lib/resourceable.rb
@@ -92,7 +92,10 @@ module Resourceable
NO_DASHBOARD_QUALIFIERS=[QUALIFIER_FILE, QUALIFIER_CLASS, QUALIFIER_UNIT_TEST_CLASS]
def display_dashboard?
- !NO_DASHBOARD_QUALIFIERS.include?(qualifier)
+ @display_dashboard ||=
+ begin
+ !NO_DASHBOARD_QUALIFIERS.include?(qualifier)
+ end
end
def self.qualifier_name(qualifier)
diff --git a/sonar-server/src/main/webapp/stylesheets/style.css b/sonar-server/src/main/webapp/stylesheets/style.css
index bb5181d245c..d40ce641f6e 100644
--- a/sonar-server/src/main/webapp/stylesheets/style.css
+++ b/sonar-server/src/main/webapp/stylesheets/style.css
@@ -2404,18 +2404,27 @@ blockquote cite {
.spacer-left {
margin-left: 8px;
}
-
.spacer-right {
margin-right: 8px;
}
-
.spacer-bottom {
margin-bottom: 8px;
}
-
.spacer-top {
margin-top: 8px;
}
+td.spacer-left {
+ padding-left: 8px;
+}
+td.spacer-right {
+ padding-right: 8px;
+}
+td.spacer-bottom {
+ padding-bottom: 8px;
+}
+td.spacer-top {
+ padding-top: 8px;
+}
.bordered {
border: 1px solid #DDD;