rewrite add_predecessor.js

This commit is contained in:
Reinier Balt 2011-01-24 10:07:24 +01:00
parent 97e8602ef9
commit 30983b6658
2 changed files with 46 additions and 29 deletions

View file

@ -240,7 +240,10 @@ class TodosController < ApplicationController
@todo.state = 'pending'
@saved = @todo.save
respond_to do |format|
format.js
format.js {
@status_message = t('todos.added_dependency', :dependency => @predecessor.description)
@status_message += t('todos.set_to_pending', :task => @todo.description) unless @original_state == 'pending'
}
end
end

View file

@ -1,35 +1,49 @@
if @saved
# show update message
status_message = t('todos.added_dependency', :dependency => @predecessor.description)
unless @original_state == 'pending'
status_message += t('todos.set_to_pending', :task => @todo.description)
end
# remove successor from page
page[@todo].remove
# regenerate predecessor to add arrow
page[@predecessor].replace_html :partial => 'todos/todo', :locals => { :todo => @predecessor, :parent_container_type => parent_container_type }
<% if !@saved -%>
TracksPages.page_notify('error', "<%= t('todos.unable_to_add_dependency') %>", 8);
<% else -%>
remove_successor_from_page();
replace_updated_predecessor();
regenerate_predecessor_family();
<%= "show_in_tickler_box();" if source_view_is_one_of :project, :tag %>
TracksPages.page_notify('notice', "<%= @status_message %>", 5);
# regenerate predecessor family
function remove_successor_from_page() {
<% # TODO: last todo in context --> remove context??
-%>
$('#<%=dom_id(@todo)%>').remove();
}
function replace_updated_predecessor() {
$('#<%= dom_id(@predecessor) %>').html( html_for_predecessor() );
}
function show_in_tickler_box() {
$("#tickler-empty-nd").hide();
$('#tickler').html( html_for_deferred_todos() );
}
function regenerate_predecessor_family() {
<%
parents = @predecessor.predecessors
until parents.empty?
parent = parents.pop
parents += parent.predecessors
page[parent].replace_html :partial => 'todos/todo', :locals => { :todo => parent, :parent_container_type => parent_container_type }
end
parents += parent.predecessors -%>
$('#<%= dom_id(parent) %>').html("<%= escape_javascript(render(:partial => parent, :locals => { :parent_container_type => parent_container_type })) %>");
<%end
-%>
}
# show in tickler box in project view
if source_view_is_one_of :project, :tag
page['tickler-empty-nd'].hide
page.replace "tickler", :partial => 'todos/deferred', :locals => { :deferred => @todo.project.deferred_todos,
:collapsible => false,
:append_descriptor => t('todos.append_in_this_project'),
:parent_container_type => 'project',
:pending => @todo.project.pending_todos }
end
function html_for_predecessor() {
return "<%= escape_javascript(render(:partial => @predecessor, :locals => { :parent_container_type => parent_container_type })) %>";
}
page << 'enable_rich_interaction();'
page.notify :notice, status_message, 5.0
else
page.replace_html "status", content_tag("div", content_tag("h2", t('todos.unable_to_add_dependency')), "id" => "errorExplanation", "class" => "errorExplanation")
end
function html_for_deferred_todos() {
return "<%= escape_javascript(render(:partial => 'todos/deferred', :locals => { :deferred => @todo.project.deferred_todos,
:collapsible => false,
:append_descriptor => t('todos.append_in_this_project'),
:parent_container_type => 'project',
:pending => @todo.project.pending_todos })) %>";
}
<% end # if !@saved
%>