diff --git a/GUIs.Monitor/Config.vb b/GUIs.Monitor/Data/Config.vb
similarity index 100%
rename from GUIs.Monitor/Config.vb
rename to GUIs.Monitor/Data/Config.vb
diff --git a/GUIs.Monitor/Search.vb b/GUIs.Monitor/Data/Search.vb
similarity index 88%
rename from GUIs.Monitor/Search.vb
rename to GUIs.Monitor/Data/Search.vb
index 71570a2..e584bae 100644
--- a/GUIs.Monitor/Search.vb
+++ b/GUIs.Monitor/Data/Search.vb
@@ -4,6 +4,7 @@
Public Description As String
Public SQLCommand As String
Public ReturnType As Constants.ReturnTypeEnum
+ Public ExpectedParameterCount As Integer
Public Parameters As List(Of SearchParameter)
diff --git a/GUIs.Monitor/SearchParameter.vb b/GUIs.Monitor/Data/SearchParameter.vb
similarity index 100%
rename from GUIs.Monitor/SearchParameter.vb
rename to GUIs.Monitor/Data/SearchParameter.vb
diff --git a/GUIs.Monitor/frmLoading.Designer.vb b/GUIs.Monitor/Forms/frmLoading.Designer.vb
similarity index 100%
rename from GUIs.Monitor/frmLoading.Designer.vb
rename to GUIs.Monitor/Forms/frmLoading.Designer.vb
diff --git a/GUIs.Monitor/frmLoading.resx b/GUIs.Monitor/Forms/frmLoading.resx
similarity index 100%
rename from GUIs.Monitor/frmLoading.resx
rename to GUIs.Monitor/Forms/frmLoading.resx
diff --git a/GUIs.Monitor/frmLoading.vb b/GUIs.Monitor/Forms/frmLoading.vb
similarity index 100%
rename from GUIs.Monitor/frmLoading.vb
rename to GUIs.Monitor/Forms/frmLoading.vb
diff --git a/GUIs.Monitor/frmMonitor.Designer.vb b/GUIs.Monitor/Forms/frmMonitor.Designer.vb
similarity index 100%
rename from GUIs.Monitor/frmMonitor.Designer.vb
rename to GUIs.Monitor/Forms/frmMonitor.Designer.vb
diff --git a/GUIs.Monitor/frmMonitor.resx b/GUIs.Monitor/Forms/frmMonitor.resx
similarity index 100%
rename from GUIs.Monitor/frmMonitor.resx
rename to GUIs.Monitor/Forms/frmMonitor.resx
diff --git a/GUIs.Monitor/frmMonitor.vb b/GUIs.Monitor/Forms/frmMonitor.vb
similarity index 86%
rename from GUIs.Monitor/frmMonitor.vb
rename to GUIs.Monitor/Forms/frmMonitor.vb
index fcbfac7..436198e 100644
--- a/GUIs.Monitor/frmMonitor.vb
+++ b/GUIs.Monitor/Forms/frmMonitor.vb
@@ -1,5 +1,8 @@
-Imports System.Text.RegularExpressions
+Imports System.Runtime.CompilerServices
+Imports System.Text.RegularExpressions
Imports DevExpress.Utils
+Imports DevExpress.XtraEditors.Controls
+Imports DevExpress.XtraEditors.Repository
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraGrid.Views.Grid
@@ -19,7 +22,9 @@ Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Patterns
Public Class frmMonitor
- Private ReadOnly ColumnMarkers As New List(Of String) From {"[HTML]", "[SQL]", "[FILENAME]"}
+ Private ReadOnly InvisibleColumnMarkers As New List(Of String) From {"[HTML]", "[SQL]", "[FILENAME]"}
+ Private ReadOnly VisibleColumnMarkers As New List(Of String) From {"[SEARCH|"}
+
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 Property HtmlViewColumns As New List(Of String) From {"HTML1", "HTML2"}
@@ -52,8 +57,10 @@ Public Class frmMonitor
Private GridControlResults As GridControl
Private GridViewResults As GridView
- Private MarkedColumns As New List(Of GridColumn)
+ Private InvisibleMarkedColumns As New List(Of GridColumn)
+ Private VisibleMarkedColumns As New List(Of GridColumn)
Private ActiveSearch As Search = Nothing
+ Private HyperLinkColumnSearchIds As New Dictionary(Of String, Integer)
Private GridBuilder As GridBuilder
Private ControlHelper As Common.ControlHelper
@@ -73,6 +80,7 @@ Public Class frmMonitor
Private Validator As Validator
Private GridLoader As GridLoader
+
Private Sub frmStart_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
LogConfig = New LogConfig(LogConfig.PathType.AppData, Nothing, Nothing, "Digital Data", "Monitor")
@@ -132,7 +140,6 @@ Public Class frmMonitor
LoadSearches()
-
Dim oLicense = LoadGDPicture()
For Each oGrid In SQLResultGrids
@@ -186,13 +193,19 @@ Public Class frmMonitor
Dim oSearch As Search = cmbSearches.EditValue
- MarkedColumns.Clear()
+ InvisibleMarkedColumns.Clear()
+ VisibleMarkedColumns.Clear()
+ HyperLinkColumnSearchIds.Clear()
HideAllTabs()
Dim oMissingParams = Validator.Validate(oSearch)
-
If oMissingParams = True Then
+ Return False
+ End If
+ If oSearch.ExpectedParameterCount > 0 And oSearch.Parameters.Count <> oSearch.ExpectedParameterCount Then
+ Logger.Error($"[{0}] parameter were defined, but [{1}] parameter were expected!", oSearch.Parameters.Count, oSearch.ExpectedParameterCount)
+ FormHelper.ShowErrorMessage("Die Suche erwartet mehr Parameter als definiert wurden!", "LoadSearches")
Return False
End If
@@ -264,16 +277,49 @@ Public Class frmMonitor
End If
Next
- MarkedColumns = GridViewResults.Columns.AsEnumerable.
+ InvisibleMarkedColumns = GridViewResults.Columns.AsEnumerable.
Where(Function(column)
Dim oCaption = column.FieldName.ToUpper.Trim
- Return ColumnMarkers.Any(Function(marker) oCaption.EndsWith(marker))
+ Return InvisibleColumnMarkers.Any(Function(marker) oCaption.EndsWith(marker))
End Function).ToList()
- For Each oColumn In MarkedColumns
+ For Each oColumn In InvisibleMarkedColumns
oColumn.VisibleIndex = -1
Next
+ VisibleMarkedColumns = GridViewResults.Columns.AsEnumerable.
+ Where(Function(column)
+ Dim oCaption = column.FieldName.ToUpper.Trim
+ Return VisibleColumnMarkers.Any(Function(marker) oCaption.Contains(marker))
+ End Function).ToList()
+
+ For Each oColumn In VisibleMarkedColumns
+ If oColumn.FieldName.Contains("[SEARCH|") Then
+ Dim oUrlEdit As New RepositoryItemHyperLinkEdit() With
+ {
+ .SingleClick = True
+ }
+
+ GridControlResults.RepositoryItems.Add(oUrlEdit)
+
+ For index = 0 To GridViewResults.Columns.Count - 1
+ If GridViewResults.Columns.Item(index).FieldName = oColumn.FieldName Then
+ GridViewResults.Columns.Item(index).ColumnEdit = oUrlEdit
+
+ ' Column Caption setzen
+ Dim colTitle As String = oColumn.FieldName.Substring(0, oColumn.FieldName.IndexOf("["))
+ GridViewResults.Columns.Item(index).Caption = colTitle
+
+ ' Add SearchId in Dictionary
+ HyperLinkColumnSearchIds.Add(oColumn.FieldName, GetSearchIdFromColumnFieldName(oColumn.FieldName))
+ End If
+ Next
+
+ AddHandler oUrlEdit.OpenLink, AddressOf HyperLinkEdit_OpenLinkAsync
+ End If
+ Next
+
+ SetColumnsToDisAllowEditInGridViewResults()
SetResultCount(GridViewResults.RowCount)
GridControlResults.Focus()
@@ -297,6 +343,61 @@ Public Class frmMonitor
SplashScreenManager1.CloseWaitForm()
End Try
End Function
+ '''
+ ''' Linklogik für Hyperlink-Spalten
+ '''
+ Private Async Function HyperLinkEdit_OpenLinkAsync(sender As Object, e As OpenLinkEventArgs) As Threading.Tasks.Task
+ Dim searchId As Integer = HyperLinkColumnSearchIds(GridViewResults.FocusedColumn.FieldName)
+
+ Dim oSearch As Search = SearchLoader.Searches.Where(Function(search) search.Id = searchId).SingleOrDefault()
+ cmbSearches.EditValue = oSearch ' Es wird jetzt erwartet, dass das ChangeValue-Event der ComboBox ausgelöst wird!
+
+ Dim oSearchParameter As SearchParameter = oSearch.Parameters.Where(Function(param) param.Required = True).FirstOrDefault()
+
+ If oSearchParameter Is Nothing And oSearch.ExpectedParameterCount > 0 Then
+ Logger.Error($"[{0}] parameter were defined, but [{1}] parameter were expected!", oSearch.Parameters.Count, oSearch.ExpectedParameterCount)
+ FormHelper.ShowErrorMessage("Die Suche erwartet 1 Parameter, aber es wurde kein Parameter gefunden!", "LoadSearches")
+ Return
+ Else
+ Dim oControl As Control = LayoutControl1.Controls.Find(oSearchParameter.PatternTitle, True).FirstOrDefault()
+ oControl.Text = e.EditValue
+ End If
+
+ Await LoadData()
+ ' e.EditValue = "www.google.de"
+ e.Handled = True
+
+ End Function
+
+ Private Function GetSearchIdFromColumnFieldName(pFieldName As String) As Integer
+ If String.IsNullOrEmpty(pFieldName) = True Then
+ Return 0
+ End If
+
+ Dim startIndex = pFieldName.IndexOf("|") + 1
+ Dim endIndex = pFieldName.IndexOf("]")
+ Dim length = endIndex - startIndex
+ Dim searchIdText = pFieldName.Substring(startIndex, length)
+
+ Dim retValue As Integer
+
+ If (Integer.TryParse(searchIdText, retValue) = False) Then
+ retValue = 0
+ End If
+
+ Return retValue
+ End Function
+
+ Private Sub SetColumnsToDisAllowEditInGridViewResults()
+ For Each oColumn As GridColumn In GridViewResults.Columns
+
+ If Not TypeOf oColumn.ColumnEdit Is RepositoryItemHyperLinkEdit Then
+ ' Verbietet Spaltenweise die Bearbeitung
+ oColumn.OptionsColumn.AllowEdit = False
+ End If
+
+ Next
+ End Sub
Private Sub SetExpandedForChildNodes(pRootNode As TreeListNode, Optional pDepth As Integer = 0)
If pDepth > 10 Then
@@ -758,7 +859,7 @@ Public Class frmMonitor
Dim oGridResultIndex As Integer = 0
Dim oViewerResultIndex As Integer = 0
- For Each oColumn As GridColumn In MarkedColumns
+ For Each oColumn As GridColumn In InvisibleMarkedColumns
Dim oValue = oRow.ItemEx(oColumn.FieldName, String.Empty)
@@ -807,7 +908,6 @@ Public Class frmMonitor
oViewerResultIndex += 1
FillResultViewer(oViewer, oValue, oTitle)
SplitContainerFileHTML.Collapsed = False
-
End If
End If
diff --git a/GUIs.Monitor/GridLoader.vb b/GUIs.Monitor/Helper/GridLoader.vb
similarity index 97%
rename from GUIs.Monitor/GridLoader.vb
rename to GUIs.Monitor/Helper/GridLoader.vb
index 50c13ef..ac098a6 100644
--- a/GUIs.Monitor/GridLoader.vb
+++ b/GUIs.Monitor/Helper/GridLoader.vb
@@ -1,4 +1,5 @@
Imports DevExpress.Utils
+Imports DevExpress.XtraEditors
Imports DevExpress.XtraEditors.Controls
Imports DevExpress.XtraEditors.Repository
Imports DevExpress.XtraGrid
@@ -75,8 +76,8 @@ Public Class GridLoader
GridBuilder.SetDefaults(oView)
GridBuilder.SetClipboardHandler(oView)
- GridBuilder.SetReadOnlyOptions(oView)
-
+ ' GridBuilder.SetReadOnlyOptions(oView)
+ ' TODO Spalten die nicht HyperLinks sind readonly machen
Return oGrid
End Function
@@ -176,4 +177,5 @@ Public Class GridLoader
Return oStateEdit
End Function
+
End Class
diff --git a/GUIs.Monitor/ParameterLoader.vb b/GUIs.Monitor/Helper/ParameterLoader.vb
similarity index 100%
rename from GUIs.Monitor/ParameterLoader.vb
rename to GUIs.Monitor/Helper/ParameterLoader.vb
diff --git a/GUIs.Monitor/SearchLoader.vb b/GUIs.Monitor/Helper/SearchLoader.vb
similarity index 81%
rename from GUIs.Monitor/SearchLoader.vb
rename to GUIs.Monitor/Helper/SearchLoader.vb
index 7bb4c67..71af652 100644
--- a/GUIs.Monitor/SearchLoader.vb
+++ b/GUIs.Monitor/Helper/SearchLoader.vb
@@ -33,14 +33,31 @@ Public Class SearchLoader
OrderBy(Function(param) param.Sequence).
ToList()
- Searches.Add(New Search With {
+ Dim oSearch = New Search With {
.Id = oSearchId,
.Title = oRow.ItemEx("TITLE", String.Empty),
.Description = oRow.ItemEx("CAPTION", String.Empty),
.ReturnType = GetReturnType(oRow.ItemEx("RETURN_TYPE", String.Empty)),
.SQLCommand = oRow.ItemEx("EXEC_SQL", String.Empty),
.Parameters = oParams
- })
+ }
+
+ ' Erzeuge einen Titel, falls der leer ist
+ If oSearch.Title.Length <= 0 Then
+ Logger.Warn($"For searchId [{0}] an empty title were defined!", oSearch.Id)
+ oSearch.Title = "Suche " + oSearch.Id.ToString
+ End If
+
+ ' Es wurde kein SQL Command definiert, ohne geht nix
+ If oSearch.SQLCommand Is Nothing Or oSearch.SQLCommand.Length = 0 Then
+ Logger.Error($"For searchId [{0}] is NO SQLCommand defined!", oSearch.Id)
+ Continue For
+ End If
+
+ ' Anzahl der erwarteten Parameter
+ oSearch.ExpectedParameterCount = oSearch.SQLCommand.Split({"#CTRL#"}, StringSplitOptions.None).Length - 1
+
+ Searches.Add(oSearch)
Next
Catch ex As Exception
Logger.Error(ex)
diff --git a/GUIs.Monitor/Validator.vb b/GUIs.Monitor/Helper/Validator.vb
similarity index 100%
rename from GUIs.Monitor/Validator.vb
rename to GUIs.Monitor/Helper/Validator.vb
diff --git a/GUIs.Monitor/Monitor.vbproj b/GUIs.Monitor/Monitor.vbproj
index 211c4cd..d8eac76 100644
--- a/GUIs.Monitor/Monitor.vbproj
+++ b/GUIs.Monitor/Monitor.vbproj
@@ -135,33 +135,33 @@
-
+
-
+
frmMonitor.vb
-
+
Form
-
+
True
Application.myapp
True
-
-
-
-
-
+
+
+
+
+
frmLoading.vb
-
+
Form
-
-
+
+
frmMonitor.vb
@@ -176,7 +176,7 @@
Resources.resx
True
-
+
frmLoading.vb
@@ -230,6 +230,7 @@
+