Class: Checkoff::Projects
- Inherits:
-
Object
- Object
- Checkoff::Projects
- Defined in:
- lib/checkoff/projects.rb
Overview
Work with projects in Asana
Constant Summary collapse
- MINUTE =
60- HOUR =
MINUTE * 60
- DAY =
24 * HOUR
- REALLY_LONG_CACHE_TIME =
HOUR * 1
- LONG_CACHE_TIME =
MINUTE * 15
- SHORT_CACHE_TIME =
MINUTE * 5
Instance Method Summary collapse
- #active_tasks(tasks) ⇒ Object
- #client ⇒ Object
-
#initialize(config: Checkoff::ConfigLoader.load(:asana), asana_client: Asana::Client, workspaces: Checkoff::Workspaces.new) ⇒ Projects
constructor
XXX: Move low-level functions private.
- #my_tasks(workspace_name) ⇒ Object
- #project(workspace_name, project_name) ⇒ Object
- #projects ⇒ Object
- #projects_by_workspace_name(workspace_name) ⇒ Object
- #task_options ⇒ Object
- #tasks_from_project(project, only_uncompleted: true, extra_fields: []) ⇒ Object
Constructor Details
#initialize(config: Checkoff::ConfigLoader.load(:asana), asana_client: Asana::Client, workspaces: Checkoff::Workspaces.new) ⇒ Projects
XXX: Move low-level functions private
26 27 28 29 30 31 32 |
# File 'lib/checkoff/projects.rb', line 26 def initialize(config: Checkoff::ConfigLoader.load(:asana), asana_client: Asana::Client, workspaces: Checkoff::Workspaces.new) @config = config @asana_client = asana_client @workspaces = workspaces end |
Instance Method Details
#active_tasks(tasks) ⇒ Object
70 71 72 |
# File 'lib/checkoff/projects.rb', line 70 def active_tasks(tasks) tasks.select { |task| task.completed_at.nil? } end |
#client ⇒ Object
34 35 36 |
# File 'lib/checkoff/projects.rb', line 34 def client @workspaces.client end |
#my_tasks(workspace_name) ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'lib/checkoff/projects.rb', line 49 def my_tasks(workspace_name) my_tasks = @config[:my_tasks] id = @config[:my_tasks][workspace_name] unless my_tasks.nil? if my_tasks.nil? || id.nil? raise "Please define [:my_tasks][#{workspace_name}] in config file" end projects.find_by_id(id) end |
#project(workspace_name, project_name) ⇒ Object
58 59 60 61 62 63 64 65 66 67 |
# File 'lib/checkoff/projects.rb', line 58 def project(workspace_name, project_name) if project_name.is_a?(Symbol) && project_name.to_s.start_with?('my_tasks') my_tasks(workspace_name) else projects = projects_by_workspace_name(workspace_name) projects.find do |project| project.name == project_name end end end |
#projects ⇒ Object
38 39 40 |
# File 'lib/checkoff/projects.rb', line 38 def projects client.projects end |
#projects_by_workspace_name(workspace_name) ⇒ Object
43 44 45 46 47 |
# File 'lib/checkoff/projects.rb', line 43 def projects_by_workspace_name(workspace_name) workspace = @workspaces.workspace_by_name(workspace_name) raise "Could not find workspace named #{workspace_name}" unless workspace projects.find_by_workspace(workspace: workspace.id) end |
#task_options ⇒ Object
74 75 76 77 78 79 80 81 |
# File 'lib/checkoff/projects.rb', line 74 def { per_page: 100, options: { fields: %w[name completed_at due_at due_on assignee_status tags], }, } end |
#tasks_from_project(project, only_uncompleted: true, extra_fields: []) ⇒ Object
83 84 85 86 87 88 89 |
# File 'lib/checkoff/projects.rb', line 83 def tasks_from_project(project, only_uncompleted: true, extra_fields: []) = [:completed_since] = '9999-12-01' if only_uncompleted [:project] = project.id [:options][:fields] += extra_fields client.tasks.find_all().to_a end |