hypersonic-plus 0.0.0

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