git-svn-id: http://redmine.rubyforge.org/svn/trunk@410 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/0.5.0
@@ -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 |
@@ -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> |
@@ -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> |
@@ -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 /> |