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