Class: Formotion::RowType::DateRow
Constant Summary
Constants inherited
from StringRow
StringRow::TEXT_FIELD_TAG
Instance Attribute Summary
Attributes inherited from Base
#row, #tableView
Instance Method Summary
collapse
#add_callbacks, #build_cell
Methods inherited from StringRow
#add_callbacks, #build_cell, #done_editing, #keyboardType, #on_select, #row_value
Methods inherited from Base
#_on_select, #after_delete, #break_with_semaphore, #build_cell, #button?, #cellEditingStyle, #cell_style, #delete_row, #done_editing, field_buffer, #indentWhileEditing?, #initialize, #input_accessory_view, #on_delete, #on_select, #update_cell, #with_semaphore
Instance Method Details
#after_build(cell) ⇒ Object
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/formotion/row_type/date_row.rb', line 41
def after_build(cell)
self.row.text_field.inputView = self.picker
if row.picker_mode == :countdown
self.picker.setDate(self.picker.date, animated:true)
picker.countDownDuration = self.row.value.to_f
end
update
end
|
#date_value ⇒ Object
17
18
19
20
21
22
23
24
|
# File 'lib/formotion/row_type/date_row.rb', line 17
def date_value
value = self.row.value
if value.is_a? Numeric
Time.at value
else
nil
end
end
|
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
# File 'lib/formotion/row_type/date_row.rb', line 87
def formatted_value
if self.date_value
return case self.row.picker_mode
when :time
old_date_style = formatter.dateStyle
formatter.dateStyle = NSDateFormatterNoStyle
formatter.timeStyle = NSDateFormatterShortStyle
formatted = formatter.stringFromDate(self.date_value)
formatter.dateStyle = old_date_style
formatter.timeStyle = NSDateFormatterNoStyle
formatted
when :date_time
old_date_style = formatter.dateStyle
formatter.dateStyle = NSDateFormatterShortStyle
formatter.timeStyle = NSDateFormatterShortStyle
formatted = formatter.stringFromDate(self.date_value)
formatter.dateStyle = old_date_style
formatter.timeStyle = NSDateFormatterNoStyle
formatted
when :countdown
time = self.row.value
date = NSDate.dateWithTimeIntervalSinceReferenceDate(time)
old_date_style = formatter.dateStyle
old_time_zone = formatter.timeZone
formatter.dateFormat = "HH:mm"
formatter.timeZone = NSTimeZone.timeZoneForSecondsFromGMT(0)
formatted = formatter.stringFromDate(date)
formatter.dateStyle = old_date_style
formatter.timeZone = old_time_zone
formatter.dateFormat = nil
formatted
else
formatter.stringFromDate(self.date_value)
end
end
self.row.value
end
|
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/formotion/row_type/date_row.rb', line 26
def formatter
@formatter ||= begin
formatter = NSDateFormatter.new
date_style = self.row.format
if date_style && date_style.to_s[-5..-1] != "style"
date_style = (date_style.to_s + "_style").to_sym
end
formatter.dateStyle = self.row.send(:const_int_get, "NSDateFormatter", date_style || NSDateFormatterShortStyle)
formatter.timeStyle = NSDateFormatterNoStyle
formatter
end
end
|
#on_change(text_field) ⇒ Object
overwrite Character on_change method
10
11
|
# File 'lib/formotion/row_type/date_row.rb', line 10
def on_change(text_field)
end
|
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# File 'lib/formotion/row_type/date_row.rb', line 52
def picker
@picker ||= begin
picker = UIDatePicker.alloc.initWithFrame(CGRectZero)
picker.datePickerMode = self.picker_mode
picker.hidden = false
picker.date = self.date_value || Time.now
picker.countDownDuration = self.row.value if row.picker_mode == :countdown
picker.minuteInterval = self.row.minute_interval if self.row.minute_interval
picker.when(UIControlEventValueChanged) do
if self.row.picker_mode == :countdown
self.row.value = @picker.countDownDuration
else
self.row.value = Time.at(@picker.date).to_i
end
update
end
picker
end
end
|
#picker_mode ⇒ Object
74
75
76
77
78
79
80
81
82
83
84
85
|
# File 'lib/formotion/row_type/date_row.rb', line 74
def picker_mode
case self.row.picker_mode
when :time
UIDatePickerModeTime
when :date_time
UIDatePickerModeDateAndTime
when :countdown
UIDatePickerModeCountDownTimer
else
UIDatePickerModeDate
end
end
|
13
14
15
|
# File 'lib/formotion/row_type/date_row.rb', line 13
def update
self.row.text_field && self.row.text_field.text = self.formatted_value
end
|
#update_text_field(new_value) ⇒ Object
Used when row.value changes
128
129
130
|
# File 'lib/formotion/row_type/date_row.rb', line 128
def update_text_field(new_value)
self.row.text_field.text = self.formatted_value
end
|