quick fix #1295. Limit the dependency tree depth shown to prevent stack overflow

TODO: eliminate recusive algoritm
This commit is contained in:
Reinier Balt 2012-06-29 14:08:25 +02:00
parent 2654fdcf8c
commit 88729f57ce
2 changed files with 17 additions and 10 deletions

View file

@ -5,6 +5,7 @@ suppress_dependencies ||= false
parameters = "_source_view=#{@source_view}"
parameters += "&_tag_name=#{@tag_name}" if @source_view == 'tag'
@z_index_counter = @z_index_counter - 1 # for IE z-index bug
@rec_depth ||= 0
%>
<div id="<%= dom_id(successor, 'successor') %>" class="item-container">
<div id="<%= dom_id(successor, 'successor_line') %>">
@ -13,16 +14,21 @@ parameters += "&_tag_name=#{@tag_name}" if @source_view == 'tag'
<%= remote_delete_dependency(successor, predecessor) %>
<% unless successor.pending_successors.empty? %>
<div class="todo_successors" id="<%= dom_id(successor, 'successors') %>">
<%= render :partial => "todos/successor",
:collection => successor.pending_successors,
:locals => { :todo => successor,
:parent_container_type => parent_container_type,
:suppress_dependencies => true,
:predecessor => successor }
%>
</div>
<% unless successor.pending_successors.empty?
if @rec_depth < 8
@rec_depth+=1 %>
<div class="todo_successors" id="<%= dom_id(successor, 'successors') %>">
<%= render :partial => "todos/successor",
:collection => successor.pending_successors,
:locals => { :todo => successor,
:parent_container_type => parent_container_type,
:suppress_dependencies => true,
:predecessor => successor }
%>
</div>
<% else %>
<a title="There are more dependencies that are not shown">[...]</a>
<% end %>
<% end %>
</div>
</div>

View file

@ -5,6 +5,7 @@ suppress_edit_button ||= todo.completed?
parameters = "_source_view=#{@source_view}"
parameters += "&_tag_name=#{@tag_name}" if @source_view == 'tag'
@z_index_counter = @z_index_counter - 1 # for IE z-index bug
@rec_depth=0 # to prevent stack overflow on large dependency trees, see _successor.html.erb
%>
<div id="<%= dom_id(todo) %>" class="item-container">
<div id="<%= dom_id(todo, 'line') %>" class="item-show">