/
application_helper.rb
126 lines (106 loc) · 3.21 KB
/
application_helper.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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
126
require 'json'
module ApplicationHelper
def strip_braces(str=nil)
str ? str.gsub(/\{/, "").gsub(/\}/, "") : nil
end
def strike_if(str, condition=true)
condition ? "<s>#{str}</s>" : str
end
def display_blanks(value)
if blank?(value)
"---"
else
value
end
end
def blank?(value)
value.nil? || value == "" || value.length==0
end
def display_blankstr(value)
if blank?(value)
" "
else
value
end
end
def display_newline()
"<br>"
end
def display_space()
" "
end
def display_dollars(value)
if blank?(value)
" "
else
number = "$" + sprintf("%.2f", value)
# use a commify algorithm -- http://snippets.dzone.com/tag/commify
number.reverse!
number.gsub!(/(\d\d\d)(?=\d)(?!\d*\.)/, '\1,')
number.reverse!
end
end
def display_number(value)
if blank?(value)
" "
else
sprintf("%.2f", value)
end
end
def both_items_present?(value1, value2)
!blank?(value1) && !blank?(value2)
end
def replace_newlines(value)
if blank?(value)
" "
else
value.gsub('\n', ' ')
end
end
def format_address_for_mapping(street, city, state, zip, tagforurl)
# handle case where fields could be nil
mystreet = !street.nil? ? street : ""
mycity = !city.nil? ? city : ""
mystate = !state.nil? ? state : ""
myzip = !zip.nil? ? zip : ""
result = ""
if !tagforurl
# build up address string
result += (mystreet + ", ") if mystreet.length > 0
result += (mycity + ", ") if mycity.length > 0
result += (mystate + " ") if mystate.length > 0
result += myzip if myzip.length > 0
else
# need to URL encode data too
result += ("&street=" + Rho::RhoSupport.url_encode(mystreet)) if mystreet.length > 0
result += ("&city=" + Rho::RhoSupport.url_encode(mycity)) if mycity.length > 0
result += ("&state=" + Rho::RhoSupport.url_encode(mystate)) if mystate.length > 0
result += ("&zip=" + Rho::RhoSupport.url_encode(myzip)) if myzip.length > 0
end
# remove any extraneous characters that could interfere with proper address matching
result = replace_newlines(result)
end
def has_valid_mapping_address(street, city, state, zip)
# at a minimum, an address must have a state or a zip
(!state.nil? && state.length > 0) || (!zip.nil? && zip.length > 0)
end
def format_latlon_for_mapping(latitude, longitude)
result = ""
result += ("&latitude=" + Rho::RhoSupport.url_encode(latitude)) if latitude.length > 0
result += ("&longitude=" + Rho::RhoSupport.url_encode(longitude)) if longitude.length > 0
result
end
def render_transition(params)
@params["rho_callback"] = nil
params[:layout] = false
# TODO: escape carriage returns instead of removing them altoegether
content = render(params).split('\'').join('\\\'').split(/[\r\n]/).join('')
WebView.execute_js("Rho.insertAsyncPage('<div>#{content}</div>')")
end
def caller_request_hash_to_query
'caller_request=' + Rho::RhoSupport.url_encode(::JSON.generate(@request))
end
def caller_request_query_to_hash
@caller_request = Rho::JSON.parse(@params['caller_request']) if @params['caller_request']
end
end