Class: HDBTableView
Overview
Quando faccio doppio click su una tabella si apre una finestra di dialogo a cui passo l’odb della tabella Se in una finestra di dialogo ho un tabella a quella tabella deve essere passato l’odb direttamente dalla finestra di dialogo perche’ l’odb deve essere generato con dialogOdb.tableName_table altrimenti quano chiudo l’ultima finestra con ok la tabella modificata non verra’ salvata in quando sconnessa dalla dialog box
Instance Attribute Summary collapse
Attributes inherited from HTableView
#fieldTable, #headerTr, #mainStatement, #summaryTr, #td, #th, #totalizerTr, #tr
Attributes inherited from HWidget
#tag
Class Method Summary
collapse
Instance Method Summary
collapse
-
#beforeInsertRow(row, tagName, fieldName, value) ⇒ Object
-
#closeButton ⇒ Object
-
#deleteRecord(id: nil) ⇒ Object
-
#doubleClick(id: nil) ⇒ Object
-
#html(filter: @filter, sortField: @sortField, sortDirection: @sortDirection, pageSize: @pageSize, page: @page) ⇒ Object
-
#initialize(moduleName: nil, modelName: nil, filter: "true", sortField: "id", sortDirection: "asc", pageSize: 'all', page: 0, odb: nil, poid: nil, dialogLevel: 0, connectionName: "default") ⇒ HDBTableView
constructor
A new instance of HDBTableView.
-
#newRecord ⇒ Object
-
#rpcAction(ids: nil, action: nil) ⇒ Object
-
#rpcHtml(args) ⇒ Object
-
#rpcPages ⇒ Object
-
#rpcPageSize ⇒ Object
-
#setAddRowButton ⇒ Object
-
#setControlPanel ⇒ Object
-
#setTableHeaders ⇒ Object
-
#setTd(td, fieldName, value, row) ⇒ Object
-
#setThSlots(th, fieldName) ⇒ Object
-
#setTrSlots(tr, row) ⇒ Object
Methods inherited from HTableView
#appendRow, #buildTag, niceTable, niceTable2, #setInsideHTML, #setSummary, #setTotalizer, test, test2, test3, test4
Methods inherited from HWidget
#_addJsSlot, #_set, #_setStyle, #addJsFunction, #appendChild, #appendChilds, #buildSignature, #closeTag, #connect, #copyConstructor, #get, #getChilds, #getElementBy, #getSystemProperty, #hotLog, #openTag, #replacePlaceholder, #reset, #set, #setChilds, #setCloseTag, #setClosedTag, #setEnablePlaceholder, #setInnerHTML, #setParent, #setPlaceholder, #setPlaceholders, #setProperties, #setSlots, #setStyle, #setStyles, #setSystemProperties, #setSystemProperty, #setTag, #storeSlots, #storeStyle, #strProperties, test, #unset, widgetSpace
Constructor Details
#initialize(moduleName: nil, modelName: nil, filter: "true", sortField: "id", sortDirection: "asc", pageSize: 'all', page: 0, odb: nil, poid: nil, dialogLevel: 0, connectionName: "default") ⇒ HDBTableView
Returns a new instance of HDBTableView.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/hwidgets/hdbtableview.rb', line 11
def initialize(moduleName: nil, modelName: nil,
filter: "true", sortField: "id", sortDirection: "asc",
pageSize: 'all', page: 0,
odb: nil, poid: nil, dialogLevel: 0, connectionName: "default")
hl << " =========================================================".red
hl << " ==================== NEW HDBTableView ===================".red
hl << " =========================================================".red
super(className: 'hdbtableview')
@moduleName = moduleName
@modelName = modelName
@oid = hm().malloc(self, poid).obj.object_id.to_s
self.hotLog("hdbtableview oid: #{@oid}")
@odb = odb
@dialogLevel = dialogLevel
@connectionName = connectionName
@filter = filter
@sortField = sortField
@sortDirection = sortDirection
@pageSize = pageSize
@page = page
end
|
Instance Attribute Details
#dialogLevel ⇒ Object
Returns the value of attribute dialogLevel.
9
10
11
|
# File 'lib/hwidgets/hdbtableview.rb', line 9
def dialogLevel
@dialogLevel
end
|
#modelName ⇒ Object
Returns the value of attribute modelName.
9
10
11
|
# File 'lib/hwidgets/hdbtableview.rb', line 9
def modelName
@modelName
end
|
#moduleName ⇒ Object
Returns the value of attribute moduleName.
9
10
11
|
# File 'lib/hwidgets/hdbtableview.rb', line 9
def moduleName
@moduleName
end
|
#odb ⇒ Object
Returns the value of attribute odb.
9
10
11
|
# File 'lib/hwidgets/hdbtableview.rb', line 9
def odb
@odb
end
|
#oid ⇒ Object
Returns the value of attribute oid.
9
10
11
|
# File 'lib/hwidgets/hdbtableview.rb', line 9
def oid
@oid
end
|
Class Method Details
.html(moduleName: nil, modelName: nil, odb: nil, dialogLevel: 0, connectionName: "default", filter: "true", sortField: "id", sortDirection: "asc", pageSize: "5", page: 0) ⇒ Object
205
206
207
208
209
210
211
|
# File 'lib/hwidgets/hdbtableview.rb', line 205
def self.html(moduleName: nil, modelName: nil, odb: nil, dialogLevel: 0, connectionName: "default", filter: "true", sortField: "id", sortDirection: "asc", pageSize: "5", page: 0)
modelName = modelName.to_s
dbTableView = HDBTableView.new(moduleName, modelName, odb, dialogLevel, connectionName)
HDBTableView.tableViewDecorator(dbTableView)
return dbTableView.html(filter: filter, sortField: sortField, sortDirection: sortDirection, pageSize: pageSize, page: page)
end
|
.tableViewDecorator(tableView) ⇒ Object
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
|
# File 'lib/hwidgets/hdbtableview.rb', line 177
def self.tableViewDecorator(tableView)
= HWidget.new("tr").setStyle("background-color": "#0099cc")
td = HWidget.new("td").setStyle(padding: "8px")
tableView.
setStyle("table-layout": "auto").
set(align: "center", width: "100%")
tableView. =
tableView.td = td
tr = Array.new()
tr[0] = HWidget.new("tr").set(class: "even-row", id: "#id")
tr[1] = HWidget.new("tr").set(class: "odd-row", id: "#id")
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] =
tableView.summaryTr = summaryTr
return tableView
end
|
Instance Method Details
#beforeInsertRow(row, tagName, fieldName, value) ⇒ Object
110
111
112
113
114
|
# File 'lib/hwidgets/hdbtableview.rb', line 110
def beforeInsertRow(row, tagName, fieldName, value)
checkBox = HWidget.new("input", value: value, type: "checkbox", class: 'hdbtableview-checkbox')
checkBox.set(onchange: "hdbTableView.selectAllRows(this)") if tagName == "th"
row << ( HWidget.new(tagName) << checkBox ) if fieldName == "id"
end
|
122
123
124
125
126
|
# File 'lib/hwidgets/hdbtableview.rb', line 122
def closeButton()
hl << "closeButton".red
@odb.remove() if @odb.id[0] == '#' and @odb.id[-1] != '#'
return nil
end
|
#deleteRecord(id: nil) ⇒ Object
145
146
147
148
149
150
151
152
153
|
# File 'lib/hwidgets/hdbtableview.rb', line 145
def deleteRecord(id: nil)
hl << "deleteRecord: #{id}".red
if dialogLevel == 0
@odb.delete({"#{modelName}.id": id})
else
@odb.remove(id)
end
return self.html()
end
|
#doubleClick(id: nil) ⇒ Object
128
129
130
131
132
133
134
|
# File 'lib/hwidgets/hdbtableview.rb', line 128
def doubleClick(id: nil)
dialogView = HDBDialogView.initByTableView(id, self)
dialogView.closeButton.connect(:onclick, self, "closeButton", before: 'hdialogView.close()', mode: 'none', id: @oid)
dialogView.cancelButton.connect(:onclick, self, "closeButton", before: 'hdialogView.close()', mode: 'none', id: @oid)
dialogView.connect(:onsubmit, self, "html", submit: true, id: @oid)
return dialogView.html()
end
|
#html(filter: @filter, sortField: @sortField, sortDirection: @sortDirection, pageSize: @pageSize, page: @page) ⇒ Object
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
# File 'lib/hwidgets/hdbtableview.rb', line 155
def html(filter: @filter, sortField: @sortField, sortDirection: @sortDirection, pageSize: @pageSize, page: @page)
filter = "true" if filter == ""
@filter = filter
@sortField = sortField
@sortDirection = sortDirection
@pageSize = pageSize
@page = page
@odb = HODB.newOdb(@modelName, @connectionName) unless @odb
@odb.where(filter).orderBy(sortField).direction(sortDirection).pageSize(pageSize).page(page) if @dialogLevel == 0
@fieldTable = @odb.toFieldTable(false)
@fieldTable.sortBy(sortField, asc: sortDirection == 'asc') if @dialogLevel > 0
self.set(id: @oid, name: @modelName, oid: self.object_id.to_s)
self.reset()
return super()
end
|
#newRecord ⇒ Object
136
137
138
139
140
141
142
143
|
# File 'lib/hwidgets/hdbtableview.rb', line 136
def newRecord()
nvr = odb.create dialogView = HDBDialogView.initByTableView(nvr.id, self)
dialogView.closeButton.connect(:onclick, self, "closeButton", before: 'hdialogView.close()', mode: 'none', id: @oid)
dialogView.cancelButton.connect(:onclick, self, "closeButton", before: 'hdialogView.close()', mode: 'none', id: @oid)
dialogView.connect(:onsubmit, self, "html", submit: true, id: @oid)
return dialogView.html()
end
|
#rpcAction(ids: nil, action: nil) ⇒ Object
51
52
53
54
55
56
|
# File 'lib/hwidgets/hdbtableview.rb', line 51
def rpcAction(ids: nil, action: nil)
return if ids.empty?
odb = Marshal.load(Marshal.dump(@odb))
odb.findBy("id in (#{ids.join(',')})")
eval("odb.#{action}(ids)")
end
|
#rpcHtml(args) ⇒ Object
47
48
49
|
# File 'lib/hwidgets/hdbtableview.rb', line 47
def rpcHtml(args)
return self.html(args)
end
|
#rpcPages ⇒ Object
38
39
40
41
42
43
44
45
46
|
# File 'lib/hwidgets/hdbtableview.rb', line 38
def rpcPages
return 1 if @pageSize == "all"
result = hdb(@connectionName).select("count(*)").from(@modelName).where(@filter).orderBy(nil).direction(nil).execute()
rows = result.data(0, "count").to_i
pages = rows / @pageSize.to_i
pages += 1 if (rows % @pageSize.to_i > 0)
return pages;
end
|
#rpcPageSize ⇒ Object
35
36
37
|
# File 'lib/hwidgets/hdbtableview.rb', line 35
def rpcPageSize
return @pageSize
end
|
75
76
77
78
79
80
81
82
83
|
# File 'lib/hwidgets/hdbtableview.rb', line 75
def setAddRowButton()
tr = self.appendRow()
td0 = tr.getChilds()[0]
td0.setInnerHTML("")
td0 << HWidget.new("a", "Add Row")
td0.connect(:onclick, self, "newRecord", getElem: "body", mode: "add", id: @oid)
end
|
#setControlPanel ⇒ Object
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/hwidgets/hdbtableview.rb', line 58
def setControlPanel()
tr = self.appendRow(@headerTr)
prevTd = HWidget.new("th")
prevTd.setInnerHTML("Prev")
prevTd.connect(:onclick, self, "html", id: @oid,
args: {page: [0, @page - 1].max})
nextTd = HWidget.new("th")
nextTd.setInnerHTML("Next")
nextTd.connect(:onclick, self, "html", id: @oid,
args: {page: @page + 1})
tr.getChilds()[-2] = prevTd
tr.getChilds()[-1] = nextTd
end
|
116
117
118
119
120
|
# File 'lib/hwidgets/hdbtableview.rb', line 116
def ()
super()
end
|
#setTd(td, fieldName, value, row) ⇒ Object
106
107
108
|
# File 'lib/hwidgets/hdbtableview.rb', line 106
def setTd(td, fieldName, value, row)
td.set(name: "#{@fieldTable.tableName}[#{row}][#{fieldName}]", overwrite: true)
end
|
#setThSlots(th, fieldName) ⇒ Object
85
86
87
88
89
90
91
92
|
# File 'lib/hwidgets/hdbtableview.rb', line 85
def setThSlots(th, fieldName)
sortDirection = (@sortDirection == "asc") ? "desc" : "asc"
th.connect(:onclick, self, "html", id: @oid,
args: {sortField: fieldName, sortDirection: sortDirection},
hotLog: "sort #{fieldName}")
end
|
#setTrSlots(tr, row) ⇒ Object
94
95
96
97
98
99
100
101
102
103
104
|
# File 'lib/hwidgets/hdbtableview.rb', line 94
def setTrSlots(tr, row)
tr.set(value: "#id", tabindex: "0")
tr.connect(:ondblclick, self, "doubleClick", attributes: "id", getElem: "body", mode: "add", id: @oid, after:'loadComboBox()');
tr.addJsFunction(:onclick, :'hdbTableView.click', :event, @oid)
tr.addJsFunction(:oncontextmenu, :'hdbTableView.rightClick', :event, @oid)
tr.addJsFunction(:onkeypress, :'hdbTableView.keyPress', :event, @oid)
cancKey = 46
tr.connect(:onkeypress, self, "deleteRecord", attributes: "id", KeyEvent: :event, keyCode: cancKey, id: @oid)
end
|