class Minder::TaskManager
Attributes
database[R]
lines[RW]
search_results[R]
tasks[R]
Public Class Methods
new(database: nil)
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 11 def initialize(database: nil) @database = database @selected_task_index = 0 @selected_search_result = 0 @search_results = [] @filter = '' reload end
Public Instance Methods
add_task(task)
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 46 def add_task(task) File.open(DOING_FILE, 'a') do |file| file.write("#{task}\n") end database.add_task(task) reload end
add_to_done_file(text)
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 101 def add_to_done_file(text) File.open(DONE_FILE, 'a') do |file| file.write("[#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}] #{text}\n") end end
complete_task()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 92 def complete_task task = selected_task database.complete_task(task) write_file_with_backup reload select_previous_task add_to_done_file("Finished: #{task.description}") end
delete_task()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 78 def delete_task database.delete_task(selected_task) @tasks = nil write_file_with_backup reload select_previous_task end
fetch_filtered_tasks()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 34 def fetch_filtered_tasks database.tasks_filtered_by(@filter) end
filter(text)
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 20 def filter(text) @tasks = nil @filter = text @selected_task_index = 0 end
next_search()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 163 def next_search @selected_search_result += 1 if @selected_search_result > search_results.length - 1 @selected_search_result = 0 end select_search_result(@selected_search_result) end
previous_search()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 172 def previous_search @selected_search_result -= 1 if @selected_search_result < 0 @selected_search_result = search_results.length - 1 end select_search_result(@selected_search_result) end
reload()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 87 def reload self.lines = File.read(DOING_FILE).strip.split("\n") @tasks = nil end
search(text)
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 148 def search(text) @search_results = tasks.select do |task| task.description.downcase.include?(text.downcase) end @selected_search_result = 0 end
select_first_task()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 144 def select_first_task @selected_task_index = 0 end
select_last_task()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 140 def select_last_task @selected_task_index = tasks.length - 1 end
select_next_task()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 54 def select_next_task if @selected_task_index + 1 <= tasks.length - 1 @selected_task_index += 1 else @selected_task_index = 0 end end
select_previous_task()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 62 def select_previous_task if @selected_task_index == 0 @selected_task_index = tasks.length - 1 else @selected_task_index -= 1 end end
select_search_result(search_index = 0)
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 155 def select_search_result(search_index = 0) return if search_results.empty? @selected_task_index = tasks.find_index do |task| task.description == search_results[search_index].description end end
selected_task()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 74 def selected_task tasks[selected_task_index] end
selected_task_index()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 70 def selected_task_index @selected_task_index end
start_task()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 122 def start_task database.start_task(selected_task) write_file_with_backup add_to_done_file("Started: #{selected_task.description}") reload end
started_task()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 136 def started_task tasks.find(&:started?) end
tasks?()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 38 def tasks? !tasks.empty? end
unfiltered_tasks()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 30 def unfiltered_tasks database.tasks end
unstart_task()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 129 def unstart_task database.unstart_task(selected_task) write_file_with_backup add_to_done_file("Un-started: #{selected_task.description}") reload end
update_task(task, options = {})
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 42 def update_task(task, options = {}) database.update_task(task, options) end
write_file(path)
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 112 def write_file(path) File.open(path, 'w') do |file| unfiltered_tasks.each do |task| line = task.to_s line = "* #{line}" if task.started? file.write("#{line}\n") end end end
write_file_with_backup()
click to toggle source
# File lib/minder/tasks/task_manager.rb, line 107 def write_file_with_backup FileUtils.cp(DOING_FILE, DOING_FILE + '.old') write_file(DOING_FILE) end