frm main Load Grid Optimierung

This commit is contained in:
Developer01
2026-01-30 13:00:16 +01:00
parent b7d427b5eb
commit 969f27a91f

View File

@@ -962,78 +962,82 @@ Public Class frmMain
End Sub
Async Function Load_single_Profile(Optional ForceReload As Boolean = False) As Tasks.Task
Dim gridUpdateStarted As Boolean = False
Dim viewUpdateStarted As Boolean = False
Try
FRONTEND_ACTION = "Load_single_Profile"
Load_Profiles_for_User()
GridControlWorkflows_Visible()
Dim expression As String
expression = "GUID = " & CURRENT_CLICKED_PROFILE_ID
Dim TEMP_TABLE = CURR_DT_VWPM_PROFILE_ACTIVE
Dim foundRows() As DataRow
foundRows = TEMP_TABLE.Select(expression)
Dim result = 0
For i = 0 To foundRows.GetUpperBound(0)
result += 1
Next
If result = 1 Then
Dim oSQL = foundRows(0)("SQL_VIEW")
oSQL = clsPatterns.ReplaceInternalValues(oSQL)
oSQL = clsPatterns.ReplaceUserValues(oSQL)
oSQL = oSQL.Replace("@USER_ID", USER_ID)
oSQL = oSQL.Replace("@USERNAME", USER_USERNAME)
oSQL = oSQL.Replace("@MACHINE_NAME", System.Environment.MachineName)
oSQL = oSQL.Replace("@DATE", Now.ToShortDateString)
oSQL = oSQL.Replace("@PROFILE_ID", CURRENT_CLICKED_PROFILE_ID)
DT_CURR_WF_ITEMS = Await DatabaseFallback.GetDatatableECMAsync(oSQL)
If ForceReload = True Then
LOGGER.Info("ForceReload is true!")
End If
If Not IsNothing(DT_CURR_WF_ITEMS) Then
Dim oADDED = GET_LAST_ADDED(DT_CURR_WF_ITEMS)
Dim oChanged = GET_LAST_CHANGED(DT_CURR_WF_ITEMS)
Dim oCOUNT = DT_CURR_WF_ITEMS.Rows.Count
If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN And OVERVIEW_COUNT = oCOUNT Then
If ForceReload = False Then
LOGGER.Info("No changes on OverviewHash - so exit Refresh")
Exit Function
End If
Else
OVERVIEW_ADDED_WHEN = oADDED
OVERVIEW_CHANGED_WHEN = oChanged
OVERVIEW_COUNT = oCOUNT
End If
If DT_CURR_WF_ITEMS.Rows.Count = 0 Then
NO_WORKFLOWITEMS = True
lblCaptionMainGrid.Text = String.Format(S.Aktuell_keine_Workflowdaten_vorhanden___0_, CURRENT_CLICKED_PROFILE_TITLE)
GridControlWorkflows.Visible = False
bindsourcegrid.DataSource = Nothing
GridControlWorkflows.DataSource = Nothing
Else
NO_WORKFLOWITEMS = False
lblCaptionMainGrid.Text = CURRENT_CLICKED_PROFILE_TITLE
End If
Create_Basic_View()
RestoreLayout()
End If
Dim expression As String = "GUID = " & CURRENT_CLICKED_PROFILE_ID
Dim foundRow As DataRow = CURR_DT_VWPM_PROFILE_ACTIVE.Select(expression).FirstOrDefault()
If foundRow Is Nothing Then
Exit Function
End If
If GridControlWorkflows.Visible Then
GridControlWorkflows.BeginUpdate()
gridUpdateStarted = True
GridViewWorkflows.BeginUpdate()
viewUpdateStarted = True
End If
Dim oSQL = foundRow.Item("SQL_VIEW")
oSQL = clsPatterns.ReplaceInternalValues(oSQL)
oSQL = clsPatterns.ReplaceUserValues(oSQL)
oSQL = oSQL.Replace("@USER_ID", USER_ID)
oSQL = oSQL.Replace("@USERNAME", USER_USERNAME)
oSQL = oSQL.Replace("@MACHINE_NAME", System.Environment.MachineName)
oSQL = oSQL.Replace("@DATE", Now.ToShortDateString)
oSQL = oSQL.Replace("@PROFILE_ID", CURRENT_CLICKED_PROFILE_ID)
DT_CURR_WF_ITEMS = Await DatabaseFallback.GetDatatableECMAsync(oSQL)
If IsNothing(DT_CURR_WF_ITEMS) Then
Exit Function
End If
Dim oADDED = GET_LAST_ADDED(DT_CURR_WF_ITEMS)
Dim oChanged = GET_LAST_CHANGED(DT_CURR_WF_ITEMS)
Dim oCOUNT = DT_CURR_WF_ITEMS.Rows.Count
If ForceReload = False Then
If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN And OVERVIEW_COUNT = oCOUNT Then
Exit Function
End If
OVERVIEW_ADDED_WHEN = oADDED
OVERVIEW_CHANGED_WHEN = oChanged
OVERVIEW_COUNT = oCOUNT
End If
If DT_CURR_WF_ITEMS.Rows.Count = 0 Then
NO_WORKFLOWITEMS = True
lblCaptionMainGrid.Text = String.Format(S.Aktuell_keine_Workflowdaten_vorhanden___0_, CURRENT_CLICKED_PROFILE_TITLE)
GridControlWorkflows.Visible = False
bindsourcegrid.DataSource = Nothing
GridControlWorkflows.DataSource = Nothing
Exit Function
End If
NO_WORKFLOWITEMS = False
lblCaptionMainGrid.Text = CURRENT_CLICKED_PROFILE_TITLE
Create_Basic_View()
RestoreLayout()
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.Info("Load_single_Profile - Error: " & ex.Message)
Finally
If viewUpdateStarted Then
GridViewWorkflows.EndUpdate()
End If
If gridUpdateStarted Then
GridControlWorkflows.EndUpdate()
End If
FRONTEND_ACTION = FA_NONE
End Try
FRONTEND_ACTION = FA_NONE
End Function
Sub Create_Basic_View()
Try
@@ -1918,6 +1922,11 @@ Public Class frmMain
End Sub
Async Function Load_Grid_Overview(pFormLoad As Boolean, pForceReload As Boolean, pNavbarClick As Boolean) As Tasks.Task
Dim oStopWatch As New RefreshHelper.SW("Load_Grid_Overview(LGO)")
Dim gridUpdateStarted As Boolean = False
Dim viewUpdateStarted As Boolean = False
Dim layoutRestored As Boolean = False
Dim resetLayoutTriggered As Boolean = False
GridControlWorkflows_Visible()
GRID_LOAD_TYPE = "OVERVIEW"
CURRENT_CLICKED_PROFILE_ID = 0
@@ -1931,22 +1940,25 @@ Public Class frmMain
bsiMessage.Caption = "NO PROFILES FOR USER"
bsiMessage.ItemAppearance.Normal.BackColor = Color.Red
bsiMessage.ItemAppearance.Normal.ForeColor = Color.Black
If GridControlWorkflows.Visible = True Then
GridControlWorkflows.Visible = False
End If
oStopWatch.Done()
GridControlWorkflows.Visible = False
Exit Function
End If
If GridControlWorkflows.Visible Then
GridControlWorkflows.BeginUpdate()
gridUpdateStarted = True
GridViewWorkflows.BeginUpdate()
viewUpdateStarted = True
End If
Dim oStopWatch1 As New RefreshHelper.SW("LGO#Load_Profiles_for_User")
Load_Profiles_for_User()
oStopWatch1.Done()
'ClassInit.InitBasics()
Dim oStopWatch2 As New RefreshHelper.SW("LGO#build CURR_DT_OVERVIEW")
Dim oSQLOverview = BASEDATA_DT_CONFIG.Rows(0).Item("SQL_PROFILE_MAIN_VIEW")
If IsDBNull(oSQLOverview) Then
bsiMessage.Caption = "No SQL_PROFILE_MAIN_VIEW in Baseconfig"
oStopWatch.Done()
oStopWatch2.Done()
Exit Function
End If
If oSQLOverview.ToString.Contains("GROUP_TEXT") = False Then
@@ -1961,15 +1973,12 @@ Public Class frmMain
GridViewWorkflows.Columns.Clear()
Catch ex As Exception
LOGGER.Error(ex)
End Try
Exit Function
End If
oSQLOverview = clsPatterns.ReplaceInternalValues(oSQLOverview)
oSQLOverview = clsPatterns.ReplaceUserValues(oSQLOverview)
oSQLOverview = oSQLOverview.Replace("@USER_ID", USER_ID)
oSQLOverview = oSQLOverview.Replace("@USERNAME", USER_USERNAME)
oSQLOverview = oSQLOverview.Replace("@MACHINE_NAME", System.Environment.MachineName)
@@ -1979,205 +1988,126 @@ Public Class frmMain
DT_CURR_WF_ITEMS = Await DatabaseFallback.GetDatatableECMAsync(oSQLOverview)
oStopWatch2.Done()
If Not IsNothing(DT_CURR_WF_ITEMS) Then
LOGGER.Debug($"Datatable CURR_DT_OVERVIEW loaded: {DT_CURR_WF_ITEMS.Rows.Count} rows")
If GridControlWorkflows.Visible = False Then
GridControlWorkflows.Visible = True
End If
Dim oADDED = GET_LAST_ADDED(DT_CURR_WF_ITEMS)
Dim oChanged = GET_LAST_CHANGED(DT_CURR_WF_ITEMS)
Dim oCOUNT = DT_CURR_WF_ITEMS.Rows.Count
If pForceReload = False Then
If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN And oCOUNT = OVERVIEW_COUNT Then
If pForceReload = False Then
LOGGER.Debug("No changes on OverviewHash - so exit Load_Grid_overview")
Exit Function
End If
Else
LOGGER.Info("Differences on OverviewHash")
LOGGER.Debug($"oADDED/OVERVIEW_ADDED_WHEN: {oADDED}/{OVERVIEW_ADDED_WHEN}#oADDED/OVERVIEW_ADDED_WHEN: {oChanged}/{OVERVIEW_CHANGED_WHEN}")
OVERVIEW_ADDED_WHEN = oADDED
OVERVIEW_CHANGED_WHEN = oChanged
OVERVIEW_COUNT = oCOUNT
End If
End If
NO_WORKFLOWITEMS = False
If DT_CURR_WF_ITEMS.Rows.Count = 0 Then
NO_WORKFLOWITEMS = True
lblCaptionMainGrid.Text = String.Format(S.Aktuell_keine_Workflowdaten_vorhanden___0_, "")
GridControlWorkflows.Visible = False
bindsourcegrid.DataSource = Nothing
GridControlWorkflows.DataSource = Nothing
Try
GridViewWorkflows.Columns.Clear()
Catch ex As Exception
LOGGER.Error(ex)
End Try
Exit Function
End If
GridControlWorkflows.Visible = True
If TL_ICON = True Then
'Spalte für Status Icon erstellen
Dim columnStateIcon As New DataColumn()
columnStateIcon.DataType = GetType(Image)
columnStateIcon.ColumnName = "ICON"
columnStateIcon.Caption = ""
DT_CURR_WF_ITEMS.Columns.Add(columnStateIcon)
End If
RedDocuments = 0
YellowDocuments = 0
GreenDocuments = 0
If TL_ICON = True Then
For Each row As DataRow In DT_CURR_WF_ITEMS.Rows
Dim State As Integer = row.Item("TL_STATE")
Select Case State
Case 1
RedDocuments += 1
row.Item("ICON") = My.Resources.bullet_red
Case 2
YellowDocuments += 1
row.Item("ICON") = My.Resources.bullet_orange
Case 3
GreenDocuments += 1
row.Item("ICON") = My.Resources.bullet_green
End Select
Next
End If
'If IDB_ACTIVE = True Then
' ' Spalte für Conversation erstellen
' Dim columnConvIcon As New DataColumn()
' columnConvIcon.DataType = GetType(Image)
' columnConvIcon.ColumnName = "CONVERSATION"
' columnConvIcon.Caption = ""
' DT_CURR_WF_ITEMS.Columns.Add(columnConvIcon)
' For Each oRow As DataRow In DT_CURR_WF_ITEMS.Rows
' Try
' Dim oCONVYN As Boolean
' Try
' oCONVYN = oRow.Item("CONV_YN")
' Catch ex As Exception
' LOGGER.Warn("Load_Grid_Overview - Column CONV_YN obviously is not part of CURR_DT_OVERVIEW")
' Exit For
' End Try
' Select Case oCONVYN
' Case True
' oRow.Item("CONVERSATION") = My.Resources.conversation
' End Select
' Catch ex As Exception
' LOGGER.Warn("Load_Grid_Overview - Column CONVERSATION obviously is not part of GridViewWorkflows")
' Exit For
' End Try
' Next
'End If
bindsourcegrid.DataSource = DT_CURR_WF_ITEMS
GridControlWorkflows.DataSource = bindsourcegrid
GridControlWorkflows.ForceInitialize()
Create_View_Caption()
Dim oColNotPartofLayout As Boolean
oColNotPartofLayout = False
'GridControlDocRow.ForceInitialize()
' GridControl1.DataSource = CURR_DT_PROFILEGRID
'If pFormLoad = True Then
' If IDB_ACTIVE = True Then
' oColNotPartofLayout = Column_inGridViewLayout("CONV_YN")
' End If
'End If
If pNavbarClick = False Then
If pForceReload = True And (GridLayoutChanged() = True Or oColNotPartofLayout = True) Then
'ResetLayout()
'SaveGridLayout()
LOGGER.Debug("Now GridLayout_Reset..")
Await GridLayout_Reset(False)
Else
If oColNotPartofLayout = False Then
RestoreLayout()
End If
End If
Else
RestoreLayout()
End If
Try
If pForceReload = True And (GridLayoutChanged() = True Or oColNotPartofLayout = True) Then
Create_GroupBy_Parts()
COLUMNS_INVISIBLE()
End If
If TL_ICON = True Then
Try
GridViewWorkflows.Columns.Item("ICON").MaxWidth = 24
GridViewWorkflows.Columns.Item("ICON").MinWidth = 24
GridViewWorkflows.Columns.Item("ICON").AppearanceCell.BackColor = Color.White
GridViewWorkflows.Columns.Item("ICON").Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Left
Catch ex As Exception
End Try
End If
LOGGER.Debug("GridViewWorkflows.Columns loaded...")
Try
Dim oReducedColName = LAST_EDITED_COLUMN.Replace("[", "")
oReducedColName = oReducedColName.Replace("]", "")
'If Not IsNothing(GridViewWorkflows.Columns(oReducedColName)) Then
' GridViewWorkflows.Columns(oReducedColName).DisplayFormat.FormatType = FormatType.DateTime
' GridViewWorkflows.Columns(oReducedColName).DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss"
'ElseIf Not IsNothing(GridViewWorkflows.Columns("Zuletzt bearbeitet")) Then
' GridViewWorkflows.Columns("Zuletzt bearbeitet").DisplayFormat.FormatType = FormatType.DateTime
' GridViewWorkflows.Columns("Zuletzt bearbeitet").DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss"
'End If
Catch ex As Exception
LOGGER.Warn("(Warning LoadGridOverview)Column [Last edited] or [Zuletzt bearbeitet] not part of OverviewSQL")
End Try
LOGGER.Debug("finished Formatting Grid!")
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.Info("Unexpected Error in Formatting Grid: " & ex.Message)
End Try
If GridViewWorkflows.Columns.Count <= 5 Then
LOGGER.Info("GridViewWorkflows.Columns.Count <= 2 - Reset_Gridlayout will be forced...", False)
Await Reset_GridLayout(pFormLoad)
End If
Else
If IsNothing(DT_CURR_WF_ITEMS) Then
NO_WORKFLOWITEMS = True
GridControlWorkflows.Visible = False
'BindingNavigator1.Dock = DockStyle.None
GridControlWorkflows.DataSource = Nothing
Try
GridViewWorkflows.Columns.Clear()
Catch ex As Exception
LOGGER.Error(ex)
End Try
Exit Function
End If
RestoreLayout()
LOGGER.Debug($"Datatable CURR_DT_OVERVIEW loaded: {DT_CURR_WF_ITEMS.Rows.Count} rows")
Dim oADDED = GET_LAST_ADDED(DT_CURR_WF_ITEMS)
Dim oChanged = GET_LAST_CHANGED(DT_CURR_WF_ITEMS)
Dim oCOUNT = DT_CURR_WF_ITEMS.Rows.Count
If pForceReload = False Then
If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN And oCOUNT = OVERVIEW_COUNT Then
LOGGER.Debug("No changes on OverviewHash - so exit Load_Grid_overview")
Exit Function
Else
OVERVIEW_ADDED_WHEN = oADDED
OVERVIEW_CHANGED_WHEN = oChanged
OVERVIEW_COUNT = oCOUNT
End If
End If
NO_WORKFLOWITEMS = (DT_CURR_WF_ITEMS.Rows.Count = 0)
If NO_WORKFLOWITEMS Then
lblCaptionMainGrid.Text = String.Format(S.Aktuell_keine_Workflowdaten_vorhanden___0_, "")
GridControlWorkflows.Visible = False
bindsourcegrid.DataSource = Nothing
GridControlWorkflows.DataSource = Nothing
Try
GridViewWorkflows.Columns.Clear()
Catch ex As Exception
LOGGER.Error(ex)
End Try
Exit Function
End If
If TL_ICON = True AndAlso DT_CURR_WF_ITEMS.Columns.Contains("ICON") = False Then
Dim columnStateIcon As New DataColumn() With {
.DataType = GetType(Image),
.ColumnName = "ICON",
.Caption = ""
}
DT_CURR_WF_ITEMS.Columns.Add(columnStateIcon)
End If
RedDocuments = 0
YellowDocuments = 0
GreenDocuments = 0
If TL_ICON = True Then
For Each row As DataRow In DT_CURR_WF_ITEMS.Rows
Dim State As Integer = row.Item("TL_STATE")
Select Case State
Case 1
RedDocuments += 1
row.Item("ICON") = My.Resources.bullet_red
Case 2
YellowDocuments += 1
row.Item("ICON") = My.Resources.bullet_orange
Case 3
GreenDocuments += 1
row.Item("ICON") = My.Resources.bullet_green
End Select
Next
End If
bindsourcegrid.DataSource = DT_CURR_WF_ITEMS
GridControlWorkflows.DataSource = bindsourcegrid
GridControlWorkflows.ForceInitialize()
Create_View_Caption()
Dim oColNotPartofLayout As Boolean = False
If pNavbarClick = False Then
If pForceReload = True And (GridLayoutChanged() = True Or oColNotPartofLayout = True) Then
LOGGER.Debug("Now GridLayout_Reset..")
Await GridLayout_Reset(False)
resetLayoutTriggered = True
ElseIf oColNotPartofLayout = False Then
RestoreLayout()
layoutRestored = True
End If
Else
RestoreLayout()
layoutRestored = True
End If
If pForceReload = True And (GridLayoutChanged() = True Or oColNotPartofLayout = True) Then
Create_GroupBy_Parts()
End If
If TL_ICON = True Then
Try
GridViewWorkflows.Columns.Item("ICON").MaxWidth = 24
GridViewWorkflows.Columns.Item("ICON").MinWidth = 24
GridViewWorkflows.Columns.Item("ICON").AppearanceCell.BackColor = Color.White
GridViewWorkflows.Columns.Item("ICON").Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Left
Catch ex As Exception
End Try
End If
If GridViewWorkflows.Columns.Count <= 5 Then
LOGGER.Info("GridViewWorkflows.Columns.Count <= 2 - Reset_Gridlayout will be forced...", False)
Await Reset_GridLayout(pFormLoad)
resetLayoutTriggered = True
End If
If Not layoutRestored And Not resetLayoutTriggered Then
RestoreLayout()
End If
COLUMNS_INVISIBLE()
Try
For Each oColumn As DevExpress.XtraGrid.Columns.GridColumn In GridViewWorkflows.Columns
For Each oRow As DataRow In BASEDATA_TBDD_COLUMNS_FORMAT.Rows
Dim colName = oRow("COLUMN_TITLE").ToString()
@@ -2185,7 +2115,6 @@ Public Class frmMain
Dim oSollFormatType = oRow("TYPE2FORMAT").ToString()
If oSollFormatType = "DateTime" Then
If oColumn.ColumnType <> GetType(DateTime) Then
oColumn.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime
End If
@@ -2205,11 +2134,17 @@ Public Class frmMain
LOGGER.Warn("Fehler beim Anwenden der Formatierung aus TBDD_COLUMNS_FORMAT: " & ex.Message)
End Try
oStopWatch.Done()
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.Info("Load_Grid_Overview - Fehler: " & ex.Message)
Finally
If viewUpdateStarted Then
GridViewWorkflows.EndUpdate()
End If
If gridUpdateStarted Then
GridControlWorkflows.EndUpdate()
End If
oStopWatch.Done()
End Try
End Function
Private Sub tsmiValidationProfil_Click(sender As Object, e As EventArgs) Handles tsmiValidationProfil.Click