hypersonic-plus 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|