Refresh Overview only when changed

This commit is contained in:
SchreiberM 2020-11-13 13:29:30 +01:00
parent 25e37980c6
commit 6c289a9a9e
3 changed files with 98 additions and 15 deletions

View File

@ -76,6 +76,23 @@
INACTIVITY_DURATION = CInt(oInactivityDuration) INACTIVITY_DURATION = CInt(oInactivityDuration)
Catch ex As Exception Catch ex As Exception
INACTIVITY_DURATION = 0 INACTIVITY_DURATION = 0
End Try
ElseIf oMode.StartsWith("PM.COL_LAST_EDITED") Then
Dim oLEDITEDCOL = oMode.Replace("PM.COL_LAST_EDITED=", "")
Try
LAST_EDITED_COLUMN = oLEDITEDCOL
Catch ex As Exception
LAST_EDITED_COLUMN = ""
End Try
ElseIf oMode.StartsWith("PM.COL_LAST_ADDED") Then
Dim oLEDITEDCOL = oMode.Replace("PM.COL_LAST_ADDED=", "")
Try
LAST_ADDED_COLUMN = oLEDITEDCOL
Catch ex As Exception
LAST_ADDED_COLUMN = ""
End Try End Try
Else Else
LOGGER.Info($"Wrong oMode: {oMode}") LOGGER.Info($"Wrong oMode: {oMode}")

View File

@ -74,6 +74,8 @@ Module ModuleRuntimeVariables
Public POPUP_REMINDER_ACTIVE As Boolean = True Public POPUP_REMINDER_ACTIVE As Boolean = True
Public INACTIVITY_DURATION As Integer = 0 Public INACTIVITY_DURATION As Integer = 0
Public INACTIVITYRecognized As Boolean = False Public INACTIVITYRecognized As Boolean = False
Public LAST_EDITED_COLUMN As String = "NONE"
Public LAST_ADDED_COLUMN As String = "NONE"
Public LICENSE_COUNT As Integer = 0 Public LICENSE_COUNT As Integer = 0
Public LICENSE_EXPIRED As Boolean = False Public LICENSE_EXPIRED As Boolean = False

View File

@ -14,11 +14,15 @@ Imports System.ComponentModel
Imports System.IO Imports System.IO
Imports System.Drawing.Imaging Imports System.Drawing.Imaging
Imports DevExpress.XtraPrinting Imports DevExpress.XtraPrinting
Imports System.Runtime.Serialization
Imports System.Security.Cryptography
Public Class frmMain Public Class frmMain
Private UserLoggedin As Integer = 0 Private UserLoggedin As Integer = 0
Private CURR_DT_VWPM_PROFILE_ACTIVE As DataTable Private CURR_DT_VWPM_PROFILE_ACTIVE As DataTable
Private CURR_DT_OVERVIEW As DataTable Private CURR_DT_OVERVIEW As DataTable
Private OVERVIEW_ADDED_WHEN As String
Private OVERVIEW_CHANGED_WHEN As String
Private RedDocuments As Integer = 0 Private RedDocuments As Integer = 0
Private YellowDocuments As Integer = 0 Private YellowDocuments As Integer = 0
@ -42,7 +46,42 @@ Public Class frmMain
Private DT_CHECKUSER_MODULE As DataTable Private DT_CHECKUSER_MODULE As DataTable
Private IsFilterMode As Boolean Private IsFilterMode As Boolean
Private Function GET_LAST_ADDED(pDatatable As DataTable) As String
Dim oADDED As String
Try
If IsNothing(pDatatable) Then
oADDED = "NOTHING"
ElseIf LAST_ADDED_COLUMN = "NONE" Then
oADDED = Now.ToShortTimeString.ToString
Else
Dim result As Object
result = pDatatable.Compute($"MAX({LAST_ADDED_COLUMN})", "")
oADDED = result
End If
Catch ex As Exception
oADDED = "Exception"
End Try
Return oADDED
End Function
Private Function GET_LAST_CHANGED(pDatatable As DataTable) As String
Dim oCHANGED As String
Try
If IsNothing(pDatatable) Then
oCHANGED = "NOTHING"
ElseIf LAST_EDITED_COLUMN = "NONE" Then
oCHANGED = Now.ToShortTimeString.ToString
Else
Dim result As Object
result = pDatatable.Compute($"MAX({LAST_EDITED_COLUMN})", "")
oCHANGED = result
End If
Catch ex As Exception
oCHANGED = "Exception"
End Try
Return oCHANGED
End Function
Private Sub frmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing Private Sub frmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
Try Try
FormOpenClose = True FormOpenClose = True
@ -616,7 +655,7 @@ Public Class frmMain
End Try End Try
End Sub End Sub
Async Function Load_single_Profile() As Tasks.Task Async Function Load_single_Profile(Optional ForceReload As Boolean = False) As Tasks.Task
Try Try
Load_Profiles_for_User() Load_Profiles_for_User()
Layout_Single_Profile() Layout_Single_Profile()
@ -633,18 +672,31 @@ Public Class frmMain
If result = 1 Then If result = 1 Then
ToolStripLabelViewTape.Text = "Detailansicht Profil: " & CURRENT_CLICKED_PROFILE_TITLE ToolStripLabelViewTape.Text = "Detailansicht Profil: " & CURRENT_CLICKED_PROFILE_TITLE
Dim sql = foundRows(0)("SQL_VIEW") Dim oSQL = foundRows(0)("SQL_VIEW")
sql = clsPatterns.ReplaceInternalValues(sql) oSQL = clsPatterns.ReplaceInternalValues(oSQL)
sql = clsPatterns.ReplaceUserValues(sql, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_LANGUAGE, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID) oSQL = clsPatterns.ReplaceUserValues(oSQL, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_LANGUAGE, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID)
sql = sql.Replace("@USER_ID", USER_ID) oSQL = oSQL.Replace("@USER_ID", USER_ID)
sql = sql.Replace("@USERNAME", USER_USERNAME) oSQL = oSQL.Replace("@USERNAME", USER_USERNAME)
sql = sql.Replace("@MACHINE_NAME", Environment.MachineName) oSQL = oSQL.Replace("@MACHINE_NAME", Environment.MachineName)
sql = sql.Replace("@DATE", Now.ToShortDateString) oSQL = oSQL.Replace("@DATE", Now.ToShortDateString)
sql = sql.Replace("@PROFILE_ID", CURRENT_CLICKED_PROFILE_ID) oSQL = oSQL.Replace("@PROFILE_ID", CURRENT_CLICKED_PROFILE_ID)
CURR_DT_OVERVIEW = Await ClassDatabase.Return_DatatableAsync(sql, "Load_single_Profile") CURR_DT_OVERVIEW = Await ClassDatabase.Return_DatatableAsync(oSQL, "Load_single_Profile")
Dim oADDED = GET_LAST_ADDED(CURR_DT_OVERVIEW)
Dim oChanged = GET_LAST_CHANGED(CURR_DT_OVERVIEW)
If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN Then
LOGGER.Info("No changes on OverviewHash - so exit Refresh")
If ForceReload = False Then
Exit Function
End If
Else
OVERVIEW_ADDED_WHEN = oADDED
OVERVIEW_CHANGED_WHEN = oChanged
End If
If CURR_DT_OVERVIEW.Rows.Count = 0 Then If CURR_DT_OVERVIEW.Rows.Count = 0 Then
NO_WORKFLOWITEMS = True NO_WORKFLOWITEMS = True
@ -949,7 +1001,7 @@ Public Class frmMain
Private Sub NotifyIcon1_Click(sender As System.Object, e As EventArgs) Handles NotifyIcon1.Click Private Sub NotifyIcon1_Click(sender As System.Object, e As EventArgs) Handles NotifyIcon1.Click
BringMonitor2Front() BringMonitor2Front()
End Sub End Sub
Private Async Function Decide_Load(FormLoad As Boolean) As Tasks.Task Private Async Function Decide_Load(FormLoad As Boolean, Optional ForceReload As Boolean = False) As Tasks.Task
Try Try
GridIsLoaded = False GridIsLoaded = False
@ -964,9 +1016,9 @@ Public Class frmMain
TimerRefresh.Stop() TimerRefresh.Stop()
If GRID_LOAD_TYPE = "OVERVIEW" Then If GRID_LOAD_TYPE = "OVERVIEW" Then
Await Load_Grid_Overview(FormLoad) Await Load_Grid_Overview(FormLoad, ForceReload)
ElseIf GRID_LOAD_TYPE.StartsWith("PROFILE#") Then ElseIf GRID_LOAD_TYPE.StartsWith("PROFILE#") Then
Await Load_single_Profile() Await Load_single_Profile(ForceReload)
End If End If
GridView_Docs.HideLoadingPanel() GridView_Docs.HideLoadingPanel()
@ -1455,7 +1507,7 @@ Public Class frmMain
TimerRefresh.Start() TimerRefresh.Start()
RefreshHelper.LoadViewInfo() RefreshHelper.LoadViewInfo()
End Sub End Sub
Async Function Load_Grid_Overview(FormLoad As Boolean) As Tasks.Task Async Function Load_Grid_Overview(FormLoad As Boolean, Optional ForceReload As Boolean = False) As Tasks.Task
Dim oStopWatch As New RefreshHelper.SW("Load_Grid_Overview(LGO)") Dim oStopWatch As New RefreshHelper.SW("Load_Grid_Overview(LGO)")
Layout_Single_Profile() Layout_Single_Profile()
GRID_LOAD_TYPE = "OVERVIEW" GRID_LOAD_TYPE = "OVERVIEW"
@ -1502,6 +1554,18 @@ Public Class frmMain
If Not IsNothing(CURR_DT_OVERVIEW) Then If Not IsNothing(CURR_DT_OVERVIEW) Then
LOGGER.Debug($"Datatable CURR_DT_OVERVIEW loaded: {CURR_DT_OVERVIEW.Rows.Count} rows") LOGGER.Debug($"Datatable CURR_DT_OVERVIEW loaded: {CURR_DT_OVERVIEW.Rows.Count} rows")
Dim oADDED = GET_LAST_ADDED(CURR_DT_OVERVIEW)
Dim oChanged = GET_LAST_CHANGED(CURR_DT_OVERVIEW)
If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN Then
LOGGER.Info("No changes on OverviewHash - so exit Refresh")
If ForceReload = False Then
Exit Function
End If
Else
OVERVIEW_ADDED_WHEN = oADDED
OVERVIEW_CHANGED_WHEN = oChanged
End If
NO_WORKFLOWITEMS = False NO_WORKFLOWITEMS = False
If CURR_DT_OVERVIEW.Rows.Count = 0 Then If CURR_DT_OVERVIEW.Rows.Count = 0 Then
If USER_LANGUAGE = "de-DE" Then If USER_LANGUAGE = "de-DE" Then
@ -2040,7 +2104,7 @@ Public Class frmMain
End If End If
LoadNavBar() LoadNavBar()
Await Decide_Load(False) Await Decide_Load(False, True)
If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.LoadViewInfo() If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.LoadViewInfo()
End Sub End Sub