class HDBDialogView

Attributes

cancelButton[RW]
closeButton[RW]
dialogLevel[RW]
modelName[RW]
odb[RW]
oid[RW]

Public Class Methods

initByTableView(id, dbTableView) click to toggle source
# File lib/hwidgets/hdbdialogview.rb, line 27
def self.initByTableView(id, dbTableView)
  return HDBDialogView.new(id, dbTableView.moduleName, dbTableView.odb, dbTableView.oid, dbTableView.dialogLevel)
end
new(id, moduleName, odb, poid, dialogLevel) click to toggle source
Calls superclass method HWidget::new
# File lib/hwidgets/hdbdialogview.rb, line 5
def initialize(id, moduleName, odb, poid, dialogLevel)
  super("form", method: "POST")
  @moduleName = moduleName
  @modelName = odb.modelName.to_s
  @oid = hm().malloc(self, poid).obj.object_id.to_s
  @dialogLevel = dialogLevel + 1
  @id = id
  @formFields = self.formFields()
  @fieldTable = HSpreadFieldTable.new()
  @fieldTable.addFieldName(0)
  @fieldTable.addFieldName(1)
  @tableView = HTableView.new(fieldTable: @fieldTable)
  @tableView.set(align: "center")
  @tabs = {}
  @tabView = HTabView.new(@tabs, @modelName)
  @odb = odb
  
  @dialogHeader = self.dialogHeader()
  @dialogFooter = self.dialogFooter()
 
end

Public Instance Methods

addJsf(formField, jsfList) click to toggle source
# File lib/hwidgets/hdbdialogview.rb, line 91
def addJsf(formField, jsfList)

  if(jsfList)
    jsfList.each do |jsf| 
      formField.addJsFunction(jsf[0], jsf[1], *jsf.drop(2))
    end
  end

end
dialogFooter() click to toggle source
# File lib/hwidgets/hdbdialogview.rb, line 139
def dialogFooter
  
  @cancelButton = HWidget.new("button").set(type: "button", class: "cancel-btn").setInnerHTML("Cancel")

  @okButton = HWidget.new("input").set(type: "submit", class: "ok-btn", value: "Ok")

  divFooter = HDivTag.new(class: "footer")
  divFooter << @okButton << @cancelButton

  return divFooter

end
dialogHeader() click to toggle source
# File lib/hwidgets/hdbdialogview.rb, line 128
def dialogHeader
  
  @closeButton = HWidget.new("button").set(type: "button", class: "close-btn").setInnerHTML("X")

  divHeader = HDivTag.new(class: "header")
  divHeader << @closeButton

  return divHeader

end
formFields() click to toggle source
# File lib/hwidgets/hdbdialogview.rb, line 31
def formFields
  
  keywords = {
    name: 'name', 
    label: 'label',
    'panel.name': 'panel', 
    type: 'type',
    visible: 'visible',
    default: 'default',
    hidden: 'hidden',
    lineedit: 'lineedit',
    combobox: 'combobox',
    dbcombobox: 'dbcombobox',
    radiobutton: 'radiobutton',
    checkbox: 'checkbox',
    textarea: 'textarea',
    dbtable: 'dbtable', 
    submit: 'submit',
    show_field: 'show_field',
    items: 'items',
    values: 'values',
    js_function: 'js_function',
    properties: 'properties',
    validator: 'validator'
  }
  
  formFields = []
  hv().viewParsing(@moduleName, @modelName, :form).each do |node| 
    record = HRecord.new(node.name)
    keywords.each do |key, value|
      key = key.to_s
      nodeValue = node.value(key)
      record.set(value, nodeValue) if nodeValue
    end
    formFields << record
  end
  return formFields

end
html(cols = 1) click to toggle source

cols e' il numero di colonne

Calls superclass method HWidget#html
# File lib/hwidgets/hdbdialogview.rb, line 154
def html(cols = 1)
  puts "result: #{@id} - #{@modelName}"
  set(method: "post", action: "submit/params")
  i = 0
  @odb = @odb.odb if @odb.class == HRecordPtr
  @odb.findByOffLine({id: @id})
  @formFields.each do |w| # w like widget
    puts "name, type: #{w.name}, #{w.type}".red
    w.type = w.type.downcase
    w.visible = w.visible ? w.visible.to_b : true
    next if(w.visible == false)
    w.set(:value, @odb.data(w.name)) 
    w.set("#id", @id)
    w.set("#dialogLevel", @dialogLevel)
    self.setFieldValidator(w, @odb)
    formField = HFormField.new(@moduleName, w, @odb, @oid, @dialogLevel).obj()
    formField.set(eval(w.properties)) if(w.properties)
    formField.connect(:onblur, "HInputValidator", "valid?", 
                      attributes: ':obj.value => fieldValue', # obj.value verra passato attraverso fieldValue
                      after: 'hdialogView.fieldValidator(obj, response)', getElem: 'none', mode: 'none',
                      args: {fieldType: w.validator, fieldName: w.name, modelName: @modelName},
                      id: @oid) if w.validator
    #formField.addJsFunction(:onblur, "setValue") # non server piu in quanto uso ':obj.value'
           
    w.panel += "-#{@dialogLevel}" if w.panel 
    self.setWidget(i / cols, i % cols, formField, w.panel)
    i += 1 
  end
 
  self << @dialogHeader << @tableView << @tabView << @dialogFooter << self.systemRecords()
    
  divDialog = HDivTag.new(super(), class: "hdialog")
  return divDialog.html()

end
setFieldValidator(w, odb) click to toggle source
# File lib/hwidgets/hdbdialogview.rb, line 111
def setFieldValidator(w, odb)
  
  map = Hash.new('length')
  map[:integer] = 'integer, length'
  map[:float] = 'real, length'
  map[:text] = 'length'

  type = odb.fieldProperty(w.name, "type")
  mandatory = odb.fieldProperty(w.name, "mandatory")
  type = type.to_sym if type
  fieldValidator = map[type]
  fieldValidator += ", mandatory" if mandatory
  fieldValidator.split(',').uniq.join(',')
  w.validator = fieldValidator if w.value == 'field'
  
end
setWidget(row, col, widget, tabName = nil) click to toggle source
# File lib/hwidgets/hdbdialogview.rb, line 72
def setWidget(row, col, widget, tabName = nil)
  
  unless(tabName)
    @fieldTable.setData(row, col, HRecord.new(widget)) 
    return
  end
  
  tabName = tabName.downcase.delete(' ')
  unless(@tabs.key?(tabName))
    fieldTable = HSpreadFieldTable.new()
    fieldTable.addFieldName(0)
    fieldTable.addFieldName(1)
    tableView = HTableView.new(fieldTable: fieldTable) 
    @tabs[tabName] = {tabCaption: tabName, tabContain: tableView}
  end
  
  @tabs[tabName][:tabContain].fieldTable.setData(row, col, HRecord.new(widget))
end
systemRecords() click to toggle source
# File lib/hwidgets/hdbdialogview.rb, line 101
def systemRecords()
  
  hiddenFormFields = HDivTag.new(class: "system-records") 
  hiddenFormFields << HHiddenInputTag.new("@modelName", @modelName)
  hiddenFormFields << HHiddenInputTag.new("@objectId", @odb.object_id)
  hiddenFormFields << HHiddenInputTag.new("@dialogLevel", @dialogLevel)
  return hiddenFormFields

end