Speed up transmitter view

This commit is contained in:
Martijn Scheepers
2022-09-20 16:17:51 +02:00
parent b9deaa3f24
commit 2133f78169
2 changed files with 60 additions and 29 deletions

View File

@@ -1,4 +1,5 @@
Imports System.Diagnostics
Imports System.Collections.Generic
Imports System.Diagnostics
Imports System.Reflection
Public Class TransmitterHarvestView
@@ -24,59 +25,63 @@ Public Class TransmitterHarvestView
End Sub
Private Sub FillTreeView()
For Each transmitter In TransmitterHarvester.GetAllTransmitters()
If TransmittersTreeView.Nodes.ContainsKey(transmitter) = True Then
For Each log In TransmitterHarvester.GetAllTransmitterLogs(transmitter)
Dim logs As List(Of TransmitterLogs) = TransmitterHarvester.GetAllTransmitter(StartDateTimePicker.Value, EndDateTimePicker.Value)
If TransmittersTreeView.Nodes(transmitter).Nodes.ContainsKey(log.LogDate.Ticks.ToString) = False Then
For Each transmitter In logs
If TransmittersTreeView.Nodes.ContainsKey(transmitter.Transmitter) = True Then
For Each log In transmitter.Logs
If TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.ContainsKey(log.LogDate.Ticks.ToString) = False Then
'add
If log.LogDate > StartDateTimePicker.Value AndAlso log.LogDate < EndDateTimePicker.Value Then
If log.ButtonPressed.ToUpper = "A" AndAlso ButtonACheckBox.Checked Then
TransmittersTreeView.Nodes(transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
TransmittersTreeView.Nodes(transmitter).Nodes(log.LogDate.Ticks.ToString).Tag = log
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes(log.LogDate.Ticks.ToString).Tag = log
End If
If log.ButtonPressed.ToUpper = "B" AndAlso ButtonBCheckBox.Checked Then
TransmittersTreeView.Nodes(transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
TransmittersTreeView.Nodes(transmitter).Nodes(log.LogDate.Ticks.ToString).Tag = log
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes(log.LogDate.Ticks.ToString).Tag = log
End If
If log.ButtonPressed.ToUpper = "C" AndAlso ButtonCCheckBox.Checked Then
TransmittersTreeView.Nodes(transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
TransmittersTreeView.Nodes(transmitter).Nodes(log.LogDate.Ticks.ToString).Tag = log
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes(log.LogDate.Ticks.ToString).Tag = log
End If
If log.ButtonPressed.ToUpper = "D" AndAlso ButtonDCheckBox.Checked Then
TransmittersTreeView.Nodes(transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
TransmittersTreeView.Nodes(transmitter).Nodes(log.LogDate.Ticks.ToString).Tag = log
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes(log.LogDate.Ticks.ToString).Tag = log
End If
End If
Else
'remove
If log.LogDate < StartDateTimePicker.Value OrElse log.LogDate > EndDateTimePicker.Value Then
TransmittersTreeView.Nodes(transmitter).Nodes.RemoveByKey(log.LogDate.Ticks.ToString)
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.RemoveByKey(log.LogDate.Ticks.ToString)
End If
If log.ButtonPressed.ToUpper = "A" AndAlso ButtonACheckBox.Checked = False Then
TransmittersTreeView.Nodes(transmitter).Nodes.RemoveByKey(log.LogDate.Ticks.ToString)
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.RemoveByKey(log.LogDate.Ticks.ToString)
End If
If log.ButtonPressed.ToUpper = "B" AndAlso ButtonBCheckBox.Checked = False Then
TransmittersTreeView.Nodes(transmitter).Nodes.RemoveByKey(log.LogDate.Ticks.ToString)
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.RemoveByKey(log.LogDate.Ticks.ToString)
End If
If log.ButtonPressed.ToUpper = "C" AndAlso ButtonCCheckBox.Checked = False Then
TransmittersTreeView.Nodes(transmitter).Nodes.RemoveByKey(log.LogDate.Ticks.ToString)
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.RemoveByKey(log.LogDate.Ticks.ToString)
End If
If log.ButtonPressed.ToUpper = "D" AndAlso ButtonDCheckBox.Checked = False Then
TransmittersTreeView.Nodes(transmitter).Nodes.RemoveByKey(log.LogDate.Ticks.ToString)
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.RemoveByKey(log.LogDate.Ticks.ToString)
End If
End If
Next
Else
TransmittersTreeView.Nodes.Add(transmitter, transmitter)
For Each log In TransmitterHarvester.GetAllTransmitterLogs(transmitter)
TransmittersTreeView.Nodes.Add(transmitter.Transmitter, transmitter.Transmitter)
For Each log In transmitter.Logs
If log.LogDate > StartDateTimePicker.Value AndAlso log.LogDate < EndDateTimePicker.Value Then
TransmittersTreeView.Nodes(transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
TransmittersTreeView.Nodes(transmitter).Nodes(log.LogDate.Ticks.ToString).Tag = log
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes.Add(log.LogDate.Ticks.ToString, log.ButtonPressed & " - " & log.LogDate)
TransmittersTreeView.Nodes(transmitter.Transmitter).Nodes(log.LogDate.Ticks.ToString).Tag = log
End If
Next
End If
Next
If TransmittersTreeView.TreeViewNodeSorter Is Nothing Then

View File

@@ -1,5 +1,6 @@
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.IO
Imports System.Linq
Imports LiteDB
@@ -34,15 +35,34 @@ Module TransmitterHarvester
RaiseEvent TransmitterUpdate()
End Sub
Public Function GetAllTransmitters() As List(Of String)
Using db As New LiteDatabase("Filename=" & harvestDBLocation & ";connection=shared")
Return db.GetCollection(Of TransmitterLog)("Transmitters").Query().OrderBy(Function(x) x.Transmitter).Select(Function(S) S.Transmitter).ToList()
End Using
End Function
'Public Function GetAllTransmitters() As List(Of String)
' Using db As New LiteDatabase("Filename=" & harvestDBLocation & ";connection=shared")
' Return db.GetCollection(Of TransmitterLog)("Transmitters").Query().OrderBy(Function(x) x.Transmitter).Select(Function(S) S.Transmitter).ToList()
' End Using
'End Function
Public Function GetAllTransmitterLogs(transmitter As String) As List(Of TransmitterLog)
'Public Function GetAllTransmitterLogs(transmitter As String) As List(Of TransmitterLog)
' Using db As New LiteDatabase("Filename=" & harvestDBLocation & ";connection=shared")
' Return db.GetCollection(Of TransmitterLog)("Transmitters").Query().Where(Function(x) x.Transmitter Is transmitter).OrderBy(Function(d) d.LogDate).ToList()
' End Using
'End Function
Public Function GetAllTransmitter(startDate As Date, endDate As Date) As List(Of TransmitterLogs)
Using db As New LiteDatabase("Filename=" & harvestDBLocation & ";connection=shared")
Return db.GetCollection(Of TransmitterLog)("Transmitters").Query().Where(Function(x) x.Transmitter Is transmitter).OrderBy(Function(d) d.LogDate).ToList()
Dim logs As New List(Of TransmitterLogs)
Dim datas = db.GetCollection(Of TransmitterLog)("Transmitters").Query().GroupBy("Transmitter").Select("{Transmitter: @key}").ToList()
For Each dataentry In datas
Dim log = db.GetCollection(Of TransmitterLog)("Transmitters").Query().Where(BsonExpression.Create("Transmitter= @0", dataentry("Transmitter").AsString)).FirstOrDefault()
'Console.WriteLine(log.Transmitter)
Dim logEntry As New TransmitterLogs With {
.Transmitter = log.Transmitter,
.Logs = db.GetCollection(Of TransmitterLog)("Transmitters").Query().Where(Function(x) x.Transmitter Is log.Transmitter AndAlso x.LogDate > startDate AndAlso x.LogDate < endDate).OrderBy(Function(d) d.LogDate).ToList()
}
logs.Add(logEntry)
Next
Return logs
End Using
End Function
@@ -54,4 +74,10 @@ Public Class TransmitterLog
Public Property Transmitter As String
Public Property ButtonPressed As String
Public Property LogDate As DateTime
End Class
Public Class TransmitterLogs
Public Property Transmitter As String
Public Property Logs As List(Of TransmitterLog)
End Class