Module: Rescuetime::QueryBuildable
- Included in:
- Client, Collection
- Defined in:
- lib/rescuetime/query_buildable.rb
Overview
The Rescuetime::Reportable module contains client methods relating to generating requests to fetch reports on the /data endpoint of the Data Analytics API.
Constant Summary collapse
- BASE_PARAMS =
Parameters that are included by default in every query
{ format: 'csv', operation: 'select', version: 0 }.freeze
- VALID =
Valid values for the :order and :interval parameters
{ order_by: %w(time rank member), interval: %w(minute hour day week month) }.freeze
Instance Method Summary collapse
-
#activities ⇒ Rescuetime::Collection
Returns a Rescuetime activity report, grouping activities by their specific application, website, or activity.
-
#categories ⇒ Rescuetime::Collection
Returns a Rescuetime category report, grouping activities into their second-level (sub-)categories.
-
#date(date) ⇒ Rescuetime::Collection
Limits the Rescuetime report to a specific single date.
-
#efficiency ⇒ Rescuetime::Collection
Returns a Rescuetime efficiency report, featuring efficiency calculations.
-
#from(date) ⇒ Rescuetime::Collection
Limits the Rescuetime report to a specific start date.
-
#order_by(order, interval: nil) ⇒ Rescuetime::Collection
Specifies the ordering and the interval of the returned Rescuetime report.
-
#overview ⇒ Rescuetime::Collection
Returns a Rescuetime overview report, grouping activities into their top-level categories.
-
#productivity ⇒ Rescuetime::Collection
Returns a Rescuetime productivity report, featuring productivity calculations.
-
#to(date) ⇒ Rescuetime::Collection
Limits the Rescuetime report to a specific end date.
-
#where(name: nil, document: nil) ⇒ Rescuetime::Collection
Limits the Rescuetime report to specific activities and documents.
Instance Method Details
#activities ⇒ Rescuetime::Collection
Returns a Rescuetime activity report, grouping activities by their specific application, website, or activity
Defaults:
-
order: rank
-
date range: current day
95 96 97 |
# File 'lib/rescuetime/query_buildable.rb', line 95 def activities add_to_query restrict_kind: 'activity' end |
#categories ⇒ Rescuetime::Collection
Returns a Rescuetime category report, grouping activities into their second-level (sub-)categories
Defaults:
-
order: rank
-
date range: current day
70 71 72 |
# File 'lib/rescuetime/query_buildable.rb', line 70 def categories add_to_query restrict_kind: 'category' end |
#date(date) ⇒ Rescuetime::Collection
Limits the Rescuetime report to a specific single date. To specify a date range, use #from and #to.
240 241 242 243 |
# File 'lib/rescuetime/query_buildable.rb', line 240 def date(date) add_to_query restrict_end: to_formatted_s(date), restrict_begin: to_formatted_s(date) end |
#efficiency ⇒ Rescuetime::Collection
Returns a Rescuetime efficiency report, featuring efficiency calculations. Defaults to chronological (time) order.
Defaults:
-
order: time
-
date range: current day
145 146 147 148 |
# File 'lib/rescuetime/query_buildable.rb', line 145 def efficiency add_to_query restrict_kind: 'efficiency', perspective: 'interval' end |
#from(date) ⇒ Rescuetime::Collection
Limits the Rescuetime report to a specific start date. If the end date is not specified, it defaults to today.
270 271 272 |
# File 'lib/rescuetime/query_buildable.rb', line 270 def from(date) add_to_query restrict_begin: to_formatted_s(date) end |
#order_by(order, interval: nil) ⇒ Rescuetime::Collection
Specifies the ordering and the interval of the returned Rescuetime report. For example, the results can be ordered by time, activity rank, or member; The results can be returned in intervals spanning a month, a week, a day, an hour, or 5-minutes.
Efficiency reports default to :time order; everything else defaults to :rank order.
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
# File 'lib/rescuetime/query_buildable.rb', line 191 def order_by(order, interval: nil) # set order and intervals as symbols order = order.to_s interval = interval ? interval.to_s : nil # guards against invalid order or interval unless valid_order? order raise Errors::InvalidQueryError, "#{order} is not a valid order" end unless valid_interval? interval raise Errors::InvalidQueryError, "#{interval} is not a valid interval" end add_to_query perspective: (order == 'time' ? 'interval' : order), resolution_time: interval end |
#overview ⇒ Rescuetime::Collection
Returns a Rescuetime overview report, grouping activities into their top-level categories
Defaults:
-
order: rank
-
date range: current day
45 46 47 |
# File 'lib/rescuetime/query_buildable.rb', line 45 def overview add_to_query restrict_kind: 'overview' end |
#productivity ⇒ Rescuetime::Collection
Returns a Rescuetime productivity report, featuring productivity calculations
Defaults:
-
order: rank
-
date range: current day
120 121 122 |
# File 'lib/rescuetime/query_buildable.rb', line 120 def productivity add_to_query restrict_kind: 'productivity' end |
#to(date) ⇒ Rescuetime::Collection
Limits the Rescuetime report to a specific end date. Requires #from to be set before the query is sent, but it doesn’t matter if that happens before or after the call to #to.
306 307 308 |
# File 'lib/rescuetime/query_buildable.rb', line 306 def to(date) add_to_query restrict_end: to_formatted_s(date) end |
#where(name: nil, document: nil) ⇒ Rescuetime::Collection
Limits the Rescuetime report to specific activities and documents. The name option limits the results to those where name is an exact match; this can be used on the overview, activity, and category report. The document option limits the specific document title; this is only available on the activity report.
If a value is passed for an unsupported report, it will be ignored.
To see the category and document names for your account, please look at your rescuetime dashboard or generated rescuetime report.
:name can be used on:
-
Overview report
-
Category report
-
Activity report
:document can be used on:
-
Activity report when :name is set
362 363 364 365 366 367 368 |
# File 'lib/rescuetime/query_buildable.rb', line 362 def where(name: nil, document: nil) # Stand-in for required keyword arguments name || raise(ArgumentError, 'missing keyword: name') add_to_query restrict_thing: name, restrict_thingy: document end |