Add new nodes

This commit is contained in:
Jonathan Jenne
2023-09-21 15:09:28 +02:00
parent 16b2026a24
commit 1cf5c979db
15 changed files with 733 additions and 227 deletions

View File

@@ -20,28 +20,20 @@ Imports System.Configuration
Public Class frmNodeNavigation
#Region "Laufzeitvariablen & Konstanten"
Dim DT_STRUCTURE_NODES As DataTable
Dim DT_ADDING_USERS As DataTable
Dim DT_VWPMO_CONSTRUCTOR_FORMS As DataTable
Private DT_STRUCTURE_NODES As DataTable
Private DT_ADDING_USERS As DataTable
Private 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 _EntityId As Short
Private oConstructID As Short
Private CONSTRUCTORID As Integer
Private CONSTRUCTOR_DETAIL_ID As Int16
Private oFilterActive As Boolean = False
Private ROW_READ_ONLY As Boolean = False
Private CONSTRUCTOR_DETAIL_ID As Short
Private _FilterActive As Boolean = False
Private _RowReadOnly As Boolean = False
Private ADD_RECORDS_CONSTR As Boolean = True
Private TV_Collapse_ExpandState = "Collapse"
Public CtrlBuilder As ClassControlBuilder
Public CtrlCommandUI As ClassControlCommandsUI
Public Enum EditState
None
Insert
Update
Delete
End Enum
Private WindowsEx As WindowsEx
@@ -73,47 +65,63 @@ Public Class frmNodeNavigation
Private IW_USER As String
Private IW_COMMENT As String
Private INWORK_FILE As Boolean
Private Const SEE_MASK_INVOKEIDLIST = &HC
Private Const SEE_MASK_NOCLOSEPROCESS = &H40
Private Const SEE_MASK_FLAG_NO_UI = &H400
Public Const SW_SHOW As Short = 5
Private CONTROL_DOCTYPE_MATCH As Integer = 0
Private FocusedNode As TreeListNode
Private MyTreeListViewState As ClassTreeListViewState
#End Region
Private AvailableConfigNodes As New List(Of frmNewNode.NodeConfig)
Private CurrentNodeConfigId As Integer = 0
Private DocList As ClassWindreamDocGrid
Public CtrlBuilder As ClassControlBuilder
Public CtrlCommandUI As ClassControlCommandsUI
Private ClassNodeLoader As ClassNodeLoader
Private Debug As Boolean = False
Public Enum EditState
None
Insert
Update
Delete
End Enum
#End Region
Public Sub New(pEntityID As Int16, pConstructID As Int16)
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
oEntityID = pEntityID
_EntityId = pEntityID
oConstructID = pConstructID
DocList = New ClassWindreamDocGrid(GridViewDoc_Search)
WindowsEx = New WindowsEx(LOGCONFIG)
ClassNodeLoader = New ClassNodeLoader(LOGCONFIG, MYDB_ECM)
End Sub
Private Function Get_Splitter_Layout_Filename()
Dim Filename As String = String.Format("{0}-{1}-SplitterLayout.xml", CONSTRUCTOR_DETAIL_ID, CONSTRUCTOR_DETAIL_ID.ToString)
Return Path.Combine(Application.UserAppDataPath(), Filename)
End Function
Sub Save_Splitter_Layout()
Try
Dim XMLPath = Get_Splitter_Layout_Filename()
Dim layout As New ClassLayout(XMLPath)
Dim settings As New System.Collections.Generic.List(Of ClassSetting)
settings.Add(New ClassSetting("SplitViewDetailsSplitterPosition", SplitContainer1.SplitterDistance))
settings.Add(New ClassSetting("SplitViewMainSplitterPosition", SplitContainerMain.SplitterPosition))
Dim settings As New List(Of ClassSetting) From {
New ClassSetting("SplitViewDetailsSplitterPosition", SplitContainer1.SplitterDistance),
New ClassSetting("SplitViewMainSplitterPosition", SplitContainerMain.SplitterPosition)
}
layout.Save(settings)
Catch ex As Exception
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
End Try
End Sub
Sub Load_Splitter_Layout()
Try
Dim XMLPath As String = Get_Splitter_Layout_Filename()
@@ -145,7 +153,7 @@ Public Class frmNodeNavigation
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
End Try
End Sub
Private Sub frmNodeNavigation_Load(sender As Object, e As EventArgs) Handles Me.Load
Private Async Function frmNodeNavigation_Load(sender As Object, e As EventArgs) As Task Handles Me.Load
CONSTRUCTORID = CURRENT_CONSTRUCTOR_ID
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)
@@ -187,73 +195,69 @@ Public Class frmNodeNavigation
Load_Datafor_Entity()
FORM_LOADED = True
Catch ex As System.Exception
Catch ex As Exception
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Loading Form part 4")
End Try
Load_nodes()
End Sub
Private Sub Load_nodes()
Await Load_nodes()
End Function
Private Async Function Load_nodes() As Task
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
Try
Dim oTable = Await ClassNodeLoader.LoadNodes(CURRENT_ENTITY_ID)
DT_STRUCTURE_NODES = oTable
'Dim oToken = RunningTaskTokenSource.Token
'Dim oStructureNodeSql = $"SELECT
' T.GUID,
' T.RECORD_ID,
' T.NODE_CONFIG_ID,
' T.NODE_CAPTION,
' T.ID1,
' T.BACK_COLOR,
' T.PARENT_GUID,
' T.SEQUENCE,
' T.TYPE_NODE
' FROM
' VWPMO_STRUCTURE_NODES T
'INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID
'WHERE T.ENTITY_ID = {CURRENT_ENTITY_ID}"
'DT_STRUCTURE_NODES = MYDB_ECM.GetDatatable(oStructureNodeSql)
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, T.SEQUENCE from VWPMO_STRUCTURE_NODES T
INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID WHERE T.ENTITY_ID = {0}", CURRENT_ENTITY_ID)
DT_STRUCTURE_NODES = MYDB_ECM.GetDatatable(Sql)
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 T.ENTITY_ID = {0}", CURRENT_ENTITY_ID)
Dim DT_TREEVIEW_CONFIGURATION = MYDB_ECM.GetDatatable(Sql)
Dim oNodeConfigSql = String.Format("select T.* from TBPMO_STRUCTURE_NODES_CONFIGURATION T INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID WHERE T.ENTITY_ID = {0}", CURRENT_ENTITY_ID)
Dim DT_TREEVIEW_CONFIGURATION = MYDB_ECM.GetDatatable(oNodeConfigSql)
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"))
Dim bimage = row.ItemEx(Of Object)("NODE_IMAGE", Nothing)
If bimage Is Nothing Then
Continue For
End If
Dim oNodeImage = ByteArrayToBitmap(bimage)
ImageCollection1.AddImage(oNodeImage, row.Item("GUID"))
Catch ex As Exception
End Try
Next
TreeListDevexpress.DataSource = DT_STRUCTURE_NODES
TreeListDevexpress.KeyFieldName = "GUID"
TreeListDevexpress.ParentFieldName = "PARENT_GUID"
TreeListDevexpress.Columns("SEQUENCE").SortOrder = SortOrder.Ascending
TreeListDevexpress.StateImageList = ImageCollection1
Try
TreeListDevexpress.Columns.ColumnByName("colRECORD_ID").Visible = False
Catch ex As Exception
Dim oVisibleColumns = New List(Of String) From {"NODE_CAPTION"}
For Each oColumn In TreeListDevexpress.Columns
If oVisibleColumns.Contains(oColumn.FieldName) = False Then
oColumn.Visible = False
End If
Next
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
Try
TreeListDevexpress.Columns.ColumnByName("SEQUENCE").Visible = False
Catch ex As Exception
End Try
Catch ex As Exception
LOGGER.Error(ex)
Finally
SplashScreenManager.CloseOverlayForm(oHandle)
End Try
End Sub
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()
@@ -299,12 +303,12 @@ Public Class frmNodeNavigation
End Sub
End Class
Private Async Sub TreeListDevexpress_FocusedNodeChanged(sender As Object, e As FocusedNodeChangedEventArgs) Handles TreeListDevexpress.FocusedNodeChanged
FocusedNode = Nothing
If oFilterActive Then
btnCreateNewNode.Enabled = False
If _FilterActive Then
Exit Sub
End If
@@ -328,18 +332,42 @@ Public Class frmNodeNavigation
Exit Sub
End If
If oNodeId = 0 Then
Exit Sub
End If
'If oNodeId = 0 Then
' Exit Sub
'End If
Dim oRowView As DataRowView = oRowObject
Dim oRow As DataRow = oRowView.Row
Dim oGuid = oRow.Item("GUID")
Dim oNodeCaption = oRow.Item("NODE_CAPTION")
Dim oNodeConfigId = oRow.Item("NODE_CONFIG_ID")
Dim oRecordId = oRow.ItemEx("RECORD_ID", 0)
Dim oHasRecordId = (oRecordId > 0)
Dim oIsConfigNode = (oNodeConfigId = 1000)
Dim oParentNode = e.Node.ParentNode
' BEGIN NEW NODE
Dim oConfigNodeChildren = FocusedNode.Nodes.Where(Function(n) n.Item("TYPE_NODE") = 1000)
Dim oHasConfigNodeChildren = oConfigNodeChildren.Any()
Dim oConfigNodeChildrenList = oConfigNodeChildren.ToList()
CurrentNodeConfigId = oNodeConfigId
AvailableConfigNodes.Clear()
Dim oNodeConfigList = NODE_CONFIGURABLE_NODES_DT.Select($"PARENT_NODE = {oNodeConfigId}").
Cast(Of DataRow).
Select(Function(row) New frmNewNode.NodeConfig() With {
.Id = row.Item("GUID"),
.Name = row.Item("NAME")
}).ToList()
AvailableConfigNodes = oNodeConfigList
If AvailableConfigNodes.Count > 0 Then
btnCreateNewNode.Enabled = True
End If
' END NEW NODE
If oHasRecordId Then
Update_Status_Label(True, $"NodeGUID {oGuid} - RecordID {oRecordId}", EditState.None)
Else
@@ -357,7 +385,7 @@ Public Class frmNodeNavigation
CURRENT_RECORD_ID = oRecordId
ClassHelper.GetDocrecordLinks(CURRENT_RECORD_ID)
CURRENT_ENTITY_ID = oEntityID
CURRENT_ENTITY_ID = _EntityId
CURRENT_NODE_GUID = oNodeId
SELECTED_NODE_CAPTION = oNodeCaption
CURRENT_SEARCH_TYPE = "RECORD"
@@ -365,12 +393,12 @@ Public Class frmNodeNavigation
' muss vor show selected record data kommen,
' sodass die datasource für die angehakten werte existiert (checked list box)
CtrlBuilder.WatchRecordChanges = False
ClassControlValues.LoadControlValuesListWithPlaceholders(oEntityID, CURRENT_RECORD_ID, 0, CtrlBuilder.AllControls, oEntityID)
ClassControlValues.LoadControlValuesListWithPlaceholders(_EntityId, CURRENT_RECORD_ID, 0, CtrlBuilder.AllControls, _EntityId)
CtrlBuilder.WatchRecordChanges = True
Await Show_Selected_Record_Data(CURRENT_RECORD_ID)
ClassRightManagement.Check_Set_Rights(CURRENT_RECORD_ID, oEntityID)
ClassRightManagement.Check_Set_Rights(CURRENT_RECORD_ID, _EntityId)
CONTROL_HANDLING()
@@ -474,10 +502,10 @@ Public Class frmNodeNavigation
Try
If oEntityID <> CURRENT_ENTITY_ID Then
If _EntityId <> CURRENT_ENTITY_ID Then
LOGGER.Info("Entity-Data needs to be reloaded...")
CURRENT_ENTITY_ID = oEntityID
CURRENT_ENTITY_ID = _EntityId
CURRENT_CONSTRUCTOR_ID = oConstructID
Load_Adding_users()
Load_Configurable_Nodes()
@@ -495,7 +523,7 @@ Public Class frmNodeNavigation
Dim result = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Select form
Where form.Item("FORM_ID") = oEntityID).Single()
Where form.Item("FORM_ID") = _EntityId).Single()
CONSTRUCTOR_DETAIL_ID = result.Item("GUID")
' CONSTRUCT_EXPAND = result.Item("EXPAND")
Dim FORM_DATE_FORMAT = result.Item("DATE_FORMAT")
@@ -517,7 +545,7 @@ Public Class frmNodeNavigation
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
Select _user Where _user.Item("ENTITY_ID") = _EntityId
Dim Rows1 = query1.ToList()
For Each _row In Rows1
FAU_AD_DOMAIN = _row.Item("AD_DOMAIN").ToString()
@@ -553,7 +581,7 @@ Public Class frmNodeNavigation
Dim expression As String
Dim sql
'Dim sql = "SELECT CONTROL_ID, CONTROL_READ_ONLY FROM VWPMO_CONTROL_SCREEN WHERE CTRLTYPE_ID NOT IN (1) AND CONTROL_ENTITY_ID = " & oEntityID
DT_CONTROLS_ENTITY = ClassHelper.FILTER_DATATABLE(DT_VWPMO_CONTROL_SCREEN, "CTRLTYPE_ID NOT IN (1) AND CONTROL_ENTITY_ID = " & oEntityID, "")
DT_CONTROLS_ENTITY = ClassHelper.FILTER_DATATABLE(DT_VWPMO_CONTROL_SCREEN, "CTRLTYPE_ID NOT IN (1) AND CONTROL_ENTITY_ID = " & _EntityId, "")
expression = "CONTROL_READ_ONLY = " & 1
@@ -576,7 +604,7 @@ Public Class frmNodeNavigation
Dim resultDT_VWPMO_CONSTRUCTOR_FORMS = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Select form
Where form.Item("FORM_ID") = oEntityID).Single()
Where form.Item("FORM_ID") = _EntityId).Single()
CURRENT_CONSTRUCTOR_DETAIL_ID = resultDT_VWPMO_CONSTRUCTOR_FORMS.Item("GUID")
@@ -591,25 +619,25 @@ Public Class frmNodeNavigation
expression = String.Format("ENTITY_ID = {0} AND LANGUAGE = '{1}'", oEntityID, USER_LANGUAGE)
expression = String.Format("ENTITY_ID = {0} AND LANGUAGE = '{1}'", _EntityId, USER_LANGUAGE)
DT_COLUMNS_GRID_ENTITY = ClassHelper.FILTER_DATATABLE(DT_DOCSEARCH_RESULTLIST_CONFIG, expression, "SEQUENCE")
expression = String.Format("ENTITY_ID = {0} AND TYPE_ID = 10 AND LANGUAGE = '{1}'", oEntityID, USER_LANGUAGE)
expression = String.Format("ENTITY_ID = {0} AND TYPE_ID = 10 AND LANGUAGE = '{1}'", _EntityId, USER_LANGUAGE)
DT_DOCRESULT_DROPDOWN_ITEMS = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_DOCRESULT_DROPDOWN_ITEMS, expression, "SEQUENCE")
LOGGER.Debug($"Found {DT_DOCRESULT_DROPDOWN_ITEMS.Rows.Count} DT_DOCRESULT_DROPDOWN_ITEMS!")
DT_RESULTLIST_OPTIONS = ClassHelper.FILTER_DATATABLE(CURRENT_VARIABLE_CONTROLS, "ENTITY_ID = " & oEntityID, "")
expression = String.Format("ENTITY_ID = {0} AND LANGUAGE = '{1}' AND COLUMN_VIEW LIKE 'VALUE%'", oEntityID, USER_LANGUAGE)
DT_RESULTLIST_OPTIONS = ClassHelper.FILTER_DATATABLE(CURRENT_VARIABLE_CONTROLS, "ENTITY_ID = " & _EntityId, "")
expression = String.Format("ENTITY_ID = {0} AND LANGUAGE = '{1}' AND COLUMN_VIEW LIKE 'VALUE%'", _EntityId, USER_LANGUAGE)
DT_RESULTLIST_VARIABLE_VALUE = ClassHelper.FILTER_DATATABLE(DT_DOCSEARCH_RESULTLIST_CONFIG, expression, "SEQUENCE")
Dim ENTITY_ROW = (From form In DT_ENTITY_DATA.AsEnumerable()
Select form
Where form.Item("GUID") = oEntityID).Single()
Where form.Item("GUID") = _EntityId).Single()
'sql = String.Format("select * from TBPMO_RIGHT_USER WHERE USER_ID = {0} AND oEntityID = {1}", USER_GUID, oEntityID)
DT_RIGHTS_USER = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_RIGHT_USER, "ENTITY_ID = " & oEntityID, "")
DT_RIGHTS_USER = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_RIGHT_USER, "ENTITY_ID = " & _EntityId, "")
expression = String.Format("")
sql = String.Format("SELECT DISTINCT EDIT_REC,ADD_REC,DELETE_REC,ADD_DOC,VIEW_DOC,DELETE_DOC FROM TBPMO_RIGHT_GROUP WHERE ENTITY_ID = {0} AND GROUP_ID IN (SELECT GROUP_ID FROM TBDD_GROUPS_USER WHERE USER_ID = {1})", oEntityID, USER_GUID)
sql = String.Format("SELECT DISTINCT EDIT_REC,ADD_REC,DELETE_REC,ADD_DOC,VIEW_DOC,DELETE_DOC FROM TBPMO_RIGHT_GROUP WHERE ENTITY_ID = {0} AND GROUP_ID IN (SELECT GROUP_ID FROM TBDD_GROUPS_USER WHERE USER_ID = {1})", _EntityId, USER_GUID)
DT_RIGHTS_GROUP = MYDB_ECM.GetDatatable(sql)
sql = String.Format("SELECT VIEW_ID FROM TBPMO_USER_CONSTR_VIEW_TYPE WHERE CONSTRUCTOR_DETAIL_ID = {0} AND [ENTITY_ID] = {1} AND USER_ID = {2}", CURRENT_CONSTRUCTOR_DETAIL_ID, oEntityID, USER_GUID)
sql = String.Format("SELECT VIEW_ID FROM TBPMO_USER_CONSTR_VIEW_TYPE WHERE CONSTRUCTOR_DETAIL_ID = {0} AND [ENTITY_ID] = {1} AND USER_ID = {2}", CURRENT_CONSTRUCTOR_DETAIL_ID, _EntityId, USER_GUID)
SELECTED_NODE_RECORD_ID = 0
@@ -617,26 +645,26 @@ Public Class frmNodeNavigation
' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS
Dim result1 = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Select form
Where form.Item("FORM_ID") = oEntityID).Single()
Where form.Item("FORM_ID") = _EntityId).Single()
CURRENT_PARENT_ENTITY_ID = 0
' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS
Dim query = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Select form
Where form.Item("FORM_ID") = oEntityID
Where form.Item("FORM_ID") = _EntityId
Dim QuickViewSQL = query.Single().Item("SQL_QUICK_VIEW")
CURRENT_ENTITYSQL = Get_Grid_Sql_NODE_NAV(CONSTRUCTORID, oEntityID, CURRENT_CONSTRUCTOR_DETAIL_ID, USER_GUID)
CURRENT_ENTITYSQL = Get_Grid_Sql_NODE_NAV(CONSTRUCTORID, _EntityId, CURRENT_CONSTRUCTOR_DETAIL_ID, USER_GUID)
' CURRENT_ENTITYSQL = GridSQL
'Anzahl der Datensätze
ENTITY_RECORD_COUNT = MYDB_ECM.GetScalarValue("SELECT COUNT(*) FROM TBPMO_RECORD where PARENT_RECORD = 0 AND FORM_ID = " & oEntityID)
ENTITY_RECORD_COUNT = MYDB_ECM.GetScalarValue("SELECT COUNT(*) FROM TBPMO_RECORD where PARENT_RECORD = 0 AND FORM_ID = " & _EntityId)
ClassDOC_SEARCH.Get_DOC_RESULTTABLE(DT_RESULTLIST_OPTIONS, DT_RESULTLIST_VARIABLE_VALUE, DT_COLUMNS_GRID_ENTITY, oEntityID, SELECTED_NODE_RECORD_ID, True, True)
ClassDOC_SEARCH.Get_DOC_RESULTTABLE(DT_RESULTLIST_OPTIONS, DT_RESULTLIST_VARIABLE_VALUE, DT_COLUMNS_GRID_ENTITY, _EntityId, SELECTED_NODE_RECORD_ID, True, True)
DT_TBPMO_FORM_VIEW = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_FORM_VIEW, "FORM_ID = " & oEntityID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID, "")
DT_TBPMO_FORM_VIEW = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_FORM_VIEW, "FORM_ID = " & _EntityId & " AND SCREEN_ID = " & CURRENT_SCREEN_ID, "")
CURRENT_ENTITYSTRING = DT_TBPMO_FORM_VIEW.Rows(0).Item("FORM_TITLE")
FORMVIEW_ID = DT_TBPMO_FORM_VIEW.Rows(0).Item("GUID")
@@ -658,10 +686,10 @@ Public Class frmNodeNavigation
If IsNothing(CURRENT_DT_ENTITY_RECORDS) Then
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in getting Entity-Data - Check logfile")
Else
CURRENT_DT_ENTITY_RECORDS.TableName = "VWPMO_ENTITY_TABLE" & oEntityID
CURRENT_DT_ENTITY_RECORDS.TableName = "VWPMO_ENTITY_TABLE" & _EntityId
' Dim SQL_AutoValues = "SELECT GUID AS CONTROL_ID, CONNECTION_ID_1 AS CONNECTION_ID, SQL_COMMAND_1 AS SQL_COMMAND FROM TBPMO_CONTROL WHERE CONNECTION_ID_1 <> '' AND SQL_COMMAND_1 <> '' AND FORM_ID = " & oEntityID
Dim DT_AUTOVALUES = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_CONTROL, "CONNECTION_ID_1 > 0 AND SQL_COMMAND_1 <> '' AND FORM_ID = " & oEntityID, "")
Dim DT_AUTOVALUES = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_CONTROL, "CONNECTION_ID_1 > 0 AND SQL_COMMAND_1 <> '' AND FORM_ID = " & _EntityId, "")
CURRENT_SQL_AUTO_VALUES_DT = DT_AUTOVALUES
@@ -684,7 +712,7 @@ Public Class frmNodeNavigation
CtrlBuilder.WatchRecordChanges = False
ClassControlValues.LoadControlValuesList(oEntityID, CtrlBuilder.MasterPanel.Controls)
ClassControlValues.LoadControlValuesList(_EntityId, CtrlBuilder.MasterPanel.Controls)
CtrlBuilder.WatchRecordChanges = True
'Zurücksetzen
@@ -754,7 +782,7 @@ Public Class frmNodeNavigation
LOGGER.Debug("Show_Selected_Record_Data: " & Rec_ID.ToString)
Dim ENTITY_ROW = (From form In DT_ENTITY_DATA.AsEnumerable()
Select form
Where form.Item("GUID") = oEntityID).Single()
Where form.Item("GUID") = _EntityId).Single()
'Update_Status_Label(False, "")
LOGGER.Debug("RECORD ID: " & Rec_ID.ToString)
@@ -770,7 +798,7 @@ Public Class frmNodeNavigation
ENTITY_RELOAD_AFT_CONTROL_LOAD = False
CtrlBuilder.WatchRecordChanges = False
If pnlControls.Enabled = False Then pnlControls.Enabled = True
ClassControlValues.LoadControlValues(SELECTED_NODE_RECORD_ID, 0, oEntityID, CtrlBuilder.AllControls, oEntityID)
ClassControlValues.LoadControlValues(SELECTED_NODE_RECORD_ID, 0, _EntityId, CtrlBuilder.AllControls, _EntityId)
CtrlBuilder.WatchRecordChanges = True
Dim sw As New SW("Show Selected RecordData 2")
@@ -799,14 +827,14 @@ Public Class frmNodeNavigation
Sub Load_Controls(frmview_id As Integer)
Dim sw As New SW("Load_Controls")
FORMVIEW_ID = frmview_id
oEntityID = DT_TBPMO_FORM_VIEW.Rows(0).Item("FORM_ID")
CURRENT_ENTITY_ID = oEntityID
_EntityId = DT_TBPMO_FORM_VIEW.Rows(0).Item("FORM_ID")
CURRENT_ENTITY_ID = _EntityId
CtrlBuilder = New ClassControlBuilder(pnlControls)
CtrlCommandUI = New ClassControlCommandsUI(CtrlBuilder,
ContextMenuDetails,
AddressOf NewEditAppointment)
CtrlCommandUI.LoadControls(oEntityID)
CtrlCommandUI.LoadControls(_EntityId)
Lock_RecordControls(True)
AddHandler CtrlBuilder.OnRecordChanged, AddressOf OnRecordChanged
@@ -929,7 +957,7 @@ Public Class frmNodeNavigation
Sub NewEditAppointment(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Try
Dim ctrl As Windows.Forms.Control = sender
ClassFunctionCommandsUI.NewEditAppointment(ctrl.Name, oEntityID, SELECTED_NODE_RECORD_ID, pnlControls.Controls)
ClassFunctionCommandsUI.NewEditAppointment(ctrl.Name, _EntityId, SELECTED_NODE_RECORD_ID, pnlControls.Controls)
Catch ex As Exception
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
End Try
@@ -996,14 +1024,14 @@ Public Class frmNodeNavigation
' sodass die datasource für die angehakten werte existiert (checked list box)
CtrlBuilder.WatchRecordChanges = False
ClassControlValues.LoadControlValuesListWithPlaceholders(CURRENT_ENTITY_ID, CURRENT_RECORD_ID, 0, CtrlBuilder.AllControls, oEntityID)
ClassControlValues.LoadControlValuesListWithPlaceholders(CURRENT_ENTITY_ID, CURRENT_RECORD_ID, 0, CtrlBuilder.AllControls, _EntityId)
CtrlBuilder.WatchRecordChanges = True
If CURRENT_RECORD_ID > 0 Then
Await Show_Selected_Record_Data(CURRENT_RECORD_ID)
End If
ClassRightManagement.Check_Set_Rights(CURRENT_RECORD_ID, oEntityID)
ClassRightManagement.Check_Set_Rights(CURRENT_RECORD_ID, _EntityId)
CONTROL_HANDLING()
@@ -1165,7 +1193,7 @@ Public Class frmNodeNavigation
' Abhängige Listen laden
CtrlBuilder.WatchRecordChanges = False
'ClassControlValues.LoadControlValuesListWithPlaceholders(ENTITY_ID, RECORD_ID, PARENT_ID, CtrlBuilder.AllControls, ENTITY_ID)
ClassControlValues.Enable_Depending_Controls(oEntityID, SELECTED_NODE_RECORD_ID, 0, CtrlBuilder.AllControls, oEntityID)
ClassControlValues.Enable_Depending_Controls(_EntityId, SELECTED_NODE_RECORD_ID, 0, CtrlBuilder.AllControls, _EntityId)
CtrlBuilder.WatchRecordChanges = True
RECORD_ENABLED = True
@@ -1208,7 +1236,7 @@ Public Class frmNodeNavigation
'ActivateAllTabs()
End If
If RECORD_ENABLED = True Then
ClassControlValues.UnloadControlValuesList(SELECTED_NODE_RECORD_ID, oEntityID, CtrlBuilder.AllControls)
ClassControlValues.UnloadControlValuesList(SELECTED_NODE_RECORD_ID, _EntityId, CtrlBuilder.AllControls)
End If
If Not IsNothing(CtrlCommandUI) Then
'If CtrlCommandUI.IsInsert Then
@@ -1304,7 +1332,7 @@ Public Class frmNodeNavigation
Public Sub TrySave_DoSave()
ERROR_WHILE_SAVING = False
' Record Speichern
Dim ResultMessage = CtrlCommandUI.SaveRecord(SELECTED_NODE_RECORD_ID, oEntityID)
Dim ResultMessage = CtrlCommandUI.SaveRecord(SELECTED_NODE_RECORD_ID, _EntityId)
If ResultMessage <> "ERROR" Then
' Status anzeigen
Update_Status_Label(True, ResultMessage)
@@ -1397,12 +1425,12 @@ Public Class frmNodeNavigation
#End Region
Private Sub Customer_Run_Procedures()
Try
Dim DT As DataTable = MYDB_ECM.GetDatatable("SELECT * FROM TBPMO_RUN_PROCEDURES WHERE FORM_ID = " & oEntityID)
Dim DT As DataTable = MYDB_ECM.GetDatatable("SELECT * FROM TBPMO_RUN_PROCEDURES WHERE FORM_ID = " & _EntityId)
If Not DT Is Nothing Then
For Each row As DataRow In DT.Rows
Dim prsql As String = row.Item("EXECUTE_COMMAND")
prsql = prsql.ToUpper.Replace("@FORM_ID", oEntityID)
prsql = prsql.ToUpper.Replace("@ENTITY_ID", oEntityID)
prsql = prsql.ToUpper.Replace("@FORM_ID", _EntityId)
prsql = prsql.ToUpper.Replace("@ENTITY_ID", _EntityId)
prsql = prsql.ToUpper.Replace("@RECORD_ID", SELECTED_NODE_RECORD_ID)
MYDB_ECM.ExecuteNonQuery(prsql)
Next
@@ -1439,7 +1467,7 @@ Public Class frmNodeNavigation
End If
Dim DT_RESULT As DataTable
DT_RESULT = ClassDOC_SEARCH.Get_DOC_RESULTTABLE(DT_RESULTLIST_OPTIONS, DT_RESULTLIST_VARIABLE_VALUE, DT_COLUMNS_GRID_ENTITY, oEntityID, SELECTED_NODE_RECORD_ID, True)
DT_RESULT = ClassDOC_SEARCH.Get_DOC_RESULTTABLE(DT_RESULTLIST_OPTIONS, DT_RESULTLIST_VARIABLE_VALUE, DT_COLUMNS_GRID_ENTITY, _EntityId, SELECTED_NODE_RECORD_ID, True)
If IsNothing(DT_RESULT) Then
Dim msg = "wrong DocSearch-Configuration or unexpected Error in Get_DOC_RESULTTABLE - Check logfile and contact Digital Data"
@@ -1569,7 +1597,7 @@ Public Class frmNodeNavigation
Private Sub RUN_ENTITY_DOC_SEARCH()
Dim sw As New SW("RUN_ENTITY_DOC_SEARCH")
Try
Dim oSQL = $"SELECT ENTITY_DOC_SEARCH FROM TBPMO_FORM WHERE GUID = {oEntityID}"
Dim oSQL = $"SELECT ENTITY_DOC_SEARCH FROM TBPMO_FORM WHERE GUID = {_EntityId}"
CURRENT_DOCSEARCH_SQL = MYDB_ECM.GetScalarValue(oSQL)
If CURRENT_DOCSEARCH_SQL <> String.Empty Then
Dim oText = $"Die Entität-weite Suche wird im Hintergrund ausgeführt und in einem separaten Fenster angezeigt sobald sie fertig ist."
@@ -1579,7 +1607,7 @@ Public Class frmNodeNavigation
MsgBox(oText, vbOKOnly, "Information")
CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@ENTITY_ID", oEntityID)
CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@ENTITY_ID", _EntityId)
CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@USER_LANGUAGE", USER_LANGUAGE)
CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@USER_ECM_ID", USERID_FK_INT_ECM)
CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@USER_ID", USER_GUID)
@@ -1821,7 +1849,7 @@ Public Class frmNodeNavigation
End Sub
Private Function Get_DocGrid_Layout_Filename()
Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)")
Dim Filename As String = String.Format("GridViewDoc_Search_{0}_{1}_UserLayout.xml", "Entity" & oEntityID, CONSTRUCTOR_DETAIL_ID)
Dim Filename As String = String.Format("GridViewDoc_Search_{0}_{1}_UserLayout.xml", "Entity" & _EntityId, CONSTRUCTOR_DETAIL_ID)
LAYOUT_DOC_GRIDVIEW = System.IO.Path.Combine(Application.UserAppDataPath(), Filename)
Return LAYOUT_DOC_GRIDVIEW
End Function
@@ -1862,7 +1890,7 @@ Public Class frmNodeNavigation
End Sub
#Region "Dropping Files"
Sub Drag_Enter(e As DragEventArgs)
If oEntityID <> 0 Then
If _EntityId <> 0 Then
ClassDragDrop.Drag_enter(e)
Else
Update_Status_Label(True, "No entity selected", EditState.Insert)
@@ -1881,7 +1909,7 @@ Public Class frmNodeNavigation
ClassHelper.MSGBOX_Handler("INFO", "Attention", "Check Your windream-connection and restart ADDI afterwards.", "Could not create a windream session!")
Exit Function
End If
If oEntityID <> 0 And (RIGHT_READ_ONLY_DOC = False And GridControlDocSearch.ContextMenuStrip.Name = "ContextMenuStripResultFiles") Or RIGHT_ADD_DOC = True Then
If _EntityId <> 0 And (RIGHT_READ_ONLY_DOC = False And GridControlDocSearch.ContextMenuStrip.Name = "ContextMenuStripResultFiles") Or RIGHT_ADD_DOC = True Then
Dim sql = "select count(*) from VWPMO_DOKUMENTTYPES where FORMVIEW_ID = " & FORMVIEW_ID
Dim count_DT = MYDB_ECM.GetScalarValue(sql)
If count_DT = 0 And CURRENT_ENTITY_REDUNDANT_ID = 0 Then
@@ -2201,7 +2229,7 @@ Public Class frmNodeNavigation
Dim oSelectedDocument = oSelectedDocs.First
Dim Result = ClassDOC_SEARCH.Get_File_Rights(oSelectedDocument.DocId)
If Not IsNothing(Result) Then
ROW_READ_ONLY = False
_RowReadOnly = False
Select Case Result.ToString
Case "R"
ContextMenu_Read()
@@ -2215,7 +2243,7 @@ Public Class frmNodeNavigation
Else
LOGGER.Warn("FileRight is '' but User is Admin!! - Check the configuration!")
End If
ROW_READ_ONLY = True
_RowReadOnly = True
End Select
CURRENT_FILE_RIGHT = Result.ToString
Else
@@ -2223,7 +2251,7 @@ Public Class frmNodeNavigation
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Getting rights - check the log")
e.Cancel = True
End If
If ROW_READ_ONLY = False Then
If _RowReadOnly = False Then
If RIGHT_READ_ONLY_DOC = True Then
If USER_IS_ADMIN = False Then
ContextMenu_Read()
@@ -2510,8 +2538,8 @@ Public Class frmNodeNavigation
End Sub
Private Sub frmNodeNavigation_Click(sender As Object, e As EventArgs) Handles MyBase.Click
If CURRENT_ENTITY_ID <> oEntityID Then
CURRENT_ENTITY_ID = oEntityID
If CURRENT_ENTITY_ID <> _EntityId Then
CURRENT_ENTITY_ID = _EntityId
CURRENT_RECORD_ID = 0
End If
End Sub
@@ -2698,15 +2726,15 @@ Public Class frmNodeNavigation
RUN_ENTITY_DOC_SEARCH()
End Sub
Private Sub bbtnitmReloadView_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmReloadView.ItemClick
ReloadTreeView()
End Sub
Sub ReloadTreeView()
Private Async Function bbtnitmReloadView_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) As Task Handles bbtnitmReloadView.ItemClick
Await ReloadTreeView()
End Function
Async Function ReloadTreeView() As Task
TreeListDevexpress.Nodes.Clear()
Load_nodes()
End Sub
Await Load_nodes()
End Function
Private Sub UnterknotenNeuOrdnenToolStripMenuItem_Click(sender As Object, e As EventArgs)
Private Async Function UnterknotenNeuOrdnenToolStripMenuItem_Click(sender As Object, e As EventArgs) As Task
MyTreeListViewState = New ClassTreeListViewState(TreeListDevexpress)
Dim oQuestion = "Wollen Sie die gesamte Struktur unterhalb dieses Knotens neu ordnen lassen?" & vbNewLine & "Nein, wenn nur die direkten Unterknoten neu geordnet werden sollen!"
If USER_LANGUAGE <> "de-DE" Then
@@ -2718,7 +2746,7 @@ Public Class frmNodeNavigation
If result = MsgBoxResult.Yes Then
oSubnodes = "1"
ElseIf result = MsgBoxResult.Cancel Then
Exit Sub
Exit Function
End If
Cursor = Cursors.WaitCursor
Dim oSQL = $"EXEC PRCUST_REORDER_CHILD_NODES "
@@ -2733,7 +2761,7 @@ Public Class frmNodeNavigation
oNodeGUID = oID
oSQL += $" {oNodeGUID},{oSubnodes} "
MYDB_ECM.ExecuteNonQuery(oSQL)
ReloadTreeView()
Await ReloadTreeView()
MyTreeListViewState.LoadState()
TreeListDevexpress.FocusedNode = FocusedNode
@@ -2741,7 +2769,7 @@ Public Class frmNodeNavigation
Cursor = Cursors.Default
End Sub
End Function
'Private Sub TreeListDevexpress_MouseUp(sender As Object, e As MouseEventArgs) Handles TreeListDevexpress.MouseUp
' Dim tree As TreeList = TryCast(sender, TreeList)
@@ -2828,7 +2856,7 @@ Public Class frmNodeNavigation
'End If
End Sub
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BbtnitmNodeReorder.ItemClick
Private Async Function BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) As Task Handles BbtnitmNodeReorder.ItemClick
MyTreeListViewState = New ClassTreeListViewState(TreeListDevexpress)
Dim oQuestion = "Wollen Sie die gesamte Struktur unterhalb dieses Knotens neu ordnen lassen?" & vbNewLine & "Nein, wenn nur die direkten Unterknoten neu geordnet werden sollen!"
If USER_LANGUAGE <> "de-DE" Then
@@ -2840,7 +2868,7 @@ Public Class frmNodeNavigation
If result = MsgBoxResult.Yes Then
oSubnodes = "1"
ElseIf result = MsgBoxResult.Cancel Then
Exit Sub
Exit Function
End If
Cursor = Cursors.WaitCursor
Dim oSQL = $"EXEC PRCUST_REORDER_CHILD_NODES "
@@ -2855,14 +2883,14 @@ Public Class frmNodeNavigation
oNodeGUID = oID
oSQL += $" {oNodeGUID},{oSubnodes} "
MYDB_ECM.ExecuteNonQuery(oSQL)
ReloadTreeView()
Await ReloadTreeView()
MyTreeListViewState.LoadState()
TreeListDevexpress.FocusedNode = FocusedNode
Update_Status_Label(True, "Nodes reordered")
End If
Cursor = Cursors.Default
End Sub
End Function
Private Sub bbtnItm_TV_Collape_Expand_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnItm_TV_Collape_Expand.ItemClick
If TV_Collapse_ExpandState = "Collapse" Then
@@ -2893,4 +2921,28 @@ Public Class frmNodeNavigation
DocumentViewer.CloseDocument()
End If
End Sub
Private Async Sub btnCreateNewNode_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnCreateNewNode.ItemClick
Dim oForm As New frmNewNode() With {
.NodeConfigTypes = AvailableConfigNodes
}
If oForm.ShowDialog() <> DialogResult.OK Then
Exit Sub
End If
Dim oParentNodeGuid As Integer = FocusedNode.Item("GUID")
Dim oIsExpanded As Boolean = FocusedNode.Expanded
Dim oNodeCreator = New ClassNodeCreator(LOGCONFIG, ImageCollection1)
oNodeCreator.AddNode(_EntityId, oForm.Title, oParentNodeGuid, oForm.Id)
Await ReloadTreeView()
Dim oNode = TreeListDevexpress.FindNodeByFieldValue("GUID", oParentNodeGuid)
Dim oNodeIndex = TreeListDevexpress.MakeNodeVisible(oNode)
TreeListDevexpress.SetFocusedNode(oNode)
If oIsExpanded Then
oNode.Expand()
End If
End Sub
End Class