time-sheet 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3c7858f7734163ab5688073e5ea9fe214a0994bfbf9644dd6a6b8e6d872bdf1c
4
- data.tar.gz: 4dc69782f6f4ec97664b5f2cabc941ebc34396a859612c00ccab75e20c314c8e
3
+ metadata.gz: 0bacee0db8abe56f89e78df5cfef966da22efcc24e5fff2db291714727815cd4
4
+ data.tar.gz: 91e6034615db1c7d56ff9e91ba47200c41ac83338ae8049c22c6bf4ea93f67e1
5
5
  SHA512:
6
- metadata.gz: e44ab0c69ce3c6131259571e8692b54304404a10e1bcc1be20a52b42ec36e08ec239d87ead3429e02c47c2f7a977e0447dc244df74d439401b0475441282f4b3
7
- data.tar.gz: 78c49a26b85cce835ef3f8f96b944a2932ea683f7762320981ec8ce60ffcbf9f085fa77edd311a6eb0f1b012cdd3f7eb2ae4543305ec2d60c3fdeeb6552ccf64
6
+ metadata.gz: f3aff4885cc228ce208263dd4f3f2a9c93465b2e819d863595222060ae5c1902ee35c40a93b631bcc9ea6ca38192b8c5e5214712cbb7592145880d3ff33080db
7
+ data.tar.gz: f01226ee033c0f451d367ad2616601294d3a6a6e2db414a5f3d728cd7f2fa3805bfde8ebc4241fdf2dc1bf8fdde80c15dc9ceee1614708c87bf559cf6fb14628
data/README.md CHANGED
@@ -3,6 +3,14 @@
3
3
  This gem allows you to parse a spreadsheet with time tracking information to
4
4
  generate various statistics suitable for invoices and project effort estimates.
5
5
 
6
+ ## Changelog
7
+
8
+ v0.9.0
9
+
10
+ * introduced employee data column: To use it, add a column "employee" to the
11
+ spreadsheets and use flag `-e` to filter by it. If employee is not set, it
12
+ falls back to "Me".
13
+
6
14
  ## Installation
7
15
 
8
16
  ```bash
@@ -41,7 +41,7 @@ module TimeSheet::Time
41
41
  unless results['entries'].empty?
42
42
  time = (
43
43
  (options[:to] || Util.day_end) -
44
- (options[:from] || results['entries'].first[0].to_time)
44
+ (options[:from] || results['entries'].first[1].to_time)
45
45
  ).to_i
46
46
  days = (time.to_f / 60 / 60 / 24).round
47
47
  end
@@ -112,6 +112,7 @@ class TimeSheet::Time::Cmd
112
112
  o.string '-p', '--project', 'take only entries of this project into account'
113
113
  o.string '-a', '--activity', 'take only entries of this activity into account'
114
114
  o.string '-d', '--description', 'consider only entries matching this description'
115
+ o.string '-e', '--employee', 'consider only entries for this employee'
115
116
  o.float '-r', '--rate', 'use an alternative hourly rate (default: 80.0)', default: 80.00
116
117
  o.boolean '-s', '--summary', 'when reporting, add summary section'
117
118
  o.boolean '--trim', 'compact the output for processing as CSV', default: false
@@ -41,6 +41,10 @@ class TimeSheet::Time::Entry
41
41
  )
42
42
  end
43
43
 
44
+ def employee
45
+ @employee ||= @data['employee'] || (self.prev ? self.prev.employee : 'Me')
46
+ end
47
+
44
48
  # Experiment to add timezone support. However, this would complicate every day
45
49
  # handing because of daylight saving time changes.
46
50
  # def start_zone
@@ -87,6 +91,7 @@ class TimeSheet::Time::Entry
87
91
  to = (filters[:to] ? filters[:to] : nil)
88
92
  to = (to + 1).to_time if to.is_a?(Date)
89
93
 
94
+ self.class.attrib_matches_any?(employee, filters[:employee]) &&
90
95
  self.class.attrib_matches_any?(description, filters[:description]) &&
91
96
  self.class.attrib_matches_any?(project, filters[:project]) &&
92
97
  self.class.attrib_matches_any?(activity, filters[:activity]) &&
@@ -114,14 +119,22 @@ class TimeSheet::Time::Entry
114
119
  if (self.start >= self.end) && self.next
115
120
  raise TimeSheet::Time::Exception.new('time entry has no end')
116
121
  end
122
+
123
+ if !employee
124
+ raise TimeSheet::Time::Exception.new('no employee set')
125
+ end
117
126
  end
118
127
 
119
128
  def to_row
120
- [date, start, self.end, duration.to_i, project, activity, description]
129
+ [
130
+ employee, date, start, self.end, duration.to_i, project, activity,
131
+ description
132
+ ]
121
133
  end
122
134
 
123
135
  def to_s
124
136
  values = [
137
+ employee,
125
138
  date.strftime('%Y-%m-%d'),
126
139
  start.strftime('%H:%M'),
127
140
  self.end.strftime('%H:%M'),
@@ -134,6 +147,7 @@ class TimeSheet::Time::Entry
134
147
 
135
148
  def to_hash
136
149
  return {
150
+ 'employee' => employee,
137
151
  'date' => date,
138
152
  'start' => start,
139
153
  'end' => self.end,
@@ -1,3 +1,3 @@
1
1
  module TimeSheet
2
- VERSION = "0.8.0"
2
+ VERSION = "0.9.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: time-sheet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Moritz Schepp
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-03 00:00:00.000000000 Z
11
+ date: 2020-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spreadsheet