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.
Files changed (65) hide show
  1. checksums.yaml +7 -0
  2. data/lib/hdatastructures/hfieldtable.rb +285 -0
  3. data/lib/hdatastructures/hhash.rb +9 -0
  4. data/lib/hdatastructures/hlist.rb +100 -0
  5. data/lib/hdatastructures/hrecord.rb +75 -0
  6. data/lib/hdatastructures/hspreadfieldtable.rb +129 -0
  7. data/lib/hdb/hdataloader.rb +75 -0
  8. data/lib/hdb/hdb.rb +357 -0
  9. data/lib/hdb/hdb_test.rb +248 -0
  10. data/lib/hdb/hdbgenerator.rb +211 -0
  11. data/lib/hdb/hdbi.rb +63 -0
  12. data/lib/hdb/hdbi_test.rb +133 -0
  13. data/lib/hdb/hfield.rb +180 -0
  14. data/lib/hdb/hmysql.rb +99 -0
  15. data/lib/hdb/hmysql2.rb +96 -0
  16. data/lib/hdb/hodb.rb +948 -0
  17. data/lib/hdb/hpgsql.rb +54 -0
  18. data/lib/hengine/application_controller.rb +204 -0
  19. data/lib/hengine/hconfiguration.rb +40 -0
  20. data/lib/hengine/hhotlogger.rb +13 -0
  21. data/lib/hengine/hlogger.rb +119 -0
  22. data/lib/hengine/hmalloc.rb +275 -0
  23. data/lib/hengine/hmoduleloader.rb +15 -0
  24. data/lib/hengine/hsessiondata.rb +79 -0
  25. data/lib/hengine/hshareddata.rb +60 -0
  26. data/lib/hengine/htranslate.rb +40 -0
  27. data/lib/hengine/hviewloader.rb +99 -0
  28. data/lib/hinit/hinit.rb +3 -0
  29. data/lib/hmisc/hcolorize.rb +100 -0
  30. data/lib/hmisc/hdecoratorfunctions.rb +15 -0
  31. data/lib/hmisc/hdir.rb +19 -0
  32. data/lib/hmisc/hhtmlnode.rb +27 -0
  33. data/lib/hmisc/hinputvalidator.rb +95 -0
  34. data/lib/hmisc/hio.rb +142 -0
  35. data/lib/hmisc/hjson.rb +16 -0
  36. data/lib/hsqlmanager/hpgsqldatabasemanager.rb +76 -0
  37. data/lib/hsqlmanager/hsqldatabasemanager.rb +349 -0
  38. data/lib/hsqlmanager/hsqltable.rb +16 -0
  39. data/lib/husermanager/husermanager.rb +122 -0
  40. data/lib/hwidgets/haccordionmenu.rb +117 -0
  41. data/lib/hwidgets/hcheckboxtag.rb +33 -0
  42. data/lib/hwidgets/hdbactionbuttons.rb +26 -0
  43. data/lib/hwidgets/hdbcombobox.rb +71 -0
  44. data/lib/hwidgets/hdbdialogview.rb +190 -0
  45. data/lib/hwidgets/hdbfilterview.rb +28 -0
  46. data/lib/hwidgets/hdbtableview.rb +213 -0
  47. data/lib/hwidgets/hdbview.rb +63 -0
  48. data/lib/hwidgets/hdivtag.rb +9 -0
  49. data/lib/hwidgets/hdropdown.rb +44 -0
  50. data/lib/hwidgets/hformfield.rb +91 -0
  51. data/lib/hwidgets/hgrouptag.rb +65 -0
  52. data/lib/hwidgets/hhiddeninputtag.rb +12 -0
  53. data/lib/hwidgets/hinputtag.rb +55 -0
  54. data/lib/hwidgets/hlabeltag.rb +30 -0
  55. data/lib/hwidgets/hmainview.rb +37 -0
  56. data/lib/hwidgets/hpagination.rb +65 -0
  57. data/lib/hwidgets/hradiobuttontag.rb +30 -0
  58. data/lib/hwidgets/hselecttag.rb +32 -0
  59. data/lib/hwidgets/htableview.rb +262 -0
  60. data/lib/hwidgets/htabview.rb +84 -0
  61. data/lib/hwidgets/htextareatag.rb +20 -0
  62. data/lib/hwidgets/htopnav.rb +85 -0
  63. data/lib/hwidgets/hwidget.rb +423 -0
  64. data/lib/hypersonic.rb +9 -0
  65. 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,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "hwidgets/hwidget"
4
+
5
+ class HHiddenInputTag < HWidget
6
+
7
+ def initialize(name = "", value = nil)
8
+ super("input", type: "hidden", name: name, value: value)
9
+ self.setClosedTag(false)
10
+ end
11
+
12
+ 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("&#10094;", class: 'paginationview-block')
51
+ decDiv.connect(:onclick, @sourceView, "html", id: @sourceView.oid,
52
+ args: {page: [0, @currentPage - 1].max})
53
+ incDiv = HDivTag.new("&#10095;", 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", "&nbsp;")) 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