summaryrefslogtreecommitdiffstats
path: root/app/helpers/queries_helper.rb
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2016-07-13 19:02:48 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2016-07-13 19:02:48 +0000
commit793cb1676450a5b3e723a452893c10be1cb0f1bd (patch)
tree6c3922b5fed76ae41617b5ff9e215f985b0c4f9d /app/helpers/queries_helper.rb
parentabf3fe9c83d8e0e832d4e4d211eafbeb27ea72b1 (diff)
downloadredmine-793cb1676450a5b3e723a452893c10be1cb0f1bd.tar.gz
redmine-793cb1676450a5b3e723a452893c10be1cb0f1bd.zip
Make time entries groupable (#16843).
git-svn-id: http://svn.redmine.org/redmine/trunk@15649 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/helpers/queries_helper.rb')
-rw-r--r--app/helpers/queries_helper.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/app/helpers/queries_helper.rb b/app/helpers/queries_helper.rb
index e2e09c7de..6bf8b3177 100644
--- a/app/helpers/queries_helper.rb
+++ b/app/helpers/queries_helper.rb
@@ -78,6 +78,11 @@ module QueriesHelper
query_filters_hidden_tags(query) + query_columns_hidden_tags(query)
end
+ def group_by_column_select_tag(query)
+ options = [[]] + query.groupable_columns.collect {|c| [c.caption, c.name.to_s]}
+ select_tag('group_by', options_for_select(options, @query.group_by))
+ end
+
def available_block_columns_tags(query)
tags = ''.html_safe
query.available_block_columns.each do |column|
@@ -108,6 +113,32 @@ module QueriesHelper
render :partial => 'queries/columns', :locals => {:query => query, :tag_name => tag_name}
end
+ def grouped_query_results(items, query, item_count_by_group, &block)
+ previous_group, first = false, true
+ totals_by_group = query.totalable_columns.inject({}) do |h, column|
+ h[column] = query.total_by_group_for(column)
+ h
+ end
+ items.each do |item|
+ group_name = group_count = nil
+ if query.grouped?
+ group = query.group_by_column.value(item)
+ if first || group != previous_group
+ if group.blank? && group != false
+ group_name = "(#{l(:label_blank_value)})"
+ else
+ group_name = format_object(group)
+ end
+ group_name ||= ""
+ group_count = item_count_by_group ? item_count_by_group[group] : nil
+ group_totals = totals_by_group.map {|column, t| total_tag(column, t[group] || 0)}.join(" ").html_safe
+ end
+ end
+ yield item, group_name, group_count, group_totals
+ previous_group, first = group, false
+ end
+ end
+
def render_query_totals(query)
return unless query.totalable_columns.present?
totals = query.totalable_columns.map do |column|