queries_helper.rb
99 lines
| 3.6 KiB
| text/x-ruby
|
RubyLexer
|
r771 | # redMine - project management software | ||
# Copyright (C) 2006-2007 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. | ||||
|
r92 | |||
|
r771 | module QueriesHelper | ||
|
r92 | def operators_for_select(filter_type) | ||
Query.operators_by_filter_type[filter_type].collect {|o| [l(Query.operators[o]), o]} | ||||
end | ||||
|
r771 | |||
def column_header(column) | ||||
|
r2169 | column.sortable ? sort_header_tag(column.name.to_s, :caption => column.caption, | ||
:default_order => column.default_order) : | ||||
|
r1107 | content_tag('th', column.caption) | ||
|
r771 | end | ||
def column_content(column, issue) | ||||
|
r2998 | value = column.value(issue) | ||
case value.class.name | ||||
when 'String' | ||||
if column.name == :subject | ||||
link_to(h(value), :controller => 'issues', :action => 'show', :id => issue) | ||||
else | ||||
h(value) | ||||
end | ||||
when 'Time' | ||||
format_time(value) | ||||
when 'Date' | ||||
format_date(value) | ||||
when 'Fixnum', 'Float' | ||||
if column.name == :done_ratio | ||||
progress_bar(value, :width => '80px') | ||||
|
r895 | else | ||
|
r2998 | value.to_s | ||
|
r876 | end | ||
|
r2998 | when 'User' | ||
link_to_user value | ||||
when 'Project' | ||||
|
r3810 | link_to_project value | ||
|
r2998 | when 'Version' | ||
link_to(h(value), :controller => 'versions', :action => 'show', :id => value) | ||||
when 'TrueClass' | ||||
l(:general_text_Yes) | ||||
when 'FalseClass' | ||||
l(:general_text_No) | ||||
|
r3504 | when 'Issue' | ||
link_to_issue(value, :subject => false) | ||||
|
r2998 | else | ||
h(value) | ||||
|
r771 | end | ||
end | ||||
|
r3577 | |||
# Retrieve query from session or build a new query | ||||
def retrieve_query | ||||
if !params[:query_id].blank? | ||||
cond = "project_id IS NULL" | ||||
cond << " OR project_id = #{@project.id}" if @project | ||||
@query = Query.find(params[:query_id], :conditions => cond) | ||||
@query.project = @project | ||||
session[:query] = {:id => @query.id, :project_id => @query.project_id} | ||||
sort_clear | ||||
else | ||||
if api_request? || params[:set_filter] || session[:query].nil? || session[:query][:project_id] != (@project ? @project.id : nil) | ||||
# Give it a name, required to be valid | ||||
@query = Query.new(:name => "_") | ||||
@query.project = @project | ||||
|
r4273 | if params[:fields] | ||
@query.filters = {} | ||||
@query.add_filters(params[:fields], params[:operators], params[:values]) | ||||
|
r3577 | else | ||
@query.available_filters.keys.each do |field| | ||||
@query.add_short_filter(field, params[field]) if params[field] | ||||
end | ||||
end | ||||
@query.group_by = params[:group_by] | ||||
@query.column_names = params[:query] && params[:query][:column_names] | ||||
session[:query] = {:project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names} | ||||
else | ||||
@query = Query.find_by_id(session[:query][:id]) if session[:query][:id] | ||||
@query ||= Query.new(:name => "_", :project => @project, :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names]) | ||||
@query.project = @project | ||||
end | ||||
end | ||||
end | ||||
|
r92 | end | ||