|
|
|
@@ -9,6 +9,10 @@ Imports EgtBEAMWALL.Core.MachLog
|
|
|
|
|
Public Class MachineLogPageVM
|
|
|
|
|
Inherits VMBase
|
|
|
|
|
|
|
|
|
|
Private m_Lock_LogList As New Object
|
|
|
|
|
|
|
|
|
|
Private m_MachineLog_Timer As New DispatcherTimer
|
|
|
|
|
|
|
|
|
|
Private Enum DayTypes As Integer
|
|
|
|
|
TODAY = 0
|
|
|
|
|
YESTERDAY = 1
|
|
|
|
@@ -131,7 +135,7 @@ Public Class MachineLogPageVM
|
|
|
|
|
End If
|
|
|
|
|
NotifyPropertyChanged(NameOf(Date_Visibility))
|
|
|
|
|
' aggiorno lista da Db
|
|
|
|
|
UpdateMachineLogList()
|
|
|
|
|
UpdateMachineLogList(True)
|
|
|
|
|
End Set
|
|
|
|
|
End Property
|
|
|
|
|
|
|
|
|
@@ -145,7 +149,7 @@ Public Class MachineLogPageVM
|
|
|
|
|
Dim lStartDate As Long = m_dtStartDate.ToFileTimeUtc()
|
|
|
|
|
WriteMainPrivateProfileString(S_MACHINELOGFILTER, K_STARTDATE, lStartDate.ToString())
|
|
|
|
|
' aggiorno lista da Db
|
|
|
|
|
UpdateMachineLogList()
|
|
|
|
|
UpdateMachineLogList(True)
|
|
|
|
|
End Set
|
|
|
|
|
End Property
|
|
|
|
|
|
|
|
|
@@ -159,7 +163,7 @@ Public Class MachineLogPageVM
|
|
|
|
|
Dim lEndDate As Long = m_dtEndDate.ToFileTimeUtc()
|
|
|
|
|
WriteMainPrivateProfileString(S_MACHINELOGFILTER, K_ENDDATE, lEndDate.ToString())
|
|
|
|
|
' aggiorno lista da Db
|
|
|
|
|
UpdateMachineLogList()
|
|
|
|
|
UpdateMachineLogList(True)
|
|
|
|
|
End Set
|
|
|
|
|
End Property
|
|
|
|
|
|
|
|
|
@@ -263,6 +267,9 @@ Public Class MachineLogPageVM
|
|
|
|
|
m_dtEndDate = If(lEndDate > 0, DateTime.FromFileTimeUtc(lEndDate), DateTime.Today)
|
|
|
|
|
m_Date_Visibility = Visibility.Visible
|
|
|
|
|
End Select
|
|
|
|
|
m_MachineLog_Timer.Interval = TimeSpan.FromMilliseconds(100)
|
|
|
|
|
AddHandler m_MachineLog_Timer.Tick, AddressOf MachineLog_Timer_Tick
|
|
|
|
|
m_MachineLog_Timer.Start()
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
#End Region ' CONSTRUCTORS
|
|
|
|
@@ -305,21 +312,69 @@ Public Class MachineLogPageVM
|
|
|
|
|
m_colMachineLog_Description.ColumnVisibility = Visibility.Collapsed
|
|
|
|
|
m_colMachineLog_SupervisorId.ColumnVisibility = Visibility.Collapsed
|
|
|
|
|
End If
|
|
|
|
|
UpdateMachineLogList()
|
|
|
|
|
UpdateMachineLogList(True)
|
|
|
|
|
m_MachineLogList_View = CollectionViewSource.GetDefaultView(m_MachineLogList)
|
|
|
|
|
m_MachineLogList_View.Filter = AddressOf MachineLogFilter
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Friend Sub UpdateMachineLogList()
|
|
|
|
|
' indice di aggiornamento della lista rispetto a Db
|
|
|
|
|
Private m_nUpdateIndex As Integer
|
|
|
|
|
' indice di ricaricamento completo della lista dal Db
|
|
|
|
|
Private m_nRefreshIndex As Integer
|
|
|
|
|
' indice dell'ultimo update/refresh
|
|
|
|
|
Private m_nLastLogUpdate As Integer
|
|
|
|
|
|
|
|
|
|
Friend Sub UpdateMachineLogList(bRefresh As Boolean)
|
|
|
|
|
Dim nMaxIndex As Integer = Math.Max(m_nUpdateIndex, m_nRefreshIndex)
|
|
|
|
|
If bRefresh Then
|
|
|
|
|
m_nRefreshIndex = nMaxIndex + 1
|
|
|
|
|
Else
|
|
|
|
|
m_nUpdateIndex = nMaxIndex + 1
|
|
|
|
|
End If
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Private Sub MachineLog_Timer_Tick(sender As Object, e As EventArgs)
|
|
|
|
|
SyncLock m_Lock_LogList
|
|
|
|
|
Dim nRefresh As Integer = m_nRefreshIndex
|
|
|
|
|
Dim nUpdate As Integer = m_nUpdateIndex
|
|
|
|
|
If nRefresh > m_nLastLogUpdate Then
|
|
|
|
|
m_nLastLogUpdate = nRefresh
|
|
|
|
|
UpdateFromDb(True)
|
|
|
|
|
ElseIf nUpdate > m_nLastLogUpdate Then
|
|
|
|
|
m_nLastLogUpdate = nUpdate
|
|
|
|
|
UpdateFromDb(False)
|
|
|
|
|
End If
|
|
|
|
|
End SyncLock
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Friend Sub UpdateFromDb(bRefresh As Boolean)
|
|
|
|
|
'm_MachineLogList = New ObservableCollection(Of LogEvent)(DbControllers.m_LogMachineController.GetCoreDesc(DateTime.Now - TimeSpan.FromDays(300), DateTime.Now).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList())
|
|
|
|
|
Dim DbList As List(Of LogEvent)
|
|
|
|
|
Select Case m_SelDayType
|
|
|
|
|
Case DayTypes.TODAY
|
|
|
|
|
m_MachineLogList = New ObservableCollection(Of LogEvent)(DbControllers.m_LogMachineController.GetCoreDesc(DateTime.Today, DateTime.Today + TimeSpan.FromDays(1)).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList())
|
|
|
|
|
Case DayTypes.YESTERDAY
|
|
|
|
|
m_MachineLogList = New ObservableCollection(Of LogEvent)(DbControllers.m_LogMachineController.GetCoreDesc(DateTime.Today - TimeSpan.FromDays(1), DateTime.Today).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList())
|
|
|
|
|
Case DayTypes.PERIOD
|
|
|
|
|
m_MachineLogList = New ObservableCollection(Of LogEvent)(DbControllers.m_LogMachineController.GetCoreDesc(m_dtStartDate, m_dtEndDate + TimeSpan.FromDays(1)).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList())
|
|
|
|
|
DbList = DbControllers.m_LogMachineController.GetCoreDesc(m_dtStartDate, m_dtEndDate + TimeSpan.FromDays(1)).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList()
|
|
|
|
|
Case DayTypes.YESTERDAY
|
|
|
|
|
DbList = DbControllers.m_LogMachineController.GetCoreDesc(DateTime.Today - TimeSpan.FromDays(1), DateTime.Today).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList()
|
|
|
|
|
Case Else ' DayTypes.TODAY
|
|
|
|
|
DbList = DbControllers.m_LogMachineController.GetCoreDesc(DateTime.Today, DateTime.Today + TimeSpan.FromDays(1)).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList()
|
|
|
|
|
End Select
|
|
|
|
|
If bRefresh OrElse m_MachineLogList.Count < 1 Then
|
|
|
|
|
m_MachineLogList = New ObservableCollection(Of LogEvent)(DbList)
|
|
|
|
|
Else
|
|
|
|
|
' cerco in lista Db ultimo elemento della mia lista
|
|
|
|
|
Dim LastItem As LogEvent = m_MachineLogList(0)
|
|
|
|
|
Dim CommonItem As LogEvent = DbList.FirstOrDefault(Function(x) x.EventDateTime = LastItem.EventDateTime AndAlso x.EventType = LastItem.EventType AndAlso x.SupervisorId = LastItem.SupervisorId AndAlso x.Value = LastItem.Value)
|
|
|
|
|
Dim nCommonItemIndex As Integer
|
|
|
|
|
If Not IsNothing(CommonItem) Then
|
|
|
|
|
nCommonItemIndex = DbList.IndexOf(CommonItem)
|
|
|
|
|
End If
|
|
|
|
|
' aggiorno i successivi
|
|
|
|
|
If nCommonItemIndex >= 0 Then
|
|
|
|
|
For Index = nCommonItemIndex - 1 To 0 Step -1
|
|
|
|
|
m_MachineLogList.Insert(0, DbList(Index))
|
|
|
|
|
Next
|
|
|
|
|
End If
|
|
|
|
|
End If
|
|
|
|
|
NotifyPropertyChanged(NameOf(MachineLogList))
|
|
|
|
|
m_MachineLogList_View = CollectionViewSource.GetDefaultView(m_MachineLogList)
|
|
|
|
|
m_MachineLogList_View.Filter = AddressOf MachineLogFilter
|
|
|
|
@@ -347,7 +402,7 @@ Public Class MachineLogPageVM
|
|
|
|
|
''' Execute the Open. This method is invoked by the OpenCommand.
|
|
|
|
|
''' </summary>
|
|
|
|
|
Friend Sub Refresh()
|
|
|
|
|
UpdateMachineLogList()
|
|
|
|
|
UpdateMachineLogList(False)
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
#End Region ' Refresh
|
|
|
|
|