Coder Social home page Coder Social logo

redmine_better_gantt_chart's Introduction

Redmine Better Gantt Chart Plugin

<img src=“http://travis-ci.org/kulesa/redmine_better_gantt_chart.png” />

The plugin improves functionality of Redmine Gantt Chart.

Features

  • Issues on Gantt chart connected with arrows. Handy!

  • Relations info added to issue tooltip.

  • NEW: smart sorting of issues on the chart. Now issues are sorted just like you’d expect them to.

  • NEW: rescheduling takes into account weekends, if this setting is enabled

  • Fixed rescheduling of related tasks if due date of dependent task changed to an earlier date.

  • Fixed sorting of issues on the chart as per www.redmine.org/issues/7335

  • Added validation: start date of child issue cannot be less than start date of the parent, if parent depends on other tasks

  • Fast rescheduling of related issues. Now you can have hundreds of related issues with many levels of hierarchy, and expect they’ll be rescheduled just almost as fast as if you were in MS Project. And it will not cause ‘stack level too deep’ error (not kidding)!

Compatibility

Tested with Redmine versions: 1.1.0, 1.1.1, 1.1.2, 1.1.3, 1.2, 1.3, 1.4, 2.2, 2.3, 2.4

Installation and Setup

  1. Go to releases page: github.com/kulesa/redmine_better_gantt_chart/releases

  2. For Redmine 2.x above download version 0.9.0 or above. For Redmine 1.x download version 0.6.1.

  3. Go to your #{RAILS_ROOT}/vendor/plugins directory

  4. Unzip downloaded archive and rename extracted folder to ‘redmine_better_gantt_chart’ (if extracted folder has other name).

  5. Restart Redmine

You should now see the plugin in Administration -> Plugins. The plugin does not require any database migrations.

Connection arrows are rendered in SVG via Raphael.js library. This should work in any modern or not so modern browser, including IE6.

Usage

Relations

  1. Open an existing issue in Redmine

  2. Click Add in Related Issues section, select type of relation ‘Follows’ or ‘Precedes’ and enter # of the related issue.

  3. Save changes.

  4. Go to Gantt tab.

Smart sorting

By default issues on the chart sorted uses improved algorythm. However you can switch back to default Redmine sorting by disabling ‘Smart sorting’ plugin setting.

Rescheduling

Changing due date of an issue causes rescheduling of related issues. By default, any day of week is a working day, and new start and due dates can fall on weekends as well as on other days. To change this, go to plugin settings and disable *Work on weekends* checkbox. This will turn on support of working days. So far only normal weekends supported; you need manually change dates falling on holidays.

New setting *Work on weekends* introduced in v.0.6.

Problems and Limitations

  • Currently only ‘follows’ and ‘precedes’ relations are used to calculate schedule of dependend issues. Other relation types are rendered on the chart, but they do not change schedule of related issues.

  • Only ‘finish-to-start’ dependency type is available.

  • One issue can precede many issues but, can be preceeded with only one issue.

Helping out

If you notice any problems, please report them to the GitHub issue tracker here. Feel free to contact me via GitHub or Twitter or whatever with any other questions or feature requests. To submit changes fork the project and send a pull request.

Running specs

To run specs,

  • go to the plugin folder, uncomment content of Gemfile, run ‘bundle`

  • run ‘bundle exec rspec`.

Contributors

Thanks to Jeremy Subtil (BigMadWolf) for contributing a patch for displaying connections between cross-project related issues.

License

Better Gantt Chart is released under MIT license.

redmine_better_gantt_chart's People

Contributors

bartvdrmeulen avatar bearded avatar drewkeller avatar fuh-gpl avatar jancybsec avatar jwalkerbg avatar kulesa avatar michalgritzbach avatar rsvargas avatar takaesu-ug avatar tiramiseb avatar wingfire avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

redmine_better_gantt_chart's Issues

SystemStackError producing Gantt .png

Processing GanttsController#show to png (for 10.1.31.250 at 2011-05-26 13:40:01) [GET]
Parameters: {"format"=>"png", "month"=>"5", "project_id"=>"1162-349", "action"=>"show", "year"=>"2011", "controller"=>"gantts", "months"=>"6", "zoom"=>"2"}

SystemStackError (stack level too deep):
/usr/lib/ruby/1.8/active_record/base.rb:2197:in inject' /usr/lib/ruby/1.8/action_controller/mime_responds.rb:135:incall'
/usr/lib/ruby/1.8/action_controller/mime_responds.rb:135
/usr/lib/ruby/1.8/action_controller/mime_responds.rb:179:in call' /usr/lib/ruby/1.8/action_controller/mime_responds.rb:179:inrespond'
/usr/lib/ruby/1.8/action_controller/mime_responds.rb:173:in each' /usr/lib/ruby/1.8/action_controller/mime_responds.rb:173:inrespond'
/usr/lib/ruby/1.8/action_controller/mime_responds.rb:107:in respond_to' /usr/lib/ruby/1.8/action_controller/base.rb:1331:insend'
/usr/lib/ruby/1.8/action_controller/base.rb:1331:in perform_action_without_filters' /usr/lib/ruby/1.8/action_controller/filters.rb:617:incall_filters'
/usr/lib/ruby/1.8/action_controller/filters.rb:610:in perform_action_without_benchmark' /usr/lib/ruby/1.8/action_controller/benchmarking.rb:68:inperform_action_without_rescue'
/usr/lib/ruby/1.8/action_controller/benchmarking.rb:68:in perform_action_without_rescue' /usr/lib/ruby/1.8/action_controller/rescue.rb:160:inperform_action_without_flash'
/usr/lib/ruby/1.8/action_controller/flash.rb:146:in perform_action' /usr/lib/ruby/1.8/action_controller/base.rb:532:insend'
/usr/lib/ruby/1.8/action_controller/base.rb:532:in process_without_filters' /usr/lib/ruby/1.8/action_controller/filters.rb:606:inprocess'
/usr/lib/ruby/1.8/action_controller/base.rb:391:in process' /usr/lib/ruby/1.8/action_controller/base.rb:386:incall'
/usr/lib/ruby/1.8/action_controller/routing/route_set.rb:437:in call' /usr/lib/ruby/1.8/action_controller/dispatcher.rb:87:indispatch'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:121:in _call' /usr/lib/ruby/1.8/action_controller/dispatcher.rb:130 /usr/lib/ruby/1.8/active_record/query_cache.rb:29:incall'
/usr/lib/ruby/1.8/active_record/query_cache.rb:29:in call' /usr/lib/ruby/1.8/active_record/connection_adapters/abstract/query_cache.rb:34:incache'
/usr/lib/ruby/1.8/active_record/query_cache.rb:9:in cache' /usr/lib/ruby/1.8/active_record/query_cache.rb:28:incall'
/usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:361:in call' /usr/lib/ruby/1.8/action_controller/string_coercion.rb:25:incall'
/usr/lib/ruby/1.8/rack/head.rb:9:in `call'

/usr/lib/ruby/1.8/rack/methodoverride.rb:24:in call' /usr/lib/ruby/1.8/action_controller/params_parser.rb:15:incall'
/usr/lib/ruby/1.8/action_controller/session/cookie_store.rb:93:in call' /usr/lib/ruby/1.8/action_controller/failsafe.rb:26:incall'
/usr/lib/ruby/1.8/rack/lock.rb:11:in call' /usr/lib/ruby/1.8/rack/lock.rb:11:insynchronize'
/usr/lib/ruby/1.8/rack/lock.rb:11:in call' /usr/lib/ruby/1.8/action_controller/dispatcher.rb:106:incall'
/usr/lib/ruby/1.8/phusion_passenger/rack/request_handler.rb:95:in process_request' /usr/lib/ruby/1.8/phusion_passenger/abstract_request_handler.rb:207:inmain_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:inhandle_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:inhandle_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:inmain_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:instart'
/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:inspawn_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:inspawn_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:insynchronize'
/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:inspawn_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:insend'
/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:instart_synchronously'
/usr/lib/phusion_passenger/passenger-spawn-server:61

Rendering /usr/share/redmine/public/500.html (500 Internal Server Error)

undefined method alias_nb_pages when producing Gantt .pdf

Stack trace:

NoMethodError (undefined method alias_nb_pages' for #<Redmine::Export::PDF::IFPDF:0x7f3e680f6d58>): /usr/lib/ruby/1.8/action_controller/mime_responds.rb:135:incall'
/usr/lib/ruby/1.8/action_controller/mime_responds.rb:135
/usr/lib/ruby/1.8/action_controller/mime_responds.rb:179:in call' /usr/lib/ruby/1.8/action_controller/mime_responds.rb:179:inrespond'
/usr/lib/ruby/1.8/action_controller/mime_responds.rb:173:in each' /usr/lib/ruby/1.8/action_controller/mime_responds.rb:173:inrespond'
/usr/lib/ruby/1.8/action_controller/mime_responds.rb:107:in respond_to' /usr/lib/ruby/1.8/action_controller/base.rb:1331:insend'
/usr/lib/ruby/1.8/action_controller/base.rb:1331:in perform_action_without_filters' /usr/lib/ruby/1.8/action_controller/filters.rb:617:incall_filters'
/usr/lib/ruby/1.8/action_controller/filters.rb:610:in perform_action_without_benchmark' /usr/lib/ruby/1.8/action_controller/benchmarking.rb:68:inperform_action_without_rescue'
/usr/lib/ruby/1.8/action_controller/benchmarking.rb:68:in perform_action_without_rescue' /usr/lib/ruby/1.8/action_controller/rescue.rb:160:inperform_action_without_flash'
/usr/lib/ruby/1.8/action_controller/flash.rb:146:in perform_action' /usr/lib/ruby/1.8/action_controller/base.rb:532:insend'
/usr/lib/ruby/1.8/action_controller/base.rb:532:in process_without_filters' /usr/lib/ruby/1.8/action_controller/filters.rb:606:inprocess'
/usr/lib/ruby/1.8/action_controller/base.rb:391:in process' /usr/lib/ruby/1.8/action_controller/base.rb:386:incall'
/usr/lib/ruby/1.8/action_controller/routing/route_set.rb:437:in call' /usr/lib/ruby/1.8/action_controller/dispatcher.rb:87:indispatch'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:121:in _call' /usr/lib/ruby/1.8/action_controller/dispatcher.rb:130 /usr/lib/ruby/1.8/active_record/query_cache.rb:29:incall'
/usr/lib/ruby/1.8/active_record/query_cache.rb:29:in call' /usr/lib/ruby/1.8/active_record/connection_adapters/abstract/query_cache.rb:34:incache'
/usr/lib/ruby/1.8/active_record/query_cache.rb:9:in cache' /usr/lib/ruby/1.8/active_record/query_cache.rb:28:incall'
/usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:361:in call' /usr/lib/ruby/1.8/action_controller/string_coercion.rb:25:incall'
/usr/lib/ruby/1.8/rack/head.rb:9:in call' /usr/lib/ruby/1.8/rack/methodoverride.rb:24:incall'
/usr/lib/ruby/1.8/action_controller/params_parser.rb:15:in call' /usr/lib/ruby/1.8/action_controller/session/cookie_store.rb:93:incall'
/usr/lib/ruby/1.8/action_controller/failsafe.rb:26:in call' /usr/lib/ruby/1.8/rack/lock.rb:11:incall'
/usr/lib/ruby/1.8/rack/lock.rb:11:in synchronize' /usr/lib/ruby/1.8/rack/lock.rb:11:incall'

/usr/lib/ruby/1.8/action_controller/dispatcher.rb:106:in call' /usr/lib/ruby/1.8/phusion_passenger/rack/request_handler.rb:95:inprocess_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:instart_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:insafe_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:insend'
/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:instart_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:instart'
/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:inlookup_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:insynchronize'
/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:inspawn_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:inhandle_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:inmain_loop'
/usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:196:in `start_synchronously'
/usr/lib/phusion_passenger/passenger-spawn-server:61

Rendering /usr/share/redmine/public/500.html (500 Internal Server Error)

PDF

Congratulations for your job
It is possible view the gantt arrows in the pdf ?

Thanks

Internal Error

Installed your plugin, now Gantt charts are broken. When clicking the Gantt tab, I get:

"Internal error

An error occurred on the page you were trying to access.
If you continue to experience problems please contact your redMine administrator for assistance."

[feature request] add audit trail for items affected by 'follows' or 'precedes'

Just got caught out by a project manager as I'd moved 'task A' manually - and hence there was an audit trail of the date change - but 'task B' which had been configured to 'follow' task A just had its dates changed without any obvious reason why. They were watching task B but didn't get any notification that it had changed and in any case there is no record when you look at task B as to why the dates had changed. ( I hope thats clear ! ).

It would be neat if 'task B' had an audit logged which identified that it had been moved due to 'task A' being moved ??

cant upgrade from 0.6.0 to 0.6.1

Hi,
I have installed 0.6.0 and wanted to upgrade to the next version, after following the step to install the plugins and restarted IIS 7 if i go under plugins i will see 0.6.0 instead of 0.6.1 as the version number, I use 1.2.1 for redmine.
Thanks.

Sorting Issue in Gantt Chart

Hi,

There is option to define sorting issue on the Gant Chart?

Btw:
I think there is also problem with very long name of issue.
If the name is very long there is no place enough for it and it break gantt chart.

Additional columns

I use this plugin, along with the #2024 patch, and find it to be a great addition to Redmine.

One suggestion I would like to make is the possibility of including an additional column to show the 'Assignee' of the issue. I know this information can be gained by hovering over the issue, but I think be able to see this for all issues would really help.

Is this something that can be done in this plugin, or would I need to contact the author of the #2024 patch?

Thanks,

Chris

Undefined method `gantt_path' in redmine #5858

I upgraded to redmine from current revision #5858 and plugin seems to be broken. with redmine 1.1.3 it was working great. any ideas how to fix it? I'm Rails developer, but routes has never been my strong side.

ActionView::TemplateError (undefined method `gantt_path' for #<ActionView::Base:0x2b56608ac3e8>) on line #7 of vendor/plugins/redmine_better_gantt_chart/app/views/gantts/show.html.erb:
4: <% @gantt.view = self %>
5: <h2><%= l(:label_gantt) %></h2>
6: 
7: <% form_tag(gantt_path(:month => params[:month], :year => params[:year], :months => params[:months]), :method => :put, :id => 'query_form') do %>
8:   <%= hidden_field_tag('project_id', @project.to_param) if @project%>
9: <fieldset id="filters" class="collapsible">
10:   <legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>

    vendor/plugins/redmine_better_gantt_chart/app/views/gantts/show.html.erb:7
    app/controllers/gantts_controller.rb:43:in `show'
    app/controllers/gantts_controller.rb:42:in `show'

I'm not sure if the problem may not be caused by routes in current version.

$ cat redmine_app_old/config/routes.rb | grep gantt
  map.resource :gantt, :path_prefix => '/issues', :controller => 'gantts', :only => [:show, :update]
  map.resource :gantt, :path_prefix => '/projects/:project_id/issues', :controller => 'gantts', :only => [:show, :update]
$ cat redmine_app/config/routes.rb | grep gantt
  map.with_options :controller => 'gantts', :action => 'show' do |gantts_routes|
    gantts_routes.connect '/projects/:project_id/issues/gantt'
    gantts_routes.connect '/projects/:project_id/issues/gantt.:format'
    gantts_routes.connect '/issues/gantt.:format'

Internal Error when running on trunk (svn 5548)

I am running Redmine 1.1.2.devel.5548 (MySQL) on my development box and the redmine_better_gantt_chart plugin is not working. I am getting a 500 Internal error page.

I looked around a bit in the source code and the production log file and it seems that the plugin is having a problem with the form_tag on line 7 of vendor/plugins/redmine_better_gantt_chart/app/views/gantts/show.html.erb. I noticed that there really aren't many differences between that file and the one from stable 1.1 so in my development folder I copied the current show.html.erb and overwrote the one in vendor/plugin.../show.html.erb and incorporated those two changes. Progress was made.

Now the plugin isn't working because the for_gantt scope was removed from app/models/issue.rb. Now my lack of understanding of how plugins are written is catching up to me. I'm not sure where to put that chunk of code in the plugin so that the functionality returns.

I also don't want to duplicate a bunch of unnecessary work. So is there a patch that I am missing? Have you already done all of this work? I assume that the version I'm on is going to become Redmine 1.2 soon so I would guess that these changes need to be resolved if this is going to work.

Sorting of versions in Gantt

I updated our Redmine version from 1.1.3 to 1.2.0. It seems that the versions are not sorted by due date but start date. I am not sure if this is an issue in V1.2.0 or if is a compatibility issue between the Better_Gantt and the new Redmine version.

I hope you will be able to help.
Thanks

Internal Error

Redmine 1.3.1
I get Internal Server error 500 when accessing gantt page.
Plugin installed on a existing setup (with data).

This is the log:

ActionView::TemplateError (undefined method `<=>' for nil:NilClass) on line #56 of vendor/plugins/redmine_better_gantt_chart/app/views/gantts/show.html.erb:
53: # Width of the entire chart
54: g_width = (@gantt.date_to - @gantt.date_from + 1)*zoom
55:
56: @gantt.render(:top => headers_height + 8, :zoom => zoom, :g_width => g_width, :subject_width => subject_width)
57:
58: g_height = [(20 * (@gantt.number_of_rows + 6))+150, 206].max
59: t_height = g_height + headers_height

app/models/project.rb:660:in `project_tree'
app/models/project.rb:656:in `each'
app/models/project.rb:656:in `project_tree'
vendor/plugins/redmine_better_gantt_chart/app/views/gantts/show.html.erb:56
config/initializers/mongrel_cluster_with_rails_211_fix.rb:62:in `dispatch_cgi'

Rendering /opt/bitnami/apps/redmine/public/500.html (500 Internal Server Error)

Thanks in advance for your help.

unable to use plugin.

Nothing happens on adding an issue in related issue block.

On selecting follows/precedes, it asks for number of days.

On clicking Add nothing happens.

If i select any other relation it adds to related issues.

Comments please?

Problems to change dates after installing redmine better gantt

Hi!

I'm having some issues using your plugin at Redmine 1.1.2. I have many issues that has precedence relationship between it. After installing your plugin when I try to update a date (star date ou estimated date), the system response is so slow and the errors appear on production.log after the operation


* Processing IssuesController#update (for 200.192.165.169 at 2011-03-31 14:42:19) [PUT]
  Parameters: {"time_entry"=>{"comments"=>"", "activity_id"=>"", "hours"=>""}, "commit"=>"Enviar", "notes"=>"", "action"=>"update", "_method"=>"put", "authenticity_token"=>"zwUuQN8/0n/375Iv/l+ZsmyshUQYf81RE7RvwcqirgY=", "id"=>"236", "issue"=>{"start_date"=>"2011-03-28", "estimated_hours"=>"32", "priority_id"=>"4", "parent_issue_id"=>"233", "lock_version"=>"12", "fixed_version_id"=>"1", "assigned_to_id"=>"18", "subject"=>"Construção da Interface para Gerenciamento de Placements", "category_id"=>"2", "tracker_id"=>"2", "due_date"=>"2011-03-28", "status_id"=>"9", "description"=>"Construção no ambiente Extjs as interfaces de Gerenciamento de Placements a partir dos seu respectivo mockup"}, "controller"=>"issues", "attachments"=>{"1"=>{"description"=>""}}}

* SystemStackError (stack level too deep):
   app/models/issue.rb:491:in `soonest_start'
   app/models/issue.rb:306:in `validate'
   app/models/issue_relation.rb:88:in `set_issue_to_dates'
*  app/models/issue.rb:806:in `reschedule_following_issues'
*  app/models/issue.rb:805:in `reschedule_following_issues'
*  app/models/issue_relation.rb:88:in `set_issue_to_dates'
*  app/models/issue.rb:806:in `reschedule_following_issues'
*  app/models/issue.rb:805:in `reschedule_following_issues'
*  app/models/issue.rb:754:in `recalculate_attributes_for'
*  app/models/issue.rb:718:in `update_parent_attributes'
*  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue_relation.rb:88:in `set_issue_to_dates'
  app/models/issue.rb:806:in `reschedule_following_issues'
  app/models/issue.rb:805:in `reschedule_following_issues'
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/models/issue.rb:554:in `save_issue_with_child_records'
  app/models/issue.rb:536:in `save_issue_with_child_records'
  app/controllers/issues_controller.rb:170:in `update'
  /usr/lib/ruby/1.8/phusion_passenger/rack/request_handler.rb:95: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

Rendering /vol/home/redmine/tests/web_app/redmine-1.1.2/public/500.html (500 Internal Server Error)

I'm using Redmine 1.1.2 on Ubuntu 10.04 with Phusion Passenger and MySQL 5.1.

Thanks so much!

Rogério Carrasqueira

Drag-n-drop edits

It should be possible to update issues on Gantt with drag-n-drop chart a-la MS Project:

  • create dependencies between issues
  • modify start and due dates
  • move issues

[Feature Request] Gantt Labelling

Is it possible, within the context of your plugin, to add a Selection on what to display as the Gantt label?

For example the default is to display the Status and the %complete next to the Gantt bar. Would you be able to add a selector where the user would be able to choose Assignee and % complete or Status and Assignee etc?

A feature like this would be very helpful in my organization where meetings are held with different groups all using the same Gantt chart but requiring different labels for ease of reading.

Related parent issue dates not updating

I've just noticed a bug with the 'master' branch that doesn't exist on the 'patch2024' branch:

I have a number of related issues (follows / precedes) which span across a number of parent issues. When updating a start or due date on one, it correctly updates its own parent issue start/due dates and the issues it's related to, but NOT the parents of those related issues.

As I can't upload an image, I'll try to explain with an example:

Issue #1000 - 'Parent A'

Issue #1001 - 'Child A' (precedes 'Child B')
Issue #1002 - 'Child B' (precedes 'Child C', follows 'Child A')
Issue #1003 - 'Parent B'
Issue #1004 - 'Child C' (precedes 'Child D', 'follows Child B')
Issue #1005 - 'Child D' (follows 'Child C')

If I update the dates on 'Child A' then all the related child issue dates ('B', 'C' & 'D') update correctly and so does 'Parent A'. However, it doesn't update the start / due dates for 'Parent B', so on the Gantt chart 'Child C' & 'Child D' are not in sync with Parent B.

I have tried exactly the same scenario with the standard Redmine Gantt chart and everything updates correctly, although it takes about 20 times longer to process!

I hope this makes sense. I'm happy to send screen shots and a further explanation if it helps.

unfilled due date

When creating a task without due date, feeling the before relation force the due date to start date + 1 day.
For my point of view, I think it should be initialized with start date + estimated date.
Are you agree ?

Gantt Chart Fails to display when all tasks don't have assigned start/end dates.

I get the following error when trying to view a Gantt chart with tasks that are not assigned a start date.

Issue is remedied by assigning a definite start date

ActionView::TemplateError (undefined method `<=>' for nil:NilClass) on line #56 of vendor/plugins     
/redmine_better_gantt_chart/app/views/gantts/show.html.erb:
 53: # Width of the entire chart
 54: g_width = (@gantt.date_to - @gantt.date_from + 1)*zoom
 55:
 56: @gantt.render(:top => headers_height + 8, :zoom => zoom, :g_width => g_width, :subject_width => subject_width)
 57:
 58: g_height = [(20 * (@gantt.number_of_rows + 6))+150, 206].max
 59: t_height = g_height + headers_height

    app/models/project.rb:660:in `project_tree'
    app/models/project.rb:656:in `each'
    app/models/project.rb:656:in `project_tree'
  vendor/plugins/redmine_better_gantt_chart/app/views/gantts/show.html.erb:56
passenger (2.2.8) lib/phusion_passenger/rack/request_handler.rb:92:in `process_request'
passenger (2.2.8) lib/phusion_passenger/abstract_request_handler.rb:207:in `main_loop'
passenger (2.2.8) lib/phusion_passenger/railz/application_spawner.rb:385:in `start_request_handler'
passenger (2.2.8) lib/phusion_passenger/railz/application_spawner.rb:343:in `handle_spawn_application'
passenger (2.2.8) lib/phusion_passenger/utils.rb:184:in `safe_fork'
passenger (2.2.8) lib/phusion_passenger/railz/application_spawner.rb:341:in `handle_spawn_application'
passenger (2.2.8) lib/phusion_passenger/abstract_server.rb:352:in `__send__'
passenger (2.2.8) lib/phusion_passenger/abstract_server.rb:352:in `main_loop'
passenger (2.2.8) lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'
passenger (2.2.8) lib/phusion_passenger/abstract_server.rb:163:in `start'
passenger (2.2.8) lib/phusion_passenger/railz/application_spawner.rb:209:in `start'
passenger (2.2.8) lib/phusion_passenger/spawn_manager.rb:262:in `spawn_rails_application'
passenger (2.2.8) lib/phusion_passenger/abstract_server_collection.rb:126:in `lookup_or_add'
passenger (2.2.8) lib/phusion_passenger/spawn_manager.rb:256:in `spawn_rails_application'
passenger (2.2.8) lib/phusion_passenger/abstract_server_collection.rb:80:in `synchronize'
passenger (2.2.8) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
passenger (2.2.8) lib/phusion_passenger/spawn_manager.rb:255:in `spawn_rails_application'
passenger (2.2.8) lib/phusion_passenger/spawn_manager.rb:154:in `spawn_application'
passenger (2.2.8) lib/phusion_passenger/spawn_manager.rb:287:in `handle_spawn_application'
passenger (2.2.8) lib/phusion_passenger/abstract_server.rb:352:in `__send__'
passenger (2.2.8) lib/phusion_passenger/abstract_server.rb:352:in `main_loop'
passenger (2.2.8) lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'

Inside the Gantt screen:

when try to view the month of March in one of my projects, Redmine returns this error:

Showing vendor/plugins/redmine_better_gantt_chart/app/views/gantts/show.html.erb where line #66 raised:

undefined method `subject' for nil:NilClass
Extracted source (around line #66):

63: # Width of the entire chart
64: g_width = (@gantt.date_to - @gantt.date_from + 1)*zoom
65:
66: @gantt.render(:top => headers_height + 8, :zoom => zoom, :g_width => g_width, :subject_width => subject_width)
67:
68: g_height = [(20 * (@gantt.number_of_rows + 6))+150, 206].max
69: t_height = g_height + headers_height

Sorting of issues

I have noticed that after installing this plugin the ordering of issues in certain situations isn't correct.

I want to be able to view issues for a project grouped together by parent task and ordered by start date and due date. To achieve this I have set up a custom query with the following sorting options:

  • Parent task : Ascending
  • Start date : Ascending
  • Due date : Ascending

When viewing using the default Redmine Gantt chart everything looks fine and all the child items are grouped under the correct parent and then sorted by Start date + Due date. However, when viewing using the Better Gantt Chart it seems to ignore the first level sorting of 'Parent task' and instead sorts directly on Start date + Due date.

Internal Server Error on changing dependences

Hi Kulesa,

I've installed your latest version for redmine better gantt chart, but after some operations to change the dependence for some issues I've got this error:

Processing IssuesController#destroy (for 187.72.61.4 at 2011-05-18 15:41:29) [POST]
  Parameters: {"action"=>"destroy", "authenticity_token"=>"KQGmSZeOxLWm17z60kJ6Q7SNpiRKkK84I5LaF5KMCj4=", "id"=>"328", "controller"=>"issues"}

NoMethodError (undefined method `<=>' for nil:NilClass):
  app/models/issue.rb:754:in `recalculate_attributes_for'
  app/models/issue.rb:718:in `update_parent_attributes'
  app/controllers/issues_controller.rb:239:in `each'
  app/controllers/issues_controller.rb:239:in `destroy'
  /usr/lib/ruby/1.8/phusion_passenger/rack/request_handler.rb:95: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

Rendering /vol/home/redmine/production/web_app/redmine-1.1.2/public/500.html (500 Internal Server Error)

Can you give any clue to solve it?

Thanks so Much

Rogério Carrasqueira

Problems together with redmine tags plugin

When the "redmine tags plugin":https://github.com/ixti/redmine_tags is installed too, you get sidebar conflicts when calling gantt tab.

ActionView::TemplateError (undefined local variable or method `sidebar_tags' for #ActionView::Base:0x7fdc14b3a798) on line #1 of vendor/plugins/redmine_tags/app/views/issues/_tags_sidebar.erb:
1: <% unless sidebar_tags.empty? -%>
2: <%= stylesheet_link_tag 'redmine_tags', :plugin => 'redmine_tags' %>
3:

<%= l(:tags) %>


4: <%= render_sidebar_tags %>

vendor/plugins/redmine_tags/app/views/issues/_tags_sidebar.erb:1
lib/redmine/hook.rb:113:in send' lib/redmine/hook.rb:113:inview_issues_sidebar_planning_bottom'
lib/redmine/hook.rb:63:in send' lib/redmine/hook.rb:63:incall_hook'
lib/redmine/hook.rb:63:in each' lib/redmine/hook.rb:63:incall_hook'
lib/redmine/hook.rb:60:in tap' lib/redmine/hook.rb:60:incall_hook'
lib/redmine/hook.rb:144:in call_hook' app/views/issues/_sidebar.rhtml:14:in_run_rhtml_app47views47issues47_sidebar46rhtml_locals_object_sidebar'
vendor/plugins/redmine_better_gantt_chart/app/views/gantts/show.html.erb:187
app/helpers/application_helper.rb:868:in content_for' vendor/plugins/redmine_better_gantt_chart/app/views/gantts/show.html.erb:186 passenger (3.0.8) lib/phusion_passenger/rack/request_handler.rb:96:inprocess_request'
passenger (3.0.8) lib/phusion_passenger/abstract_request_handler.rb:513:in accept_and_process_next_request' passenger (3.0.8) lib/phusion_passenger/abstract_request_handler.rb:274:inmain_loop'
passenger (3.0.8) lib/phusion_passenger/classic_rails/application_spawner.rb:321:in start_request_handler' passenger (3.0.8) lib/phusion_passenger/classic_rails/application_spawner.rb:275:insend'
passenger (3.0.8) lib/phusion_passenger/classic_rails/application_spawner.rb:275:in handle_spawn_application' passenger (3.0.8) lib/phusion_passenger/utils.rb:479:insafe_fork'
passenger (3.0.8) lib/phusion_passenger/classic_rails/application_spawner.rb:270:in handle_spawn_application' passenger (3.0.8) lib/phusion_passenger/abstract_server.rb:357:insend'
passenger (3.0.8) lib/phusion_passenger/abstract_server.rb:357:in server_main_loop' passenger (3.0.8) lib/phusion_passenger/abstract_server.rb:206:instart_synchronously'
passenger (3.0.8) lib/phusion_passenger/abstract_server.rb:180:in start' passenger (3.0.8) lib/phusion_passenger/classic_rails/application_spawner.rb:149:instart'
passenger (3.0.8) lib/phusion_passenger/spawn_manager.rb:219:in spawn_rails_application' passenger (3.0.8) lib/phusion_passenger/abstract_server_collection.rb:132:inlookup_or_add'
passenger (3.0.8) lib/phusion_passenger/spawn_manager.rb:214:in spawn_rails_application' passenger (3.0.8) lib/phusion_passenger/abstract_server_collection.rb:82:insynchronize'
passenger (3.0.8) lib/phusion_passenger/abstract_server_collection.rb:79:in synchronize' passenger (3.0.8) lib/phusion_passenger/spawn_manager.rb:213:inspawn_rails_application'
passenger (3.0.8) lib/phusion_passenger/spawn_manager.rb:132:in spawn_application' passenger (3.0.8) lib/phusion_passenger/spawn_manager.rb:275:inhandle_spawn_application'
passenger (3.0.8) lib/phusion_passenger/abstract_server.rb:357:in __send__' passenger (3.0.8) lib/phusion_passenger/abstract_server.rb:357:inserver_main_loop'
passenger (3.0.8) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
passenger (3.0.8) helper-scripts/passenger-spawn-server:99

Internal Server Error on Adding/Changing Start Date in Issues

We are experiencing a problem when attempting to update the start date of a sub-issue within a sub-project. We get an internal server error upon submission.

The problem goes away after uninstalling the redmine_better_gantt_chart plugin.

Here's an extract from the production log:

Processing IssuesController#update (for 10.40.20.31 at 2011-07-29 09:16:55) [PUT]
  Parameters: {"time_entry"=>{"comments"=>"", "activity_id"=>"", "hours"=>""}, "commit"=>"Submit", "notes"=>"", "action"=>"update", "_method"=>"put", "authenticity_token"=>"tNxtvVSp3kTXf/FyLb0OJ4IKkxZKBb8lpICfiyY2/7o=", "id"=>"150", "issue"=>{"start_date"=>"2011-04-08", "estimated_hours"=>"5", "priority_id"=>"4", "parent_issue_id"=>"149", "lock_version"=>"1", "done_ratio"=>"0", "assigned_to_id"=>"", "subject"=>"Sub-feature 1", "tracker_id"=>"2", "due_date"=>"", "description"=>""}, "controller"=>"issues", "attachments"=>{"1"=>{"description"=>""}, "screenshot"=>{"name"=>"screenshot", "content"=>"", "description"=>""}}}

ArgumentError (comparison of Date with nil failed):
  app/models/issue.rb:553:in `save_issue_with_child_records'
  app/models/issue.rb:535:in `save_issue_with_child_records'
  app/controllers/issues_controller.rb:170:in `update'
  passenger (3.0.7) lib/phusion_passenger/rack/request_handler.rb:96:in `process_request'
  passenger (3.0.7) lib/phusion_passenger/abstract_request_handler.rb:513:in `accept_and_process_next_request'
  passenger (3.0.7) lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop'
  passenger (3.0.7) lib/phusion_passenger/classic_rails/application_spawner.rb:321:in `start_request_handler'
  passenger (3.0.7) lib/phusion_passenger/classic_rails/application_spawner.rb:275:in `send'
  passenger (3.0.7) lib/phusion_passenger/classic_rails/application_spawner.rb:275:in `handle_spawn_application'
  passenger (3.0.7) lib/phusion_passenger/utils.rb:479:in `safe_fork'
  passenger (3.0.7) lib/phusion_passenger/classic_rails/application_spawner.rb:270:in `handle_spawn_application'
  passenger (3.0.7) lib/phusion_passenger/abstract_server.rb:357:in `__send__'
  passenger (3.0.7) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
  passenger (3.0.7) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
  passenger (3.0.7) lib/phusion_passenger/abstract_server.rb:180:in `start'
  passenger (3.0.7) lib/phusion_passenger/classic_rails/application_spawner.rb:149:in `start'
  passenger (3.0.7) lib/phusion_passenger/spawn_manager.rb:219:in `spawn_rails_application'
  passenger (3.0.7) lib/phusion_passenger/abstract_server_collection.rb:132:in `lookup_or_add'
  passenger (3.0.7) lib/phusion_passenger/spawn_manager.rb:214:in `spawn_rails_application'
  passenger (3.0.7) lib/phusion_passenger/abstract_server_collection.rb:82:in `synchronize'
  passenger (3.0.7) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
  passenger (3.0.7) lib/phusion_passenger/spawn_manager.rb:213:in `spawn_rails_application'
  passenger (3.0.7) lib/phusion_passenger/spawn_manager.rb:132:in `spawn_application'
  passenger (3.0.7) lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application'
  passenger (3.0.7) lib/phusion_passenger/abstract_server.rb:357:in `__send__'
  passenger (3.0.7) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
  passenger (3.0.7) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
  passenger (3.0.7) helper-scripts/passenger-spawn-server:99

Rendering /var/www/redmine-1.1/public/500.html (500 Internal Server Error)

Here's some system info:

*** LOCAL GEMS ***

abstract (1.0.0)
actionmailer (3.0.9, 2.3.5)
actionpack (3.0.9, 2.3.5)
activemodel (3.0.9)
activerecord (3.0.9, 2.3.5)
activeresource (3.0.9, 2.3.5)
activesupport (3.0.9, 2.3.5)
arel (2.0.10)
builder (2.1.2)
bundler (1.0.15)
coderay (0.9.8)
daemon_controller (0.2.6)
erubis (2.6.6)
fastercsv (1.5.4)
fastthread (1.0.7)
fcgi (0.8.8)
hoe (2.10.0)
i18n (0.5.0, 0.4.2)
mail (2.2.19)
mime-types (1.16)
mysql (2.8.1)
passenger (3.0.7)
polyglot (0.3.1)
rack (1.0.1)
rack-mount (0.6.14)
rack-test (0.5.7)
rails (2.3.5)
railties (3.0.9)
rake (0.8.7)
rdoc (3.8)
RedCloth (4.2.7)
rmagick (1.15.13)
rubygems-update (1.8.5)
rubytree (0.5.2)
thor (0.14.6)
treetop (1.4.9)
tzinfo (0.3.29)

redmine  trunk version 1.1-stable
ruby 1.8.7 (2008-05-31 patchlevel 0) [i686-linux]
gem version 1.3.5
CentOS 5.4
MySQL 5.0.77

Ignore non-working days

It would be very useful to be able to setup the non working days (Holidays, weekend) so the gant chart would consider and readjust the start and end date.

FreeBSD redmine from ports issue

There are "redmine_better_gantt_chart plugin requires Redmine 1.1.0 or higher but current is 1.0.4.stable (Redmine::PluginRequirementError)" error on redimine from ports.
Could you fix it? )

UPDATED
Looks I'm stupid - update ports tree fix this issue. There are 1.1.1 version.

Internal error

When trying to use Gantt view - Client displays:

Internal error

An error occurred on the page you were trying to access.
If you continue to experience problems please contact your redMine administrator for assistance.

Logs:

Rendering gantts/show

ActionView::TemplateError (undefined method `subject' for nil:NilClass) on line #66 of vendor/plugins/redmine_better_gantt_chart/app/views/gantts/show.html.erb:
63: # Width of the entire chart
64: g_width = (@gantt.date_to - @gantt.date_from + 1)*zoom
65:
66: @gantt.render(:top => headers_height + 8, :zoom => zoom, :g_width => g_width)
67:
68: g_height = [(20 * (@gantt.number_of_rows + 6))+150, 206].max
69: t_height = g_height + headers_height

app/helpers/application_helper.rb:78:in link_to_issue' vendor/plugins/redmine_better_gantt_chart/app/helpers/issues_helper.rb:43:inrender_extended_issue_tooltip' vendor/plugins/redmine_better_gantt_chart/app/helpers/issues_helper.rb:42:in map' vendor/plugins/redmine_better_gantt_chart/app/helpers/issues_helper.rb:42:inrender_extended_issue_tooltip' lib/redmine/helpers/gantt.rb:384:in line_for_issue' lib/redmine/helpers/gantt.rb:222:inrender_issues' lib/redmine/helpers/gantt.rb:220:in each' lib/redmine/helpers/gantt.rb:220:inrender_issues' lib/redmine/helpers/gantt.rb:197:in render_project' lib/redmine/helpers/gantt.rb:166:inrender' vendor/plugins/redmine_better_gantt_chart/app/views/gantts/show.html.erb:66 app/controllers/gantts_controller.rb:26:in show' app/controllers/gantts_controller.rb:25:inshow' passenger (2.2.14) lib/phusion_passenger/rack/request_handler.rb:92:in process_request' passenger (2.2.14) lib/phusion_passenger/abstract_request_handler.rb:207:inmain_loop' passenger (2.2.14) lib/phusion_passenger/railz/application_spawner.rb:441:in start_request_handler' passenger (2.2.14) lib/phusion_passenger/railz/application_spawner.rb:381:inhandle_spawn_application' passenger (2.2.14) lib/phusion_passenger/utils.rb:252:in safe_fork' passenger (2.2.14) lib/phusion_passenger/railz/application_spawner.rb:377:inhandle_spawn_application' passenger (2.2.14) lib/phusion_passenger/abstract_server.rb:352:in __send__' passenger (2.2.14) lib/phusion_passenger/abstract_server.rb:352:inmain_loop' passenger (2.2.14) lib/phusion_passenger/abstract_server.rb:196:in start_synchronously' passenger (2.2.14) lib/phusion_passenger/abstract_server.rb:163:instart' passenger (2.2.14) lib/phusion_passenger/railz/application_spawner.rb:222:in start' passenger (2.2.14) lib/phusion_passenger/spawn_manager.rb:262:inspawn_rails_application' passenger (2.2.14) lib/phusion_passenger/abstract_server_collection.rb:126:in lookup_or_add' passenger (2.2.14) lib/phusion_passenger/spawn_manager.rb:256:inspawn_rails_application' passenger (2.2.14) lib/phusion_passenger/abstract_server_collection.rb:80:in synchronize' passenger (2.2.14) lib/phusion_passenger/abstract_server_collection.rb:79:insynchronize' passenger (2.2.14) lib/phusion_passenger/spawn_manager.rb:255:in spawn_rails_application' passenger (2.2.14) lib/phusion_passenger/spawn_manager.rb:154:inspawn_application' passenger (2.2.14) lib/phusion_passenger/spawn_manager.rb:287:in handle_spawn_application' passenger (2.2.14) lib/phusion_passenger/abstract_server.rb:352:insend' passenger (2.2.14) lib/phusion_passenger/abstract_server.rb:352:in main_loop' passenger (2.2.14) lib/phusion_passenger/abstract_server.rb:196:instart_synchronously'Rendering /var/www/railsapp/public/500.html (500 Internal Server Error)

Version: 1.1.2.stable.5093 (MySQL)
and
Version: 1.2.1.stable.6294 (MySQL)

Long issues names

Currently (release 0.5.1) on the left side of the Gantt for each issue the system displays tracker name + issue id + issue name.
That brings to long texts, truncated at diagram border line
Is it possible to force this text to wrap ?
Or, as an alternative, to display the same info you get when the mouse is over a issue bar also when the mouse is over the title line ?

what version ?

into redmine page for this plugin there are references to version newst than 0.2.0

Currently we are working with rfedmine 1.1.3 and the version 0.2.0 of this plugin plus patch gantt_edit_5_v1-1-1
The improvement of functions has been welcomed by all colleagues

We are exepriencing some problems (issu #8389), end problems are worst without the patch

Could you please help us to understand what is the right version to use ?

Thanks

Screenshots

Can u provide some screenshots, to make clear whats the difference to regault gant?

Screeners

Would b great to see screenshost of thsi adanced gui hwre in wiki!

Tx for contributing!

Changing dates doesn't update issue related to a parent issue

First of all, thanks a lot for your plugin, it´s really a great visual aid!

So, I had this problem with the plugin running on Redmine 1.3.0 stable, but this problem doesn't help with the plain Redmine installation (without the plugin). Here are the steps:

  1. Create one parent issue with child issues, all of them with start and due dates
  2. Create another issue (not child from the previous one), with start and due dates, and make it follow the parent issue created before.
  3. Change some date on the child ones, to make it move the dates from the parent one.

Problem: the dates from the issue that follows the parent one are not updated.

Are you able to reproduce this problem?

Support for Chiliproject

Is it possible to update this plugin so that it also supports ChiliProject as well?

Not sure how much effort this would involve but since it's a fork of Redmine would it be something that a non-rubist would be able to do?

ChiliProject also has 'subtasks' that I'm not sure Redmine has. Would it be possible to use these as well/instead of using 'follows' and 'precedes'?

Internal Server Error on Adding/Changing Start Date in Issues

Hi kulesa,

Issue #34 has reappeared in a slightly new form - I'm unable to reopen @chrisramsay's issue and he's not around to do it so I'm opening a new one (sorry).

Here's how to replicate it:

Top level issue - no start or due date

Sub-issue 1 - no start or due date

Sub-sub-issue 1_1 - no start or due date
Sub-sub-issue 1_2 - no start or due date
Sub-issue 2 - no start or due date
Sub-sub-issue 2_1 - no start or due date
Sub-sub-issue 2_2 - no start or due date

The breakage happens when attempting this operation:

Top level issue

Sub-issue 1

Sub-sub-issue 1_1
Sub-sub-issue 1_2
Sub-issue 2
Sub-sub-issue 2_1
> > Sub-sub-issue 2_2 - add start date of today

This happens with trying to add a start date to any of the sub-sub-issues - I think something's going wrong with the recursion :-/

Gantt scrollbars

I think the gabtt scrollbar dont work correctly, You can fix it ?

I have made ​​an arrangement perhaps a bit simple (Ideally, fix the operation of the bar)

Change the line 94:
From
div style="position:relative;height:<%= t_height + 24 %>px; overflow:auto;"
To
div style="position:relative;height:<%= t_height + 24 %>px; overflow-x:auto;overflow-y:hidden;"

Леха, дай свой жимэйл, а то засру тут комментами. ))

Может деле в passenger?

Processing GanttsController#show (for 95.37.36.26 at 2011-02-17 10:07:36) [GET]
Parameters: {"project_id"=>"fin-db", "action"=>"show", "controller"=>"gantts"}
Rendering template within layouts/base
Rendering gantts/show

ActionView::TemplateError (No plugin called 'redmine_better_gantt_chart' - please use the full name of a loaded plugin.) on line #1 of vendor/plugins/kulesa-redmine_gantt-c1c005f/app/views/gantts/show.html.erb:
1: <%= javascript_include_tag "raphael-min.js", :plugin => "redmine_better_gantt_chart" %>
2: <%= javascript_include_tag "raphael.arrow.js", :plugin => "redmine_better_gantt_chart" %>
3:
4: <% @gantt.view = self %>

vendor/plugins/kulesa-redmine_gantt-c1c005f/app/views/gantts/show.html.erb:1
app/controllers/gantts_controller.rb:26:in `show'
app/controllers/gantts_controller.rb:25:in `show'
passenger (3.0.0) lib/phusion_passenger/rack/request_handler.rb:96:in `process_request'
passenger (3.0.0) lib/phusion_passenger/abstract_request_handler.rb:513:in `accept_and_process_next_request'
passenger (3.0.0) lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop'
passenger (3.0.0) lib/phusion_passenger/classic_rails/application_spawner.rb:321:in `start_request_handler'
passenger (3.0.0) lib/phusion_passenger/classic_rails/application_spawner.rb:275:in `send'
passenger (3.0.0) lib/phusion_passenger/classic_rails/application_spawner.rb:275:in `handle_spawn_application'
passenger (3.0.0) lib/phusion_passenger/utils.rb:479:in `safe_fork'
passenger (3.0.0) lib/phusion_passenger/classic_rails/application_spawner.rb:270:in `handle_spawn_application'
passenger (3.0.0) lib/phusion_passenger/abstract_server.rb:357:in `__send__'
passenger (3.0.0) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
passenger (3.0.0) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
passenger (3.0.0) lib/phusion_passenger/abstract_server.rb:180:in `start'
passenger (3.0.0) lib/phusion_passenger/classic_rails/application_spawner.rb:149:in `start'
passenger (3.0.0) lib/phusion_passenger/spawn_manager.rb:219:in `spawn_rails_application'
passenger (3.0.0) lib/phusion_passenger/abstract_server_collection.rb:132:in `lookup_or_add'
passenger (3.0.0) lib/phusion_passenger/spawn_manager.rb:214:in `spawn_rails_application'
passenger (3.0.0) lib/phusion_passenger/abstract_server_collection.rb:82:in `synchronize'
passenger (3.0.0) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
passenger (3.0.0) lib/phusion_passenger/spawn_manager.rb:213:in `spawn_rails_application'
passenger (3.0.0) lib/phusion_passenger/spawn_manager.rb:132:in `spawn_application'
passenger (3.0.0) lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application'
passenger (3.0.0) lib/phusion_passenger/abstract_server.rb:357:in `__send__'
passenger (3.0.0) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
passenger (3.0.0) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
passenger (3.0.0) helper-scripts/passenger-spawn-server:99

Rendering /usr/local/www/redmine/public/500.html (500 Internal Server Error)

Gantt bar position

It's not a issue of the plugin but I think a good solution fix it.
The Gantt bars are a bit higher than your subject.

Display is incorrect after auto refresh

I've been testing this plugin with patch #2024 and there seems to be a problem when dragging the time bar on the gantt chart.

I have a number of inter-related issues and when I try to change the start or due date using the date picker boxes, then Redmine correctly recalculates related issues and auto refreshes the display fine.

However, when I try to drag the time bar on the gantt chart it still recalculates related issues correctly, but it then displays everything incorrectly after the auto refresh.

After discussing this with the author of #2024 he thinks it is to do with the plugin not using the correct zoom level when it refreshes the display. This is why is seems to throw everything out until you manually refresh the screen.

As I said, it saves everything correctly, it just doesn't display it correctly after the auto refresh.

Thanks,

Chris

undefined method number_of_rows_on_project when producing Gantt .png

Stack trace:

NoMethodError (undefined method number_of_rows_on_project' for #<Redmine::Helpers::BetterGantt:0x7f3e67f51228>): /usr/lib/ruby/1.8/active_record/base.rb:2197:ininject'
/usr/lib/ruby/1.8/action_controller/mime_responds.rb:135:in call' /usr/lib/ruby/1.8/action_controller/mime_responds.rb:135 /usr/lib/ruby/1.8/action_controller/mime_responds.rb:179:incall'
/usr/lib/ruby/1.8/action_controller/mime_responds.rb:179:in respond' /usr/lib/ruby/1.8/action_controller/mime_responds.rb:173:ineach'
/usr/lib/ruby/1.8/action_controller/mime_responds.rb:173:in respond' /usr/lib/ruby/1.8/action_controller/mime_responds.rb:107:inrespond_to'
/usr/lib/ruby/1.8/action_controller/base.rb:1331:in send' /usr/lib/ruby/1.8/action_controller/base.rb:1331:inperform_action_without_filters'
/usr/lib/ruby/1.8/action_controller/filters.rb:617:in call_filters' /usr/lib/ruby/1.8/action_controller/filters.rb:610:inperform_action_without_benchmark'
/usr/lib/ruby/1.8/action_controller/benchmarking.rb:68:in perform_action_without_rescue' /usr/lib/ruby/1.8/action_controller/benchmarking.rb:68:inperform_action_without_rescue'
/usr/lib/ruby/1.8/action_controller/rescue.rb:160:in perform_action_without_flash' /usr/lib/ruby/1.8/action_controller/flash.rb:146:inperform_action'
/usr/lib/ruby/1.8/action_controller/base.rb:532:in send' /usr/lib/ruby/1.8/action_controller/base.rb:532:inprocess_without_filters'
/usr/lib/ruby/1.8/action_controller/filters.rb:606:in process' /usr/lib/ruby/1.8/action_controller/base.rb:391:inprocess'
/usr/lib/ruby/1.8/action_controller/base.rb:386:in call' /usr/lib/ruby/1.8/action_controller/routing/route_set.rb:437:incall'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:87:in dispatch' /usr/lib/ruby/1.8/action_controller/dispatcher.rb:121:in_call'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:130
/usr/lib/ruby/1.8/active_record/query_cache.rb:29:in call' /usr/lib/ruby/1.8/active_record/query_cache.rb:29:incall'
/usr/lib/ruby/1.8/active_record/connection_adapters/abstract/query_cache.rb:34:in cache' /usr/lib/ruby/1.8/active_record/query_cache.rb:9:incache'
/usr/lib/ruby/1.8/active_record/query_cache.rb:28:in call' /usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:361:incall'
/usr/lib/ruby/1.8/action_controller/string_coercion.rb:25:in call' /usr/lib/ruby/1.8/rack/head.rb:9:incall'
/usr/lib/ruby/1.8/rack/methodoverride.rb:24:in call' /usr/lib/ruby/1.8/action_controller/params_parser.rb:15:incall'
/usr/lib/ruby/1.8/action_controller/session/cookie_store.rb:93:in call' /usr/lib/ruby/1.8/action_controller/failsafe.rb:26:incall'
/usr/lib/ruby/1.8/rack/lock.rb:11:in call' /usr/lib/ruby/1.8/rack/lock.rb:11:insynchronize'
/usr/lib/ruby/1.8/rack/lock.rb:11:in `call'

/usr/lib/ruby/1.8/action_controller/dispatcher.rb:106:in call' /usr/lib/ruby/1.8/phusion_passenger/rack/request_handler.rb:95:inprocess_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:instart_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:insafe_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:insend'
/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:instart_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:instart'
/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:inlookup_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:insynchronize'
/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:inspawn_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:inhandle_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:inmain_loop'
/usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:196:in `start_synchronously'
/usr/lib/phusion_passenger/passenger-spawn-server:61

Rendering /usr/share/redmine/public/500.html (500 Internal Server Error)

redmine 1.2.1 raises NoMethodError in IssuesController#update undefined method `>' for nil:NilClass

I got some patches applied on 1.2.1 to allow subtasks in other subprojects, wiki extension plugin, wiki external filter plugin and wiki to overview plugin. So far everything works fine without better_gantt_chart.

Having applied better_gantt_chart I face problems when trying to assign an existing issue (1) to a freshly created parent issue (2). The problem disappears once I create a new child by creating a subtask (3) in (2). I even can delete (3) again and easily (1) can become a child of (2).

The application trace pointed me then to better_gantt_chart:

C:/trac/redmine/vendor/plugins/redmine_better_gantt_chart/lib/redmine_better_gantt_chart/issue_dependency_patch.rb:33:in reschedule_dependent_issue' C:1:ineach'
C:1:in __send__' C:1:ineach'
C:/trac/redmine/app/models/issue.rb:835:in recalculate_attributes_for' C:/trac/redmine/app/models/issue.rb:799:inupdate_parent_attributes'
C:/trac/redmine/app/models/issue.rb:633:in save_issue_with_child_records' C:/trac/redmine/app/models/issue.rb:617:insave_issue_with_child_records'
C:/trac/redmine/app/controllers/issues_controller.rb:179:in `update'

Once I delete better_gantt_chart from /vendor/plugins everything works fine again.

No route matches "/plugin_assets/redmine_better_gantt_chart/javascripts/raphael.arrow.js"

Stack trace:

ActionController::RoutingError (No route matches "/plugin_assets/redmine_better_gantt_chart/javascripts/raphael.arrow.js" with {:method=>:get}):
/usr/lib/ruby/1.8/action_controller/routing/recognition_optimisation.rb:66:in recognize_path' /usr/lib/ruby/1.8/action_controller/routing/route_set.rb:441:inrecognize'
/usr/lib/ruby/1.8/action_controller/routing/route_set.rb:436:in call' /usr/lib/ruby/1.8/action_controller/dispatcher.rb:87:indispatch'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:121:in _call' /usr/lib/ruby/1.8/action_controller/dispatcher.rb:130 /usr/lib/ruby/1.8/active_record/query_cache.rb:29:incall'
/usr/lib/ruby/1.8/active_record/query_cache.rb:29:in call' /usr/lib/ruby/1.8/active_record/connection_adapters/abstract/query_cache.rb:34:incache'
/usr/lib/ruby/1.8/active_record/query_cache.rb:9:in cache' /usr/lib/ruby/1.8/active_record/query_cache.rb:28:incall'
/usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:361:in call' /usr/lib/ruby/1.8/action_controller/string_coercion.rb:25:incall'
/usr/lib/ruby/1.8/rack/head.rb:9:in call' /usr/lib/ruby/1.8/rack/methodoverride.rb:24:incall'
/usr/lib/ruby/1.8/action_controller/params_parser.rb:15:in call' /usr/lib/ruby/1.8/action_controller/session/cookie_store.rb:93:incall'
/usr/lib/ruby/1.8/action_controller/failsafe.rb:26:in call' /usr/lib/ruby/1.8/rack/lock.rb:11:incall'
/usr/lib/ruby/1.8/rack/lock.rb:11:in synchronize' /usr/lib/ruby/1.8/rack/lock.rb:11:incall'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:106:in call' /usr/lib/ruby/1.8/phusion_passenger/rack/request_handler.rb:95:inprocess_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:instart_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:insafe_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:insend'
/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:instart_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:instart'
/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:inlookup_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:insynchronize'
/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:inspawn_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:inhandle_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:inmain_loop'
/usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:196:in `start_synchronously'
/usr/lib/phusion_passenger/passenger-spawn-server:61

Rendering /usr/share/redmine/public/404.html (404 Not Found)

blocks / blocked by giving hierarchical graph

Hello,
I'd like to have a Gantt diagram taking into account the "block / blocked by" relationship.
I've defined versions, time estimations, block / blocked by relations, is it possible to have a diagram with these relations ?
The idea is to see what is more "urgent", because it impacts on other issues.

thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.