time-sheet 0.8.0 → 0.9.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 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