Patch #1582
closedAdd Time Spent Column to Issue List
0%
Description
This patch adds a new column to the issues list, called Time Spent. It will be the total of all time logged on an issue.
Git patch applies successfully to r1618 using patch -p1
$ patch -p1 < ../../patches/add_time_spent_column_to_issues.patch patching file app/helpers/issues_helper.rb patching file app/models/query.rb patching file lang/en.yml
Files
Related issues
      
      Updated by Mischa The Evil about 17 years ago
      
    
    Eric, how does this patch relate to the patch provided by jplang in issue #971?
      
      Updated by Eric Davis about 17 years ago
      
    
    Mischa The Evil wrote:
Eric, how does this patch relate to the patch provided by jplang in issue #971?
Almost identical. Good eye.
      
      Updated by Adam Tulinius almost 17 years ago
      
    
    Hi,
We're using Redmine at our company, and would really like this patch (or something like it) to be included into Redmine, so we won't have to patch Redmine manually. :-)
Yours sincerily,
Adam Tulinius
      
      Updated by Hans Kazan over 16 years ago
      
    
    +2 i like this one. Especially that one can switch it on/off!
      
      Updated by Richard Cooke over 16 years ago
      
    
    Great patch, thank you!
How do I change it to show only two decimal places? At the moment some values are 8.2300000190735 in my issues list.
How difficult would it be to color spent time red, if spent time is greater than actual time?
      
      Updated by Chris Grieger over 16 years ago
      
    
    - File add_time_spent_column_to_issues-svn_r2823.patch add_time_spent_column_to_issues-svn_r2823.patch added
 - File add_time_spent_column_to_issues_and_colored-svn_r2823.patch add_time_spent_column_to_issues_and_colored-svn_r2823.patch added
 
Updated the patch with the ability to sort by the "Time spent" column and added rounding to 2 decimal places.
patch -p0 < patches/add_time_spent_column_to_issues-svn_r2823.patch patching file app/helpers/issues_helper.rb patching file app/models/issue.rb patching file app/models/query.rb patching file app/controllers/issues_controller.rb patching file config/locales/en.yml
The 2nd patch also colors the spent hours red if > estimated hours.
      
      Updated by Kirill Ponomarev over 16 years ago
      
    
    I got error:
ActionView::TemplateError (comparison of Float with nil failed) on line #17 of issues/_list.rhtml:
14:     <tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= css_issue_classes(issue) %>">
15:         <td class="checkbox"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
16:         <td><%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %></td>
17:         <% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><% end %>
18:     </tr>
19:     <% end -%>
20:     </tbody>
    app/models/issue.rb:229:in `>'
    app/models/issue.rb:229:in `spent_hours_colored'
    app/helpers/queries_helper.rb:56:in `send'
    app/helpers/queries_helper.rb:56:in `column_content'
    app/views/issues/_list.rhtml:17:in `_run_erb_47app47views47issues47_list46rhtml'
    app/views/issues/_list.rhtml:17:in `each'
    app/views/issues/_list.rhtml:17:in `_run_erb_47app47views47issues47_list46rhtml'
    app/views/issues/_list.rhtml:13:in `each'
    app/views/issues/_list.rhtml:13:in `_run_erb_47app47views47issues47_list46rhtml'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/helpers/capture_helper.rb:141:in `call'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/helpers/capture_helper.rb:141:in `capture_erb_with_buffer'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/helpers/capture_helper.rb:44:in `capture'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/helpers/form_tag_helper.rb:443:in `form_tag_in_block'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/helpers/form_tag_helper.rb:39:in `form_tag'
    app/views/issues/_list.rhtml:1:in `_run_erb_47app47views47issues47_list46rhtml'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/base.rb:342:in `send'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/base.rb:342:in `execute'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/template_handlers/compilable.rb:29:in `send'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/template_handlers/compilable.rb:29:in `render'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/partial_template.rb:20:in `render'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/benchmarking.rb:30:in `benchmark'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/partial_template.rb:19:in `render'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/template.rb:22:in `render_template'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/partials.rb:110:in `render_partial'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/base.rb:277:in `render'
    app/views/issues/index.rhtml:43:in `_run_erb_47app47views47issues47index46rhtml'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/base.rb:342:in `send'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/base.rb:342:in `execute'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/template_handlers/compilable.rb:29:in `send'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/template_handlers/compilable.rb:29:in `render'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/template.rb:35:in `render'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/template.rb:22:in `render_template'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/base.rb:248:in `render_file'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:1112:in `render_for_file'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:872:in `render_with_no_layout'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/layout.rb:251:in `render_without_benchmark'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/benchmarking.rb:51:in `render'
    c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/core_ext/benchmark.rb:8:in `realtime'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/benchmarking.rb:51:in `render'
    app/controllers/issues_controller.rb:69:in `index'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:131:in `call'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:131:in `custom'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:160:in `call'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:160:in `respond'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:154:in `each'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:154:in `respond'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:107:in `respond_to'
    app/controllers/issues_controller.rb:68:in `index'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:1166:in `send'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:1166:in `perform_action_without_filters'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/filters.rb:579:in `call_filters'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/filters.rb:572:in `perform_action_without_benchmark'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
    c:/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/rescue.rb:201:in `perform_action_without_caching'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/caching/sql_cache.rb:13:in `perform_action'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/connection_adapters/abstract/query_cache.rb:33:in `cache'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/query_cache.rb:8:in `cache'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/caching/sql_cache.rb:12:in `perform_action'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:529:in `send'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:529:in `process_without_filters'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/filters.rb:568:in `process_without_session_management_support'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/session_management.rb:130:in `process'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:389:in `process'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:149:in `handle_request'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:107:in `dispatch'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:104:in `synchronize'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:104:in `dispatch'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:120:in `dispatch_cgi'
    c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:35:in `dispatch'
    c:/ruby/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/webrick_server.rb:112:in `handle_dispatch'
    c:/ruby/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/webrick_server.rb:78:in `service'
    c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
    c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
    c:/ruby/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
    c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start'
    c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
    c:/ruby/lib/ruby/1.8/webrick/server.rb:95:in `start'
    c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `each'
    c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `start'
    c:/ruby/lib/ruby/1.8/webrick/server.rb:23:in `start'
    c:/ruby/lib/ruby/1.8/webrick/server.rb:82:in `start'
    c:/ruby/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/webrick_server.rb:62:in `dispatch'
    c:/ruby/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/servers/webrick.rb:66
    c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
    c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
    c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:510:in `require'
    c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:355:in `new_constants_in'
    c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:510:in `require'
    c:/ruby/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/server.rb:39
    c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
    c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
    script/server:3
Rendering C:/redmine-0.8-stable/public/500.html (500 Internal Server Error)
      
      Updated by Kirill Ponomarev over 16 years ago
      
    
    I changed method in issue.rb and all works fine:
def spent_hours_colored(value)
  if value.nil? || estimated_hours.nil? || value <= estimated_hours
    return value
  else
    return "<FONT COLOR='RED'>"+value.to_s+"</FONT>" 
  end
end
      
      Updated by David PVB over 15 years ago
      
    
    +1
....
I got error using Redmine v 0.8.7
Error patching this file: app/controllers/issues_controller.rb
Looking at it, it's totally different...
      
      Updated by Mark Hagers over 15 years ago
      
    
    +2 (one for me and one for my manager who is clamoring for just such a feature).
Do I understand correctly that the patches mentioned in this  issue are no longer functional?
If not I'll have a go at trying them out first.
      
      Updated by Yohann Monnier about 15 years ago
      
    
    Hi All,
I updated the last patch colored time spent.
But i also update more files for security issues (there is a permission on viewing spent time, so we need to handle it in html view, csv and pdf)
I did not know how to make a regular patch with git, so i hope to find someone to apply this and post a svn patch for you.
It should work for the last version of redmine
      
      Updated by Yohann Monnier about 15 years ago
      
    
    - File add_time_spent_column_to_issues_withpermissions.patch add_time_spent_column_to_issues_withpermissions.patch added
 
with attached file its better !
      
      Updated by Boris Pigeot about 15 years ago
      
    
    
    Yohann Monnier wrote:
with attached file its better !
I try this patch, but maybe there is a bug in PDF export, number are not "all" formated correctly.
See the attachment:
0.2000000029802 in PDF file,
0.20 in Issue tab.
      
      Updated by Anonymous about 15 years ago
      
    
    +1 on including that into the trunk, that would be awesome!
      
      Updated by Peter Horvath about 15 years ago
      
    
    Hi,
I applied the patch listed in #17 post. Everything is working fine except that when i try to sort by spent_hours i got the following error.
My redmine version is 0.9.3
About your application's environment
Ruby version              1.8.7 (x86_64-linux)
RubyGems version          1.3.5
Rails version             2.2.3
Active Record version     2.2.3
Action Pack version       2.2.3
Active Resource version   2.2.3
Action Mailer version     2.2.3
Active Support version    2.2.3
Edge Rails revision       unknown
Application root          /usr/share/redmine
Environment               production
Database adapter          mysql
Database schema version   20100221100219
About your Redmine plugins
Redmine Todo Lists plugin   0.0.4.2
Redmine Add Link plugin     0.0.1
Subtasks plugin             0.0.1
Query::StatementInvalid: Mysql::Error: Unknown column 'time_entries.hours' in 'order clause': SELECT `issues`.`id` AS t0_r0, `issues`.`tracker_id` AS t0_r1, `issues`.`project_id` AS t0_r2, `issues`.`subject` AS t0_r3, `issues`.`description` AS t0_r4, `issues`.`due_date` AS t0_r5, `issues`.`category_id` AS t0_r6, `issues`.`status_id` AS t0_r7, `issues`.`assigned_to_id` AS t0_r8, `issues`.`priority_id` AS t0_r9, `issues`.`fixed_version_id` AS t0_r10, `issues`.`author_id` AS t0_r11, `issues`.`lock_version` AS t0_r12, `issues`.`created_on` AS t0_r13, `issues`.`updated_on` AS t0_r14, `issues`.`start_date` AS t0_r15, `issues`.`done_ratio` AS t0_r16, `issues`.`estimated_hours` AS t0_r17, `issues`.`user_story_id` AS t0_r18, `issues`.`parent_id` AS t0_r19, `issues`.`lft` AS t0_r20, `issues`.`rgt` AS t0_r21, `issue_statuses`.`id` AS t1_r0, `issue_statuses`.`name` AS t1_r1, `issue_statuses`.`is_closed` AS t1_r2, `issue_statuses`.`is_default` AS t1_r3, `issue_statuses`.`position` AS t1_r4, `issue_statuses`.`default_done_ratio` AS t1_r5, `projects`.`id` AS t2_r0, `projects`.`name` AS t2_r1, `projects`.`description` AS t2_r2, `projects`.`homepage` AS t2_r3, `projects`.`is_public` AS t2_r4, `projects`.`parent_id` AS t2_r5, `projects`.`created_on` AS t2_r6, `projects`.`updated_on` AS t2_r7, `projects`.`identifier` AS t2_r8, `projects`.`status` AS t2_r9, `projects`.`lft` AS t2_r10, `projects`.`rgt` AS t2_r11, `users`.`id` AS t3_r0, `users`.`login` AS t3_r1, `users`.`hashed_password` AS t3_r2, `users`.`firstname` AS t3_r3, `users`.`lastname` AS t3_r4, `users`.`mail` AS t3_r5, `users`.`mail_notification` AS t3_r6, `users`.`admin` AS t3_r7, `users`.`status` AS t3_r8, `users`.`last_login_on` AS t3_r9, `users`.`language` AS t3_r10, `users`.`auth_source_id` AS t3_r11, `users`.`created_on` AS t3_r12, `users`.`updated_on` AS t3_r13, `users`.`type` AS t3_r14, `users`.`identity_url` AS t3_r15, `trackers`.`id` AS t4_r0, `trackers`.`name` AS t4_r1, `trackers`.`is_in_chlog` AS t4_r2, `trackers`.`position` AS t4_r3, `trackers`.`is_in_roadmap` AS t4_r4, `enumerations`.`id` AS t5_r0, `enumerations`.`name` AS t5_r1, `enumerations`.`position` AS t5_r2, `enumerations`.`is_default` AS t5_r3, `enumerations`.`type` AS t5_r4, `enumerations`.`active` AS t5_r5, `enumerations`.`project_id` AS t5_r6, `enumerations`.`parent_id` AS t5_r7, `issue_categories`.`id` AS t6_r0, `issue_categories`.`project_id` AS t6_r1, `issue_categories`.`name` AS t6_r2, `issue_categories`.`assigned_to_id` AS t6_r3, `versions`.`id` AS t7_r0, `versions`.`project_id` AS t7_r1, `versions`.`name` AS t7_r2, `versions`.`description` AS t7_r3, `versions`.`effective_date` AS t7_r4, `versions`.`created_on` AS t7_r5, `versions`.`updated_on` AS t7_r6, `versions`.`wiki_page_title` AS t7_r7, `versions`.`status` AS t7_r8, `versions`.`sharing` AS t7_r9 FROM `issues` LEFT OUTER JOIN `issue_statuses` ON `issue_statuses`.id = `issues`.status_id LEFT OUTER JOIN `projects` ON `projects`.id = `issues`.project_id LEFT OUTER JOIN `users` ON `users`.id = `issues`.assigned_to_id AND (`users`.`type` = 'User' OR `users`.`type` = 'AnonymousUser' ) LEFT OUTER JOIN `trackers` ON `trackers`.id = `issues`.tracker_id LEFT OUTER JOIN `enumerations` ON `enumerations`.id = `issues`.priority_id AND (`enumerations`.`type` = 'IssuePriority' ) LEFT OUTER JOIN `issue_categories` ON `issue_categories`.id = `issues`.category_id LEFT OUTER JOIN `versions` ON `versions`.id = `issues`.fixed_version_id WHERE (((issue_statuses.is_closed=0) AND projects.id IN (1,6,5) AND projects.status=1 AND projects.id IN (SELECT em.project_id FROM enabled_modules em WHERE em.name='issue_tracking'))) ORDER BY SUM, issues.id DESC LIMIT 0, 25
ArgumentError (wrong number of arguments (1 for 0)):
    /app/controllers/issues_controller.rb:545:in `delete'
    /app/controllers/issues_controller.rb:545:in `query_statement_invalid'
    /vendor/rails/activesupport/lib/active_support/rescuable.rb:73:in `call'
    /vendor/rails/activesupport/lib/active_support/rescuable.rb:73:in `rescue_with_handler'
    /vendor/rails/actionpack/lib/action_controller/rescue.rb:61:in `rescue_action'
    /vendor/rails/actionpack/lib/action_controller/rescue.rb:138:in `passenger_orig_perform_action'
    /usr/lib/ruby/1.8/phusion_passenger/railz/request_handler.rb:65:in `perform_action'
    /vendor/rails/actionpack/lib/action_controller/base.rb:524:in `send'
    /vendor/rails/actionpack/lib/action_controller/base.rb:524:in `process_without_filters'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:606:in `process_without_session_management_support'
    /vendor/rails/actionpack/lib/action_controller/session_management.rb:134:in `process_without_test'
    /vendor/rails/actionpack/lib/action_controller/test_process.rb:18:in `process'
    /vendor/rails/actionpack/lib/action_controller/base.rb:392:in `process'
    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:184:in `handle_request'
    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:112:in `dispatch_unlocked'
    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:125:in `dispatch'
    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:124:in `synchronize'
    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:124:in `dispatch'
    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:134:in `dispatch_cgi'
    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:41:in `dispatch'
    /usr/lib/ruby/1.8/phusion_passenger/railz/request_handler.rb:50:in `process_request'
    /usr/lib/ruby/1.8/phusion_passenger/abstract_request_handler.rb:207:in `main_loop'
    /usr/lib/ruby/1.8/phusion_passenger/railz/application_spawner.rb:374:in `start_request_handler'
    /usr/lib/ruby/1.8/phusion_passenger/railz/application_spawner.rb:332:in `handle_spawn_application'
    /usr/lib/ruby/1.8/phusion_passenger/utils.rb:184:in `safe_fork'
    /usr/lib/ruby/1.8/phusion_passenger/railz/application_spawner.rb:330:in `handle_spawn_application'
    /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:352:in `__send__'
    /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:352:in `main_loop'
    /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:196:in `start_synchronously'
    /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:163:in `start'
    /usr/lib/ruby/1.8/phusion_passenger/railz/application_spawner.rb:209:in `start'
    /usr/lib/ruby/1.8/phusion_passenger/spawn_manager.rb:262:in `spawn_rails_application'
    /usr/lib/ruby/1.8/phusion_passenger/abstract_server_collection.rb:126:in `lookup_or_add'
    /usr/lib/ruby/1.8/phusion_passenger/spawn_manager.rb:256:in `spawn_rails_application'
    /usr/lib/ruby/1.8/phusion_passenger/abstract_server_collection.rb:80:in `synchronize'
    /usr/lib/ruby/1.8/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
    /usr/lib/ruby/1.8/phusion_passenger/spawn_manager.rb:255:in `spawn_rails_application'
    /usr/lib/ruby/1.8/phusion_passenger/spawn_manager.rb:154:in `spawn_application'
    /usr/lib/ruby/1.8/phusion_passenger/spawn_manager.rb:287:in `handle_spawn_application'
    /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:352:in `__send__'
    /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:352:in `main_loop'
    /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:196:in `start_synchronously'
    /usr/lib/phusion_passenger/passenger-spawn-server:61
Any help would be great
Thank you Peter
      
      Updated by Maxim Strukov about 15 years ago
      
    
    I make this changes:
app/models/query.rb
+ "QueryColumn.new(:spent_hours)," to @@available_columns
config/locales/en.yml
+ "field_spent_hours: Spent time"
If there is summary logged hours consist of 0.25 or 0.5 or 0.75 or 1.0, sum is displayed correctly rounded.
But if one of log times is 0.2 or 0.15 (does not consist of quarters) then sum look like 23.40000000596 or 0.30000001192093
Small example:
0.25 + 0.25 = 0.5
but 0.15 + 0.15 = 0.30000001192093
Why? Redmine 1.02 from SVN @4295
      
      Updated by Maxim Strukov about 15 years ago
      
    
    Maybe I fix this:
app/models/issue.rb
- @spent_hours ||= self_and_descendants.sum("#{TimeEntry.table_name}.hours", :include => :time_entries).to_f || 0.0
+ @spent_hours ||= self_and_descendants.sum("#{TimeEntry.table_name}.hours", :include => :time_entries).to_f.round(2) || 0.0
      
      Updated by Jeremy Walker about 15 years ago
      
    
    Just in case people hadn't seen this ... http://stackoverflow.com/questions/321403/redmine-add-spent-time-field-to-issues-display
      
      Updated by Anton Nepomnyaschih almost 15 years ago
      
    
    It would be VERY good to have this in trunk! As PM i VERY want to see spent time versus estimated time. I should know - do we fit in our original estimation or not.
      
      Updated by Luis Serrano Aranda over 14 years ago
      
    
    Congratulation for your work I put the add_time_spent_column_to_issues_withpermissions.patch en my redmine and I think exists two bugs when I try to order the column redmine returns a blank page and if the column is visible and I try to export to pdf redmine fails
      
      Updated by Luis Serrano Aranda over 14 years ago
      
    
    This patch finally works the exportation I got it with the patch #3614, how I could add this field (spent_hour) to the queries ?
Thanks
      
      Updated by Luis Serrano Aranda over 14 years ago
      
    
    The probem are two plugins redmine show description an redmine default columns, all perfect thanks
      
      Updated by arthur me over 14 years ago
      
    
    The patch applies for me. It would be great to add this to the issue view of subtasks. I'm using this primarily to get a roll up of estimates vs. actuals and having this on each set of subtasks would really help me get a snapshot the state of the project
      
      Updated by Maxim Strukov over 14 years ago
      
    
    How to paint Time Spent field at Issue card view?
      
      Updated by Gustaf Friberg about 14 years ago
      
    
    +1
It would be very nice to have this in the trunk. My interest is the same as many of the above: being able to compare estimated time vs spent time, by having a good overview.
      
      Updated by Mischa The Evil about 14 years ago
      
    
    As mentioned the first time by Tony Marschall in #8559 note-4, there exists a plugin which provides this feature (along with some others) implemented as it should (correctly checking permissions): Redmine spent time column. It's written by Jan Schulz-Hofen of plan.io.
I've started working on some improvements to make it better suitable for this issue in my fork of it:
https://github.com/MischaTheEvil/redmine_spent_time_column
      
      Updated by Jean-Philippe Lang almost 14 years ago
      
    
    - Status changed from New to Closed
 
Superseded by r8073.