Class: Coupdoeil::Hovercard
- Inherits:
-
AbstractController::Base
- Object
- AbstractController::Base
- Coupdoeil::Hovercard
show all
- Includes:
- AbstractController::Caching, AbstractController::Callbacks, AbstractController::Helpers, AbstractController::Logger, AbstractController::Rendering, AbstractController::Translation, ActionView::Layouts, ActionView::Rendering
- Defined in:
- app/models/coupdoeil/hovercard.rb,
app/models/coupdoeil/hovercard/setup.rb,
app/models/coupdoeil/hovercard/option.rb,
app/models/coupdoeil/hovercard/registry.rb,
app/models/coupdoeil/hovercard/options_set.rb,
app/models/coupdoeil/hovercard/option/cache.rb,
app/models/coupdoeil/hovercard/option/offset.rb,
app/models/coupdoeil/hovercard/option/loading.rb,
app/models/coupdoeil/hovercard/option/trigger.rb,
app/models/coupdoeil/hovercard/option/animation.rb,
app/models/coupdoeil/hovercard/option/placement.rb,
app/models/coupdoeil/hovercard/view_context_delegation.rb
Defined Under Namespace
Modules: ViewContextDelegation
Classes: Option, OptionsSet, Registry, Setup
Constant Summary
collapse
- DoubleRenderError =
Class.new(::AbstractController::DoubleRenderError)
Class Attribute Summary collapse
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(params, cp_view_context) ⇒ Hovercard
Returns a new instance of Hovercard.
83
84
85
86
87
|
# File 'app/models/coupdoeil/hovercard.rb', line 83
def initialize(params, cp_view_context)
super()
@params = params
@__cp_view_context = cp_view_context
end
|
Class Attribute Details
.registry ⇒ Object
Returns the value of attribute registry.
45
46
47
|
# File 'app/models/coupdoeil/hovercard.rb', line 45
def registry
@registry
end
|
Instance Attribute Details
#params ⇒ Object
Returns the value of attribute params.
81
82
83
|
# File 'app/models/coupdoeil/hovercard.rb', line 81
def params
@params
end
|
Class Method Details
.default_options ⇒ Object
56
|
# File 'app/models/coupdoeil/hovercard.rb', line 56
def default_options(...) = default_options_for(DEFAULT_OPTIONS_KEY, ...)
|
.default_options_for(*action_names, **option_values) ⇒ Object
58
59
60
61
62
63
64
65
66
67
|
# File 'app/models/coupdoeil/hovercard.rb', line 58
def default_options_for(*action_names, **option_values)
if option_values.blank?
@default_options_by_method[action_names.first] || default_options
else
action_names.each do |action_name|
options = @default_options_by_method[action_name] || default_options
@default_options_by_method[action_name] = options.merge(OptionsSet.new(option_values))
end
end
end
|
.hovercard_resource_name ⇒ Object
47
|
# File 'app/models/coupdoeil/hovercard.rb', line 47
def hovercard_resource_name = @hovercard_resource_name ||= name.delete_suffix("Hovercard").underscore
|
.inherited(subclass) ⇒ Object
50
51
52
53
54
|
# File 'app/models/coupdoeil/hovercard.rb', line 50
def inherited(subclass)
super
Coupdoeil::Hovercard.registry.register(subclass.hovercard_resource_name, subclass)
subclass.instance_variable_set(:@default_options_by_method, @default_options_by_method.dup)
end
|
.method_missing(method_name, *args) ⇒ Object
69
70
71
72
73
74
|
# File 'app/models/coupdoeil/hovercard.rb', line 69
def method_missing(method_name, *args, &)
return super unless action_methods.include?(method_name.name)
raise ArgumentError, "expected no arguments" if args.any?
Setup.new(self).with_type(method_name)
end
|
.respond_to_missing?(method, include_all = false) ⇒ Boolean
76
77
78
|
# File 'app/models/coupdoeil/hovercard.rb', line 76
def respond_to_missing?(method, include_all = false)
action_methods.include?(method.name) || super
end
|
.with ⇒ Object
48
|
# File 'app/models/coupdoeil/hovercard.rb', line 48
def with(...) = Setup.new(self).with_params(...)
|
Instance Method Details
#controller ⇒ Object
90
|
# File 'app/models/coupdoeil/hovercard.rb', line 90
def controller = @__cp_view_context.controller
|
#helpers ⇒ Object
89
|
# File 'app/models/coupdoeil/hovercard.rb', line 89
def helpers = @__cp_view_context
|
#process(method_name) ⇒ Object
106
107
108
109
110
111
112
113
|
# File 'app/models/coupdoeil/hovercard.rb', line 106
def process(method_name, *)
benchmark("processed hovercard #{self.class.hovercard_resource_name}/#{method_name}", silence: true) do
ActiveSupport::Notifications.instrument("render_hovercard.coupdoeil") do
super
response_body || render(action_name)
end
end
end
|
#render ⇒ Object
99
100
101
102
103
104
|
# File 'app/models/coupdoeil/hovercard.rb', line 99
def render(...)
return super unless response_body
raise DoubleRenderError, "Render was called multiple times in this action. \
Also note that render does not terminate execution of the action."
end
|
#view_context ⇒ Object
92
93
94
95
96
97
|
# File 'app/models/coupdoeil/hovercard.rb', line 92
def view_context
super.tap do |context|
context.extend ViewContextDelegation
context.__cp_view_context = @__cp_view_context
end
end
|