Class: Xfel::Timew::Report

Inherits:
Object
  • Object
show all
Defined in:
lib/xfel/timew/report.rb

Overview

Main entry point for TimeWarrior report

Instance Method Summary collapse

Constructor Details

#initializeReport

Returns a new instance of Report.



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/xfel/timew/report.rb', line 12

def initialize
  table = Table.new
  read.each do |x|
    worklog = convert(x)
    next if worklog.nil?

    Jira.new(worklog)
    table.add(worklog)
  end
  table.render
end

Instance Method Details

#convert(item) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/xfel/timew/report.rb', line 54

def convert(item)
  key = key_from_tags(item['tags'])
  return unless key && item['end']

  start = DateTime.parse(item['start'])
  st = start.strftime('%Y-%m-%dT%H:%M:%S.%L%z')
  finish = DateTime.parse(item['end'])
  duration = finish.to_time.to_i - start.to_time.to_i
  project = project_from_key(key)

  { project: project, key: key, start: st, duration: duration }
end

#key_from_tags(tags) ⇒ Object



41
42
43
44
45
46
47
48
# File 'lib/xfel/timew/report.rb', line 41

def key_from_tags(tags)
  return unless tags

  tags.each do |x|
    return x unless (x =~ /^[A-Z0-9]+-[0-9]+$/).nil?
  end
  nil
end

#project_from_key(key) ⇒ Object



50
51
52
# File 'lib/xfel/timew/report.rb', line 50

def project_from_key(key)
  key.split('-')[0]
end

#readObject



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/xfel/timew/report.rb', line 28

def read
  header_finished = false
  json_str = ''
  while (line = gets)
    if !header_finished
      header_finished = line.length == 1
    else
      json_str += line
    end
  end
  JSON.parse(json_str)
end

#task_rcObject



24
25
26
# File 'lib/xfel/timew/report.rb', line 24

def task_rc
  'rc.report.list.columns="description" rc.report.list.labels="Notes" rc.verbose=label'
end