Skip to content

Commit

Permalink
Changed data-name to data-observed on observe_field
Browse files Browse the repository at this point in the history
  • Loading branch information
foobarfighter authored and stefanpenner committed Jan 27, 2010
1 parent 261654b commit 8e172f1
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 18 deletions.
30 changes: 19 additions & 11 deletions actionpack/lib/action_view/helpers/ajax_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -55,20 +55,12 @@ def periodically_call_remote(options = {})
end

def observe_field(name, options = {})
attributes = extract_remote_attributes!(options)
callback = options.delete(:function)
frequency = options.delete(:frequency)
options[:observed] = name

attributes["data-name"] = name
attributes = extract_remote_attributes!(options)
attributes.merge!(extract_observer_attributes!(options))
attributes["data-js-type"] = "field_observer"

if callback
attributes["data-observer-code"] = create_js_function(callback, "element", "value")
end
if frequency && frequency != 0
attributes["data-frequency"] = frequency.to_i
end

script_decorator(attributes)
end

Expand Down Expand Up @@ -146,6 +138,22 @@ def extract_update_attributes!(options)
purge_unused_attributes!(attributes)
end

def extract_observer_attributes!(options)
attributes = {}
attributes["data-observed"] = options.delete(:observed)

callback = options.delete(:function)
frequency = options.delete(:frequency)
if callback
attributes["data-observer-code"] = create_js_function(callback, "element", "value")
end
if frequency && frequency != 0
attributes["data-frequency"] = frequency.to_i
end

attributes
end

def purge_unused_attributes!(attributes)
attributes.delete_if {|key, value| value.nil? }
attributes
Expand Down
14 changes: 7 additions & 7 deletions actionpack/test/javascript/ajax_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -382,17 +382,17 @@ def field(options = {})

test "using a url string" do
assert_html field(:url => "/some/other/url"),
%w(script data-url="/some/other/url" data-name="title")
%w(script data-url="/some/other/url" data-observed="title")
end

test "using a url hash" do
assert_html field(:url => {:controller => :blog, :action => :update}),
%w(script data-url="/url/hash" data-name="title")
%w(script data-url="/url/hash" data-observed="title")
end

test "using a :frequency option" do
assert_html field(:url => { :controller => :blog }, :frequency => 5.minutes),
%w(script data-url="/url/hash" data-name="title" data-frequency="300")
%w(script data-url="/url/hash" data-observed="title" data-frequency="300")
end

test "using a :frequency option of 0" do
Expand All @@ -401,21 +401,21 @@ def field(options = {})

test "observe field with common options" do
assert_html observe_field("glass", :frequency => 5.minutes, :url => { :action => "reorder_if_empty" }),
%w(script data-name="glass" data-frequency="300" data-url="/url/hash")
%w(script data-observed="glass" data-frequency="300" data-url="/url/hash")
end

# TODO: Consider using JSON instead of strings. Is using 'value' as a magical reference to the value of the observed field weird? (Rails2 does this) - BR
test "using a :with option" do
assert_html field(:with => "foo"),
%w(script data-name="title" data-with="'foo=' + encodeURIComponent(value)")
%w(script data-observed="title" data-with="'foo=' + encodeURIComponent(value)")

assert_html field(:with => "'foo=' + encodeURIComponent(value)"),
%w(script data-name="title" data-with="'foo=' + encodeURIComponent(value)")
%w(script data-observed="title" data-with="'foo=' + encodeURIComponent(value)")
end

test "using json in a :with option" do
assert_html field(:with => "{'id':value}"),
%w(script data-name="title" data-with="{'id':value}")
%w(script data-observed="title" data-with="{'id':value}")
end

test "using :function for callback" do
Expand Down

0 comments on commit 8e172f1

Please sign in to comment.