From cb6af454c10525924139516422edff4a5cd1b290 Mon Sep 17 00:00:00 2001 From: Stas Vilchik Date: Wed, 10 Dec 2014 17:57:21 +0100 Subject: [PATCH] SONAR-5884 Make it possible to drilldown by issues --- .../source-viewer/source-viewer-header.hbs | 4 +- .../main/js/common/handlebars-extensions.js | 3 +- .../app/views/drilldown/issues.html.erb | 259 ++---------------- 3 files changed, 30 insertions(+), 236 deletions(-) diff --git a/server/sonar-web/src/main/hbs/source-viewer/source-viewer-header.hbs b/server/sonar-web/src/main/hbs/source-viewer/source-viewer-header.hbs index a010166978d..bc47335f566 100644 --- a/server/sonar-web/src/main/hbs/source-viewer/source-viewer-header.hbs +++ b/server/sonar-web/src/main/hbs/source-viewer/source-viewer-header.hbs @@ -58,7 +58,9 @@ {{#if measures.fIssues}}
- {{measures.fIssues}} + + {{measures.fIssues}} + {{t 'metric.violations.name'}}
{{/if}} diff --git a/server/sonar-web/src/main/js/common/handlebars-extensions.js b/server/sonar-web/src/main/js/common/handlebars-extensions.js index 2d5b8fb6caa..367639d723e 100644 --- a/server/sonar-web/src/main/js/common/handlebars-extensions.js +++ b/server/sonar-web/src/main/js/common/handlebars-extensions.js @@ -28,7 +28,8 @@ define(['handlebars'], function (Handlebars) { console.log.apply(console, args); }); - Handlebars.registerHelper('link', function(url) { + Handlebars.registerHelper('link', function() { + var url = Array.prototype.slice.call(arguments, 0, -1).join(''); return baseUrl + url; }); diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/views/drilldown/issues.html.erb b/server/sonar-web/src/main/webapp/WEB-INF/app/views/drilldown/issues.html.erb index 1f9d2a805bd..af206f654ca 100644 --- a/server/sonar-web/src/main/webapp/WEB-INF/app/views/drilldown/issues.html.erb +++ b/server/sonar-web/src/main/webapp/WEB-INF/app/views/drilldown/issues.html.erb @@ -1,238 +1,29 @@ -<% content_for :script do %> - -<% end %> - -<%= render :partial => 'header' -%> - -
-
-

- <% - profile_measure=@snapshot.measure(Metric::PROFILE) - %> - <% if profile_measure %>Profile <%= link_to profile_measure.data, :controller => 'profiles', :action => 'show', :id => profile_measure.value.to_i %> - <% end %> - <% if @snapshot.project_snapshot.periods? %> - <% period_options = period_select_option_tags(@snapshot, 'small') %> - <% if period_options %> -
- <%= dropdown_tag 'period', period_options, {:width => '250px'}, {:id => 'select-comparison', :onchange => 'submit()'} -%> -
- <% end %> - <% end %> -

-
-
- - - - - - -
- - <% - value_column = (@period ? "variation_value_#{@period}" : 'value') - max = 0 - if @period - blocker_issues=@snapshot.measure('new_blocker_violations') - critical_issues=@snapshot.measure('new_critical_violations') - major_issues=@snapshot.measure('new_major_violations') - minor_issues=@snapshot.measure('new_minor_violations') - info_issues=@snapshot.measure('new_info_violations') - else - 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') - end - - [blocker_issues, critical_issues, major_issues, minor_issues, info_issues].each do |m| - value = measure_or_variation_value(m) - max = value if value && value>max - end - %> -

<%= message('issues_drilldown.col.severity') -%>

- - <%= render :partial => 'severity', :locals => {:css => 'even', :severity => 'BLOCKER', :max => max, :measure => blocker_issues} %> - <%= render :partial => 'severity', :locals => {:css => 'odd', :severity => 'CRITICAL', :max => max, :measure => critical_issues} %> - <%= render :partial => 'severity', :locals => {:css => 'even', :severity => 'MAJOR', :max => max, :measure => major_issues} %> - <%= render :partial => 'severity', :locals => {:css => 'odd', :severity => 'MINOR', :max => max, :measure => minor_issues} %> - <%= render :partial => 'severity', :locals => {:css => 'even', :severity => 'INFO', :max => max, :measure => info_issues} %> -
-
-

<%= message('issues_drilldown.col.rule') -%>

- -
- - <% - max=0 - rule_index=0 - already_selected=false - @rule_measures.each do |m| - value = m.send(value_column) if m - max=value if value && value>max - end - @rule_measures.sort do |x, y| - val=y.rule_priority<=>x.rule_priority - if val==0 - x_value=x.send(value_column) - y_value=y.send(value_column) - y_value <=> x_value - else - val - end - end.each do |rule_measure| - value = rule_measure.send(value_column) - next if value.nil? || value==0 - rule=rule_measure.rule - clazz = cycle('even', 'odd', :name => 'rules') - selected = !already_selected && @rule && @rule.id==rule_measure.rule_id && (@rule_severity.nil? || @rule_severity==rule_measure.severity) - already_selected = true if selected - clazz = clazz + ' selected' if selected - rule_index+=1 - %> - - - - - - - <% end %> - - <% if rule_index==0 %> - - - - <% end %> -
- - - <%= link_to(h(rule.name), - {:controller => :drilldown, :action => :issues, :id => @resource.id, :rule => (selected ? nil : rule.key), - :rule_sev => (selected ? nil : rule_measure.severity), :sid => nil, :severity => @severity, :period => @period, - :rids => (selected ? nil : @selected_rids)}, - :title => "#{rule.plugin_name}: #{rule.plugin_rule_key}" - ) -%> - - <%= @period ? format_variation(rule_measure, :period => @period, :style => 'light') : rule_measure.formatted_value -%> - - <%= barchart(:width => 70, :percent => (100 * value / max).to_i, :color => (@period ? '#cc0000' : '#777')) if max>0 %> -
<%= message('issues_drilldown.no_issue') -%>
-
-
-<% - paths=[] - rids=[] - first_column=true - last_base_snapshot=nil - last_column = nil - @drilldown.columns.each_with_index do |column, index| -%> - <% if first_column %> - - - <% end %> - - <% if column.switch? || index==@drilldown.columns.size-1 %> - -
-
- - <% - column.measures.each_with_index do |measure, row_index| - 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 - %> - - - - - <% end %> -
- <% if resource.source_code? %> - - <% else %> - <%= link_to(image_tag('zoom.png'), {:id => resource.id}, {:class => 'nolink'}) %> - <% end %> - <%= qualifier_icon(resource) -%>  - <% if resource.source_code? %> - <%= h resource.name(false) %> - <% else %> - <%= link_to(h(resource.name), {:only_path => true, :overwrite_params => {:rids => (selected ? rids-[resource.id] : rids+[resource.id])}}) -%> - <% end %> - - <%= @period ? format_variation(measure, :period => @period, :style => 'light') : measure.formatted_value -%> -
-
-
- <% end - first_column = column.switch? - rids< - <% if last_column && @drilldown.selected_project_not_authorized %> -

<%= message('not_authorized_to_access_project', {:params => last_column.selected_snapshot.project.name}) -%>

- <% end %> - - -
- -<%= render :partial => 'footer' -%> -- 2.39.5