twstats 0.2.5 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/exe/twstats +1 -1
- data/lib/twstats.rb +2 -2
- data/lib/twstats/csv_reader.rb +0 -1
- data/lib/twstats/runner.rb +39 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e126990ce8c73929882e7246c5a77cce582c46fd115b4241b71f12b17e1e6f6b
|
4
|
+
data.tar.gz: 9184395243e7c2b7305248e724027eca9c84cab170cc6b742bdb0a893e484b69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97271cf581f7b696aa23be141ddc3800fe42089803ba999f32f74b0ef9e37bd0577bf55c5bf8ee4e81d1b5257e009725d20f7e9b96db33a2b6390a7d5c5c2cbc
|
7
|
+
data.tar.gz: 9fa944b7a95d245a9c285196893549b2d6f6f804406003d98ccac50878117160b345b31fbd07f13e8ce9473683ecf6fdc0ccc8d9d02dd66dcaaec222476a96fe
|
data/Gemfile.lock
CHANGED
data/exe/twstats
CHANGED
data/lib/twstats.rb
CHANGED
@@ -17,12 +17,12 @@ module Twstats
|
|
17
17
|
{name: 'Tags', value: :tags},
|
18
18
|
{name: 'Tasks', value: :tasks},
|
19
19
|
{name: 'Full stats', value: :fullstats},
|
20
|
-
{name: 'Weekly', value: :weekly},
|
21
20
|
{name: 'Back', value: :back}
|
22
21
|
]
|
23
22
|
MENU_CHOICES = [
|
24
23
|
{name: 'Stats', value: :stats},
|
25
|
-
{name: '
|
24
|
+
{name: 'TimeSheet', value: :billing},
|
25
|
+
{name: 'Weekly', value: :weekly},
|
26
26
|
{name: 'Quit', value: :quit}
|
27
27
|
]
|
28
28
|
end
|
data/lib/twstats/csv_reader.rb
CHANGED
data/lib/twstats/runner.rb
CHANGED
@@ -11,9 +11,8 @@ module Twstats
|
|
11
11
|
@prompt = TTY::Prompt.new
|
12
12
|
puts WELLCOME_MESSAGE.bright
|
13
13
|
# Ask for the csv file
|
14
|
-
file
|
15
|
-
|
16
|
-
end
|
14
|
+
file = read_file file
|
15
|
+
# Check if the file exists
|
17
16
|
@csv = CSVReader.new(file)
|
18
17
|
loop do
|
19
18
|
option = @prompt.select("Choose an option", Twstats::MENU_CHOICES, cycle: true)
|
@@ -22,12 +21,38 @@ module Twstats
|
|
22
21
|
show_stats_menu
|
23
22
|
when :billing
|
24
23
|
billing
|
24
|
+
when :weekly
|
25
|
+
show_weekly_report
|
25
26
|
when :quit
|
26
27
|
break
|
27
28
|
else
|
28
29
|
puts 'Option not recognized!'
|
29
30
|
end
|
30
31
|
end
|
32
|
+
@current = nil
|
33
|
+
end
|
34
|
+
|
35
|
+
def read_file(file = nil)
|
36
|
+
# Check if the file exsis
|
37
|
+
unless file.nil?
|
38
|
+
if File.exists? file
|
39
|
+
return file
|
40
|
+
else
|
41
|
+
file = @prompt.ask('The file you have supplied does not exsists. Try again or type .q to exit twstats.') do |input|
|
42
|
+
input.modify :chomp
|
43
|
+
end
|
44
|
+
if file == ".q"
|
45
|
+
exit 0
|
46
|
+
else
|
47
|
+
read_file file
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
# Now ask for the file if needed
|
52
|
+
file = @prompt.ask('Specify the CSV file from a Teamwork time log export', default: 'exportTimeLog.csv') do |input|
|
53
|
+
input.modify :chomp
|
54
|
+
end
|
55
|
+
read_file file
|
31
56
|
end
|
32
57
|
|
33
58
|
def billing
|
@@ -44,8 +69,6 @@ module Twstats
|
|
44
69
|
show_stats option
|
45
70
|
when :fullstats
|
46
71
|
show_full_stats
|
47
|
-
when :weekly
|
48
|
-
show_weekly_report
|
49
72
|
when :back
|
50
73
|
return
|
51
74
|
else
|
@@ -59,7 +82,14 @@ module Twstats
|
|
59
82
|
toshow = {}
|
60
83
|
max = 0
|
61
84
|
filter_billable ||= @prompt.yes?('Do you want to filter billable and non-billable time?', default: true)
|
62
|
-
@csv.send(obj)
|
85
|
+
objects = @csv.send(obj)
|
86
|
+
if objects.size > 1
|
87
|
+
list = @prompt.multi_select "Which ones of the following do you want to see? Select or unselect them with the space key\n" do |menu|
|
88
|
+
menu.choices objects
|
89
|
+
menu.default *[*1..objects.size]
|
90
|
+
end
|
91
|
+
end
|
92
|
+
list.each do |element|
|
63
93
|
toshow[element] = @csv.get_total_time(obj, element, filter_billable)
|
64
94
|
max = element.size if max < element.size
|
65
95
|
end
|
@@ -76,6 +106,7 @@ module Twstats
|
|
76
106
|
end
|
77
107
|
end
|
78
108
|
show_not_tagged_section false
|
109
|
+
# Further filtering
|
79
110
|
end
|
80
111
|
|
81
112
|
def ranking_from_not_tagged(list)
|
@@ -145,7 +176,7 @@ module Twstats
|
|
145
176
|
def show_not_tagged_section(table)
|
146
177
|
not_tagged = @csv.not_tagged_tasks
|
147
178
|
unless not_tagged[:list].empty?
|
148
|
-
section("
|
179
|
+
section("Logs not tagged in this report")
|
149
180
|
puts "A total of #{not_tagged[:list].size} logs have not been tagged:"
|
150
181
|
puts " - A total time of #{not_tagged[:total_time]} is not tagged properly."
|
151
182
|
puts " - Impact by employee: "
|
@@ -178,7 +209,7 @@ module Twstats
|
|
178
209
|
return
|
179
210
|
end
|
180
211
|
end
|
181
|
-
hours = @prompt.ask 'What is the weekly amount of hours worked?', default: 40, convert: :
|
212
|
+
hours = @prompt.ask 'What is the weekly amount of hours worked?', default: 40, convert: :int
|
182
213
|
info = {}
|
183
214
|
@csv.people.each do |person|
|
184
215
|
billable, non_billable = @csv.get_total_time(:people, person, true)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twstats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- J.P. Araque
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-09-
|
11
|
+
date: 2018-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|