Module: Tempo::Views
- Defined in:
- lib/tempo/views/base.rb,
lib/tempo/views/reporter.rb,
lib/tempo/views/report_view.rb,
lib/tempo/views/arrange_view.rb,
lib/tempo/views/projects_view.rb,
lib/tempo/views/formatters/base.rb,
lib/tempo/views/time_record_view.rb,
lib/tempo/views/view_records/log.rb,
lib/tempo/views/formatters/screen.rb,
lib/tempo/views/view_records/base.rb,
lib/tempo/views/view_records/project.rb,
lib/tempo/views/view_records/composite.rb,
lib/tempo/views/view_records/time_record.rb
Defined Under Namespace
Modules: Formatters, ViewRecords
Classes: Reporter
Class Method Summary
collapse
-
.already_exists_error(item, request) ⇒ Object
-
.ambiguous_project(matches, command) ⇒ Object
-
.arrange_already_root(project) ⇒ Object
-
.arrange_parent_child(parent, child) ⇒ Object
-
.arrange_parse_error ⇒ Object
-
.arrange_root(project) ⇒ Object
-
.checkout_assistance(options = {}) ⇒ Object
-
.delete_time_record_view(time_record) ⇒ Object
-
.end_time_record_view(time_record) ⇒ Object
-
.error(message) ⇒ Object
-
.initialize_view_options(command, global_options, options) ⇒ Object
called in the pre block, pushes relavent options to the reporter.
-
.message(message) ⇒ Object
-
.no_items(items, category = :info) ⇒ Object
-
.no_match_error(items, request, plural = true) ⇒ Object
-
.options_report(command, global_options, options, args) ⇒ Object
-
.project_added(project) ⇒ Object
-
.project_already_current(project) ⇒ Object
-
.project_assistance ⇒ Object
-
.project_checkout(project) ⇒ Object
-
.project_deleted(project) ⇒ Object
-
.project_tags(project) ⇒ Object
-
.project_view(project, depth = 0) ⇒ Object
-
.projects_flat_list_view(projects = Tempo::Model::Project.index) ⇒ Object
list of sorted projects, no hierarchy.
-
.projects_list_view(projects = Tempo::Model::Project.index, parent = :root, depth = 0) ⇒ Object
-
.report_records_view(options = {}) ⇒ Object
-
.start_time_record_view(time_record) ⇒ Object
-
.time_record_view(time_record) ⇒ Object
-
.update_time_record_view(time_record) ⇒ Object
Class Method Details
.already_exists_error(item, request) ⇒ Object
64
65
66
|
# File 'lib/tempo/views/base.rb', line 64
def already_exists_error(item, request)
ViewRecords::Message.new "#{item} '#{request}' already exists", category: :error
end
|
.ambiguous_project(matches, command) ⇒ Object
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/tempo/views/projects_view.rb', line 63
def ambiguous_project(matches, command)
ViewRecords::Message.new "The following projects matched your search:"
Tempo::Views::Reporter.add_options active: true
projects_flat_list_view matches
ViewRecords::Message.new "please refine your search or use --exact to match args exactly"
ViewRecords::Message.new "cannot #{command} multiple projects", category: :error
end
|
.arrange_already_root(project) ⇒ Object
17
18
19
20
|
# File 'lib/tempo/views/arrange_view.rb', line 17
def arrange_already_root(project)
ViewRecords::Message.new "already a root project:"
ViewRecords::Project.new project
end
|
.arrange_parent_child(parent, child) ⇒ Object
5
6
7
8
9
10
|
# File 'lib/tempo/views/arrange_view.rb', line 5
def arrange_parent_child(parent, child)
ViewRecords::Message.new "parent project:"
ViewRecords::Project.new parent
ViewRecords::Message.new "child project:"
ViewRecords::Project.new child
end
|
.arrange_parse_error ⇒ Object
22
23
24
|
# File 'lib/tempo/views/arrange_view.rb', line 22
def arrange_parse_error
ViewRecords::Message.new "arrange requires a colon (:) in the arguments", category: :error
end
|
.arrange_root(project) ⇒ Object
12
13
14
15
|
# File 'lib/tempo/views/arrange_view.rb', line 12
def arrange_root(project)
ViewRecords::Message.new "root project:"
ViewRecords::Project.new project
end
|
.checkout_assistance(options = {}) ⇒ Object
68
69
70
71
72
73
74
|
# File 'lib/tempo/views/base.rb', line 68
def checkout_assistance(options={})
ViewRecords::Message.new "checkout command run with no arguments"
ViewRecords::Message.new "perhaps you meant one of these?"
ViewRecords::Message.new " tempo checkout --add <new project name>"
ViewRecords::Message.new " tempo checkout <existing project>"
ViewRecords::Message.new "run `tempo checkout --help` for more information"
end
|
.delete_time_record_view(time_record) ⇒ Object
24
25
26
27
|
# File 'lib/tempo/views/time_record_view.rb', line 24
def delete_time_record_view(time_record)
ViewRecords::Message.new "time record deleted:"
time_record_view time_record
end
|
.end_time_record_view(time_record) ⇒ Object
14
15
16
17
|
# File 'lib/tempo/views/time_record_view.rb', line 14
def end_time_record_view(time_record)
ViewRecords::Message.new "time record ended:"
time_record_view time_record
end
|
.error(message) ⇒ Object
55
56
57
|
# File 'lib/tempo/views/base.rb', line 55
def error(message)
ViewRecords::Message.new message, category: :error
end
|
.initialize_view_options(command, global_options, options) ⇒ Object
called in the pre block, pushes relavent options to the reporter
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/tempo/views/base.rb', line 6
def initialize_view_options(command, global_options, options)
view_opts = {}
view_opts[:verbose] = global_options[:verbose]
view_opts[:id] = global_options[:id]
case command
when :project, :p
if global_options[:verbose]
view_opts[:id] = true
view_opts[:tags] = true
view_opts[:active] = true
view_opts[:depth] = true
else
if options[:list]
view_opts[:depth] = true
view_opts[:active] = true
end
view_opts[:tags] = options[:tag] || options[:untag] ? true : false
view_opts[:id] = global_options[:id] || options[:id] ? true : false
end
end
Tempo::Views::Reporter.add_options view_opts
end
|
.message(message) ⇒ Object
51
52
53
|
# File 'lib/tempo/views/base.rb', line 51
def message(message)
ViewRecords::Message.new message, category: :info
end
|
.no_items(items, category = :info) ⇒ Object
43
44
45
46
47
48
49
|
# File 'lib/tempo/views/base.rb', line 43
def no_items(items, category=:info)
ViewRecords::Message.new "no #{items} exist", category: category
if items == "projects"
ViewRecords::Message.new "You must at least one project before you can begin tracking time"
ViewRecords::Message.new "run `tempo project --help` for more information"
end
end
|
.no_match_error(items, request, plural = true) ⇒ Object
59
60
61
62
|
# File 'lib/tempo/views/base.rb', line 59
def no_match_error(items, request, plural=true)
match = plural ? "match" : "matches"
ViewRecords::Message.new "no #{items} #{match} the request: #{request}", category: :error
end
|
.options_report(command, global_options, options, args) ⇒ Object
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/tempo/views/base.rb', line 29
def options_report(command, global_options, options, args)
globals_list = "global options: "
global_options.each {|k,v| globals_list += "#{k} = #{v}, " if k.kind_of? String and k.length > 1 and !v.nil? }
ViewRecords::Message.new globals_list[0..-2], category: :debug
options_list = "command options: "
options.each {|k,v| options_list += "#{k} = #{v}, " if k.kind_of? String and k.length > 1 and !v.nil? }
ViewRecords::Message.new options_list[0..-2], category: :debug
ViewRecords::Message.new "command: #{command}", category: :debug
ViewRecords::Message.new "args: #{args}", category: :debug
end
|
.project_added(project) ⇒ Object
38
39
40
41
|
# File 'lib/tempo/views/projects_view.rb', line 38
def project_added(project)
ViewRecords::Message.new "added project:"
project_view project
end
|
.project_already_current(project) ⇒ Object
53
54
55
56
|
# File 'lib/tempo/views/projects_view.rb', line 53
def project_already_current(project)
ViewRecords::Message.new "already on project:"
project_view project
end
|
.project_assistance ⇒ Object
75
76
77
78
79
|
# File 'lib/tempo/views/projects_view.rb', line 75
def project_assistance
ViewRecords::Message.new "you need to set up a new project before running your command"
ViewRecords::Message.new "run`tempo project --help` for more information"
no_items "projects", :error
end
|
.project_checkout(project) ⇒ Object
48
49
50
51
|
# File 'lib/tempo/views/projects_view.rb', line 48
def project_checkout(project)
ViewRecords::Message.new "switched to project:"
project_view project
end
|
.project_deleted(project) ⇒ Object
43
44
45
46
|
# File 'lib/tempo/views/projects_view.rb', line 43
def project_deleted(project)
ViewRecords::Message.new "deleted project:"
project_view project
end
|
58
59
60
61
|
# File 'lib/tempo/views/projects_view.rb', line 58
def project_tags(project)
ViewRecords::Message.new "altered project tags:"
project_view project
end
|
.project_view(project, depth = 0) ⇒ Object
5
6
7
|
# File 'lib/tempo/views/projects_view.rb', line 5
def project_view project, depth=0
ViewRecords::Project.new project, depth: depth
end
|
.projects_flat_list_view(projects = Tempo::Model::Project.index) ⇒ Object
list of sorted projects, no hierarchy
29
30
31
32
33
34
35
36
|
# File 'lib/tempo/views/projects_view.rb', line 29
def projects_flat_list_view(projects=Tempo::Model::Project.index)
Tempo::Model::Project.sort_by_title projects do |projects|
projects.each do |p|
project_view p
end
end
end
|
.projects_list_view(projects = Tempo::Model::Project.index, parent = :root, depth = 0) ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/tempo/views/projects_view.rb', line 9
def projects_list_view(projects=Tempo::Model::Project.index, parent=:root, depth=0)
return no_items( "projects" ) if projects.empty?
Tempo::Model::Project.sort_by_title projects do |projects|
projects.each do |p|
if p.parent == parent
project_view p, depth
if not p.children.empty?
next_depth = depth + 1
next_parent = p.id
child_array = projects_list_view projects, next_parent, next_depth
end
end
end
end
end
|
.report_records_view(options = {}) ⇒ Object
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/tempo/views/report_view.rb', line 5
def report_records_view(options={})
projects = options.fetch(:projects, Tempo::Model::Project.index)
return no_items("projects") if projects.empty?
time_records = options.fetch( :time_records, Tempo::Model::TimeRecord.days_index )
return no_items("time records") if time_records.empty?
time_records.each do |d_id, days_record|
day = Tempo::Model::TimeRecord.day_id_to_time d_id
ViewRecords::Message.new ""
ViewRecords::Message.new day.strftime("Records for %m/%d/%Y:")
days_record.each do |time_record|
time_record_view time_record
end
end
end
|
.start_time_record_view(time_record) ⇒ Object
9
10
11
12
|
# File 'lib/tempo/views/time_record_view.rb', line 9
def start_time_record_view(time_record)
ViewRecords::Message.new "time record started:"
time_record_view time_record
end
|
.time_record_view(time_record) ⇒ Object
5
6
7
|
# File 'lib/tempo/views/time_record_view.rb', line 5
def time_record_view(time_record)
ViewRecords::TimeRecord.new time_record
end
|
.update_time_record_view(time_record) ⇒ Object
19
20
21
22
|
# File 'lib/tempo/views/time_record_view.rb', line 19
def update_time_record_view(time_record)
ViewRecords::Message.new "time record updated:"
time_record_view time_record
end
|