class HWidget
Attributes
tag[R]
Public Class Methods
new(tag = nil, innerHTML = "", **args)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 65 def initialize(tag = nil, innerHTML = "", **args) @tag = tag @properties = {} @systemProperties = {} @placeholders = {} @innerHTML = innerHTML @parent = nil @childs = [] @styles = {} @enablePlaceholder = false # va automaticamente a true con setPlaceholder @closeTag = true # se false il tag non viene chiuso - serve ad es. per input @slots = {} self.set(args) end
test()
click to toggle source
# File lib/hwidgets/hwidget.rb, line 374 def self.test() widget = HWidget.new('div', "new_div") widget.set(title1: 't1', title2: 't2', title3: 't3', title4: '') widget.set(title2: nil) widget.setStyle(color: 'red') puts widget.openTag puts widget.html puts widget.closeTag end
widgetSpace()
click to toggle source
# File lib/hwidgets/hwidget.rb, line 388 def self.widgetSpace() puts "###########################################################".hight_white puts "# #".hight_white puts "# Hypersonic Object Space #".hight_white puts "# #".hight_white puts "###########################################################".hight_white objs = [] ObjectSpace.each_object() {|obj| objs << obj if obj.class <= HWidget } objs.each do |obj| puts "#{obj.object_id.to_s.hight_purple}: #{obj.class.to_s.yellow} - #{obj.tag.hight_cyan} #{obj.get(:class)}" end #puth ObjectSpace.count_objects return "Total Widgets: #{objs.length}".green end
Public Instance Methods
_addJsSlot(eventName, functionName, overwrite = false, *args)
click to toggle source
supporta piu' funzioni per lo stesso evento @slots e' un hash di array di hash
# File lib/hwidgets/hwidget.rb, line 181 def _addJsSlot(eventName, functionName, overwrite = false, *args) @slots.delete(eventName) if overwrite @slots[eventName] = Array.new() unless(@slots[eventName]) @slots[eventName] << {functionName: functionName, args: args} return self end
_set(property, value, overwrite = false)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 125 def _set(property, value, overwrite = false) @properties[property] = value if (!@properties.key?(property) || overwrite) #@properties.delete(property) unless (value) return self end
_setStyle(property, value)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 312 def _setStyle(property, value) unless (value) @styles.delete(property) return self end @styles[property] = value return self end
addJsFunction(eventName, functionName, *args)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 156 def addJsFunction(eventName, functionName, *args) function = "" if(@properties[eventName]) function = "#{@properties[eventName]}; " end function = self.buildSignature(function, functionName, *args) return self.set("#{eventName}": function, overwrite: true) end
appendChild(widget)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 113 def appendChild(widget) return self.appendChilds(widget) if widget.class == Array widget.setParent(self) @childs << widget return self end
Also aliased as: <<
appendChilds(widgets)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 108 def appendChilds(widgets) widgets.each { |widget| self.appendChild(widget) } return self end
buildSignature(function, functionName, *args)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 141 def buildSignature(function, functionName, *args) params = ['this'] args.each do |arg| if(arg.class == Symbol) params << arg # se passo un simbolo ad es. event else params << arg.to_js_format end end return "#{function}#{functionName}(#{params.join(",")})" end
closeTag()
click to toggle source
# File lib/hwidgets/hwidget.rb, line 294 def closeTag() return "" unless (@tag) return (@closeTag) ? HIO.htmlEcholnCloseBlock("</#{@tag}>") : "" end
connect(event, receiver, method, attributes: :null, id: "
click to toggle source
id deve essere un oid
# File lib/hwidgets/hwidget.rb, line 232 def connect(event, receiver, method, attributes: :null, id: "#id", args: nil, overwrite: false, **options) oid = hm().malloc({receiver: receiver, method: method, args: args}, id).obj.object_id.to_s options[:getElem] = "byId" unless options[:getElem] options[:mode] = "set" unless options[:mode] cks = Digest::SHA256.hexdigest oid + hc.value("secret_token") cks += "-" + Time.now.to_i.to_s # serve (forse) in caso di riallocazione dello stesso indirizzo di memoria hotLog( "HWidget::connect(id: #{id}, oid: #{oid} - #{options[:hotLog].green}" ) if options[:hotLog] return self._addJsSlot(event, :'return hajax.signalManager', overwrite, attributes, options, id, oid, cks) end
copyConstructor()
click to toggle source
# File lib/hwidgets/hwidget.rb, line 82 def copyConstructor return Marshal.load(Marshal.dump(self)) end
get(property)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 243 def get(property) return @properties[property] end
getChilds()
click to toggle source
# File lib/hwidgets/hwidget.rb, line 41 def getChilds() return @childs end
getElementBy(property, value, searchType)
click to toggle source
searchType 0: serch only among childs searchType 1: search top down starting from childs
# File lib/hwidgets/hwidget.rb, line 97 def getElementBy(property, value, searchType) result = (self.properties.key?(property) and self.properties[properties] == value) ? [self] : nil @childs.each do |child| result << child if child.properties.key?(property) and child.properties[property] == value end @childs.each { |child| result += child.getElementBy(property, value, searchType) } if searchType == 1 return result end
getSystemProperty(property)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 365 def getSystemProperty(property) return @systemProperties[property] end
hotLog(str)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 258 def hotLog(str) HHotLogger.append(str, "log4widgets") end
html()
click to toggle source
# File lib/hwidgets/hwidget.rb, line 304 def html() html = @innerHTML @childs.each { |child| html += child.html() } return self.openTag() + HIO.htmlEcholn(html) + self.closeTag() end
openTag()
click to toggle source
# File lib/hwidgets/hwidget.rb, line 284 def openTag() return "" unless (@tag) slash = (@closeTag) ? "" : "/" result = self.strProperties() return HIO.htmlEcholnOpenBlock("<#{@tag} #{result}#{slash}>") end
replacePlaceholder(str)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 247 def replacePlaceholder(str) return str unless @enablePlaceholder @placeholders.each do |key, value| str = str.gsub(key, value.to_s) end return str end
reset()
click to toggle source
# File lib/hwidgets/hwidget.rb, line 299 def reset() @parent = nil @childs = [] end
set(overwrite: false, **properties)
click to toggle source
set property
# File lib/hwidgets/hwidget.rb, line 132 def set(overwrite: false, **properties) properties.each do |property, value| self._set(property, value, overwrite) end return self end
setChilds(childs)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 36 def setChilds(childs) @childs = childs return self end
setCloseTag(closeTag)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 55 def setCloseTag(closeTag) @closeTag = closeTag return self end
setClosedTag(bool=true)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 369 def setClosedTag(bool=true) @closeTag = bool return self end
setEnablePlaceholder(enablePlaceholder = true)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 50 def setEnablePlaceholder(enablePlaceholder = true) @enablePlaceholder = enablePlaceholder return self end
setInnerHTML(innerHTML)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 26 def setInnerHTML(innerHTML) @innerHTML = innerHTML return self end
setParent(parent)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 31 def setParent(parent) @parent = parent return self end
setPlaceholder(placeholder, value)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 344 def setPlaceholder(placeholder, value) @enablePlaceholder = true unless (value) @placeholders.delete(placeholder) return self end @placeholders[placeholder] = value return self end
setPlaceholders(placeholders)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 21 def setPlaceholders(placeholders) @placeholders = placeholders return self end
setProperties(properties)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 11 def setProperties(properties) @properties = properties return self end
setSlots(slots)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 60 def setSlots(slots) @slots = slots return self end
setStyle(**properties)
click to toggle source
set style
# File lib/hwidgets/hwidget.rb, line 324 def setStyle(**properties) properties.each do |property, value| self._setStyle(property, value) end return self end
setStyles(styles)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 45 def setStyles(styles) @styles = styles return self end
setSystemProperties(systemProperties)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 16 def setSystemProperties(systemProperties) @systemProperties = systemProperties return self end
setSystemProperty(property, value)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 356 def setSystemProperty(property, value) unless (value) @systemProperties.delete(property) return self end @systemProperties[property] = value return self end
setTag(tag)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 6 def setTag(tag) @tag = tag return self end
storeSlots()
click to toggle source
# File lib/hwidgets/hwidget.rb, line 169 def storeSlots @slots.each do |key, elem| elem.each do |value| self.addJsFunction(key, value[:functionName], *value[:args]) end end end
storeStyle()
click to toggle source
# File lib/hwidgets/hwidget.rb, line 331 def storeStyle() return "" if @styles.empty? result = "" @styles.each do |key, value| result += "#{key}:#{value}; " end self.set(style: result) end
strProperties()
click to toggle source
# File lib/hwidgets/hwidget.rb, line 262 def strProperties() propertiesTmp = Marshal.load(Marshal.dump(@properties)) self.storeSlots() self.storeStyle() return "" if @properties.empty? result = "" @properties.each do |key, value| if(value) value = self.replacePlaceholder(value) result += "#{key}=\"#{value}\" " else result += "#{key} " end end @properties = propertiesTmp return result end
unset(property)
click to toggle source
# File lib/hwidgets/hwidget.rb, line 121 def unset(property) @properties.delete(property) end