class NetworkDrawer::Element::Node
Replesent of node
Constants
- DEFAULT_STYLE
Public Class Methods
new(initial_values = {}, style = {})
click to toggle source
Calls superclass method
NetworkDrawer::Element::Element::new
# File lib/network_drawer/element/node.rb, line 9 def initialize(initial_values = {}, style = {}) super @default_style = DEFAULT_STYLE end
Public Instance Methods
to_code()
click to toggle source
# File lib/network_drawer/element/node.rb, line 14 def to_code style = style(self.type).dup style.merge!(self.to_hash) self.max_column = style[:max_column] style.merge!(label: build_label, tooltip: self.name, URL: self.url ) style.delete(:ports) style.delete(:modules) "node(:\"#{self.id}\", #{style})" end
Private Instance Methods
build_label()
click to toggle source
# File lib/network_drawer/element/node.rb, line 26 def build_label label = '' label << port_label if [num_ports, num_modules].max > 0 label << "<tr border='1'><td border='1'" label << " colspan=\"#{num_columns}\">#{self.name}</td></tr>" else label << "<tr border='0'><td border='0'>#{self.name}</td></tr>" end label << module_label "<table border='0'>#{label}</table>" end
module_label()
click to toggle source
# File lib/network_drawer/element/node.rb, line 54 def module_label label = '' if num_modules > 0 label << "<tr border='1'>" self.modules.each_with_index do |p, i| label << "<td border='1' port=\"p#{p.to_s.gsub('/', '')}\">#{p}</td>" label << row_separator(i, num_modules) end label << '</tr>' end label end
num_columns()
click to toggle source
# File lib/network_drawer/element/node.rb, line 76 def num_columns number = [num_ports, num_modules, 1].max if self.max_column && self.max_column.respond_to?(:to_i) number = [self.max_column, number].min end number end
num_modules()
click to toggle source
# File lib/network_drawer/element/node.rb, line 92 def num_modules if self.modules && self.modules.respond_to?(:size) self.modules.size else 0 end end
num_ports()
click to toggle source
# File lib/network_drawer/element/node.rb, line 84 def num_ports if self.ports && self.ports.respond_to?(:size) self.ports.size else 0 end end
port_label()
click to toggle source
# File lib/network_drawer/element/node.rb, line 41 def port_label label = '' if num_ports > 0 label << "<tr border='1'>" self.ports.each_with_index do |p, i| label << "<td border='1' port=\"p#{p.to_s.gsub('/', '')}\">#{p}</td>" label << row_separator(i, num_ports) end label << '</tr>' end label end
row_separator(index, size)
click to toggle source
# File lib/network_drawer/element/node.rb, line 67 def row_separator(index, size) return '' unless self.max_column && self.max_column.to_i > 0 if ((index + 1) % self.max_column.to_i == 0) && index + 1 < size "</tr><tr border='1'>" else '' end end