Module: Archimate::FileFormats::Serializer::ModelExchangeFile::V21::ViewNode

Included in:
ModelExchangeFileWriter21
Defined in:
lib/archimate/file_formats/serializer/model_exchange_file/v21/view_node.rb

Instance Method Summary collapse

Instance Method Details

#serialize_view_node(xml, view_node, x_offset = 0, y_offset = 0) ⇒ Object



9
10
11
12
13
14
15
16
17
18
# File 'lib/archimate/file_formats/serializer/model_exchange_file/v21/view_node.rb', line 9

def serialize_view_node(xml, view_node, x_offset = 0, y_offset = 0)
  attrs = view_node_attrs(view_node, x_offset, y_offset)
  xml.node(attrs) do
    serialize_label(xml, view_node.name) if attrs[:type] == "group"
    serialize(xml, view_node.style) if view_node.style
    view_node.nodes.each do |c|
      serialize_view_node(xml, c) # , attrs[:x].to_f, attrs[:y].to_f)
    end
  end
end

#view_node_attrs(view_node, x_offset = 0, y_offset = 0) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/archimate/file_formats/serializer/model_exchange_file/v21/view_node.rb', line 20

def view_node_attrs(view_node, x_offset = 0, y_offset = 0)
  attrs = {
    identifier: identifier(view_node.id),
    elementref: nil,
    x: view_node.bounds ? (view_node.bounds&.x + x_offset).round : nil,
    y: view_node.bounds ? (view_node.bounds&.y + y_offset).round : nil,
    w: view_node.bounds&.width&.round,
    h: view_node.bounds&.height&.round,
    type: view_node.child_type
  }
  if view_node.element
    attrs[:elementref] = identifier(view_node.element.id)
  elsif view_node.view_refs
    # Since it doesn't seem to be forbidden, we just assume we can use
    # the elementref for views in views
    attrs[:elementref] = view_node.view_refs
  end
  attrs.compact
end