RecordOrganizer/app/DD-Record-Organizer/frmNodeNavigation.vb

238 lines
10 KiB
VB.net

Imports DevExpress.XtraTreeList
Imports DevExpress.XtraTreeList.Columns
Imports DevExpress.XtraTreeList.Nodes.Operations
Imports DevExpress.XtraTreeList.Nodes
Imports DevExpress.XtraSplashScreen
Imports System.Threading
Public Class frmNodeNavigation
Dim DTNODES As DataTable
Dim DT_ADDING_USERS As DataTable
Dim DT_VWPMO_CONSTRUCTOR_FORMS As DataTable
Private RunningTask As Task
Private RunningTaskTokenSource As New CancellationTokenSource
Private RunningTaskToken = RunningTaskTokenSource.Token
Private oEntityID As Int16
Private oConstructID As Int16
Private CONSTRUCTOR_DETAIL_ID As Int16
Public Sub New(pEntityID As Int16, oConstructID As Int16)
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
oEntityID = pEntityID
oConstructID = oConstructID
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
End Sub
Private Sub frmNodeNavigation_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim Sql = String.Format("SELECT *, [dbo].[FNPMO_GETOBJECTCAPTION]('{0}','FORMVIEW_TITLE' + CONVERT(VARCHAR(5), FORM_VIEW_ID), {1}) AS 'CAPTION' " &
"FROM VWPMO_CONSTRUCTOR_FORMS WHERE SCREEN_ID = {2} AND CONSTRUCT_ID = {3} ORDER BY SEQUENCE", USER_LANGUAGE, CURRENT_SCREEN_ID, CURRENT_SCREEN_ID, oConstructID)
DT_VWPMO_CONSTRUCTOR_FORMS = ClassDatabase.Return_Datatable(Sql, True)
Load_nodes()
End Sub
Async Function Load_nodes() As Threading.Tasks.Task
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
Try
Load_Datafor_Entity()
Dim oToken = RunningTaskTokenSource.Token
Dim Sql = String.Format("select T.GUID,T.RECORD_ID, T.NODE_CONFIG_ID,T.NODE_CAPTION,T.ID1, T.BACK_COLOR,T.PARENT_GUID from VWPMO_STRUCTURE_NODES T INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID WHERE T1.CONSTRUCT_ID = {0}", 1)
DTNODES = ClassDatabase.Return_Datatable(Sql, True)
Sql = String.Format("select T.* from TBPMO_STRUCTURE_NODES_CONFIGURATION T INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID WHERE T1.CONSTRUCT_ID = {0}", 1)
Dim DT_TREEVIEW_CONFIGURATION = ClassDatabase.Return_Datatable(Sql)
For Each row As DataRow In DT_TREEVIEW_CONFIGURATION.Rows
Try
Dim bimage = row.Item("NODE_IMAGE")
If Not IsDBNull(bimage) Then
Dim Node_image = ByteArrayToBitmap(bimage)
ImageCollection1.AddImage(Node_image, row.Item("GUID"))
End If
Catch ex As Exception
End Try
Next
TreeListDevexpress.DataSource = DTNODES
TreeListDevexpress.KeyFieldName = "GUID"
TreeListDevexpress.ParentFieldName = "PARENT_GUID"
TreeListDevexpress.StateImageList = ImageCollection1
Try
TreeListDevexpress.Columns.ColumnByName("colRECORD_ID").Visible = False
Catch ex As Exception
End Try
Try
TreeListDevexpress.Columns.ColumnByName("colNODE_CONFIG_ID").Visible = False
Catch ex As Exception
End Try
Try
TreeListDevexpress.Columns.ColumnByName("colBACK_COLOR").Visible = False
TreeListDevexpress.Columns.ColumnByName("colID1").Visible = False
Catch ex As Exception
End Try
Catch ex As Exception
Finally
SplashScreenManager.CloseOverlayForm(oHandle)
End Try
End Function
Private Sub TreeListDevexpress_ColumnFilterChanged(sender As Object, e As EventArgs)
Dim tree As TreeList = TryCast(sender, TreeList)
Dim filteredColumns As List(Of TreeListColumn) = tree.Columns.Cast(Of TreeListColumn)().Where(Function(c) c.FilterInfo.AutoFilterRowValue IsNot Nothing).ToList()
If filteredColumns.Count = 0 Then
tree.CollapseAll()
Return
End If
tree.BeginUpdate()
For Each col As TreeListColumn In filteredColumns
Dim op As New CollapseChildrenOperation(col.FilterInfo.AutoFilterRowValue.ToString(), col)
tree.NodesIterator.DoOperation(op)
Next col
tree.EndUpdate()
End Sub
Public Class CollapseChildrenOperation
Inherits TreeListOperation
Private filterValue As String
Private column As TreeListColumn
Public Sub New(ByVal filter As String, ByVal col As TreeListColumn)
filterValue = filter
column = col
End Sub
Private Function IsNodeMatchFilter(ByVal node As TreeListNode, ByVal column As TreeListColumn) As Boolean
Return node.GetDisplayText(column).Contains(filterValue)
End Function
Public Overrides Sub Execute(ByVal node As TreeListNode)
If IsNodeMatchFilter(node, column) Then
node.TreeList.MakeNodeVisible(node)
CollapseChildren(node)
End If
End Sub
Public Sub CollapseChildren(ByVal node As TreeListNode)
'node.Visible = true;
For Each childNode As TreeListNode In node.Nodes
CollapseChildren(childNode)
Next childNode
node.Expanded = False
End Sub
End Class
Private Sub TreeListDevexpress_FocusedNodeChanged(sender As Object, e As FocusedNodeChangedEventArgs) Handles TreeListDevexpress.FocusedNodeChanged
For Each treeListNode As DevExpress.XtraTreeList.Nodes.TreeListNode In TreeListDevexpress.Selection
Dim oID = treeListNode.Id
Dim PID = treeListNode.ParentNode
Dim Column_RecID As DevExpress.XtraTreeList.Columns.TreeListColumn = TreeListDevexpress.Columns("RECORD_ID")
Dim RecID = e.Node.GetDisplayText(Column_RecID)
Console.WriteLine(oID)
Next
End Sub
Private Sub TreeListDevexpress_GetStateImage(sender As Object, e As GetStateImageEventArgs) Handles TreeListDevexpress.GetStateImage
Dim Column_Config_ID As DevExpress.XtraTreeList.Columns.TreeListColumn = TreeListDevexpress.Columns("NODE_CONFIG_ID")
Dim configid = e.Node.GetDisplayText(Column_Config_ID)
e.Node.StateImageIndex = ImageCollection1.Images.Keys.IndexOf(configid)
End Sub
Sub Load_Adding_users()
Try
Dim oSql = String.Format("SELECT * FROM TBPMO_ENTITY_USERRIGHT_ADDING where ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", oConstructID)
DT_ADDING_USERS = ClassDatabase.Return_Datatable(oSql, False)
Catch ex As Exception
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Load_Adding_users")
End Try
End Sub
Private Sub Load_Configurable_Nodes()
Try
Dim oSql = String.Format("SELECT * FROM TBPMO_STRUCTURE_NODES_CONFIGURATION where TYPE_NODE = 1000 AND ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", oConstructID)
NODE_CONFIGURABLE_NODES_DT = ClassDatabase.Return_Datatable(oSql, False)
Catch ex As Exception
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Load_Configurable_Nodes")
End Try
End Sub
Sub Load_Datafor_Entity()
Try
If oEntityID <> CURRENT_ENTITY_ID Then
LOGGER.Info("Entity-Data needs to be reloaded...")
CURRENT_ENTITY_ID = oEntityID
CURRENT_CONSTRUCTOR_ID = oConstructID
Load_Adding_users()
Load_Configurable_Nodes()
End If
Dim sw As New SW("Load_Datafor_Entity")
'If NODE_NAVIGATION = True Then
' ENTITY_ID = ClassNodeNavigation.Return_ENTITY_FOR_TAG(SelectedNode.Tag)
' CURRENT_ENTITY_ID = ENTITY_ID
'End If
Dim result = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Select form
Where form.Item("FORM_ID") = oEntityID).Single()
CONSTRUCTOR_DETAIL_ID = result.Item("GUID")
' CONSTRUCT_EXPAND = result.Item("EXPAND")
Dim FORM_DATE_FORMAT = result.Item("DATE_FORMAT")
If FORM_DATE_FORMAT <> USER_DATE_FORMAT Then
CURRENT_DATE_FORMAT = USER_DATE_FORMAT
Else
CURRENT_DATE_FORMAT = FORM_DATE_FORMAT
End If
'LOCK_CONTROLS_BG_LOAD = result.Item("LOCK_CONTROLS_BG_LOAD")
FAU_AD_DOMAIN = ""
FAU_AD_SERVER = ""
FAU_AD_USER = ""
FAU_AD_USER_PW = ""
If DT_ADDING_USERS.Rows.Count > 0 Then
'Überprüfen ob für diese Entität ein spezifischer windream-User verwendet wird, wenn Dateien abgelegt werden?
Dim query1 = From _user In DT_ADDING_USERS.AsEnumerable()
Select _user Where _user.Item("ENTITY_ID") = oEntityID
Dim Rows1 = query1.ToList()
For Each _row In Rows1
FAU_AD_DOMAIN = _row.Item("AD_DOMAIN").ToString()
FAU_AD_SERVER = _row.Item("AD_SERVER").ToString()
FAU_AD_USER = _row.Item("AD_USER").ToString()
Dim wrapper As New ClassEncryption("!35452didalog=")
Dim PWplainText As String
' DecryptData throws if the wrong password is used.
Try
PWplainText = wrapper.DecryptData(_row.Item("AD_USER_PW").ToString())
Catch ex As Exception
LOGGER.Warn("- the Password for FileAddingUser '" & FAU_AD_USER & "' could not be decrypted")
PWplainText = ""
End Try
FAU_AD_USER_PW = PWplainText
Next
End If
sw.Done()
' Load_Entity_Data_CONTROLS_RECORDS()
Catch ex As Exception
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Load_Datafor_Entity: " & ex.StackTrace)
End Try
End Sub
End Class