diff --git a/GUIs.Monitor/frmMonitor.Designer.vb b/GUIs.Monitor/frmMonitor.Designer.vb index 1019b54f..0eb91945 100644 --- a/GUIs.Monitor/frmMonitor.Designer.vb +++ b/GUIs.Monitor/frmMonitor.Designer.vb @@ -391,7 +391,6 @@ Partial Class frmMonitor Me.TreeListResults.MenuManager = Me.RibbonControl1 Me.TreeListResults.Name = "TreeListResults" Me.TreeListResults.Size = New System.Drawing.Size(713, 554) - Me.TreeListResults.StateImageList = Me.SvgImageCollection1 Me.TreeListResults.TabIndex = 4 ' 'SvgImageCollection1 diff --git a/GUIs.Monitor/frmMonitor.vb b/GUIs.Monitor/frmMonitor.vb index c8151a50..2f079235 100644 --- a/GUIs.Monitor/frmMonitor.vb +++ b/GUIs.Monitor/frmMonitor.vb @@ -11,6 +11,10 @@ Imports DevExpress.XtraTab Imports DigitalData.Controls.DocumentViewer Imports DevExpress.XtraEditors Imports DevExpress.XtraRichEdit +Imports DevExpress.XtraTreeList.Columns +Imports DevExpress.XtraEditors.Repository +Imports DevExpress.Utils +Imports DevExpress.XtraEditors.Controls Public Class frmMonitor Public Property LogConfig As LogConfig @@ -27,7 +31,7 @@ Public Class frmMonitor Concat(HtmlViewColumns). ToList - Private ReadOnly DisplayColumns As New List(Of String) From {"COLUMN1", "COLUMN2", "COLUMN3", "ADDED_WHEN"} + Private ReadOnly DisplayColumns As New List(Of String) From {"COLUMN1", "COLUMN2", "COLUMN3", "ADDED_WHEN", "STATE", "ICON"} @@ -43,6 +47,9 @@ Public Class frmMonitor Private Const STATE_SUCCESS As String = "SUCCESS" Private Const STATE_FAILURE As String = "FAILURE" + Private Const STATE_WARNING As String = "WARNING" + Private Const STATE_WAITING As String = "WAITING" + Private Enum NodeImage [Default] = 0 @@ -115,7 +122,6 @@ Public Class frmMonitor End Function Private Sub buttonSearch_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles buttonSearch.ItemClick - InitTreeList() LoadData() End Sub @@ -127,12 +133,21 @@ Public Class frmMonitor TreeListResults.DataSource = oTable TreeListResults.PopulateColumns() + InitTreeList() + + ' Show all columns in DisplayColumns List For Each oColumn In TreeListResults.Columns oColumn.Visible = DisplayColumns.Contains(oColumn.FieldName) Next + Dim oStateColumn As TreeListColumn = TreeListResults.Columns.Item("STATE") + For Each oNode As TreeListNode In TreeListResults.Nodes - ExpandNodes(oNode) + ExpandNodes(oNode, Function(n) + Dim oObjectValue = n.GetValue(oStateColumn) + Dim oValue As String = NotNull(oObjectValue, String.Empty) + Return oValue IsNot Nothing AndAlso (oValue = STATE_WARNING Or oValue = STATE_FAILURE) + End Function) Next Return True @@ -165,6 +180,55 @@ Public Class frmMonitor Private Sub InitTreeList() TreeListResults.KeyFieldName = "GUID" TreeListResults.ParentFieldName = "PARENT_ID" + + Dim oStateEdit As New RepositoryItemImageComboBox With { + .SmallImages = SvgImageCollection1, + .GlyphAlignment = HorzAlignment.Near + } + oStateEdit.Buttons.Clear() + oStateEdit.Items.AddRange(New List(Of ImageComboBoxItem) From { + New ImageComboBoxItem("Success", "SUCCESS", NodeImage.Success), + New ImageComboBoxItem("Failure", "FAILURE", NodeImage.Failure), + New ImageComboBoxItem("Warning", "WARNING", NodeImage.Warning), + New ImageComboBoxItem("Waiting", "WAITING", NodeImage.Waiting), + New ImageComboBoxItem("Default", "DEFAULT", NodeImage.Default) + }) + + Dim oIconEdit As New RepositoryItemImageComboBox With { + .SmallImages = SvgImageCollection1, + .GlyphAlignment = HorzAlignment.Near + } + oStateEdit.Buttons.Clear() + oStateEdit.Items.AddRange(New List(Of ImageComboBoxItem) From { + New ImageComboBoxItem("Email", "MAIL", NodeImage.Mail), + New ImageComboBoxItem("SQL", "SQL", NodeImage.SQL), + New ImageComboBoxItem("File", "FILE", NodeImage.File) + }) + + Dim oColumn1 = TreeListResults.Columns.Item("COLUMN1") + Dim oStateColumn = TreeListResults.Columns.Item("STATE") + Dim oIconColumn = TreeListResults.Columns.Item("ICON") + + oColumn1.VisibleIndex = 0 + oStateColumn.VisibleIndex = 1 + oIconColumn.VisibleIndex = 2 + + With oStateColumn + .ColumnEdit = oStateEdit + .MaxWidth = 25 + .MinWidth = 25 + .Caption = " " + .ImageOptions.Image = SvgImageCollection1.GetImage(NodeImage.Success) + End With + + With oIconColumn + .ColumnEdit = oStateEdit + .MaxWidth = 25 + .MinWidth = 25 + .Caption = " " + .ImageOptions.Image = SvgImageCollection1.GetImage(NodeImage.SQL) + End With + End Sub Private Sub cmbSearchKeys_SelectedValueChanged(sender As Object, e As EventArgs) Handles cmbSearchKeys.SelectedValueChanged @@ -244,7 +308,7 @@ Public Class frmMonitor Continue For End If - If IO.File.Exists(oPath) Then + If Not IO.File.Exists(oPath) Then Continue For End If @@ -277,14 +341,11 @@ Public Class frmMonitor Next End Sub - Private Sub ExpandNodes(RootNode As TreeListNode) + Private Sub ExpandNodes(RootNode As TreeListNode, Condition As Predicate(Of TreeListNode)) For Each oNode As TreeListNode In RootNode.Nodes - ExpandNodes(oNode) + ExpandNodes(oNode, Condition) - Dim oColumn = TreeListResults.Columns.Item("COLOR") - Dim oColorString As String = NotNull(oNode.GetValue(oColumn), String.Empty) - - If oColorString = "Red" Then + If Condition(oNode) = True Then oNode.Expand() ExpandParentNode(oNode) End If @@ -340,7 +401,7 @@ Public Class frmMonitor Return Nothing End If - Dim oValue = Node.GetValue(oColumn).ToString + Dim oValue = Node.GetValue(oColumn)?.ToString If oValue Is String.Empty Then Return Nothing @@ -364,6 +425,10 @@ Public Class frmMonitor oColor = Color.LightGreen Case STATE_FAILURE oColor = Color.LightCoral + Case STATE_WARNING + oColor = Color.Yellow + Case STATE_WAITING + oColor = Color.LightSkyBlue End Select e.Appearance.BackColor = oColor @@ -372,41 +437,41 @@ Public Class frmMonitor End Sub Private Sub TreeListResults_GetStateImage(sender As Object, e As DevExpress.XtraTreeList.GetStateImageEventArgs) Handles TreeListResults.GetStateImage - Dim oValues As Dictionary(Of String, String) = GetValuesFromNode(e.Node, DataColumns) - Dim oSQLCommands = oValues. - Where(Function(v) v.Key.StartsWith("SELECT")). - Where(Function(v) v.Value IsNot Nothing). - Count() + 'Dim oValues As Dictionary(Of String, String) = GetValuesFromNode(e.Node, DataColumns) + 'Dim oSQLCommands = oValues. + ' Where(Function(v) v.Key.StartsWith("SELECT")). + ' Where(Function(v) v.Value IsNot Nothing). + ' Count() - Dim oFilePaths = oValues. - Where(Function(v) v.Key.StartsWith("DOCVIEW")). - Where(Function(v) v.Value IsNot Nothing). - Count() + 'Dim oFilePaths = oValues. + ' Where(Function(v) v.Key.StartsWith("DOCVIEW")). + ' Where(Function(v) v.Value IsNot Nothing). + ' Count() - Dim oHtmlDocuments = oValues. - Where(Function(v) v.Key.StartsWith("HTML")). - Where(Function(v) v.Value IsNot Nothing). - Count() + 'Dim oHtmlDocuments = oValues. + ' Where(Function(v) v.Key.StartsWith("HTML")). + ' Where(Function(v) v.Value IsNot Nothing). + ' Count() - Dim oIconColumn = TreeListResults.Columns.Item("ICON") - Dim oIcon = NotNull(e.Node.GetValue(oIconColumn), Nothing) - Dim oStateColumn = TreeListResults.Columns.Item("STATE") - Dim oState = NotNull(e.Node.GetValue(oStateColumn), Nothing) + 'Dim oIconColumn = TreeListResults.Columns.Item("ICON") + 'Dim oIcon = NotNull(e.Node.GetValue(oIconColumn), Nothing) + 'Dim oStateColumn = TreeListResults.Columns.Item("STATE") + 'Dim oState = NotNull(e.Node.GetValue(oStateColumn), Nothing) - If oSQLCommands > 0 Then - e.NodeImageIndex = NodeImage.SQL - ElseIf oFilePaths > 0 Then - e.NodeImageIndex = NodeImage.File - ElseIf oHtmlDocuments > 0 Then - e.NodeImageIndex = NodeImage.Mail - Else - If oState IsNot Nothing AndAlso StateIcons.ContainsKey(oState) Then - Dim oIconIndex = StateIcons.Item(oState) - e.NodeImageIndex = oIconIndex - Else - e.NodeImageIndex = NodeImage.Default - End If - End If + 'If oSQLCommands > 0 Then + ' e.NodeImageIndex = NodeImage.SQL + 'ElseIf oFilePaths > 0 Then + ' e.NodeImageIndex = NodeImage.File + 'ElseIf oHtmlDocuments > 0 Then + ' e.NodeImageIndex = NodeImage.Mail + 'Else + ' If oState IsNot Nothing AndAlso StateIcons.ContainsKey(oState) Then + ' Dim oIconIndex = StateIcons.Item(oState) + ' e.NodeImageIndex = oIconIndex + ' Else + ' e.NodeImageIndex = NodeImage.Default + ' End If + 'End If End Sub Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick