class ExistClient::TimeTracking
Constants
- PRODUCTIVITY_LABELS
Public Class Methods
setup()
click to toggle source
# File lib/exist_client/time_tracking.rb, line 11 def self.setup Config.data_path_for(self).mkpath end
Public Instance Methods
report()
click to toggle source
# File lib/exist_client/time_tracking.rb, line 15 def report ExistClient.log "Reporting time tracking" all_entries = plugin.entries(report_period, data_path).map { |entry_data| Entry.new(entry_data) } grouped_entries = filter_entries(all_entries).group_by(&:logical_date) if grouped_entries.any? ExistClient.log "Found data for the following dates:", indent: 1 ExistClient.log grouped_entries.keys.sort.map { |date| date.strftime("%-m/%-d") }.join(", "), indent: 1 else ExistClient.log "No new data found", indent: 1 return end values = grouped_entries.flat_map do |date, date_entries| build_productivity_values(date, date_entries) end ExistClient.log "Reporting data...", indent: 1 ExistClient.post(values) end
Private Instance Methods
build_productivity_values(date, date_entries)
click to toggle source
# File lib/exist_client/time_tracking.rb, line 42 def build_productivity_values(date, date_entries) date_entries.group_by(&:productivity).map do |productivity, productivity_entries| { name: PRODUCTIVITY_LABELS.fetch(productivity), date: date.to_s, value: productivity_entries.sum(&:seconds) / 60 } end end
filter_entries(entries)
click to toggle source
# File lib/exist_client/time_tracking.rb, line 38 def filter_entries(entries) entries.select { |entry| report_period.include?(entry.start_time) } end