class HAccordionMenu

Attributes

mainView[R]

Public Class Methods

appendChild1(parent, root = []) click to toggle source
# File lib/hwidgets/haccordionmenu.rb, line 94
def self.appendChild1(parent, root = [])
  parent.children.each do |item|
    next if item.name == "text"
    menuItem = item.to_h.symbolize_keys
    if item.name == "menusection"
      menuItem[:type] = "section" unless menuItem[:type]
      menuItem[:content] = self.appendChild1(item) 
    elsif item.name == "menuitem"
      menuItem[:type] = "link"
    end
    root << menuItem
  end
  return root 

end
loadMenuByModuleName(moduleName: nil, mainView: nil) click to toggle source
# File lib/hwidgets/haccordionmenu.rb, line 110
def self.loadMenuByModuleName(moduleName: nil, mainView: nil)
  menuView = hv().viewByFileName(moduleName, "app/modules/#{moduleName}/menu_view.xml")
  items = self.appendChild1(menuView.hypersonic)
  return HAccordionMenu.new(items: items, id: moduleName, mainView: mainView).html()
end
new(items: [], id: nil, mainView: nil) click to toggle source
Calls superclass method HDivTag::new
# File lib/hwidgets/haccordionmenu.rb, line 5
def initialize(items: [], id: nil, mainView: nil)
  super(class: "haccordion-menu")
  self.set(id: id) if id
  #self.appendChild(HWidget.new("style", "##{id}:target { display: block; }", scoped: nil));
  @items = items
  @mainView = mainView
end
test1() click to toggle source
# File lib/hwidgets/haccordionmenu.rb, line 56
def self.test1()

  subSection = [
    {type: 'section', name: 'Section-A', content:[
      {type: 'link', name: 'Section-a1', href:'#'},
      {type: 'link', name: 'Section-a2', href:'#'},
      {type: 'link', name: 'Section-a3', href:'#'}
    ]
    },

    {type: 'section', name: 'Section-B', content:[
      {type: 'link', name: 'Section-b1', href:'#'},
      {type: 'link', name: 'Section-b2', href:'#'},
      {type: 'link', name: 'Section-b3', href:'#'}
    ]
    },
  ]

  openSection = [{type: 'link', name: 'O-Section1', href:'#', icon: 'glyphicon glyphicon-user'},
                 {type: 'link', name: 'O-Section2', href:'#'},
                 {type: 'link', name: 'O-Section3', href:'#'}
  ]

  items = [
    {type: 'section', name: 'Section-A', content:[
      {type: 'link', name: 'Section-a1', href:'#'},
      {type: 'link', name: 'Section-a2', href:'#'},
      {type: 'link', name: 'Section-a3', href:'#'}
    ]
    },

    {type: 'section', name: 'Section-B', content: subSection},
    {type: 'open-section', name: 'Open Section', content: openSection},
  ]
  return HAccordionMenu.new(items).html()

end

Public Instance Methods

a(innerHTML = '', icon: nil, **args) click to toggle source
# File lib/hwidgets/haccordionmenu.rb, line 18
def a(innerHTML = '', icon: nil, **args)

  a = HWidget.new("a", "", args)
  a << HWidget.new('span', class: icon) if icon
  a << HWidget.new('span', innerHTML)
  return a

end
addItem(value) click to toggle source
# File lib/hwidgets/haccordionmenu.rb, line 13
def addItem(value)
  @items << value
  return self
end
appendChildren(parent, items) click to toggle source
# File lib/hwidgets/haccordionmenu.rb, line 33
def appendChildren(parent, items)

  items.each do |value|
    if(value[:type] == 'link')
      ref =  eval(value[:ref]) if value[:ref]
      parent << link = (self.a(value[:name], icon: value[:icon]))
      link.connect(:onclick, self, "onClick", id: @mainView.oid, args: ref)
    elsif(value[:type].include? 'section' )
      parent.appendChild( HDivTag.new(value[:name], class: "#{value[:type]}-name") )
      sectionContentDiv = HDivTag.new(class: "#{value[:type]}-content")
      parent.appendChild(sectionContentDiv)
      self.appendChildren(sectionContentDiv, value[:content])
    end
  end

end
html() click to toggle source
Calls superclass method HWidget#html
# File lib/hwidgets/haccordionmenu.rb, line 51
def html()
  self.appendChildren(self, @items)
  return super
end
onClick(moduleName: nil, modelName: nil) click to toggle source
# File lib/hwidgets/haccordionmenu.rb, line 27
def onClick(moduleName: nil, modelName: nil)
  hl << "HAccordionMenu.onClick (#{moduleName} - #{modelName})".red
  return @mainView.html(moduleName: moduleName, modelName: modelName)
end