Class: Checkoff::MyTasks
- Inherits:
-
Object
- Object
- Checkoff::MyTasks
- Defined in:
- lib/checkoff/my_tasks.rb
Overview
Query different sections of Asana ‘My Tasks’ projects
Constant Summary collapse
- MINUTE =
60- LONG_CACHE_TIME =
MINUTE * 15
- SHORT_CACHE_TIME =
MINUTE * 5
Instance Attribute Summary collapse
-
#projects ⇒ Object
readonly
Returns the value of attribute projects.
Instance Method Summary collapse
-
#by_my_tasks_section(tasks, project_gid) ⇒ Object
Given a list of tasks in ‘My Tasks’, pull a Hash of tasks with section name -> task list.
-
#initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config: config).client, projects: Checkoff::Projects.new(config: config, client: client)) ⇒ MyTasks
constructor
A new instance of MyTasks.
- #section_key(name) ⇒ Object
-
#tasks_by_section_for_my_tasks(project, extra_fields: []) ⇒ Object
Given a ‘My Tasks’ project object, pull all tasks, then provide a Hash of tasks with section name -> task list of the uncompleted tasks.
Constructor Details
#initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config: config).client, projects: Checkoff::Projects.new(config: config, client: client)) ⇒ MyTasks
Returns a new instance of MyTasks.
17 18 19 20 21 22 23 24 |
# File 'lib/checkoff/my_tasks.rb', line 17 def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config: config).client, projects: Checkoff::Projects.new(config: config, client: client)) @config = config @client = client @projects = projects end |
Instance Attribute Details
#projects ⇒ Object (readonly)
Returns the value of attribute projects.
15 16 17 |
# File 'lib/checkoff/my_tasks.rb', line 15 def projects @projects end |
Instance Method Details
#by_my_tasks_section(tasks, project_gid) ⇒ Object
Given a list of tasks in ‘My Tasks’, pull a Hash of tasks with section name -> task list
44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/checkoff/my_tasks.rb', line 44 def by_my_tasks_section(tasks, project_gid) by_section = {} sections = client.sections.get_sections_for_project(project_gid: project_gid) sections.each { |section| by_section[section_key(section.name)] = [] } tasks.each do |task| assignee_section = task.assignee_section current_section = section_key(assignee_section.name) by_section[current_section] ||= [] by_section[current_section] << task end by_section end |
#section_key(name) ⇒ Object
36 37 38 39 40 |
# File 'lib/checkoff/my_tasks.rb', line 36 def section_key(name) return nil if name == 'Recently assigned' name end |
#tasks_by_section_for_my_tasks(project, extra_fields: []) ⇒ Object
Given a ‘My Tasks’ project object, pull all tasks, then provide a Hash of tasks with section name -> task list of the uncompleted tasks.
29 30 31 32 33 34 |
# File 'lib/checkoff/my_tasks.rb', line 29 def tasks_by_section_for_my_tasks(project, extra_fields: []) raw_tasks = projects.tasks_from_project(project, extra_fields: extra_fields + ['assignee_section.name']) active_tasks = projects.active_tasks(raw_tasks) by_my_tasks_section(active_tasks, project.gid) end |