Class: Ea::Diagram::ElementRenderers::ConnectorRenderer

Inherits:
BaseRenderer
  • Object
show all
Defined in:
lib/ea/diagram/element_renderers/connector_renderer.rb

Overview

Renderer for connector elements (relationships)

Instance Attribute Summary collapse

Attributes inherited from BaseRenderer

#element, #style_resolver

Instance Method Summary collapse

Methods inherited from BaseRenderer

#escape_text, #render_label, #render_shape

Methods included from Util

#parse_ea_geometry, #parse_geometry_offsets, #style_to_css

Constructor Details

#initialize(connector, style_resolver, source_element = nil, target_element = nil) ⇒ ConnectorRenderer

Returns a new instance of ConnectorRenderer.



10
11
12
13
14
15
# File 'lib/ea/diagram/element_renderers/connector_renderer.rb', line 10

def initialize(connector, style_resolver, source_element = nil,
               target_element = nil)
  super(connector, style_resolver)
  @source_element = source_element
  @target_element = target_element
end

Instance Attribute Details

#source_elementObject (readonly)

Returns the value of attribute source_element.



8
9
10
# File 'lib/ea/diagram/element_renderers/connector_renderer.rb', line 8

def source_element
  @source_element
end

#target_elementObject (readonly)

Returns the value of attribute target_element.



8
9
10
# File 'lib/ea/diagram/element_renderers/connector_renderer.rb', line 8

def target_element
  @target_element
end

Instance Method Details

#renderString

Render the connector as SVG path

Returns:

  • (String)

    SVG content for the connector



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/ea/diagram/element_renderers/connector_renderer.rb', line 19

def render
  path_builder = PathBuilder.new(element, source_element,
                                 target_element)
  path_data = path_builder.build_path

  style = style_resolver.resolve_connector_style(element)

  css_classes = ["lutaml-diagram-connector",
                 "lutaml-diagram-connector-#{element[:type]}"]

  <<~SVG
    <path d="#{path_data}"
          class="#{css_classes.join(' ')}"
          style="#{style_to_css(style)}"
          data-connector-id="#{element[:id]}"
          data-connector-type="#{element[:type]}"
          marker-end="url(#arrowhead)" />
  SVG
end