class HTableView
Attributes
fieldTable[RW]
headerTr[RW]
mainStatement[RW]
summaryTr[RW]
td[RW]
th[RW]
totalizerTr[RW]
tr[RW]
Public Class Methods
new(fieldTable: nil, className: 'htableview', **args)
click to toggle source
Calls superclass method
HWidget::new
# File lib/hwidgets/htableview.rb, line 5 def initialize(fieldTable: nil, className: 'htableview', **args) super("table", class: className, **args) @fieldTable = fieldTable @headerTr = HWidget.new("tr") @tr = Array.new() @tr[0] = HWidget.new("tr") @tr[1] = HWidget.new("tr") @th = nil @td = nil @totalizerTr = nil @summaryTr = nil end
niceTable()
click to toggle source
# File lib/hwidgets/htableview.rb, line 178 def self.niceTable() headerTr = HWidget.new("tr").setStyle("background-color": "orange") td = HWidget.new("td").setStyle("padding": "8px") tableView = HTableView.new(). set("border-collapse": "collapse", width: "50%") tableView.headerTr = headerTr tableView.td = td #tableView.th = td tr = Array.new() tr[0] = HWidget.new("tr").setStyle("background-color": "#4CAF50") tr[1] = HWidget.new("tr").setStyle("background-color": "#F2F2F2") tableView.tr = tr totalizerTr = Array.new() totalizerTr[0] = HWidget.new("tr").setStyle("background-color": "yellow") totalizerTr[1] = totalizerTr[0] tableView.totalizerTr = totalizerTr summaryTr = Array.new() summaryTr[0] = summaryTr[1] = headerTr tableView.summaryTr = summaryTr return tableView end
niceTable2()
click to toggle source
# File lib/hwidgets/htableview.rb, line 203 def self.niceTable2() tableView = self.niceTable() str = "#tableName-#fieldName-#tag" tableView.td.set(class: "#{str}", id: "#{str}-id-#rowNumber-#colNumber-#fieldValue", name: "#{str}-name-#rowNumber") tableView.tr[0].set(class: "#tableName-tr-#alternateRowNumber", id: "#tableName-#rowNumber-#id-#name") tableView.tr[1].set(class: "#tableName-tr-#alternateRowNumber", id: "#tableName-#rowNumber-#id-#name") tableView.totalizerTr[0].set(class: "#totalizerName-#totalizerValue") return tableView end
test()
click to toggle source
# File lib/hwidgets/htableview.rb, line 169 def self.test() fieldTable = HFieldTable.test2 tableView = HTableView.new(fieldTable) tw = tableView.html() return tw end
test2()
click to toggle source
# File lib/hwidgets/htableview.rb, line 216 def self.test2() tableView = self.niceTable tableView.fieldTable = HSpreadFieldTable.test tw = tableView.html() return tw end
test3()
click to toggle source
# File lib/hwidgets/htableview.rb, line 225 def self.test3() products = Products.new products.quantity = HField.virtual { |this| this.categories_id.id.to_i } products.amount = HField.virtual(:amount, HODB) # Secondo metodo ma passando il nome della classe essendo statica products.all fieldTable = products.toFieldTable([:id, :quantity, :name, :price, :amount, :score, :random, :barcode]) fieldTable.setFieldVisible(:id, false) fieldTable.setFieldTotalizer(:price, "P R I C E") fieldTable.setFieldTotalizer(:amount, "T O T A L") fieldTable.addSummary("SUMMARY", "2.000 Euro") tableView = self.niceTable tableView.fieldTable = fieldTable tw = tableView.html() return tw end
test4()
click to toggle source
# File lib/hwidgets/htableview.rb, line 244 def self.test4() databaseManager = HPgSqlDatabaseManager.defaultPgSqlDatabaseManager() sqlTable = databaseManager.run("select * from recipe_types").toSqlTable() sqlTable.setHideColumn("id") #sqlTable.setHideColumn("name") sqlTable.setTotalizerName("position", "P O S I T I O N") sqlTable.setTotalizerName("id", "I D") sqlTable.addSummary("SUMMARY", "2.000 Euro") tableView = self.niceTable2 tableView.fieldTable = sqlTable tw = tableView.html() return tw end
Public Instance Methods
appendRow(sourceTr = nil)
click to toggle source
# File lib/hwidgets/htableview.rb, line 18 def appendRow(sourceTr = nil) colorIndex = @fieldTable.rowCount() % 2 unless colorIndex sourceTr = @tr[colorIndex] unless sourceTr tr = sourceTr.copyConstructor self.fieldTable.fields.each do |fieldName, fieldValue| tr.appendChild(HWidget.new("td", " ")) if(fieldValue.visible) end self << tr return tr end
beforeInsertRow(row, tagName, fieldName, value)
click to toggle source
# File lib/hwidgets/htableview.rb, line 62 def beforeInsertRow(row, tagName, fieldName, value) end
buildTag(fieldName, tag = "td", i = 0)
click to toggle source
# File lib/hwidgets/htableview.rb, line 31 def buildTag(fieldName, tag = "td", i = 0) if (tag == "th") td = @th.copyConstructor if @th else td = @td.copyConstructor if @td end td = HWidget.new(tag) unless td td.setPlaceholder("#tableName", @fieldTable.tableName) td.setPlaceholder("#fieldName", fieldName) td.setPlaceholder("#tag", tag) td.setPlaceholder("#rowNumber", i.to_s) td.setPlaceholder("#alternateRowNumber", (i % 2).to_s) return td end
html()
click to toggle source
Calls superclass method
HWidget#html
# File lib/hwidgets/htableview.rb, line 158 def html() self.setTableHeaders() self.setInsideHTML() self.setAddRowButton() self.setTotalizer() self.setSummary() self.setControlPanel() # richiama la funzione html di HWidget return super() end
setAddRowButton()
click to toggle source
# File lib/hwidgets/htableview.rb, line 155 def setAddRowButton() end
setControlPanel()
click to toggle source
# File lib/hwidgets/htableview.rb, line 152 def setControlPanel() end
setInsideHTML()
click to toggle source
# File lib/hwidgets/htableview.rb, line 81 def setInsideHTML() @fieldTable.each do |row, i| # it creates a depth copy of object trCopy = Marshal.load(Marshal.dump(@tr[i % 2])) trCopy.setPlaceholder("#tableName", @fieldTable.tableName) trCopy.setPlaceholder("#rowNumber", i.to_s) trCopy.setPlaceholder("#alternateRowNumber", (i % 2).to_s) @fieldTable.row(i).each do |fieldName, fieldValue| value = fieldValue.value if fieldValue trCopy.setPlaceholder("##{fieldName}", value) #puts "#{fieldName} - #{fieldValue}".red end self.setTrSlots(trCopy, row) row.each_with_index do |(fieldName, fieldValue), j| value = "" value = fieldValue.value() if fieldValue # Se la tabella contiene un oggetto HWidget o derivato estrae l'html value = value.is_a?(HWidget) ? value.html() : value.to_s td = self.buildTag(fieldName, "td", i) td.setPlaceholder("#colNumber", j.to_s) td.setPlaceholder("#fieldName", fieldName) td.setPlaceholder("#fieldValue", value) td.setInnerHTML(value) self.setTd(td, fieldName, value, i) self.beforeInsertRow(trCopy, "td", fieldName, value) trCopy << td end self.appendChild(trCopy) end end
setSummary()
click to toggle source
# File lib/hwidgets/htableview.rb, line 138 def setSummary() @fieldTable.summaryList.each_with_index do |summary, i| tr = self.appendRow() thName = tr.getChilds()[-2] thValue = tr.getChilds()[-1] tr.setPlaceholder("#summaryName", summary.value()) tr.setPlaceholder("#summaryValue", summary.value(:value)) thName.setInnerHTML(summary.value()) thValue.setInnerHTML(summary.value(:value)) end end
setTableHeaders()
click to toggle source
# File lib/hwidgets/htableview.rb, line 65 def setTableHeaders() tr = @headerTr.copyConstructor() @fieldTable.fields.each_with_index do |(fieldName, fieldValue), i| header = fieldValue.caption th = self.buildTag(fieldName, "th") th.setPlaceholder("#fieldName", fieldName) th.setPlaceholder("#colNumber", i.to_s) self.setThSlots(th, fieldName) # richiama la funzione setSlots di HDBTableView self.beforeInsertRow(tr, "th", fieldName, "") th.setInnerHTML(header) tr << th end self.appendChild(tr) end
setTd(td, fieldName, value, row)
click to toggle source
# File lib/hwidgets/htableview.rb, line 58 def setTd(td, fieldName, value, row) #p "HTableView::setTd" end
setThSlots(th, fieldName)
click to toggle source
# File lib/hwidgets/htableview.rb, line 50 def setThSlots(th, fieldName) #p "HTableView::setThSlots" end
setTotalizer()
click to toggle source
# File lib/hwidgets/htableview.rb, line 120 def setTotalizer() @fieldTable.fields.each do |fieldName, fieldValue| totalizerName = fieldValue.totalizer next unless totalizerName tr = self.appendRow() thName = tr.getChilds()[-2] thValue = tr.getChilds()[-1] totalizerValue = @fieldTable.sumByFieldName(fieldName).to_s tr.setPlaceholder("#totalizerName", totalizerName.to_s) tr.setPlaceholder("#totalizerValue", totalizerValue) thName.setInnerHTML(totalizerName) thValue.setInnerHTML(totalizerValue) end end
setTrSlots(tr, row)
click to toggle source
# File lib/hwidgets/htableview.rb, line 54 def setTrSlots(tr, row) #p "HTableView::setTrSlots" end