hypersonicplus 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/hdatastructures/hfieldtable.rb +285 -0
- data/lib/hdatastructures/hhash.rb +9 -0
- data/lib/hdatastructures/hlist.rb +100 -0
- data/lib/hdatastructures/hrecord.rb +75 -0
- data/lib/hdatastructures/hspreadfieldtable.rb +129 -0
- data/lib/hdb/hdataloader.rb +75 -0
- data/lib/hdb/hdb.rb +357 -0
- data/lib/hdb/hdb_test.rb +248 -0
- data/lib/hdb/hdbgenerator.rb +211 -0
- data/lib/hdb/hdbi.rb +63 -0
- data/lib/hdb/hdbi_test.rb +133 -0
- data/lib/hdb/hfield.rb +180 -0
- data/lib/hdb/hmysql.rb +99 -0
- data/lib/hdb/hmysql2.rb +96 -0
- data/lib/hdb/hodb.rb +948 -0
- data/lib/hdb/hpgsql.rb +54 -0
- data/lib/hengine/application_controller.rb +204 -0
- data/lib/hengine/hconfiguration.rb +40 -0
- data/lib/hengine/hhotlogger.rb +13 -0
- data/lib/hengine/hlogger.rb +119 -0
- data/lib/hengine/hmalloc.rb +275 -0
- data/lib/hengine/hmoduleloader.rb +15 -0
- data/lib/hengine/hsessiondata.rb +79 -0
- data/lib/hengine/hshareddata.rb +60 -0
- data/lib/hengine/htranslate.rb +40 -0
- data/lib/hengine/hviewloader.rb +99 -0
- data/lib/hinit/hinit.rb +3 -0
- data/lib/hmisc/hcolorize.rb +100 -0
- data/lib/hmisc/hdecoratorfunctions.rb +15 -0
- data/lib/hmisc/hdir.rb +19 -0
- data/lib/hmisc/hhtmlnode.rb +27 -0
- data/lib/hmisc/hinputvalidator.rb +95 -0
- data/lib/hmisc/hio.rb +142 -0
- data/lib/hmisc/hjson.rb +16 -0
- data/lib/hsqlmanager/hpgsqldatabasemanager.rb +76 -0
- data/lib/hsqlmanager/hsqldatabasemanager.rb +349 -0
- data/lib/hsqlmanager/hsqltable.rb +16 -0
- data/lib/husermanager/husermanager.rb +122 -0
- data/lib/hwidgets/haccordionmenu.rb +117 -0
- data/lib/hwidgets/hcheckboxtag.rb +33 -0
- data/lib/hwidgets/hdbactionbuttons.rb +26 -0
- data/lib/hwidgets/hdbcombobox.rb +71 -0
- data/lib/hwidgets/hdbdialogview.rb +190 -0
- data/lib/hwidgets/hdbfilterview.rb +28 -0
- data/lib/hwidgets/hdbtableview.rb +213 -0
- data/lib/hwidgets/hdbview.rb +63 -0
- data/lib/hwidgets/hdivtag.rb +9 -0
- data/lib/hwidgets/hdropdown.rb +44 -0
- data/lib/hwidgets/hformfield.rb +91 -0
- data/lib/hwidgets/hgrouptag.rb +65 -0
- data/lib/hwidgets/hhiddeninputtag.rb +12 -0
- data/lib/hwidgets/hinputtag.rb +55 -0
- data/lib/hwidgets/hlabeltag.rb +30 -0
- data/lib/hwidgets/hmainview.rb +37 -0
- data/lib/hwidgets/hpagination.rb +65 -0
- data/lib/hwidgets/hradiobuttontag.rb +30 -0
- data/lib/hwidgets/hselecttag.rb +32 -0
- data/lib/hwidgets/htableview.rb +262 -0
- data/lib/hwidgets/htabview.rb +84 -0
- data/lib/hwidgets/htextareatag.rb +20 -0
- data/lib/hwidgets/htopnav.rb +85 -0
- data/lib/hwidgets/hwidget.rb +423 -0
- data/lib/hypersonic.rb +9 -0
- metadata +276 -0
@@ -0,0 +1,65 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "hwidgets/hwidget"
|
4
|
+
|
5
|
+
class HGroupTag < HWidget
|
6
|
+
|
7
|
+
attr_accessor :items, :values
|
8
|
+
|
9
|
+
def initialize(name = nil, modelName = nil, placeholder = nil, items: nil, values: nil, itemsAndValues: nil, **args)
|
10
|
+
super(args)
|
11
|
+
@name = name
|
12
|
+
@modelName = modelName
|
13
|
+
@items = []
|
14
|
+
@values = []
|
15
|
+
@selectedItem = nil
|
16
|
+
@placeholder = placeholder
|
17
|
+
@label = nil
|
18
|
+
@carriageReturn = false
|
19
|
+
self.setItems(items) if items
|
20
|
+
self.setValues(values) if values
|
21
|
+
self.setItemsAndValues(itemsAndValues) if itemsAndValues
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
def setCarriageReturn(value = true)
|
26
|
+
@carriageReturn = value
|
27
|
+
return self
|
28
|
+
end
|
29
|
+
|
30
|
+
def setItemsAndValues(itemsAndValues)
|
31
|
+
|
32
|
+
@items = itemsAndValues.keys
|
33
|
+
@values = itemsAndValues.values
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
def setItems(items)
|
38
|
+
|
39
|
+
@items = items
|
40
|
+
return self
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
def setValues(values)
|
45
|
+
|
46
|
+
@values = values
|
47
|
+
return self
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
def setSelected(item)
|
52
|
+
|
53
|
+
@selectedItem = item
|
54
|
+
return self
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
def html()
|
59
|
+
|
60
|
+
@label = HLabelTag.new(@name, @modelName, @placeholder).setCarriageReturn(@carriageReturn) if (@label == nil)
|
61
|
+
return @label.html() + super()
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "hwidgets/hlabeltag"
|
4
|
+
|
5
|
+
class HInputTag < HWidget
|
6
|
+
|
7
|
+
attr_accessor :name, :modelName, :placeholder, :label, :type, :reverse
|
8
|
+
|
9
|
+
def initialize(name = "", modelName = "", placeholder = "", label = nil, type = nil)
|
10
|
+
super("input")
|
11
|
+
self.setClosedTag(false)
|
12
|
+
@name = name
|
13
|
+
@modelName = modelName
|
14
|
+
@placeholder = placeholder
|
15
|
+
@label = label
|
16
|
+
@type = type
|
17
|
+
@carriageReturn = false
|
18
|
+
@reverse = false
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.init(name: "", modelName: "", placeholder: "", label: nil, type: nil)
|
22
|
+
|
23
|
+
return HInputTag.new(name, modelName, placeholder, label, type)
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
def setCarriageReturn(value = true)
|
28
|
+
@carriageReturn = value
|
29
|
+
return self
|
30
|
+
end
|
31
|
+
|
32
|
+
def setReverse(value = true)
|
33
|
+
@reverse = value
|
34
|
+
return self
|
35
|
+
end
|
36
|
+
|
37
|
+
def setSelected(value)
|
38
|
+
set(value: value)
|
39
|
+
end
|
40
|
+
|
41
|
+
def html()
|
42
|
+
|
43
|
+
self.set(name: "#{@modelName}[#{@name}]",
|
44
|
+
id: "#{@modelName}_#{@name}",
|
45
|
+
type: @type,
|
46
|
+
placeholder: @placeholder)
|
47
|
+
|
48
|
+
@label = HLabelTag.new(@name, @modelName, @placeholder).setCarriageReturn(@carriageReturn) if (@label == nil)
|
49
|
+
return @label.html() + super() unless(@reverse)
|
50
|
+
return super + @label.html()
|
51
|
+
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class HLabelTag < HWidget
|
2
|
+
|
3
|
+
attr_accessor :name, :modelName, :placeholder
|
4
|
+
|
5
|
+
def initialize(name = "", modelName = "", placeholder = "")
|
6
|
+
super("label")
|
7
|
+
@name = name
|
8
|
+
@modelName = modelName
|
9
|
+
@placeholder = placeholder
|
10
|
+
@carriageReturn = false
|
11
|
+
end
|
12
|
+
|
13
|
+
def setCarriageReturn(value = true)
|
14
|
+
@carriageReturn = value
|
15
|
+
return self
|
16
|
+
end
|
17
|
+
|
18
|
+
def html()
|
19
|
+
|
20
|
+
return "" if(@placeholder == nil)
|
21
|
+
|
22
|
+
cr = (@carriageReturn) ? HIO.htmlEcholn("<br/>") : ""
|
23
|
+
self.set(for: "#{@modelName}_#{@name}").
|
24
|
+
setInnerHTML(@placeholder)
|
25
|
+
|
26
|
+
return super() + cr
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class HMainView < HDivTag
|
2
|
+
|
3
|
+
attr_reader :oid
|
4
|
+
|
5
|
+
def initialize(**args)
|
6
|
+
@view = nil
|
7
|
+
@oid = hm().malloc(self).obj.object_id.to_s
|
8
|
+
super(class: 'hmainview', id: @oid, **args)
|
9
|
+
self.hotLog("HMainView: new hmainview oid: #{@oid}".white)
|
10
|
+
return self
|
11
|
+
end
|
12
|
+
|
13
|
+
def onExit
|
14
|
+
hm().dealloc(@oid) if @view
|
15
|
+
self.hotLog("HMainView::onExit dealloc hmainview oid: #{@oid}".yellow)
|
16
|
+
hl.<< "################################################################################################".hight_cyan, "DEBUG2"
|
17
|
+
hl.<< "# [onExit]#: #".hight_cyan, "DEBUG2"
|
18
|
+
hm().showAll
|
19
|
+
end
|
20
|
+
|
21
|
+
def html(moduleName: nil, modelName: nil)
|
22
|
+
self.reset()
|
23
|
+
ooid = @view.oid if @view# old oid
|
24
|
+
|
25
|
+
if moduleName and modelName
|
26
|
+
self << @view = HDBView.new(moduleName: moduleName, modelName: modelName, poid: @oid)
|
27
|
+
self.connect(:honexit, self, "onExit", mode: 'none', id: @view.oid, overwrite: true)
|
28
|
+
end
|
29
|
+
|
30
|
+
hm().dealloc(ooid) if ooid
|
31
|
+
self.hotLog("HMainView::dealloc hdbview oid: #{ooid}".red) if ooid
|
32
|
+
hm().clean()
|
33
|
+
|
34
|
+
return super()
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
class HPagination < HDivTag
|
2
|
+
|
3
|
+
def initialize(sourceView: nil, pages: 1, currentPage: 0, pageSize: 'all', rowsForPage: [10, 100, 'all'] , **args)
|
4
|
+
@sourceView = sourceView # l'oggetto da paginare
|
5
|
+
@pageSize = pageSize
|
6
|
+
@pages = pages
|
7
|
+
@currentPage = currentPage
|
8
|
+
@rowsForPage = rowsForPage
|
9
|
+
|
10
|
+
return super(class: 'hpaginationview', **args)
|
11
|
+
end
|
12
|
+
|
13
|
+
def setCurrentPage(value: 1)
|
14
|
+
value = eval(value) - 1
|
15
|
+
value = 0 if value < 0
|
16
|
+
value = @pages - 1 if value >= @pages
|
17
|
+
return @sourceView.html(page: value)
|
18
|
+
end
|
19
|
+
|
20
|
+
def setPageSize(value: 'all')
|
21
|
+
return @sourceView.html(pageSize: value)
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
def pageDiv
|
26
|
+
div = HDivTag.new(class: 'page-box', onclick: 'hpaginationView.editMode(this)')
|
27
|
+
div << HWidget.new("span", "Page:")
|
28
|
+
div << currentPageDiv = HWidget.new("input", class: 'current-page', type: 'text', value: @currentPage + 1,
|
29
|
+
onkeypress: "hpaginationView.keyPress(this, event)")
|
30
|
+
currentPageDiv.connect(:onblur, self, "setCurrentPage", id: @sourceView.oid, attributes: ":obj.value")
|
31
|
+
|
32
|
+
div << HWidget.new("span", "of")
|
33
|
+
div << HWidget.new("span", @pages, class: 'total-pages')
|
34
|
+
return div
|
35
|
+
end
|
36
|
+
|
37
|
+
def comboboxSection
|
38
|
+
|
39
|
+
div = HDivTag.new(class: 'paginationview-block')
|
40
|
+
div << HWidget.new("span", "Rows:")
|
41
|
+
div << selectDiv = HSelectTag.new("", "",
|
42
|
+
items: @rowsForPage, values: @rowsForPage, class: "hcombobox")
|
43
|
+
selectDiv.connect(:onchange, self, "setPageSize", id: @sourceView.oid, attributes: ":obj.value")
|
44
|
+
return div
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
def navigationButtons
|
49
|
+
|
50
|
+
decDiv = HDivTag.new("❮", class: 'paginationview-block')
|
51
|
+
decDiv.connect(:onclick, @sourceView, "html", id: @sourceView.oid,
|
52
|
+
args: {page: [0, @currentPage - 1].max})
|
53
|
+
incDiv = HDivTag.new("❯", class: 'paginationview-block')
|
54
|
+
incDiv.connect(:onclick, @sourceView, "html", id: @sourceView.oid,
|
55
|
+
args: {page: [@sourceView.rpcPages() - 1, @currentPage + 1].min})
|
56
|
+
return [decDiv, incDiv]
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
def html
|
61
|
+
self << self.pageDiv << self.comboboxSection << self.navigationButtons
|
62
|
+
return super
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "hwidgets/hgrouptag"
|
4
|
+
|
5
|
+
class HRadioButtonTag < HGroupTag
|
6
|
+
|
7
|
+
attr_accessor :radioButton
|
8
|
+
|
9
|
+
def initialize(name = nil, modelName = nil, placeholder = nil)
|
10
|
+
super(name, modelName, placeholder)
|
11
|
+
@radioButton = nil
|
12
|
+
end
|
13
|
+
|
14
|
+
def html()
|
15
|
+
for i in (0..@items.count - 1) do
|
16
|
+
item = @items[i]
|
17
|
+
value = @values[i]
|
18
|
+
id = "#{@modelName}_#{@name}_#{item.downcase.gsub(' ', '_')}"
|
19
|
+
radioButton = HInputTag.new(@name, @modelName, item, nil, type = "radio") if (@radioButton == nil)
|
20
|
+
radioButton.set("checked", "") if (value.to_s == @selectedItem.to_s)
|
21
|
+
radioButton.set(value: value, id: id)
|
22
|
+
radioButton.setReverse()
|
23
|
+
self << radioButton
|
24
|
+
end
|
25
|
+
|
26
|
+
return super()
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "hwidgets/hgrouptag"
|
2
|
+
require "hwidgets/hinputtag"
|
3
|
+
|
4
|
+
class HSelectTag < HGroupTag
|
5
|
+
|
6
|
+
attr_accessor
|
7
|
+
|
8
|
+
def initialize(name = nil, modelName = nil, placeholder = nil, **args)
|
9
|
+
super(name, modelName, placeholder, args)
|
10
|
+
self.setTag("select")
|
11
|
+
self.set(name: @modelName, id: "#{@modelName.gsub('[', '_').gsub(']', '')}")
|
12
|
+
return self
|
13
|
+
end
|
14
|
+
|
15
|
+
def html()
|
16
|
+
|
17
|
+
self.reset()
|
18
|
+
|
19
|
+
for i in (0..@items.count - 1) do
|
20
|
+
item = @items[i]
|
21
|
+
value = @values[i]
|
22
|
+
option = HWidget.new("option").setInnerHTML(item.to_s).set(value: value)
|
23
|
+
# value || item: se value e' diverso da nil usa value altrimenti item
|
24
|
+
option.set(selected: nil) if ((value || item) == @selectedItem.to_s)
|
25
|
+
self << option
|
26
|
+
end
|
27
|
+
|
28
|
+
return super()
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,262 @@
|
|
1
|
+
class HTableView < HWidget
|
2
|
+
|
3
|
+
attr_accessor :fieldTable, :mainStatement, :tr, :td, :headerTr, :th, :totalizerTr, :summaryTr
|
4
|
+
|
5
|
+
def initialize(fieldTable: nil, className: 'htableview', **args)
|
6
|
+
super("table", class: className, **args)
|
7
|
+
@fieldTable = fieldTable
|
8
|
+
@headerTr = HWidget.new("tr")
|
9
|
+
@tr = Array.new()
|
10
|
+
@tr[0] = HWidget.new("tr")
|
11
|
+
@tr[1] = HWidget.new("tr")
|
12
|
+
@th = nil
|
13
|
+
@td = nil
|
14
|
+
@totalizerTr = nil
|
15
|
+
@summaryTr = nil
|
16
|
+
end
|
17
|
+
|
18
|
+
def appendRow(sourceTr = nil)
|
19
|
+
|
20
|
+
colorIndex = @fieldTable.rowCount() % 2 unless colorIndex
|
21
|
+
sourceTr = @tr[colorIndex] unless sourceTr
|
22
|
+
tr = sourceTr.copyConstructor
|
23
|
+
self.fieldTable.fields.each do |fieldName, fieldValue|
|
24
|
+
tr.appendChild(HWidget.new("td", " ")) if(fieldValue.visible)
|
25
|
+
end
|
26
|
+
self << tr
|
27
|
+
return tr
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
def buildTag(fieldName, tag = "td", i = 0)
|
32
|
+
|
33
|
+
if (tag == "th")
|
34
|
+
td = @th.copyConstructor if @th
|
35
|
+
else
|
36
|
+
td = @td.copyConstructor if @td
|
37
|
+
end
|
38
|
+
|
39
|
+
td = HWidget.new(tag) unless td
|
40
|
+
|
41
|
+
td.setPlaceholder("#tableName", @fieldTable.tableName)
|
42
|
+
td.setPlaceholder("#fieldName", fieldName)
|
43
|
+
td.setPlaceholder("#tag", tag)
|
44
|
+
td.setPlaceholder("#rowNumber", i.to_s)
|
45
|
+
td.setPlaceholder("#alternateRowNumber", (i % 2).to_s)
|
46
|
+
|
47
|
+
return td
|
48
|
+
end
|
49
|
+
|
50
|
+
def setThSlots(th, fieldName)
|
51
|
+
#p "HTableView::setThSlots"
|
52
|
+
end
|
53
|
+
|
54
|
+
def setTrSlots(tr, row)
|
55
|
+
#p "HTableView::setTrSlots"
|
56
|
+
end
|
57
|
+
|
58
|
+
def setTd(td, fieldName, value, row)
|
59
|
+
#p "HTableView::setTd"
|
60
|
+
end
|
61
|
+
|
62
|
+
def beforeInsertRow(row, tagName, fieldName, value)
|
63
|
+
end
|
64
|
+
|
65
|
+
def setTableHeaders()
|
66
|
+
tr = @headerTr.copyConstructor()
|
67
|
+
@fieldTable.fields.each_with_index do |(fieldName, fieldValue), i|
|
68
|
+
header = fieldValue.caption
|
69
|
+
th = self.buildTag(fieldName, "th")
|
70
|
+
th.setPlaceholder("#fieldName", fieldName)
|
71
|
+
th.setPlaceholder("#colNumber", i.to_s)
|
72
|
+
|
73
|
+
self.setThSlots(th, fieldName) # richiama la funzione setSlots di HDBTableView
|
74
|
+
self.beforeInsertRow(tr, "th", fieldName, "")
|
75
|
+
th.setInnerHTML(header)
|
76
|
+
tr << th
|
77
|
+
end
|
78
|
+
self.appendChild(tr)
|
79
|
+
end
|
80
|
+
|
81
|
+
def setInsideHTML()
|
82
|
+
|
83
|
+
@fieldTable.each do |row, i|
|
84
|
+
# it creates a depth copy of object
|
85
|
+
trCopy = Marshal.load(Marshal.dump(@tr[i % 2]))
|
86
|
+
trCopy.setPlaceholder("#tableName", @fieldTable.tableName)
|
87
|
+
trCopy.setPlaceholder("#rowNumber", i.to_s)
|
88
|
+
trCopy.setPlaceholder("#alternateRowNumber", (i % 2).to_s)
|
89
|
+
|
90
|
+
@fieldTable.row(i).each do |fieldName, fieldValue|
|
91
|
+
value = fieldValue.value if fieldValue
|
92
|
+
trCopy.setPlaceholder("##{fieldName}", value)
|
93
|
+
#puts "#{fieldName} - #{fieldValue}".red
|
94
|
+
end
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
self.setTrSlots(trCopy, row)
|
99
|
+
|
100
|
+
row.each_with_index do |(fieldName, fieldValue), j|
|
101
|
+
value = ""
|
102
|
+
value = fieldValue.value() if fieldValue
|
103
|
+
# Se la tabella contiene un oggetto HWidget o derivato estrae l'html
|
104
|
+
value = value.is_a?(HWidget) ? value.html() : value.to_s
|
105
|
+
|
106
|
+
td = self.buildTag(fieldName, "td", i)
|
107
|
+
td.setPlaceholder("#colNumber", j.to_s)
|
108
|
+
td.setPlaceholder("#fieldName", fieldName)
|
109
|
+
td.setPlaceholder("#fieldValue", value)
|
110
|
+
td.setInnerHTML(value)
|
111
|
+
self.setTd(td, fieldName, value, i)
|
112
|
+
self.beforeInsertRow(trCopy, "td", fieldName, value)
|
113
|
+
trCopy << td
|
114
|
+
end
|
115
|
+
self.appendChild(trCopy)
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
def setTotalizer()
|
121
|
+
|
122
|
+
@fieldTable.fields.each do |fieldName, fieldValue|
|
123
|
+
totalizerName = fieldValue.totalizer
|
124
|
+
next unless totalizerName
|
125
|
+
tr = self.appendRow()
|
126
|
+
thName = tr.getChilds()[-2]
|
127
|
+
thValue = tr.getChilds()[-1]
|
128
|
+
totalizerValue = @fieldTable.sumByFieldName(fieldName).to_s
|
129
|
+
tr.setPlaceholder("#totalizerName", totalizerName.to_s)
|
130
|
+
tr.setPlaceholder("#totalizerValue", totalizerValue)
|
131
|
+
thName.setInnerHTML(totalizerName)
|
132
|
+
thValue.setInnerHTML(totalizerValue)
|
133
|
+
end
|
134
|
+
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
def setSummary()
|
139
|
+
|
140
|
+
@fieldTable.summaryList.each_with_index do |summary, i|
|
141
|
+
tr = self.appendRow()
|
142
|
+
thName = tr.getChilds()[-2]
|
143
|
+
thValue = tr.getChilds()[-1]
|
144
|
+
tr.setPlaceholder("#summaryName", summary.value())
|
145
|
+
tr.setPlaceholder("#summaryValue", summary.value(:value))
|
146
|
+
thName.setInnerHTML(summary.value())
|
147
|
+
thValue.setInnerHTML(summary.value(:value))
|
148
|
+
end
|
149
|
+
|
150
|
+
end
|
151
|
+
|
152
|
+
def setControlPanel()
|
153
|
+
end
|
154
|
+
|
155
|
+
def setAddRowButton()
|
156
|
+
end
|
157
|
+
|
158
|
+
def html()
|
159
|
+
self.setTableHeaders()
|
160
|
+
self.setInsideHTML()
|
161
|
+
self.setAddRowButton()
|
162
|
+
self.setTotalizer()
|
163
|
+
self.setSummary()
|
164
|
+
self.setControlPanel()
|
165
|
+
# richiama la funzione html di HWidget
|
166
|
+
return super()
|
167
|
+
end
|
168
|
+
|
169
|
+
def self.test()
|
170
|
+
|
171
|
+
fieldTable = HFieldTable.test2
|
172
|
+
tableView = HTableView.new(fieldTable)
|
173
|
+
tw = tableView.html()
|
174
|
+
return tw
|
175
|
+
|
176
|
+
end
|
177
|
+
|
178
|
+
def self.niceTable()
|
179
|
+
headerTr = HWidget.new("tr").setStyle("background-color": "orange")
|
180
|
+
td = HWidget.new("td").setStyle("padding": "8px")
|
181
|
+
tableView = HTableView.new().
|
182
|
+
set("border-collapse": "collapse", width: "50%")
|
183
|
+
tableView.headerTr = headerTr
|
184
|
+
tableView.td = td
|
185
|
+
#tableView.th = td
|
186
|
+
tr = Array.new()
|
187
|
+
tr[0] = HWidget.new("tr").setStyle("background-color": "#4CAF50")
|
188
|
+
tr[1] = HWidget.new("tr").setStyle("background-color": "#F2F2F2")
|
189
|
+
tableView.tr = tr
|
190
|
+
|
191
|
+
totalizerTr = Array.new()
|
192
|
+
totalizerTr[0] = HWidget.new("tr").setStyle("background-color": "yellow")
|
193
|
+
totalizerTr[1] = totalizerTr[0]
|
194
|
+
tableView.totalizerTr = totalizerTr
|
195
|
+
|
196
|
+
summaryTr = Array.new()
|
197
|
+
summaryTr[0] = summaryTr[1] = headerTr
|
198
|
+
tableView.summaryTr = summaryTr
|
199
|
+
|
200
|
+
return tableView
|
201
|
+
end
|
202
|
+
|
203
|
+
def self.niceTable2()
|
204
|
+
tableView = self.niceTable()
|
205
|
+
str = "#tableName-#fieldName-#tag"
|
206
|
+
tableView.td.set(class: "#{str}",
|
207
|
+
id: "#{str}-id-#rowNumber-#colNumber-#fieldValue",
|
208
|
+
name: "#{str}-name-#rowNumber")
|
209
|
+
tableView.tr[0].set(class: "#tableName-tr-#alternateRowNumber", id: "#tableName-#rowNumber-#id-#name")
|
210
|
+
tableView.tr[1].set(class: "#tableName-tr-#alternateRowNumber", id: "#tableName-#rowNumber-#id-#name")
|
211
|
+
tableView.totalizerTr[0].set(class: "#totalizerName-#totalizerValue")
|
212
|
+
|
213
|
+
return tableView
|
214
|
+
end
|
215
|
+
|
216
|
+
def self.test2()
|
217
|
+
|
218
|
+
tableView = self.niceTable
|
219
|
+
tableView.fieldTable = HSpreadFieldTable.test
|
220
|
+
tw = tableView.html()
|
221
|
+
return tw
|
222
|
+
|
223
|
+
end
|
224
|
+
|
225
|
+
def self.test3()
|
226
|
+
|
227
|
+
products = Products.new
|
228
|
+
products.quantity = HField.virtual { |this| this.categories_id.id.to_i }
|
229
|
+
products.amount = HField.virtual(:amount, HODB) # Secondo metodo ma passando il nome della classe essendo statica
|
230
|
+
products.all
|
231
|
+
fieldTable = products.toFieldTable([:id, :quantity, :name, :price, :amount, :score, :random, :barcode])
|
232
|
+
fieldTable.setFieldVisible(:id, false)
|
233
|
+
fieldTable.setFieldTotalizer(:price, "P R I C E")
|
234
|
+
fieldTable.setFieldTotalizer(:amount, "T O T A L")
|
235
|
+
fieldTable.addSummary("SUMMARY", "2.000 Euro")
|
236
|
+
tableView = self.niceTable
|
237
|
+
tableView.fieldTable = fieldTable
|
238
|
+
tw = tableView.html()
|
239
|
+
return tw
|
240
|
+
|
241
|
+
end
|
242
|
+
|
243
|
+
|
244
|
+
def self.test4()
|
245
|
+
|
246
|
+
databaseManager = HPgSqlDatabaseManager.defaultPgSqlDatabaseManager()
|
247
|
+
sqlTable = databaseManager.run("select * from recipe_types").toSqlTable()
|
248
|
+
sqlTable.setHideColumn("id")
|
249
|
+
#sqlTable.setHideColumn("name")
|
250
|
+
sqlTable.setTotalizerName("position", "P O S I T I O N")
|
251
|
+
sqlTable.setTotalizerName("id", "I D")
|
252
|
+
sqlTable.addSummary("SUMMARY", "2.000 Euro")
|
253
|
+
|
254
|
+
tableView = self.niceTable2
|
255
|
+
tableView.fieldTable = sqlTable
|
256
|
+
tw = tableView.html()
|
257
|
+
return tw
|
258
|
+
|
259
|
+
end
|
260
|
+
|
261
|
+
|
262
|
+
end
|