##// END OF EJS Templates
Display the issue status in the email subject only if the status was actually changed....
Display the issue status in the email subject only if the status was actually changed. git-svn-id: http://redmine.rubyforge.org/svn/trunk@1079 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r1062:0faa4568a0ab
r1065:1b002983c31f
Show More
reports_controller.rb
237 lines | 10.7 KiB | text/x-ruby | RubyLexer
/ app / controllers / reports_controller.rb
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # redMine - project management software
# Copyright (C) 2006 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class ReportsController < ApplicationController
layout 'base'
Jean-Philippe Lang
Highlight the current item of the main menu....
r1062 menu_item :issues
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 before_filter :find_project, :authorize
def issue_report
@statuses = IssueStatus.find(:all, :order => 'position')
case params[:detail]
when "tracker"
@field = "tracker_id"
Jean-Philippe Lang
Added per-project tracker selection. Trackers can be selected on project settings....
r907 @rows = @project.trackers
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 @data = issues_by_tracker
@report_title = l(:field_tracker)
render :template => "reports/issue_report_details"
Jean-Philippe Lang
Added issue count details for versions on Reports view....
r540 when "version"
@field = "fixed_version_id"
@rows = @project.versions.sort
@data = issues_by_version
@report_title = l(:field_version)
render :template => "reports/issue_report_details"
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 when "priority"
@field = "priority_id"
@rows = Enumeration::get_values('IPRI')
@data = issues_by_priority
@report_title = l(:field_priority)
render :template => "reports/issue_report_details"
when "category"
@field = "category_id"
@rows = @project.issue_categories
@data = issues_by_category
@report_title = l(:field_category)
render :template => "reports/issue_report_details"
Jean-Philippe Lang
Added details by assignees on issue summary view (Hans Yoon)....
r1038 when "assigned_to"
@field = "assigned_to_id"
@rows = @project.members.collect { |m| m.user }
@data = issues_by_assigned_to
@report_title = l(:field_assigned_to)
render :template => "reports/issue_report_details"
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 when "author"
@field = "author_id"
@rows = @project.members.collect { |m| m.user }
@data = issues_by_author
@report_title = l(:field_author)
render :template => "reports/issue_report_details"
Jean-Philippe Lang
Added subprojects issue count on project "Reports" page...
r407 when "subproject"
@field = "project_id"
Jean-Philippe Lang
Added the ability to archive projects:...
r546 @rows = @project.active_children
Jean-Philippe Lang
Added subprojects issue count on project "Reports" page...
r407 @data = issues_by_subproject
@report_title = l(:field_subproject)
render :template => "reports/issue_report_details"
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 else
Jean-Philippe Lang
Added per-project tracker selection. Trackers can be selected on project settings....
r907 @trackers = @project.trackers
Jean-Philippe Lang
Added issue count details for versions on Reports view....
r540 @versions = @project.versions.sort
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 @priorities = Enumeration::get_values('IPRI')
@categories = @project.issue_categories
Jean-Philippe Lang
Added details by assignees on issue summary view (Hans Yoon)....
r1038 @assignees = @project.members.collect { |m| m.user }
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 @authors = @project.members.collect { |m| m.user }
Jean-Philippe Lang
Added the ability to archive projects:...
r546 @subprojects = @project.active_children
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 issues_by_tracker
Jean-Philippe Lang
Added issue count details for versions on Reports view....
r540 issues_by_version
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 issues_by_priority
issues_by_category
Jean-Philippe Lang
Added details by assignees on issue summary view (Hans Yoon)....
r1038 issues_by_assigned_to
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 issues_by_author
Jean-Philippe Lang
Added subprojects issue count on project "Reports" page...
r407 issues_by_subproject
Jean-Philippe Lang
Application layout refactored....
r736
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 render :template => "reports/issue_report"
end
end
def delays
@trackers = Tracker.find(:all)
if request.get?
@selected_tracker_ids = @trackers.collect {|t| t.id.to_s }
else
@selected_tracker_ids = params[:tracker_ids].collect { |id| id.to_i.to_s } if params[:tracker_ids] and params[:tracker_ids].is_a? Array
end
@selected_tracker_ids ||= []
@raw =
ActiveRecord::Base.connection.select_all("SELECT datediff( a.created_on, b.created_on ) as delay, count(a.id) as total
FROM issue_histories a, issue_histories b, issues i
WHERE a.status_id =5
AND a.issue_id = b.issue_id
AND a.issue_id = i.id
AND i.tracker_id in (#{@selected_tracker_ids.join(',')})
AND b.id = (
SELECT min( c.id )
FROM issue_histories c
WHERE b.issue_id = c.issue_id )
GROUP BY delay") unless @selected_tracker_ids.empty?
@raw ||=[]
@x_from = 0
@x_to = 0
@y_from = 0
@y_to = 0
@sum_total = 0
@sum_delay = 0
@raw.each do |r|
@x_to = [r['delay'].to_i, @x_to].max
@y_to = [r['total'].to_i, @y_to].max
@sum_total = @sum_total + r['total'].to_i
@sum_delay = @sum_delay + r['total'].to_i * r['delay'].to_i
end
end
private
# Find project of id params[:id]
def find_project
@project = Project.find(params[:id])
rescue ActiveRecord::RecordNotFound
render_404
end
def issues_by_tracker
@issues_by_tracker ||=
ActiveRecord::Base.connection.select_all("select s.id as status_id,
s.is_closed as closed,
t.id as tracker_id,
count(i.id) as total
from
Jean-Philippe Lang
fixed #9308 table_name pre/suffix support...
r334 #{Issue.table_name} i, #{IssueStatus.table_name} s, #{Tracker.table_name} t
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 where
i.status_id=s.id
and i.tracker_id=t.id
and i.project_id=#{@project.id}
group by s.id, s.is_closed, t.id")
end
Jean-Philippe Lang
Added issue count details for versions on Reports view....
r540
def issues_by_version
@issues_by_version ||=
ActiveRecord::Base.connection.select_all("select s.id as status_id,
s.is_closed as closed,
v.id as fixed_version_id,
count(i.id) as total
from
#{Issue.table_name} i, #{IssueStatus.table_name} s, #{Version.table_name} v
where
i.status_id=s.id
and i.fixed_version_id=v.id
and i.project_id=#{@project.id}
group by s.id, s.is_closed, v.id")
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 def issues_by_priority
@issues_by_priority ||=
ActiveRecord::Base.connection.select_all("select s.id as status_id,
s.is_closed as closed,
p.id as priority_id,
count(i.id) as total
from
Jean-Philippe Lang
fixed #9308 table_name pre/suffix support...
r334 #{Issue.table_name} i, #{IssueStatus.table_name} s, #{Enumeration.table_name} p
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 where
i.status_id=s.id
and i.priority_id=p.id
and i.project_id=#{@project.id}
group by s.id, s.is_closed, p.id")
end
def issues_by_category
@issues_by_category ||=
ActiveRecord::Base.connection.select_all("select s.id as status_id,
s.is_closed as closed,
c.id as category_id,
count(i.id) as total
from
Jean-Philippe Lang
fixed #9308 table_name pre/suffix support...
r334 #{Issue.table_name} i, #{IssueStatus.table_name} s, #{IssueCategory.table_name} c
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 where
i.status_id=s.id
and i.category_id=c.id
and i.project_id=#{@project.id}
group by s.id, s.is_closed, c.id")
end
Jean-Philippe Lang
Added details by assignees on issue summary view (Hans Yoon)....
r1038
def issues_by_assigned_to
@issues_by_assigned_to ||=
ActiveRecord::Base.connection.select_all("select s.id as status_id,
s.is_closed as closed,
a.id as assigned_to_id,
count(i.id) as total
from
#{Issue.table_name} i, #{IssueStatus.table_name} s, #{User.table_name} a
where
i.status_id=s.id
and i.assigned_to_id=a.id
and i.project_id=#{@project.id}
group by s.id, s.is_closed, a.id")
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 def issues_by_author
@issues_by_author ||=
ActiveRecord::Base.connection.select_all("select s.id as status_id,
s.is_closed as closed,
a.id as author_id,
count(i.id) as total
from
Jean-Philippe Lang
fixed #9308 table_name pre/suffix support...
r334 #{Issue.table_name} i, #{IssueStatus.table_name} s, #{User.table_name} a
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 where
i.status_id=s.id
and i.author_id=a.id
and i.project_id=#{@project.id}
group by s.id, s.is_closed, a.id")
Jean-Philippe Lang
indentation corrections...
r198 end
Jean-Philippe Lang
Added subprojects issue count on project "Reports" page...
r407
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
Jean-Philippe Lang
Added the ability to archive projects:...
r546 and i.project_id IN (#{@project.active_children.collect{|p| p.id}.join(',')})
group by s.id, s.is_closed, i.project_id") if @project.active_children.any?
Jean-Philippe Lang
Added subprojects issue count on project "Reports" page...
r407 @issues_by_subproject ||= []
end
Jean-Philippe Lang
Initial commit...
r2 end