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)
Catch ex As Exception
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
Else
LOGGER.Info($"Wrong oMode: {oMode}")

View File

@ -74,6 +74,8 @@ Module ModuleRuntimeVariables
Public POPUP_REMINDER_ACTIVE As Boolean = True
Public INACTIVITY_DURATION As Integer = 0
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_EXPIRED As Boolean = False

View File

@ -14,11 +14,15 @@ Imports System.ComponentModel
Imports System.IO
Imports System.Drawing.Imaging
Imports DevExpress.XtraPrinting
Imports System.Runtime.Serialization
Imports System.Security.Cryptography
Public Class frmMain
Private UserLoggedin As Integer = 0
Private CURR_DT_VWPM_PROFILE_ACTIVE 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 YellowDocuments As Integer = 0
@ -42,7 +46,42 @@ Public Class frmMain
Private DT_CHECKUSER_MODULE As DataTable
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
Try
FormOpenClose = True
@ -616,7 +655,7 @@ Public Class frmMain
End Try
End Sub
Async Function Load_single_Profile() As Tasks.Task
Async Function Load_single_Profile(Optional ForceReload As Boolean = False) As Tasks.Task
Try
Load_Profiles_for_User()
Layout_Single_Profile()
@ -633,18 +672,31 @@ Public Class frmMain
If result = 1 Then
ToolStripLabelViewTape.Text = "Detailansicht Profil: " & CURRENT_CLICKED_PROFILE_TITLE
Dim sql = foundRows(0)("SQL_VIEW")
Dim oSQL = foundRows(0)("SQL_VIEW")
sql = clsPatterns.ReplaceInternalValues(sql)
sql = clsPatterns.ReplaceUserValues(sql, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_LANGUAGE, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID)
oSQL = clsPatterns.ReplaceInternalValues(oSQL)
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)
sql = sql.Replace("@USERNAME", USER_USERNAME)
sql = sql.Replace("@MACHINE_NAME", Environment.MachineName)
sql = sql.Replace("@DATE", Now.ToShortDateString)
sql = sql.Replace("@PROFILE_ID", CURRENT_CLICKED_PROFILE_ID)
oSQL = oSQL.Replace("@USER_ID", USER_ID)
oSQL = oSQL.Replace("@USERNAME", USER_USERNAME)
oSQL = oSQL.Replace("@MACHINE_NAME", Environment.MachineName)
oSQL = oSQL.Replace("@DATE", Now.ToShortDateString)
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
NO_WORKFLOWITEMS = True
@ -949,7 +1001,7 @@ Public Class frmMain
Private Sub NotifyIcon1_Click(sender As System.Object, e As EventArgs) Handles NotifyIcon1.Click
BringMonitor2Front()
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
GridIsLoaded = False
@ -964,9 +1016,9 @@ Public Class frmMain
TimerRefresh.Stop()
If GRID_LOAD_TYPE = "OVERVIEW" Then
Await Load_Grid_Overview(FormLoad)
Await Load_Grid_Overview(FormLoad, ForceReload)
ElseIf GRID_LOAD_TYPE.StartsWith("PROFILE#") Then
Await Load_single_Profile()
Await Load_single_Profile(ForceReload)
End If
GridView_Docs.HideLoadingPanel()
@ -1455,7 +1507,7 @@ Public Class frmMain
TimerRefresh.Start()
RefreshHelper.LoadViewInfo()
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)")
Layout_Single_Profile()
GRID_LOAD_TYPE = "OVERVIEW"
@ -1502,6 +1554,18 @@ Public Class frmMain
If Not IsNothing(CURR_DT_OVERVIEW) Then
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
If CURR_DT_OVERVIEW.Rows.Count = 0 Then
If USER_LANGUAGE = "de-DE" Then
@ -2040,7 +2104,7 @@ Public Class frmMain
End If
LoadNavBar()
Await Decide_Load(False)
Await Decide_Load(False, True)
If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.LoadViewInfo()
End Sub