Также было бы здорово, если бы колонка «Потраченное время» была сортируемой.
После просмотра созданного SQL я просто реализовал сортируемую функцию следующим образом:
base.add_available_column(QueryColumn.new(:spent_hours,
:sortable => "(select sum(hours) from time_entries where time_entries.issue_id = t0_r0)")
)
Заменить соответствующую строку. Я просто надеюсь, что имя столбца issue_id всегда "t0_r0" ...
PS: Вы можете найти множество примеров в строчках app / models / query.rb 122 ++
2-значная проблема:
К сожалению, мне пришлось взломать один из основных файлов: app / helpers / questions_helper.rb
Вокруг строки 44, измените это:
when 'Fixnum', 'Float'
if column.name == :done_ratio
progress_bar(value, :width => '80px')
else
value.to_s
end
в
when 'Fixnum', 'Float'
if column.name == :done_ratio
progress_bar(value, :width => '80px')
elsif column.name == :spent_hours
sprintf "%.2f", value
else
value.to_s
end
РЕДАКТИРОВАТЬ: Использование патча вместо манипулирования источником Недавно мы сделали обновление системы Redmine, поэтому вышеупомянутое исправление также было удалено.
На этот раз мы решили реализовать это как патч.
Откройте любой плагин (мы создали плагин для наших изменений в monkey-patch на ядре). открыть поставщика / плагины / redmine_YOURPLUGIN / app / helpers / questions_helper.rb
module QueriesHelper
def new_column_content(column, issue)
value = column.value(issue)
if value.class.name == "Float" and column.name == :spent_hours
sprintf "%.2f", value
else
__column_content(column, issue)
end
end
alias_method :__column_content, :column_content
alias_method :column_content, :new_column_content
end