##// END OF EJS Templates
Reverting commit r1748. Some environments are not allowing the cached file to...
Reverting commit r1748. Some environments are not allowing the cached file to write to public, causing all JavaScript to fail. Javascripts are now cached into a single file for downloads in production mode. #1186 git-svn-id: http://redmine.rubyforge.org/svn/trunk@1771 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r1726:2fdf4426cd8f
r1770:8f3a04ce6906
Show More
reports_controller.rb
236 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
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