@@ -484,40 +484,6 private | |||
|
484 | 484 | render_404 |
|
485 | 485 | end |
|
486 | 486 | |
|
487 | # Retrieve query from session or build a new query | |
|
488 | def retrieve_query | |
|
489 | if !params[:query_id].blank? | |
|
490 | cond = "project_id IS NULL" | |
|
491 | cond << " OR project_id = #{@project.id}" if @project | |
|
492 | @query = Query.find(params[:query_id], :conditions => cond) | |
|
493 | @query.project = @project | |
|
494 | session[:query] = {:id => @query.id, :project_id => @query.project_id} | |
|
495 | sort_clear | |
|
496 | else | |
|
497 | if api_request? || params[:set_filter] || session[:query].nil? || session[:query][:project_id] != (@project ? @project.id : nil) | |
|
498 | # Give it a name, required to be valid | |
|
499 | @query = Query.new(:name => "_") | |
|
500 | @query.project = @project | |
|
501 | if params[:fields] and params[:fields].is_a? Array | |
|
502 | params[:fields].each do |field| | |
|
503 | @query.add_filter(field, params[:operators][field], params[:values][field]) | |
|
504 | end | |
|
505 | else | |
|
506 | @query.available_filters.keys.each do |field| | |
|
507 | @query.add_short_filter(field, params[field]) if params[field] | |
|
508 | end | |
|
509 | end | |
|
510 | @query.group_by = params[:group_by] | |
|
511 | @query.column_names = params[:query] && params[:query][:column_names] | |
|
512 | session[:query] = {:project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names} | |
|
513 | else | |
|
514 | @query = Query.find_by_id(session[:query][:id]) if session[:query][:id] | |
|
515 | @query ||= Query.new(:name => "_", :project => @project, :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names]) | |
|
516 | @query.project = @project | |
|
517 | end | |
|
518 | end | |
|
519 | end | |
|
520 | ||
|
521 | 487 | # Rescues an invalid query statement. Just in case... |
|
522 | 488 | def query_statement_invalid(exception) |
|
523 | 489 | logger.error "Query::StatementInvalid: #{exception.message}" if logger |
@@ -63,4 +63,38 module QueriesHelper | |||
|
63 | 63 | h(value) |
|
64 | 64 | end |
|
65 | 65 | end |
|
66 | ||
|
67 | # Retrieve query from session or build a new query | |
|
68 | def retrieve_query | |
|
69 | if !params[:query_id].blank? | |
|
70 | cond = "project_id IS NULL" | |
|
71 | cond << " OR project_id = #{@project.id}" if @project | |
|
72 | @query = Query.find(params[:query_id], :conditions => cond) | |
|
73 | @query.project = @project | |
|
74 | session[:query] = {:id => @query.id, :project_id => @query.project_id} | |
|
75 | sort_clear | |
|
76 | else | |
|
77 | if api_request? || params[:set_filter] || session[:query].nil? || session[:query][:project_id] != (@project ? @project.id : nil) | |
|
78 | # Give it a name, required to be valid | |
|
79 | @query = Query.new(:name => "_") | |
|
80 | @query.project = @project | |
|
81 | if params[:fields] and params[:fields].is_a? Array | |
|
82 | params[:fields].each do |field| | |
|
83 | @query.add_filter(field, params[:operators][field], params[:values][field]) | |
|
84 | end | |
|
85 | else | |
|
86 | @query.available_filters.keys.each do |field| | |
|
87 | @query.add_short_filter(field, params[field]) if params[field] | |
|
88 | end | |
|
89 | end | |
|
90 | @query.group_by = params[:group_by] | |
|
91 | @query.column_names = params[:query] && params[:query][:column_names] | |
|
92 | session[:query] = {:project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names} | |
|
93 | else | |
|
94 | @query = Query.find_by_id(session[:query][:id]) if session[:query][:id] | |
|
95 | @query ||= Query.new(:name => "_", :project => @project, :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names]) | |
|
96 | @query.project = @project | |
|
97 | end | |
|
98 | end | |
|
99 | end | |
|
66 | 100 | end |
General Comments 0
You need to be logged in to leave comments.
Login now