'Class module
Sub Class_Globals
Private ABM As ABMaterial
Public AbTbl As ABMTable
Private ObjectId As String
Private TblTheme = "tbltheme" As String
Private TblHeaderTheme = "tblheader" As String
Private TblRowTheme = "tblrow" As String
Private NoOfRows, NoOfCols As Int
Private TmpId = -10 As Int
Type CellInfo(Val As String,Thm As String)
End Sub
public Sub ParseEvent(params As Map)
Dim eventName As String = params.Get("eventname")
Dim eventParams() As String = Regex.Split(",",params.Get("eventparams"))
Log(eventName)
' Important! Here we remove the 'parent' part, so we can re-use the this component, as the events will have the same name
' e.g. myTopBar2aBtn1_Clicked will become Btn1_Clicked
eventName = eventName.SubString(ObjectId.Length)
If SubExists(Me, eventName) Then
params.Remove("eventname")
params.Remove("eventparams")
Select Case params.Size
Case 0
CallSub(Me, eventName)
Case 1
CallSub2(Me, eventName, params.Get(eventParams(0)))
Case 2
If params.get(eventParams(0)) = "abmistable" Then
Dim PassedTables As List = ABM.ProcessTablesFromTargetName(params.get(eventParams(1)))
CallSub2(Me, eventName, PassedTables)
Else
CallSub3(Me, eventName, params.Get(eventParams(0)), params.Get(eventParams(1)))
End If
Case Else
' cannot be called directly, to many param
CallSub2(Me, eventName, params)
End Select
End If
End Sub
Sub Initialize(page As ABMPage,Handler As String, Headers() As String)
ObjectId = Handler
AbTbl.Initialize(page, Handler & "tbl", False, False, False, TblTheme)
AbTbl.SetHeaders(Headers)
AbTbl.SetColumnDataFields(Headers)
Private HeadThemes As List
Private VisibilityCol As List
HeadThemes.Initialize
VisibilityCol.Initialize
For i = 0 To Headers.Length - 1
HeadThemes.Add(TblHeaderTheme)
If i < 2 Then
VisibilityCol.Add(False)
Else
VisibilityCol.Add(True)
End If
Next
AbTbl.SetHeaderThemes(HeadThemes)
AbTbl.SetColumnVisible(VisibilityCol)
AbTbl.IsBordered = True
AbTbl.EventHandler = Me
Log("initialize")
End Sub
'Start Build in Subs
Public Sub GetActiveRow As String
Return IdtoRow(GetRowId)
End Sub
Public Sub GetRowId As String
Return AbTbl.GetActiveRow
End Sub
Private Sub IdtoRow(Id As String) As String
For x = 0 To NoOfRows - 1
If AbTbl.GetString(x,0) = Id Then
Return x
End If
Next
Return "-1"
End Sub
Public Sub TtlRows As Int
Return NoOfRows
End Sub
Public Sub TtlCols As Int
Return NoOfCols
End Sub
Public Sub AddRow(Values() As String)
Private Id As String
Private row As List
row.Initialize
Private rCellThemes As List
rCellThemes.Initialize
For i = 0 To Values.Length-1
Id = Values(0)
row.Add(Values(i))
rCellThemes.Add(TblRowTheme)
Next
AbTbl.AddRow(Id, row)
AbTbl.SetRowThemes(rCellThemes)
NoOfRows = NoOfRows+1
End Sub
Public Sub GetTmpId As String
TmpId = TmpId - 1
Return TmpId
End Sub
Public Sub AddRowFromSQL(SQ As SQL,Query As String)
Try
AbTbl.Clear
Private Values As ResultSet
Private Id As String
NoOfRows = 0
Values = SQ.ExecQuery(Query)
NoOfCols = Values.ColumnCount
Do While Values.NextRow
Private row As List
row.Initialize
Private rCellThemes As List
rCellThemes.Initialize
For i = 0 To NoOfCols - 1
Id = Values.GetString2(0)
row.Add(Values.GetString2(i))
rCellThemes.Add(TblRowTheme)
Next
AbTbl.AddRow(Id, row)
AbTbl.SetRowThemes(rCellThemes)
NoOfRows = NoOfRows + 1
Loop
Values.Close
Catch
Log(LastException)
End Try
End Sub
Public Sub CopyTbltoList() As List
Private TblRows As List
TblRows.Initialize
For x = 0 To NoOfRows - 1
Private TblCol As List
TblCol.Initialize
For y = 0 To NoOfCols - 1
Private Cell As CellInfo
Cell.Initialize
Cell.Val = AbTbl.GetString(x,y)
Cell.Thm = AbTbl.GetCellTheme(x,y)
TblCol.Add(Cell)
'Log("row : " & x & " Col : " & y & " Val : " & Cell.Val)
Next
TblRows.Add(TblCol)
Next
Return TblRows
End Sub
Public Sub CopyListtoTbl(TblRows As List)
Private Id As String
Private TblCol As List
TblCol.Initialize
Private Cell As CellInfo
Cell.Initialize
AbTbl.Clear
For x = 0 To TblRows.Size - 1
Private row As List
row.Initialize
Private rCellThemes As List
rCellThemes.Initialize
TblCol = TblRows.Get(x)
For y = 0 To TblCol.Size - 1
Cell = TblCol.Get(y)
If y = 0 Then Id = Cell.Val
row.Add(Cell.Val)
rCellThemes.Add(Cell.Thm)
'Log("x: " & x & " y : " & y & " Id : " & Id & " val : " & Cell.val)
Next
AbTbl.AddRow(Id, row)
AbTbl.SetRowThemes(rCellThemes)
Next
NoOfRows = TblRows.Size
NoOfCols = TblCol.Size
AbTbl.Refresh
End Sub
Public Sub RemoveRow(Id As String)
If Id = "" Then Return
Private TblRows As List
TblRows.Initialize
For x = 0 To NoOfRows - 1
If AbTbl.GetString(x,0) <> Id Then
Private TblCol As List
TblCol.Initialize
For y = 0 To NoOfCols - 1
Private Cell As CellInfo
Cell.Initialize
Cell.Val = AbTbl.GetString(x,y)
Cell.Thm = AbTbl.GetCellTheme(x,y)
TblCol.Add(Cell)
Next
TblRows.Add(TblCol)
End If
Next
CopyListtoTbl(TblRows)
End Sub
Sub tbl_Clicked(PassedRowsAndColumns AsList)
Log("Clicked")
End Sub