Class: HasHelpers::Cards::CardBuilder::DefinitionContext
- Inherits:
-
Object
- Object
- HasHelpers::Cards::CardBuilder::DefinitionContext
- Defined in:
- app/models/has_helpers/cards/card_builder/definition_context.rb
Instance Method Summary collapse
-
#build_each ⇒ Object
Builds an array of normalized hashes (one per card).
-
#card(name, relationship: nil, relationship_klass: nil, identifier: nil, layout:, variant: nil, virtual: false, hover_only: nil, is_customizable: true, default_visibility: true, default_position: nil, scope: nil, icon_name: nil, icon_color: nil, &block) ⇒ Object
DSL:.
-
#initialize(owner_class) ⇒ DefinitionContext
constructor
A new instance of DefinitionContext.
-
#resources(&block) ⇒ Object
DSL:.
Constructor Details
#initialize(owner_class) ⇒ DefinitionContext
Returns a new instance of DefinitionContext.
7 8 9 10 11 12 |
# File 'app/models/has_helpers/cards/card_builder/definition_context.rb', line 7 def initialize(owner_class) @owner_class = owner_class @resource_builder = ResourceBuilder.new @card_builders = [] @next_card_position = 10 end |
Instance Method Details
#build_each ⇒ Object
Builds an array of normalized hashes (one per card).
60 61 62 63 64 65 66 67 68 69 70 |
# File 'app/models/has_helpers/cards/card_builder/definition_context.rb', line 60 def build_each if @resource_builder.resources.empty? raise ArgumentError, "At least one resource must be defined with `resources do ... end`" end if @card_builders.empty? raise ArgumentError, "No cards defined in #{@owner_class.name}" end @card_builders.flat_map(&:build) end |
#card(name, relationship: nil, relationship_klass: nil, identifier: nil, layout:, variant: nil, virtual: false, hover_only: nil, is_customizable: true, default_visibility: true, default_position: nil, scope: nil, icon_name: nil, icon_color: nil, &block) ⇒ Object
DSL:
card "Demographics", relationship: "demographics", identifier: "CardIdentifier::DEMOGRAPHICS", layout: LayoutType::KEY_VALUE, variant: VariantType::EMAILS
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 |
# File 'app/models/has_helpers/cards/card_builder/definition_context.rb', line 33 def card(name, relationship: nil, relationship_klass: nil, identifier: nil, layout:, variant: nil, virtual: false, hover_only: nil, is_customizable: true, default_visibility: true, default_position: nil, scope: nil, icon_name: nil, icon_color: nil, &block) default_position ||= next_card_position! builder = CardDefinitionBuilder.new( name: name, relationship: relationship, relationship_klass: relationship_klass, identifier: identifier, layout: layout, resources: @resource_builder.resources, variant: variant, virtual: virtual, hover_only: hover_only, is_customizable: is_customizable, default_visibility: default_visibility, default_position: default_position, scope: scope, icon_name: icon_name, icon_color: icon_color, owner_class: @owner_class ) builder.instance_eval(&block) if block @card_builders << builder end |
#resources(&block) ⇒ Object
DSL:
resources do add Advisor add Client end
20 21 22 23 24 |
# File 'app/models/has_helpers/cards/card_builder/definition_context.rb', line 20 def resources(&block) raise ArgumentError, "resources block required" unless block @resource_builder.instance_eval(&block) end |