Rework Profiles, Add Validation, Add Placeholders, Add Controls

This commit is contained in:
Jonathan Jenne 2022-06-29 14:36:12 +02:00
parent ad289ae666
commit 9b7c1d0e0a
6 changed files with 294 additions and 58 deletions

View File

@ -4,5 +4,5 @@ Public Class Config
<ConnectionString> <ConnectionString>
Public Property ConnectionString As String = String.Empty Public Property ConnectionString As String = String.Empty
Public Property DBPrefix As String = "DD_ECM" Public Property DBPrefix As String = "DD_ECM"
Public Property SearchSQL As String = $"SELECT * FROM {DBPrefix}.[dbo].TBDD_MONITORING_PROFILE WHERE ACTIVE = 1 ORDER BY SEQUENCE" Public Property SearchSQL As String = $"SELECT * FROM {DBPrefix}.[dbo].[TBMON_PROFILE] WHERE ACTIVE = 1 ORDER BY SEQUENCE"
End Class End Class

View File

@ -97,14 +97,19 @@
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\DDMonorepo\Modules.Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath> <HintPath>..\..\DDMonorepo\Modules.Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
</Reference> </Reference>
<Reference Include="DigitalData.Modules.Patterns">
<HintPath>..\..\DDMonorepo\Modules.Patterns\bin\Debug\DigitalData.Modules.Patterns.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL"> <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.7.10\lib\net45\NLog.dll</HintPath> <HintPath>..\packages\NLog.4.7.10\lib\net45\NLog.dll</HintPath>
</Reference> </Reference>
<Reference Include="PresentationCore" />
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" /> <Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" /> <Reference Include="System.Configuration" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.IO.Compression" /> <Reference Include="System.IO.Compression" />
<Reference Include="System.Runtime.Remoting" />
<Reference Include="System.Runtime.Serialization" /> <Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" /> <Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" /> <Reference Include="System.Transactions" />
@ -116,6 +121,8 @@
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="UIAutomationClient" />
<Reference Include="WindowsBase" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Import Include="Microsoft.VisualBasic" /> <Import Include="Microsoft.VisualBasic" />

View File

@ -10,6 +10,27 @@ Public Class SearchLoader
Private Database As MSSQLServer Private Database As MSSQLServer
Public Searches As New List(Of Search) Public Searches As New List(Of Search)
Public Parameters As New List(Of SearchParameter)
Public Enum ReturnTypeEnum
Undefined
Table
TreeView
End Enum
Public Enum DataTypeEnum
Undefined
[Boolean]
[String]
[Integer]
[Date]
End Enum
Public Enum ItemTypeEnum
Undefined
List
SQL
End Enum
Public Sub New(pLogConfig As LogConfig, pConfig As Config, pDatabase As MSSQLServer) Public Sub New(pLogConfig As LogConfig, pConfig As Config, pDatabase As MSSQLServer)
MyBase.New(pLogConfig) MyBase.New(pLogConfig)
@ -23,11 +44,18 @@ Public Class SearchLoader
Dim oTable = Database.GetDatatable(oSQL) Dim oTable = Database.GetDatatable(oSQL)
For Each oRow As DataRow In oTable.Rows For Each oRow As DataRow In oTable.Rows
Dim oSearchId = oRow.ItemEx("GUID", 0)
Dim oParams = Parameters.
Where(Function(param) param.SearchId = oSearchId).
ToList()
Searches.Add(New Search With { Searches.Add(New Search With {
.Id = CInt(oRow.Item("GUID")), .Id = oSearchId,
.Title = oRow.ItemEx("TITLE", ""), .Title = oRow.ItemEx("TITLE", String.Empty),
.Description = oRow.ItemEx("DESCRIPTION", ""), .Description = oRow.ItemEx("CAPTION", String.Empty),
.TypeName = "Varchar" .ReturnType = GetReturnType(oRow.ItemEx("RETURN_TYPE", String.Empty)),
.SQLCommand = oRow.ItemEx("EXEC_SQL", String.Empty),
.Parameters = oParams
}) })
Next Next
Catch ex As Exception Catch ex As Exception
@ -37,42 +65,98 @@ Public Class SearchLoader
End Try End Try
End Sub End Sub
Public Function LoadSearchAttributes(pSearchId As Integer) As List(Of SearchAttribute) Public Function GetItemType(pTypeString As String) As ItemTypeEnum
Dim oSQL As String = $"SELECT * FROM TBDD_MONITORING_PROFILE_ATTRIBUTES WHERE ACTIVE = 1 AND MONITOR_PROFILE_ID = {pSearchId} ORDER BY SEQUENCE" Select Case pTypeString
Case "LIST"
Return ItemTypeEnum.List
Case "SQL"
Return ItemTypeEnum.SQL
Case Else
Return ItemTypeEnum.Undefined
End Select
End Function
Public Function GetReturnType(pTypeString As String) As ReturnTypeEnum
Select Case pTypeString
Case "Table"
Return ReturnTypeEnum.Table
Case "TreeView"
Return ReturnTypeEnum.TreeView
Case Else
Return ReturnTypeEnum.Undefined
End Select
End Function
Public Function GetDataType(pTypeString As String) As DataTypeEnum
Select Case pTypeString
Case "BIT"
Return DataTypeEnum.Boolean
Case "VARCHAR"
Return DataTypeEnum.String
Case "INT"
Return DataTypeEnum.Integer
Case "DATE"
Return DataTypeEnum.Date
Case Else
Return DataTypeEnum.Undefined
End Select
End Function
Public Sub LoadSearchParameters()
Dim oSQL As String = $"SELECT * FROM TBMON_PROFILE_PARAM WHERE ACTIVE = 1 ORDER BY SEQUENCE"
Dim oTable As DataTable = Database.GetDatatable(oSQL) Dim oTable As DataTable = Database.GetDatatable(oSQL)
Dim oAttributes As New List(Of SearchAttribute) Dim oParameters As New List(Of SearchParameter)
For Each oRow As DataRow In oTable.Rows For Each oRow As DataRow In oTable.Rows
oAttributes.Add(New SearchAttribute With { oParameters.Add(New SearchParameter With {
.Id = oRow.ItemEx("GUID", 0), .Id = oRow.ItemEx("GUID", 0),
.Caption = oRow.ItemEx("CAPTION", String.Empty), .Title = oRow.ItemEx("CAPTION", String.Empty),
.Description = oRow.ItemEx("DESCRIPTION", String.Empty), .Description = oRow.ItemEx("DESCRIPTION", String.Empty),
.DataType = oRow.ItemEx("DATA_TYPE", "VARCHAR") .DataType = GetDataType(oRow.ItemEx("DATA_TYPE", "VARCHAR")),
.ItemString = oRow.ItemEx("ITEMS", String.Empty),
.ItemType = GetItemType(oRow.ItemEx("ITEM_TYPE", String.Empty)),
.Required = oRow.ItemEx("REQUIRED", True),
.PatternTitle = oRow.ItemEx("PATTERN", String.Empty),
.SearchId = oRow.ItemEx("PROFILE_ID", 0)
}) })
Next Next
Return oAttributes Parameters = oParameters
End Function End Sub
Public Class Search Public Class Search
Public Id As Integer Public Id As Integer
Public Title As String Public Title As String
Public Description As String Public Description As String
Public TypeName As String Public SQLCommand As String
Public ReturnType As ReturnTypeEnum
Public Parameters As List(Of SearchParameter)
Public Overrides Function ToString() As String Public Overrides Function ToString() As String
Return Title Return Title
End Function End Function
End Class End Class
Public Class SearchAttribute Public Class SearchParameter
Public Id As Integer Public Id As Integer
Public Caption As String Public Title As String
Public PatternTitle As String
Public Description As String Public Description As String
Public DataType As String Public DataType As DataTypeEnum
Public ItemString As String
Public ItemType As ItemTypeEnum
Public Required As Boolean
Public SearchId As Integer
Public ReadOnly Property HasItems As Boolean
Get
Return ItemType <> ItemTypeEnum.Undefined
End Get
End Property
Public Overrides Function ToString() As String Public Overrides Function ToString() As String
Return Caption Return Title
End Function End Function
End Class End Class

View File

@ -70,6 +70,8 @@ Partial Class frmMonitor
Me.SvgImageCollection1 = New DevExpress.Utils.SvgImageCollection(Me.components) Me.SvgImageCollection1 = New DevExpress.Utils.SvgImageCollection(Me.components)
Me.SplitContainerControl1 = New DevExpress.XtraEditors.SplitContainerControl() Me.SplitContainerControl1 = New DevExpress.XtraEditors.SplitContainerControl()
Me.SplitContainerControl3 = New DevExpress.XtraEditors.SplitContainerControl() Me.SplitContainerControl3 = New DevExpress.XtraEditors.SplitContainerControl()
Me.GridControlResults = New DevExpress.XtraGrid.GridControl()
Me.GridViewResults = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.XtraTabControl3 = New DevExpress.XtraTab.XtraTabControl() Me.XtraTabControl3 = New DevExpress.XtraTab.XtraTabControl()
Me.XtraTabPageSQL1 = New DevExpress.XtraTab.XtraTabPage() Me.XtraTabPageSQL1 = New DevExpress.XtraTab.XtraTabPage()
Me.GridControl2 = New DevExpress.XtraGrid.GridControl() Me.GridControl2 = New DevExpress.XtraGrid.GridControl()
@ -86,6 +88,7 @@ Partial Class frmMonitor
Me.XtraTabPage3 = New DevExpress.XtraTab.XtraTabPage() Me.XtraTabPage3 = New DevExpress.XtraTab.XtraTabPage()
Me.XtraTabPage4 = New DevExpress.XtraTab.XtraTabPage() Me.XtraTabPage4 = New DevExpress.XtraTab.XtraTabPage()
Me.XtraSaveFileDialog1 = New DevExpress.XtraEditors.XtraSaveFileDialog(Me.components) Me.XtraSaveFileDialog1 = New DevExpress.XtraEditors.XtraSaveFileDialog(Me.components)
Me.AdornerUIManager2 = New DevExpress.Utils.VisualEffects.AdornerUIManager(Me.components)
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ApplicationMenu1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.ApplicationMenu1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).BeginInit()
@ -116,6 +119,8 @@ Partial Class frmMonitor
CType(Me.SplitContainerControl3.Panel2, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.SplitContainerControl3.Panel2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl3.Panel2.SuspendLayout() Me.SplitContainerControl3.Panel2.SuspendLayout()
Me.SplitContainerControl3.SuspendLayout() Me.SplitContainerControl3.SuspendLayout()
CType(Me.GridControlResults, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.GridViewResults, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.XtraTabControl3, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.XtraTabControl3, System.ComponentModel.ISupportInitialize).BeginInit()
Me.XtraTabControl3.SuspendLayout() Me.XtraTabControl3.SuspendLayout()
Me.XtraTabPageSQL1.SuspendLayout() Me.XtraTabPageSQL1.SuspendLayout()
@ -137,6 +142,7 @@ Partial Class frmMonitor
CType(Me.XtraTabControl2, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.XtraTabControl2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.XtraTabControl2.SuspendLayout() Me.XtraTabControl2.SuspendLayout()
Me.XtraTabPage3.SuspendLayout() Me.XtraTabPage3.SuspendLayout()
CType(Me.AdornerUIManager2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout() Me.SuspendLayout()
' '
'RibbonControl1 'RibbonControl1
@ -379,12 +385,12 @@ Partial Class frmMonitor
'TreeListResults 'TreeListResults
' '
Me.TreeListResults.Columns.AddRange(New DevExpress.XtraTreeList.Columns.TreeListColumn() {Me.colState, Me.colICON, Me.colCOLUMN1, Me.colCOLUMN2, Me.colCOLUMN3, Me.colADDED_WHEN, Me.TreeListColumn1, Me.TreeListColumn2, Me.TreeListColumn3, Me.TreeListColumn4, Me.TreeListColumn5, Me.TreeListColumn6, Me.TreeListColumn7, Me.TreeListColumn8}) Me.TreeListResults.Columns.AddRange(New DevExpress.XtraTreeList.Columns.TreeListColumn() {Me.colState, Me.colICON, Me.colCOLUMN1, Me.colCOLUMN2, Me.colCOLUMN3, Me.colADDED_WHEN, Me.TreeListColumn1, Me.TreeListColumn2, Me.TreeListColumn3, Me.TreeListColumn4, Me.TreeListColumn5, Me.TreeListColumn6, Me.TreeListColumn7, Me.TreeListColumn8})
Me.TreeListResults.Dock = System.Windows.Forms.DockStyle.Fill Me.TreeListResults.Location = New System.Drawing.Point(23, 13)
Me.TreeListResults.Location = New System.Drawing.Point(0, 0)
Me.TreeListResults.MenuManager = Me.RibbonControl1 Me.TreeListResults.MenuManager = Me.RibbonControl1
Me.TreeListResults.Name = "TreeListResults" Me.TreeListResults.Name = "TreeListResults"
Me.TreeListResults.Size = New System.Drawing.Size(713, 181) Me.TreeListResults.Size = New System.Drawing.Size(313, 158)
Me.TreeListResults.TabIndex = 4 Me.TreeListResults.TabIndex = 4
Me.TreeListResults.Visible = False
' '
'colState 'colState
' '
@ -539,6 +545,7 @@ Partial Class frmMonitor
' '
'SplitContainerControl3.Panel1 'SplitContainerControl3.Panel1
' '
Me.SplitContainerControl3.Panel1.Controls.Add(Me.GridControlResults)
Me.SplitContainerControl3.Panel1.Controls.Add(Me.TreeListResults) Me.SplitContainerControl3.Panel1.Controls.Add(Me.TreeListResults)
Me.SplitContainerControl3.Panel1.Text = "Panel1" Me.SplitContainerControl3.Panel1.Text = "Panel1"
' '
@ -550,6 +557,22 @@ Partial Class frmMonitor
Me.SplitContainerControl3.SplitterPosition = 181 Me.SplitContainerControl3.SplitterPosition = 181
Me.SplitContainerControl3.TabIndex = 5 Me.SplitContainerControl3.TabIndex = 5
' '
'GridControlResults
'
Me.GridControlResults.Location = New System.Drawing.Point(342, 13)
Me.GridControlResults.MainView = Me.GridViewResults
Me.GridControlResults.MenuManager = Me.RibbonControl1
Me.GridControlResults.Name = "GridControlResults"
Me.GridControlResults.Size = New System.Drawing.Size(368, 158)
Me.GridControlResults.TabIndex = 5
Me.GridControlResults.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridViewResults})
Me.GridControlResults.Visible = False
'
'GridViewResults
'
Me.GridViewResults.GridControl = Me.GridControlResults
Me.GridViewResults.Name = "GridViewResults"
'
'XtraTabControl3 'XtraTabControl3
' '
Me.XtraTabControl3.Dock = System.Windows.Forms.DockStyle.Fill Me.XtraTabControl3.Dock = System.Windows.Forms.DockStyle.Fill
@ -687,6 +710,10 @@ Partial Class frmMonitor
' '
Me.XtraSaveFileDialog1.FileName = "XtraSaveFileDialog1" Me.XtraSaveFileDialog1.FileName = "XtraSaveFileDialog1"
' '
'AdornerUIManager2
'
Me.AdornerUIManager2.Owner = Me
'
'frmMonitor 'frmMonitor
' '
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@ -731,6 +758,8 @@ Partial Class frmMonitor
Me.SplitContainerControl3.Panel2.ResumeLayout(False) Me.SplitContainerControl3.Panel2.ResumeLayout(False)
CType(Me.SplitContainerControl3, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.SplitContainerControl3, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl3.ResumeLayout(False) Me.SplitContainerControl3.ResumeLayout(False)
CType(Me.GridControlResults, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.GridViewResults, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.XtraTabControl3, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.XtraTabControl3, System.ComponentModel.ISupportInitialize).EndInit()
Me.XtraTabControl3.ResumeLayout(False) Me.XtraTabControl3.ResumeLayout(False)
Me.XtraTabPageSQL1.ResumeLayout(False) Me.XtraTabPageSQL1.ResumeLayout(False)
@ -752,6 +781,7 @@ Partial Class frmMonitor
CType(Me.XtraTabControl2, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.XtraTabControl2, System.ComponentModel.ISupportInitialize).EndInit()
Me.XtraTabControl2.ResumeLayout(False) Me.XtraTabControl2.ResumeLayout(False)
Me.XtraTabPage3.ResumeLayout(False) Me.XtraTabPage3.ResumeLayout(False)
CType(Me.AdornerUIManager2, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False) Me.ResumeLayout(False)
Me.PerformLayout() Me.PerformLayout()
@ -819,4 +849,7 @@ Partial Class frmMonitor
Friend WithEvents TreeListColumn6 As DevExpress.XtraTreeList.Columns.TreeListColumn Friend WithEvents TreeListColumn6 As DevExpress.XtraTreeList.Columns.TreeListColumn
Friend WithEvents TreeListColumn7 As DevExpress.XtraTreeList.Columns.TreeListColumn Friend WithEvents TreeListColumn7 As DevExpress.XtraTreeList.Columns.TreeListColumn
Friend WithEvents TreeListColumn8 As DevExpress.XtraTreeList.Columns.TreeListColumn Friend WithEvents TreeListColumn8 As DevExpress.XtraTreeList.Columns.TreeListColumn
Friend WithEvents AdornerUIManager2 As DevExpress.Utils.VisualEffects.AdornerUIManager
Friend WithEvents GridControlResults As DevExpress.XtraGrid.GridControl
Friend WithEvents GridViewResults As DevExpress.XtraGrid.Views.Grid.GridView
End Class End Class

View File

@ -196,4 +196,7 @@
<metadata name="XtraSaveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="XtraSaveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>335, 17</value> <value>335, 17</value>
</metadata> </metadata>
<metadata name="AdornerUIManager2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>494, 17</value>
</metadata>
</root> </root>

View File

@ -8,6 +8,7 @@ Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Language.Utils Imports DigitalData.Modules.Language.Utils
Imports DigitalData.Modules.Language Imports DigitalData.Modules.Language
Imports DigitalData.Modules.Patterns
Imports DevExpress.XtraTab Imports DevExpress.XtraTab
Imports DigitalData.Controls.DocumentViewer Imports DigitalData.Controls.DocumentViewer
Imports DevExpress.XtraEditors Imports DevExpress.XtraEditors
@ -20,12 +21,14 @@ Imports DigitalData.GUIs.Monitor.SearchLoader
Imports DevExpress.XtraLayout Imports DevExpress.XtraLayout
Imports DevExpress.XtraTreeList Imports DevExpress.XtraTreeList
Public Class frmMonitor Public Class frmMonitor
Public Property LogConfig As LogConfig Public Property LogConfig As LogConfig
Public Property Logger As Logger Public Property Logger As Logger
Public Property ConfigManager As ConfigManager(Of Config) Public Property ConfigManager As ConfigManager(Of Config)
Public Property Database As MSSQLServer Public Property Database As MSSQLServer
Public Property FormHelper As FormHelper Public Property FormHelper As FormHelper
Public Property Patterns As Patterns2
Private ReadOnly SQLColumns As New List(Of String) From {"SELECT1", "SELECT2", "SELECT3", "SELECT4"} Private ReadOnly SQLColumns As New List(Of String) From {"SELECT1", "SELECT2", "SELECT3", "SELECT4"}
Private ReadOnly DocViewColumns As New List(Of String) From {"DOCVIEW1", "DOCVIEW2"} Private ReadOnly DocViewColumns As New List(Of String) From {"DOCVIEW1", "DOCVIEW2"}
@ -76,13 +79,17 @@ Public Class frmMonitor
} }
Private GridBuilder As GridBuilder Private GridBuilder As GridBuilder
Private ControlHelper As Common.ControlHelper
Private Sub frmStart_Load(sender As Object, e As EventArgs) Handles MyBase.Load Private Sub frmStart_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try Try
LogConfig = New LogConfig(LogConfig.PathType.AppData, Nothing, Nothing, "Digital Data", "Monitor") LogConfig = New LogConfig(LogConfig.PathType.AppData, Nothing, Nothing, "Digital Data", "Monitor")
Logger = LogConfig.GetLogger() Logger = LogConfig.GetLogger()
ConfigManager = New ConfigManager(Of Config)(LogConfig, Application.UserAppDataPath, Application.UserAppDataPath, Application.StartupPath) ConfigManager = New ConfigManager(Of Config)(LogConfig, Application.UserAppDataPath, Application.UserAppDataPath, Application.StartupPath)
Patterns = New Patterns2(LogConfig)
FormHelper = New FormHelper(LogConfig, Me) FormHelper = New FormHelper(LogConfig, Me)
ControlHelper = New Common.ControlHelper(LogConfig)
If ConfigManager.Config.ConnectionString = String.Empty Then If ConfigManager.Config.ConnectionString = String.Empty Then
Dim oSQLConfig As New frmSQLConfig(LogConfig) Dim oSQLConfig As New frmSQLConfig(LogConfig)
@ -108,7 +115,7 @@ Public Class frmMonitor
Dim oConnectionString = MSSQLServer.DecryptConnectionString(ConfigManager.Config.ConnectionString) Dim oConnectionString = MSSQLServer.DecryptConnectionString(ConfigManager.Config.ConnectionString)
Database = New MSSQLServer(LogConfig, oConnectionString) Database = New MSSQLServer(LogConfig, oConnectionString)
SearchLoader = New SearchLoader(LogConfig, ConfigManager.Config, Database) SearchLoader = New SearchLoader(LogConfig, ConfigManager.Config, Database)
GridBuilder = New GridBuilder(New List(Of GridView) From {GridView1, GridView2, GridView3, GridView4}) GridBuilder = New GridBuilder(New List(Of GridView) From {GridView1, GridView2, GridView3, GridView4, GridViewResults})
GridBuilder. GridBuilder.
WithDefaults(). WithDefaults().
WithDefaults(TreeListResults). WithDefaults(TreeListResults).
@ -124,8 +131,10 @@ Public Class frmMonitor
HtmlResultViewers = New List(Of RichEditControl) From {RichEditControl1, RichEditControl2} HtmlResultViewers = New List(Of RichEditControl) From {RichEditControl1, RichEditControl2}
HtmlResultTabs = New List(Of XtraTabPage) From {XtraTabPageHtml1, XtraTabPageHtml2} HtmlResultTabs = New List(Of XtraTabPage) From {XtraTabPageHtml1, XtraTabPageHtml2}
SearchLoader.LoadSearchParameters()
LoadSearches() LoadSearches()
Dim oLicense = LoadGDPicture() Dim oLicense = LoadGDPicture()
For Each oGrid In SQLResultGrids For Each oGrid In SQLResultGrids
@ -162,43 +171,103 @@ Public Class frmMonitor
Private Function LoadData() As Boolean Private Function LoadData() As Boolean
Try Try
TreeListResults.DataSource = Nothing
GridControlResults.DataSource = Nothing
If cmbSearches.EditValue Is Nothing Then If cmbSearches.EditValue Is Nothing Then
Return False Return False
End If End If
Dim oSQL As String = $"EXEC [{ConfigManager.Config.DBPrefix}].[dbo].[PRDD_MONITORING_GET_TREEVIEW_RESULT] '{cmbSearches.EditValue}','irgendwas','irgendwas','irgendwas',1" Dim oSearch As Search = cmbSearches.EditValue
Dim oMissingParams = False
With AdornerUIManager2.ValidationHintProperties
.State = VisualEffects.ValidationHintState.Invalid
.InvalidState.ShowBorder = True
.InvalidState.ShowBackgroundMode = VisualEffects.ValidationHintBackgroundMode.Target
End With
AdornerUIManager2.Hide()
AdornerUIManager2.Elements.Clear()
'Dim oSQL As String = $"EXEC [{ConfigManager.Config.DBPrefix}].[dbo].[PRDD_MONITORING_GET_TREEVIEW_RESULT] '{cmbSearches.EditValue}','irgendwas','irgendwas','irgendwas',1"
Dim oSQL As String = oSearch.SQLCommand
Dim oControls As New List(Of Control)
For Each oItem As LayoutControlItem In ParameterRoot.Items
oControls.Add(oItem.Control)
Dim oParam = oSearch.Parameters.
Where(Function(param) param.PatternTitle = oItem.Control.Name).
FirstOrDefault()
If oParam.Required And Not ControlHelper.HasValue(oItem.Control) Then
AdornerUIManager2.Elements.Add(New VisualEffects.ValidationHint With {
.TargetElement = oItem.Control,
.Visible = True
})
oMissingParams = True
End If
Next
AdornerUIManager2.Show()
If oMissingParams = True Then
Return False
End If
oSQL = Patterns.ReplaceControlValues(oSQL, oControls)
Dim oTable As DataTable = Database.GetDatatable(oSQL) Dim oTable As DataTable = Database.GetDatatable(oSQL)
TreeListResults.DataSource = oTable If oSearch.ReturnType = ReturnTypeEnum.TreeView Then
GridControlResults.Visible = False
GridControlResults.Dock = DockStyle.None
Dim oMaxLength = 0 TreeListResults.Visible = True
For Each oRow As DataRow In oTable.Rows TreeListResults.Dock = DockStyle.Fill
Dim oProcess = oRow.Item("COLUMN1")
Dim oLength = oProcess.ToString.Length
If oLength > oMaxLength Then
oMaxLength = oLength
End If
Next
InitTreeList(oMaxLength) TreeListResults.DataSource = oTable
' Show all columns in DisplayColumns List Dim oMaxLength = 0
For Each oColumn In TreeListResults.Columns For Each oRow As DataRow In oTable.Rows
oColumn.Visible = DisplayColumns.Contains(oColumn.FieldName) Dim oProcess = oRow.Item("COLUMN1")
If oColumn.FieldName = "ADDED_WHEN" Then Dim oLength = oProcess.ToString.Length
oColumn.Format.FormatType = FormatType.DateTime If oLength > oMaxLength Then
oColumn.Format.FormatString = "dd.MM.yyyy HH:MM:ss" oMaxLength = oLength
End If End If
Next Next
Dim oStateColumn As TreeListColumn = TreeListResults.Columns.Item("STATE")
For Each oNode As TreeListNode In TreeListResults.Nodes InitTreeList(oMaxLength)
ExpandNodes(oNode, Function(n)
Dim oObjectValue = n.GetValue(oStateColumn) ' Show all columns in DisplayColumns List
Dim oValue As String = NotNull(oObjectValue.ToString, String.Empty) For Each oColumn In TreeListResults.Columns
Return oValue IsNot Nothing AndAlso (oValue = STATE_WARNING Or oValue = STATE_FAILURE) oColumn.Visible = DisplayColumns.Contains(oColumn.FieldName)
End Function) If oColumn.FieldName = "ADDED_WHEN" Then
Next oColumn.Format.FormatType = FormatType.DateTime
oColumn.Format.FormatString = "dd.MM.yyyy HH:MM:ss"
End If
Next
Dim oStateColumn As TreeListColumn = TreeListResults.Columns.Item("STATE")
For Each oNode As TreeListNode In TreeListResults.Nodes
ExpandNodes(oNode, Function(n)
Dim oObjectValue = n.GetValue(oStateColumn)
Dim oValue As String = NotNull(oObjectValue.ToString, String.Empty)
Return oValue IsNot Nothing AndAlso (oValue = STATE_WARNING Or oValue = STATE_FAILURE)
End Function)
Next
Else
GridControlResults.Visible = True
GridControlResults.Dock = DockStyle.Fill
TreeListResults.Visible = False
TreeListResults.Dock = DockStyle.None
GridControlResults.DataSource = oTable
End If
Return True Return True
Catch ex As Exception Catch ex As Exception
@ -288,32 +357,72 @@ Public Class frmMonitor
Private Sub cmbSearches_SelectedValueChanged(sender As Object, e As EventArgs) Handles cmbSearches.SelectedValueChanged Private Sub cmbSearches_SelectedValueChanged(sender As Object, e As EventArgs) Handles cmbSearches.SelectedValueChanged
Dim oSearch As Search = CType(cmbSearches.SelectedItem, Search) Dim oSearch As Search = CType(cmbSearches.SelectedItem, Search)
Dim oAttributes = SearchLoader.LoadSearchAttributes(oSearch.Id)
ParameterRoot.Items.Clear() ParameterRoot.Clear()
AdornerUIManager2.Hide()
AdornerUIManager2.Elements.Clear()
For Each oAttribute In oAttributes For Each oParam As SearchParameter In oSearch.Parameters
Dim oControl As Control Dim oControl As Control
Select Case oAttribute.DataType Select Case oParam.DataType
Case "DATE" Case DataTypeEnum.Boolean
oControl = New DateEdit oControl = New CheckEdit()
Case DataTypeEnum.Date
oControl = New DateEdit()
Case DataTypeEnum.String
Select Case oParam.ItemType
Case ItemTypeEnum.List
Dim oCombobox = New ComboBoxEdit()
Dim oItems = oParam.ItemString.Split(";"c).ToList()
oCombobox.Properties.Items.AddRange(oItems)
oControl = oCombobox
Case ItemTypeEnum.SQL
Dim oGridCombobox = New LookUpEdit()
Dim oSQL = oParam.ItemString
Dim oTable = Database.GetDatatable(oSQL)
oGridCombobox.Properties.DataSource = oTable
oGridCombobox.Properties.DisplayMember = oTable.Columns.Item(0).ColumnName
oGridCombobox.Properties.ValueMember = oTable.Columns.Item(0).ColumnName
oControl = oGridCombobox
Case Else
oControl = New TextEdit()
End Select
Case Else Case Else
oControl = New TextEdit oControl = New TextEdit()
End Select End Select
oControl.Name = oParam.PatternTitle
Dim oItem As LayoutControlItem = ParameterRoot.AddItem() Dim oItem As LayoutControlItem = ParameterRoot.AddItem()
oItem.Text = oAttribute.Caption oItem.Text = oParam.Title
oItem.Control = oControl oItem.Control = oControl
oItem.TextLocation = Locations.Top oItem.TextLocation = Locations.Top
oItem.TextToControlDistance = 3 oItem.TextToControlDistance = 3
oItem.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 10, 0) oItem.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 10, 0)
Next
Next
End Sub End Sub
Private Function GetParameterItems(pParam As SearchParameter) As Object
Select Case pParam.ItemType
Case ItemTypeEnum.List
Return pParam.ItemString.Split(";"c).ToList()
Case ItemTypeEnum.SQL
Dim oSQL = pParam.ItemString
Dim oTable = Database.GetDatatable(oSQL)
Return oTable
End Select
End Function
Private Sub TreeListResults_FocusedNodeChanged(sender As Object, e As DevExpress.XtraTreeList.FocusedNodeChangedEventArgs) Handles TreeListResults.FocusedNodeChanged Private Sub TreeListResults_FocusedNodeChanged(sender As Object, e As DevExpress.XtraTreeList.FocusedNodeChangedEventArgs) Handles TreeListResults.FocusedNodeChanged
If e.Node Is Nothing Then If e.Node Is Nothing Then
Exit Sub Exit Sub