class Focuslight::ComplexGraph

Attributes

complex_graph[R]
data_rows[RW]
sumup[RW]

Public Class Methods

meta_clean(args={}) click to toggle source
# File lib/focuslight/graph.rb, line 234
def self.meta_clean(args={})
  args.delete_if do |k,v|
    %w(id service_name section_name graph_name number description sort).include?(k.to_s)
  end
end
new(row) click to toggle source
Calls superclass method Focuslight::Graph::new
# File lib/focuslight/graph.rb, line 172
def initialize(row)
  super

  uri = [:'type-1', :'path-1'].map{|k| @parsed_meta[k]}.join(':') + ':0' # stack

  data_rows = []

  first_row = {
    type: @parsed_meta[:'type-1'],
    path: @parsed_meta[:'path-1'].to_i,
    stack: false,
    graph_id: @parsed_meta[:'path-1'].to_i,
  }
  data_rows << first_row

  unless @parsed_meta[:'type-2'].is_a?(Array)
    [:'type-2', :'path-2', :'stack-2'].each do |key|
      @parsed_meta[key] = [@parsed_meta[key]].flatten
    end
  end

  @parsed_meta[:'type-2'].each_with_index do |type, i|
    t = @parsed_meta[:'type-2'][i]
    p = @parsed_meta[:'path-2'][i].to_i
    s = @parsed_meta[:'stack-2'][i].is_a?(String) ? !!(@parsed_meta[:'stack-2'][i] =~ /^(1|true)$/i) : !!@parsed_meta[:'stack-2'][i]
    uri += ':' + [t, p, (s ? '1' : '0')].join(':')
    data_rows << {type: t, path: p, stack: s, graph_id: p}
  end

  @sumup = @parsed_meta.fetch(:sumup, '0') != '0' # '0' is false
  @data_rows = data_rows
  @complex_graph = uri
end

Public Instance Methods

complex?() click to toggle source
# File lib/focuslight/graph.rb, line 215
def complex?
  true
end
to_hash() click to toggle source
Calls superclass method Focuslight::Graph#to_hash
# File lib/focuslight/graph.rb, line 206
def to_hash
  complex = {
    sumup: @sumup, data: @data_rows,
    complex: true
  }
  hash = super
  hash.merge(complex)
end
update(args={}) click to toggle source
# File lib/focuslight/graph.rb, line 219
def update(args={})
  meta = @parsed_meta.dup
  args.each do |k, v|
    case k.to_sym
    when :number then @number = v
    when :description then @description = v
    when :sort then @sort = v
    else
      meta[k.to_sym] = v
    end
  end
  @parsed_meta = self.class.meta_clean(@parsed_meta.merge(meta))
  @meta = @parsed_meta.to_json
end