Skip to content

Instantly share code, notes, and snippets.

@stevecastaneda
Created April 4, 2011 23:22

Revisions

  1. Steve Castaneda created this gist Apr 4, 2011.
    76 changes: 76 additions & 0 deletions Reschedule Tasks (old)
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,76 @@
    // Detach the task from it's current location and save to var task
    var task = null;
    task = $("#task_<%= @task.id %>").detach();

    // Was this the last task for one of the sections?
    // If so, remove the header and spacer (remove), add no-tasks span if today
    if($("#tasks_today > div.task").length == 0) {
    if($("#tasks_today").children("div").children("span").length == 0) {
    $("#tasks_today > hr").before('<div class="span-7 last"><span>Nothing to do. <%= link_to "Bored?", "#", :id => "bored_link" %></span></div>');
    }
    }
    if($("#tasks_tomorrow > div.task").length == 0) {
    $("#tasks_tomorrow h6").remove();
    $("#tasks_tomorrow > hr").remove();
    }
    if($("#tasks_this_week > div.task").length == 0) {
    $("#tasks_this_week h6").remove();
    $("#tasks_this_week > hr").remove();
    }
    if($("#tasks_next_week > div.task").length == 0) {
    $("#tasks_next_week h6").remove();
    $("#tasks_next_week > hr").remove();
    }
    if($("#tasks_later > div.task").length == 0) {
    $("#tasks_later h6").remove();
    $("#tasks_later > hr").remove();
    }

    // In what section does the task need to be added back into? (id of parent div)
    <% if @task.due_date <= Date.today %>
    var id = "#tasks_today";
    var desc = null;
    <% elsif @task.due_date == Date.tomorrow %>
    var id = "#tasks_tomorrow";
    var desc = "Tomorrow";
    <% elsif @task.due_date > Date.tomorrow && @task.due_date <= Date.today.end_of_week %>
    var id = "#tasks_this_week";
    var desc = "This Week";
    <% elsif @task.due_date > Date.today.end_of_week && @task.due_date <= Date.today.end_of_week.advance(:days => 7) %>
    var id = "#tasks_next_week";
    var desc = "Next Week";
    <% else %>
    var id = "#tasks_later";
    var desc = "Beyond a Week";
    <% end %>

    // Is this the first task for this new section?
    <% if @task.due_date <= Date.today %>
    // Remove the no-task span if it's for today
    $("#tasks_today").children("div").children("span").parent().remove();
    <% else %>
    // Else just add the h6 and hr spacer to prep for the new task
    if($(id).children("div.task").length == 0) {
    $(id).append("<h6>" + desc + "</h6>");
    $(id).append('<hr class="space" />');
    }
    <% end %>

    // Add the task saved in var task back into the right section
    $(id).children("hr").before(task);

    // Reload the task partial to show updated days until or overdue description
    $("#task_<%= @task.id %>").html("<%= escape_javascript(render(:partial => 'tasks/task', :locals => {:task => @task }))%>")

    // Add or remove the overdue class as needed
    <% if @task.due_date < Date.today %>
    $("#task_<%= @task.id %>").addClass("overdue");
    <% else %>
    $("#task_<%= @task.id %>").removeClass("overdue");
    <% end %>

    // Highlight the task that was just moved
    $("#task_<%= @task.id %>").effect("highlight", {}, 1250);

    // Delete task just in case
    task = null;