diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-04-03 19:48:49 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-04-03 19:48:49 +0000 |
commit | 52ced19e2e58b420c83c3dda0637439209f85f4f (patch) | |
tree | 20377bbec416c204e343b82d3366bcbc22f6630b /app | |
parent | 1c0971b12c6060144e2ea067d93f8e44e8046988 (diff) | |
download | redmine-52ced19e2e58b420c83c3dda0637439209f85f4f.tar.gz redmine-52ced19e2e58b420c83c3dda0637439209f85f4f.zip |
Added subprojects issue count on project "Reports" page
git-svn-id: http://redmine.rubyforge.org/svn/trunk@410 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/reports_controller.rb | 23 | ||||
-rw-r--r-- | app/views/reports/_details.rhtml | 10 | ||||
-rw-r--r-- | app/views/reports/_simple.rhtml | 8 | ||||
-rw-r--r-- | app/views/reports/issue_report.rhtml | 5 |
4 files changed, 37 insertions, 9 deletions
diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb index ab648460b..5536e272c 100644 --- a/app/controllers/reports_controller.rb +++ b/app/controllers/reports_controller.rb @@ -47,16 +47,24 @@ class ReportsController < ApplicationController @data = issues_by_author @report_title = l(:field_author) render :template => "reports/issue_report_details" + when "subproject" + @field = "project_id" + @rows = @project.children + @data = issues_by_subproject + @report_title = l(:field_subproject) + render :template => "reports/issue_report_details" else @queries = @project.queries.find :all, :conditions => ["is_public=? or user_id=?", true, (logged_in_user ? logged_in_user.id : 0)] @trackers = Tracker.find(:all, :order => 'position') @priorities = Enumeration::get_values('IPRI') @categories = @project.issue_categories @authors = @project.members.collect { |m| m.user } + @subprojects = @project.children issues_by_tracker issues_by_priority issues_by_category issues_by_author + issues_by_subproject @total_hours = @project.time_entries.sum(:hours) render :template => "reports/issue_report" end @@ -165,4 +173,19 @@ private and i.project_id=#{@project.id} group by s.id, s.is_closed, a.id") end + + def issues_by_subproject + @issues_by_subproject ||= + ActiveRecord::Base.connection.select_all("select s.id as status_id, + s.is_closed as closed, + i.project_id as project_id, + count(i.id) as total + from + #{Issue.table_name} i, #{IssueStatus.table_name} s + where + i.status_id=s.id + and i.project_id IN (#{@project.children.collect{|p| p.id}.join(',')}) + group by s.id, s.is_closed, i.project_id") if @project.children.any? + @issues_by_subproject ||= [] + end end diff --git a/app/views/reports/_details.rhtml b/app/views/reports/_details.rhtml index 323816a13..6a2888eaa 100644 --- a/app/views/reports/_details.rhtml +++ b/app/views/reports/_details.rhtml @@ -15,28 +15,28 @@ <tbody> <% for row in rows %> <tr class="<%= cycle("odd", "even") %>"> - <td><%= link_to row.name, :controller => 'projects', :action => 'list_issues', :id => @project, + <td><%= link_to row.name, :controller => 'projects', :action => 'list_issues', :id => ((row.is_a?(Project) ? row : @project)), :set_filter => 1, "#{field_name}" => row.id %></td> <% for status in @statuses %> <td align="center"><%= link_to (aggregate data, { field_name => row.id, "status_id" => status.id }), - :controller => 'projects', :action => 'list_issues', :id => @project, + :controller => 'projects', :action => 'list_issues', :id => ((row.is_a?(Project) ? row : @project)), :set_filter => 1, "status_id" => status.id, "#{field_name}" => row.id %></td> <% end %> <td align="center"><%= link_to (aggregate data, { field_name => row.id, "closed" => 0 }), - :controller => 'projects', :action => 'list_issues', :id => @project, + :controller => 'projects', :action => 'list_issues', :id => ((row.is_a?(Project) ? row : @project)), :set_filter => 1, "#{field_name}" => row.id, "status_id" => "o" %></td> <td align="center"><%= link_to (aggregate data, { field_name => row.id, "closed" => 1 }), - :controller => 'projects', :action => 'list_issues', :id => @project, + :controller => 'projects', :action => 'list_issues', :id => ((row.is_a?(Project) ? row : @project)), :set_filter => 1, "#{field_name}" => row.id, "status_id" => "c" %></td> <td align="center"><%= link_to (aggregate data, { field_name => row.id }), - :controller => 'projects', :action => 'list_issues', :id => @project, + :controller => 'projects', :action => 'list_issues', :id => ((row.is_a?(Project) ? row : @project)), :set_filter => 1, "#{field_name}" => row.id, "status_id" => "*" %></td> diff --git a/app/views/reports/_simple.rhtml b/app/views/reports/_simple.rhtml index 0e580fe72..20ff41fe2 100644 --- a/app/views/reports/_simple.rhtml +++ b/app/views/reports/_simple.rhtml @@ -11,21 +11,21 @@ <tbody> <% for row in rows %> <tr class="<%= cycle("odd", "even") %>"> - <td><%= link_to row.name, :controller => 'projects', :action => 'list_issues', :id => @project, + <td><%= link_to row.name, :controller => 'projects', :action => 'list_issues', :id => ((row.is_a?(Project) ? row : @project)), :set_filter => 1, "#{field_name}" => row.id %></td> <td align="center"><%= link_to (aggregate data, { field_name => row.id, "closed" => 0 }), - :controller => 'projects', :action => 'list_issues', :id => @project, + :controller => 'projects', :action => 'list_issues', :id => ((row.is_a?(Project) ? row : @project)), :set_filter => 1, "#{field_name}" => row.id, "status_id" => "o" %></td> <td align="center"><%= link_to (aggregate data, { field_name => row.id, "closed" => 1 }), - :controller => 'projects', :action => 'list_issues', :id => @project, + :controller => 'projects', :action => 'list_issues', :id => ((row.is_a?(Project) ? row : @project)), :set_filter => 1, "#{field_name}" => row.id, "status_id" => "c" %></td> <td align="center"><%= link_to (aggregate data, { field_name => row.id }), - :controller => 'projects', :action => 'list_issues', :id => @project, + :controller => 'projects', :action => 'list_issues', :id => ((row.is_a?(Project) ? row : @project)), :set_filter => 1, "#{field_name}" => row.id, "status_id" => "*" %></td> diff --git a/app/views/reports/issue_report.rhtml b/app/views/reports/issue_report.rhtml index 8f832f87e..1ab9dbdbd 100644 --- a/app/views/reports/issue_report.rhtml +++ b/app/views/reports/issue_report.rhtml @@ -36,6 +36,11 @@ <h3><%=l(:field_priority)%> <%= link_to image_tag('zoom_in.png'), :detail => 'priority' %></h3> <%= render :partial => 'simple', :locals => { :data => @issues_by_priority, :field_name => "priority_id", :rows => @priorities } %> <br /> +<% if @project.children.any? %> +<h3><%=l(:field_subproject)%> <%= link_to image_tag('zoom_in.png'), :detail => 'subproject' %></h3> +<%= render :partial => 'simple', :locals => { :data => @issues_by_subproject, :field_name => "project_id", :rows => @subprojects } %> +<br /> +<% end %> <h3><%=l(:field_category)%> <%= link_to image_tag('zoom_in.png'), :detail => 'category' %></h3> <%= render :partial => 'simple', :locals => { :data => @issues_by_category, :field_name => "category_id", :rows => @categories } %> <br /> |