diff options
author | Simon Brandhof <simon.brandhof@gmail.com> | 2012-02-17 15:30:05 +0100 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@gmail.com> | 2012-02-17 15:32:08 +0100 |
commit | d5d1c9f30d4bdc653056af0debfbee9e84958637 (patch) | |
tree | 2d30ee46d9d24ba83c11a9bea96ca7411c0714d8 /sonar-server | |
parent | 64af84362db4394146582f311485045377e594b1 (diff) | |
download | sonarqube-d5d1c9f30d4bdc653056af0debfbee9e84958637.tar.gz sonarqube-d5d1c9f30d4bdc653056af0debfbee9e84958637.zip |
Improve the way to switch between views and projects
Diffstat (limited to 'sonar-server')
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> - - <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> + + <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') -%> + <b><%= format_measure(@metric.key, :period => @period) -%> <%= @metric.short_name -%></b> + </p> + <% end %> </div> <!-- keep for IE6 ! --> -<table id="drilldown" class="width100" style="clear:left"> - <% if @highlighted_metric!=@metric %> - <tr> - <td colspan="<%= @drilldown.columns.size -%>"><%= message('drilldown.drilldown_on') -%> - <% 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) -%> - <a href="#" onclick="d(<%= resource.id -%>)" alt="<%= resource.name(true) -%>" title="<%= resource.name(true) -%>"><%= resource.name(false) -%></a> - <% else %> + <%= qualifier_icon(resource) -%> + <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) -%> <%= 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) -%> - <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) %> - <%= 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) -%> + <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) %> + <%= 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; |