mirror of
https://github.com/TracksApp/tracks.git
synced 2026-02-18 13:18:09 +01:00
several fixes to recurring todos and adds some named_scopes
fixes case where unmarking a complete todo which belongs to a recurring pattern results in two todos that both keep on recurring. With this fix a new todo will only be created when there are no active todos left belonging to that recurring pattern fixes tests that failed because of previous commits adds some named_scopes, inspired by http://railscasts.com/episodes/108
This commit is contained in:
parent
bd2b410c7b
commit
4a98ee5669
8 changed files with 55 additions and 31 deletions
|
|
@ -6,8 +6,10 @@ class RecurringTodosController < ApplicationController
|
|||
append_before_filter :get_recurring_todo_from_param, :only => [:destroy, :toggle_check, :toggle_star, :edit, :update]
|
||||
|
||||
def index
|
||||
@recurring_todos = current_user.recurring_todos.find(:all, :conditions => ["state = ?", "active"])
|
||||
@completed_recurring_todos = current_user.recurring_todos.find(:all, :conditions => ["state = ?", "completed"])
|
||||
find_and_inactivate
|
||||
|
||||
@recurring_todos = current_user.recurring_todos.active
|
||||
@completed_recurring_todos = current_user.recurring_todos.completed
|
||||
@no_recurring_todos = @recurring_todos.size == 0
|
||||
@no_completed_recurring_todos = @completed_recurring_todos.size == 0
|
||||
@count = @recurring_todos.size
|
||||
|
|
@ -129,7 +131,7 @@ class RecurringTodosController < ApplicationController
|
|||
def destroy
|
||||
|
||||
# remove all references to this recurring todo
|
||||
@todos = current_user.todos.find(:all, {:conditions => ["recurring_todo_id = ?", params[:id]]})
|
||||
@todos = @recurring_todo.todos
|
||||
@number_of_todos = @todos.size
|
||||
@todos.each do |t|
|
||||
t.recurring_todo_id = nil
|
||||
|
|
@ -161,14 +163,15 @@ class RecurringTodosController < ApplicationController
|
|||
def toggle_check
|
||||
@saved = @recurring_todo.toggle_completion!
|
||||
|
||||
@count = current_user.recurring_todos.count(:all, :conditions => ["state = ?", "active"])
|
||||
@count = current_user.recurring_todos.active.count
|
||||
@remaining = @count
|
||||
|
||||
if @recurring_todo.active?
|
||||
@remaining = current_user.recurring_todos.count(:all, :conditions => ["state = ?", 'completed'])
|
||||
@remaining = current_user.recurring_todos.completed.count
|
||||
|
||||
# from completed back to active -> check if there is an active todo
|
||||
@active_todos = current_user.todos.count(:all, {:conditions => ["state = ? AND recurring_todo_id = ?", 'active',params[:id]]})
|
||||
# current_user.todos.count(:all, {:conditions => ["state = ? AND recurring_todo_id = ?", 'active',params[:id]]})
|
||||
@active_todos = @recurring_todo.todos.active.count
|
||||
# create todo if there is no active todo belonging to the activated
|
||||
# recurring_todo
|
||||
@new_recurring_todo = create_todo_from_recurring_todo(@recurring_todo) if @active_todos == 0
|
||||
|
|
@ -255,5 +258,11 @@ class RecurringTodosController < ApplicationController
|
|||
def get_recurring_todo_from_param
|
||||
@recurring_todo = current_user.recurring_todos.find(params[:id])
|
||||
end
|
||||
|
||||
def find_and_inactivate
|
||||
# find active recurring todos without active todos and inactivate them
|
||||
recurring_todos = current_user.recurring_todos.active
|
||||
recurring_todos.each { |rt| rt.toggle_completion! if rt.todos.not_completed.count == 0}
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue