diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2016-07-13 19:02:48 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2016-07-13 19:02:48 +0000 |
commit | 793cb1676450a5b3e723a452893c10be1cb0f1bd (patch) | |
tree | 6c3922b5fed76ae41617b5ff9e215f985b0c4f9d /app/helpers/queries_helper.rb | |
parent | abf3fe9c83d8e0e832d4e4d211eafbeb27ea72b1 (diff) | |
download | redmine-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.rb | 31 |
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| |