achoo 0.3 → 0.4.1
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.
- data/CHANGES +12 -0
- data/README.rdoc +26 -30
- data/Rakefile +3 -0
- data/bin/achoo +2 -2
- data/lib/achoo.rb +1 -139
- data/lib/achoo/achievo.rb +13 -0
- data/lib/achoo/achievo/form.rb +22 -0
- data/lib/achoo/achievo/hour_administration_form.rb +91 -0
- data/lib/achoo/achievo/hour_registration_form.rb +230 -0
- data/lib/achoo/achievo/hour_registration_form_ranged.rb +49 -0
- data/lib/achoo/achievo/lock_month_form.rb +44 -0
- data/lib/achoo/achievo/login_form.rb +27 -0
- data/lib/achoo/achievo/table.rb +30 -0
- data/lib/achoo/app.rb +153 -0
- data/lib/achoo/awake.rb +86 -100
- data/lib/achoo/extensions.rb +24 -0
- data/lib/achoo/ical.rb +47 -40
- data/lib/achoo/rc_loader.rb +42 -42
- data/lib/achoo/system.rb +8 -3
- data/lib/achoo/system/cstruct.rb +67 -0
- data/lib/achoo/system/log_entry.rb +24 -0
- data/lib/achoo/system/pm_suspend.rb +17 -20
- data/lib/achoo/system/utmp_record.rb +64 -0
- data/lib/achoo/system/wtmp.rb +14 -10
- data/lib/achoo/temporal.rb +8 -0
- data/lib/achoo/temporal/open_timespan.rb +16 -0
- data/lib/achoo/temporal/timespan.rb +122 -0
- data/lib/achoo/term.rb +58 -56
- data/lib/achoo/term/menu.rb +2 -2
- data/lib/achoo/term/table.rb +59 -60
- data/lib/achoo/ui.rb +13 -9
- data/lib/achoo/ui/commands.rb +60 -38
- data/lib/achoo/ui/common.rb +10 -7
- data/lib/achoo/ui/date_chooser.rb +69 -65
- data/lib/achoo/ui/date_choosers.rb +15 -14
- data/lib/achoo/ui/exception_handling.rb +14 -12
- data/lib/achoo/ui/month_chooser.rb +37 -24
- data/lib/achoo/ui/optionally_ranged_date_chooser.rb +29 -25
- data/lib/achoo/ui/register_hours.rb +116 -114
- data/lib/achoo/vcs.rb +32 -30
- data/lib/achoo/vcs/git.rb +18 -14
- data/lib/achoo/vcs/subversion.rb +25 -23
- metadata +30 -24
- data/lib/achoo/binary.rb +0 -7
- data/lib/achoo/binary/cstruct.rb +0 -60
- data/lib/achoo/binary/utmp_record.rb +0 -59
- data/lib/achoo/form.rb +0 -18
- data/lib/achoo/hour_administration_form.rb +0 -131
- data/lib/achoo/hour_registration_form.rb +0 -227
- data/lib/achoo/hour_registration_form_ranged.rb +0 -45
- data/lib/achoo/lock_month_form.rb +0 -40
- data/lib/achoo/open_timespan.rb +0 -13
- data/lib/achoo/timespan.rb +0 -119
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'achoo/hour_registration_form'
|
2
|
-
|
3
|
-
class Achoo::HourRegistrationFormRanged < Achoo::HourRegistrationForm
|
4
|
-
|
5
|
-
def initialize(agent)
|
6
|
-
super
|
7
|
-
|
8
|
-
@page = @agent.get(atk_submit_to_url(@page.link_with(:text => 'Select range').href))
|
9
|
-
@form = @page.form('entryform')
|
10
|
-
end
|
11
|
-
|
12
|
-
def date=(date_range)
|
13
|
-
super(date_range[0])
|
14
|
-
|
15
|
-
to_day_field.value = date_range[1].strftime('%d')
|
16
|
-
to_month_field.value = date_range[1].strftime('%m')
|
17
|
-
to_year_field.value = date_range[1].year
|
18
|
-
end
|
19
|
-
|
20
|
-
def date
|
21
|
-
start = super
|
22
|
-
finish = Date.new(to_year_field.value.to_i, to_month_field.value.to_i,
|
23
|
-
to_day_field.value.to_i)
|
24
|
-
[start, finish]
|
25
|
-
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
def to_day_field
|
30
|
-
@form.field_with(:name => 'todate[day]')
|
31
|
-
end
|
32
|
-
|
33
|
-
def to_month_field
|
34
|
-
@form.field_with(:name => 'todate[month]')
|
35
|
-
end
|
36
|
-
|
37
|
-
def to_year_field
|
38
|
-
@form.field_with(:name => 'todate[year]')
|
39
|
-
end
|
40
|
-
|
41
|
-
def date_to_s
|
42
|
-
date.map {|d| d.strftime("%Y-%m-%d")}.join(" -> ")
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
class Achoo; end
|
2
|
-
|
3
|
-
class Achoo::LockMonthForm
|
4
|
-
|
5
|
-
def initialize(agent)
|
6
|
-
@agent = agent
|
7
|
-
end
|
8
|
-
|
9
|
-
def lock_month(period)
|
10
|
-
page = @agent.get(RC[:lock_months_url])
|
11
|
-
@form = page.form('entryform')
|
12
|
-
|
13
|
-
@form.period = period
|
14
|
-
unless user_select.nil?
|
15
|
-
user_select.options.each do |opt|
|
16
|
-
if opt.text.match(/\(#{RC[:user]}\)$/)
|
17
|
-
opt.select
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
def print_values
|
25
|
-
puts "Month: #{@form.period}"
|
26
|
-
puts " User: #{user_select.value}" unless user_select.nil?
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
def submit
|
31
|
-
@form.submit
|
32
|
-
end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
|
-
def user_select
|
37
|
-
@form.field_with(:name => 'userid')
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
data/lib/achoo/open_timespan.rb
DELETED
data/lib/achoo/timespan.rb
DELETED
@@ -1,119 +0,0 @@
|
|
1
|
-
require 'time'
|
2
|
-
|
3
|
-
class Achoo; end
|
4
|
-
|
5
|
-
class Achoo::Timespan
|
6
|
-
|
7
|
-
SECONDS_IN_A_DAY = 86400
|
8
|
-
SECONDS_IN_AN_HOUR = 3600
|
9
|
-
SECONDS_IN_A_MINUTE = 60
|
10
|
-
|
11
|
-
attr :start
|
12
|
-
attr :end
|
13
|
-
|
14
|
-
def initialize(start, end_)
|
15
|
-
raise ArgumentError.new('Nil in parameters not allowed') if start.nil? || end_.nil?
|
16
|
-
|
17
|
-
self.start = start
|
18
|
-
self.end = end_
|
19
|
-
end
|
20
|
-
|
21
|
-
def start=(timeish)
|
22
|
-
@start = to_time(timeish)
|
23
|
-
end
|
24
|
-
|
25
|
-
def end=(timeish)
|
26
|
-
@end = to_time(timeish)
|
27
|
-
end
|
28
|
-
|
29
|
-
def to_s
|
30
|
-
duration = duration_string
|
31
|
-
from_to = from_to_string
|
32
|
-
|
33
|
-
sprintf("(%s) %s", duration, from_to)
|
34
|
-
end
|
35
|
-
|
36
|
-
def contains?(timeish_or_timespan)
|
37
|
-
if timeish_or_timespan.is_a? Achoo::Timespan
|
38
|
-
timespan = timeish_or_timespan
|
39
|
-
return start <= timespan.start && self.end >= timespan.end
|
40
|
-
else
|
41
|
-
time = to_time(timeish_or_timespan)
|
42
|
-
return start <= time && self.end >= time
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def overlaps?(timespan)
|
47
|
-
start <= timespan.start && self.end >= timespan.start \
|
48
|
-
|| start <= timespan.end && self.end >= timespan.end \
|
49
|
-
|| contains?(timespan) || timespan.contains?(self)
|
50
|
-
end
|
51
|
-
|
52
|
-
private
|
53
|
-
|
54
|
-
def to_time(timeish)
|
55
|
-
case timeish
|
56
|
-
when Time
|
57
|
-
timeish.clone
|
58
|
-
when DateTime
|
59
|
-
Time.local(timeish.year, timeish.month, timeish.day, timeish.hour,timeish.minute, timeish.second)
|
60
|
-
when Date
|
61
|
-
Time.local(timeish.year, timeish.month, timeish.day)
|
62
|
-
else
|
63
|
-
if timeish.respond_to?(:to_s)
|
64
|
-
Time.parse(timeish.to_s)
|
65
|
-
else
|
66
|
-
raise ArgumentError.new("Don't know how to convert #{timeish.class} to Time")
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
|
72
|
-
def duration_string
|
73
|
-
delta = @end - @start
|
74
|
-
d = delta.to_i / SECONDS_IN_A_DAY
|
75
|
-
|
76
|
-
delta = delta - d*SECONDS_IN_A_DAY
|
77
|
-
h = delta.to_i / SECONDS_IN_AN_HOUR
|
78
|
-
|
79
|
-
delta = delta - h*SECONDS_IN_AN_HOUR
|
80
|
-
m = delta.to_i / SECONDS_IN_A_MINUTE
|
81
|
-
|
82
|
-
sprintf "%d+%02d:%02d", d, h, m
|
83
|
-
end
|
84
|
-
|
85
|
-
def from_to_string
|
86
|
-
today = Date.today
|
87
|
-
start_date = start.send(:to_date)
|
88
|
-
end_date = self.end.send(:to_date)
|
89
|
-
|
90
|
-
format = if start_date == today
|
91
|
-
"Today"
|
92
|
-
elsif start_date.month == today.month &&
|
93
|
-
start_date.year == today.year
|
94
|
-
"%a %e."
|
95
|
-
elsif start_date.year == today.year
|
96
|
-
"%a %e. %b"
|
97
|
-
else
|
98
|
-
"%a %e. %b %Y"
|
99
|
-
end
|
100
|
-
from = start.strftime(format << " %R")
|
101
|
-
|
102
|
-
format = if end_date == start_date
|
103
|
-
"%R"
|
104
|
-
elsif end_date == today
|
105
|
-
"Today %R"
|
106
|
-
elsif end_date.month == today.month &&
|
107
|
-
end_date.year == today.year
|
108
|
-
"%a %e. %R"
|
109
|
-
elsif end_date.year == today.year
|
110
|
-
"%a %e. %b %R"
|
111
|
-
else
|
112
|
-
"%a %e. %b %Y %R"
|
113
|
-
end
|
114
|
-
to = self.end.strftime(format)
|
115
|
-
|
116
|
-
sprintf "%s - %s", from, to
|
117
|
-
end
|
118
|
-
|
119
|
-
end
|