Modules/GUIs.ZooFlow/frmTreeViewNavi.vb

252 lines
10 KiB
VB.net

Imports DevExpress.XtraBars
Imports DevExpress.XtraEditors.Controls
Imports DevExpress.XtraEditors.Repository
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraTreeList
Imports DigitalData.GUIs.ZooFlow.ClassConstants
Public Class frmTreeViewNavi
Dim RightAddActive As Boolean = False
Dim FormShown As Boolean = False
Dim SelectedNodeID As Integer = 0
Dim selectedNodeCapt As String
Private Sub frmTreeViewNavi_Load(sender As Object, e As EventArgs) Handles Me.Load
Try
Dim oSQL = "select SN_ID ChildID,SN_PARENT_ID ParentID,TERM_VALUE as CAPTION from VWIDB_STRUCTURE_NODES_STRUCTURE"
Dim oDT As DataTable = My.DatabaseIDB.GetDatatable(oSQL)
TreeList2.Nodes.Clear()
TreeList2.KeyFieldName = oDT.Columns(0).ColumnName
TreeList2.ParentFieldName = oDT.Columns(1).ColumnName
TreeList2.DataSource = oDT
If My.Application.Modules.Item(MODULE_ZOOFLOW).IsAdmin Then
RibbonPageGroup2.Visible = True
Else
RibbonPageGroup2.Visible = False
End If
Catch ex As Exception
End Try
End Sub
Private Sub TreeList2_GetStateImage(sender As Object, e As DevExpress.XtraTreeList.GetStateImageEventArgs) Handles TreeList2.GetStateImage
If e.Node.Expanded Then
e.NodeImageIndex = 1
Else
e.NodeImageIndex = 0
End If
End Sub
Private Sub TreeList2_SelectionChanged(sender As Object, e As EventArgs) Handles TreeList2.SelectionChanged
End Sub
Sub Refresh_all()
Refresh_Relations()
If XtraTabControlRelationScope.SelectedTabPageIndex = 0 Then
Refresh_FreeUsers()
GridViewFreeUser.FocusedRowHandle = GridControl.InvalidRowHandle
Else
Refresh_FreeGroups()
GridViewFreeGroups.FocusedRowHandle = GridControl.InvalidRowHandle
End If
GridViewRelations.FocusedRowHandle = GridControl.InvalidRowHandle
End Sub
Private Sub BarCheckItemAdminFolderRights_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarCheckItemAdminFolderRights.CheckedChanged
Dim oitm As BarCheckItem = e.Item
RightAddActive = oitm.Checked
SplitContainerControl1.Collapsed = Not RightAddActive
If RightAddActive = True Then
RibbonPageGroupRelationsChange.Visible = True
If SelectedNodeID > 0 Then
Refresh_all()
End If
Else
RibbonPageGroupRelationsChange.Visible = False
End If
End Sub
Private Sub Refresh_FreeUsers()
Try
Dim oSQL = $"SELECT GUID as USR_ID, EMAIL FROM DD_ECM.dbo.TBDD_USER USR WHERE GUID NOT IN (
SELECT ScopeID FROM VWIDB_SN_RELATIONS WHERE Scope = 'USR' AND SN_ID = {SelectedNodeID}) AND USR.ACTIVE = 1 AND LEN(EMAIL) > 0"
Dim oDT As DataTable = My.DatabaseIDB.GetDatatable(oSQL)
If Not IsNothing(oDT) Then
GridViewFreeUser.Columns.Clear()
GridControlFreeUser.DataSource = oDT
GridViewFreeUser.Columns("USR_ID").Visible = False
End If
Catch ex As Exception
End Try
End Sub
Private Sub Refresh_FreeGroups()
Try
Dim oSQL = $"SELECT GUID as GroupID, NAME FROM DD_ECM.dbo.TBDD_GROUPS GRP WHERE GUID NOT IN (
SELECT ScopeID FROM VWIDB_SN_RELATIONS WHERE Scope = 'GRP' AND SN_ID = {SelectedNodeID}) AND GRP.ACTIVE = 1 "
Dim oDT As DataTable = My.DatabaseIDB.GetDatatable(oSQL)
If Not IsNothing(oDT) Then
GridViewFreeGroups.Columns.Clear()
GridControlFreeGroups.DataSource = oDT
GridViewFreeGroups.Columns("GroupID").Visible = False
End If
Catch ex As Exception
End Try
End Sub
Private Sub Refresh_Relations()
Try
Dim oSQL = $"SELECT * FROM VWIDB_SN_RELATIONS WHERE SN_ID = {SelectedNodeID}"
Dim oDT As DataTable = My.DatabaseIDB.GetDatatable(oSQL)
If Not IsNothing(oDT) Then
GridViewRelations.Columns.Clear()
Dim columnStateIcon As New DataColumn()
columnStateIcon.DataType = GetType(Image)
columnStateIcon.ColumnName = "ICON"
columnStateIcon.Caption = ""
oDT.Columns.Add(columnStateIcon)
GridControlRelations.DataSource = oDT
GridViewRelations.Columns("REL_ID").Visible = False
GridViewRelations.Columns("SN_ID").Visible = False
GridViewRelations.Columns("Scope").Visible = False
GridViewRelations.Columns("ScopeID").Visible = False
GridViewRelations.Columns("NODE_CAPTION").Visible = False
GridViewRelations.Columns.Item("ICON").MaxWidth = 25
GridViewRelations.Columns.Item("ICON").MinWidth = 25
GridViewRelations.Columns.Item("ICON").AppearanceCell.BackColor = Color.White
GridViewRelations.Columns.Item("ICON").Fixed = FixedStyle.Left
GridViewRelations.ViewCaption = $"Relationen für [{selectedNodeCapt}]"
If oDT.Rows.Count > 0 Then
Dim oRowIndex As Integer = 0
For Each oRow As DataRow In oDT.Rows
Try
Dim oScope = oRow.Item("Scope")
If IsNothing(oScope) Then
Exit Sub
End If
Dim oImageIndex As Integer
oImageIndex = 1
If oScope.ToString = "GRP" Then
oImageIndex = 0
End If
GridViewRelations.SetRowCellValue(oRowIndex, "ICON", ImageCollection1.Images(oImageIndex))
oRowIndex += 1
Catch ex As Exception
End Try
Next
End If
End If
Catch ex As Exception
End Try
End Sub
Private Sub frmTreeViewNavi_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
FormShown = True
SplitContainerControl1.Collapsed = True
End Sub
Private Sub BarButtonItem1_ItemClick(sender As Object, e As ItemClickEventArgs) Handles BarButtonItemAddRelation.ItemClick
Dim oInsert As String
oInsert = $"INSERT INTO [dbo].[TBIDB_STRUCTURE_NODES_RELATIONS]
([SN_ID]"
If XtraTabControlRelationScope.SelectedTabPageIndex = 0 Then
oInsert &= ",[USR_ID]"
Else
oInsert &= ",[GRP_ID]"
End If
oInsert &= $",[ADDED_WHO]) VALUES ({SelectedNodeID}, {BarButtonItemRelationDel.Tag},'{My.Application.User.UserName}')"
If My.DatabaseIDB.ExecuteNonQuery(oInsert) = True Then
Refresh_all()
End If
End Sub
Private Sub GridViewFreeUser_FocusedRowChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles GridViewFreeUser.FocusedRowChanged
Dim oFocusedUSR = GridViewFreeUser.GetFocusedRowCellValue(GridViewFreeUser.Columns("USR_ID"))
If Not IsNothing(oFocusedUSR) Then
RibbonPageGroupRelationsChange.Enabled = True
BarButtonItemAddRelation.Enabled = True
BarButtonItemRelationDel.Enabled = False
BarButtonItemRelationDel.Tag = oFocusedUSR
GridViewRelations.FocusedRowHandle = GridControl.InvalidRowHandle
Else
RibbonPageGroupRelationsChange.Enabled = False
End If
End Sub
Private Sub GridViewRelations_FocusedRowChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles GridViewRelations.FocusedRowChanged
Dim oFocusedRELID = GridViewRelations.GetFocusedRowCellValue(GridViewRelations.Columns("REL_ID"))
If Not IsNothing(oFocusedRELID) Then
RibbonPageGroupRelationsChange.Enabled = True
BarButtonItemAddRelation.Enabled = False
BarButtonItemRelationDel.Enabled = True
BarButtonItemRelationDel.Tag = oFocusedRELID
Else
RibbonPageGroupRelationsChange.Enabled = False
End If
End Sub
Private Sub BarButtonItem2_ItemClick(sender As Object, e As ItemClickEventArgs) Handles BarButtonItemRelationDel.ItemClick
Dim oDel = $"DELETE FROM TBIDB_STRUCTURE_NODES_RELATIONS WHERE GUID = {BarButtonItemRelationDel.Tag}"
If My.DatabaseIDB.ExecuteNonQuery(oDel) = True Then
Refresh_all()
End If
End Sub
Private Sub TreeList2_FocusedNodeChanged(sender As Object, e As FocusedNodeChangedEventArgs) Handles TreeList2.FocusedNodeChanged
Try
Dim KeyValue As Object
KeyValue = TreeList2.FocusedNode(TreeList2.KeyFieldName)
If IsNothing(KeyValue) Then
Exit Sub
End If
Dim oNodeCaption = e.Node.GetDisplayText("CAPTION")
selectedNodeCapt = oNodeCaption
Console.WriteLine($"keyfield: {KeyValue.ToString}")
If IsNumeric(KeyValue) Then
SelectedNodeID = KeyValue
Else
Exit Sub
End If
If RightAddActive Then
Refresh_all()
End If
Catch ex As Exception
End Try
End Sub
Private Sub GridViewFreeGroups_FocusedRowChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles GridViewFreeGroups.FocusedRowChanged
Dim oFocusedGRP = GridViewFreeGroups.GetFocusedRowCellValue(GridViewFreeGroups.Columns("GroupID"))
If Not IsNothing(oFocusedGRP) Then
RibbonPageGroupRelationsChange.Enabled = True
BarButtonItemAddRelation.Enabled = True
BarButtonItemRelationDel.Enabled = False
BarButtonItemRelationDel.Tag = oFocusedGRP
Else
RibbonPageGroupRelationsChange.Enabled = False
End If
End Sub
Private Sub XtraTabControlRelationScope_SelectedPageChanged(sender As Object, e As DevExpress.XtraTab.TabPageChangedEventArgs) Handles XtraTabControlRelationScope.SelectedPageChanged
If XtraTabControlRelationScope.SelectedTabPageIndex = 1 Then
Refresh_FreeGroups()
Else
Refresh_FreeUsers()
End If
End Sub
End Class