From e8e30e8f62fc8d4bc68b946ba8843e7cb61bf95c Mon Sep 17 00:00:00 2001 From: MPitz Date: Mon, 17 Apr 2023 14:47:51 +0200 Subject: [PATCH] =?UTF-8?q?Anzeige=20von=20Labels,=20Chart-Typ:=20StackedB?= =?UTF-8?q?ar,=20Dateinamen=20f=C3=BCr=20Chart-Export?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GUIs.Monitor/Constants.vb | 6 ++ GUIs.Monitor/Data/ChartParameter.vb | 1 + GUIs.Monitor/Forms/frmMonitor.vb | 89 ++++++++++++++++++++++------- GUIs.Monitor/Helper/GridLoader.vb | 8 +-- GUIs.Monitor/Helper/SearchLoader.vb | 18 +++++- 5 files changed, 96 insertions(+), 26 deletions(-) diff --git a/GUIs.Monitor/Constants.vb b/GUIs.Monitor/Constants.vb index 70ddd4d..2c2dde4 100644 --- a/GUIs.Monitor/Constants.vb +++ b/GUIs.Monitor/Constants.vb @@ -50,6 +50,12 @@ Line Area Pie + StackedBar + End Enum + + Public Enum LabelTypeEnum + NoLabels + DefaultLabels End Enum End Namespace diff --git a/GUIs.Monitor/Data/ChartParameter.vb b/GUIs.Monitor/Data/ChartParameter.vb index 1134c82..0fc1f5b 100644 --- a/GUIs.Monitor/Data/ChartParameter.vb +++ b/GUIs.Monitor/Data/ChartParameter.vb @@ -7,6 +7,7 @@ Public Argument As String Public Value As String Public SearchId As Integer + Public LabelType As Constants.LabelTypeEnum Public Overrides Function ToString() As String Return Title diff --git a/GUIs.Monitor/Forms/frmMonitor.vb b/GUIs.Monitor/Forms/frmMonitor.vb index 49d7f21..44d6c71 100644 --- a/GUIs.Monitor/Forms/frmMonitor.vb +++ b/GUIs.Monitor/Forms/frmMonitor.vb @@ -24,8 +24,7 @@ Imports DevExpress.XtraEditors Imports System.Drawing.Imaging Imports System.IO Imports DevExpress.XtraBars -Imports DevExpress.Utils.CommonDialogs -Imports System.Windows.Forms.VisualStyles + Public Class frmMonitor Private ReadOnly InvisibleColumnMarkers As New List(Of String) From {"[HTML]", "[SQL]", "[FILENAME]"} @@ -54,7 +53,7 @@ Public Class frmMonitor Private FileResultViewers As List(Of DocumentViewer) Private FileResultTabs As List(Of XtraTabPage) - Private FileResultViewerIndex As Integer = 0 + 'Private FileResultViewerIndex As Integer = 0 Private HtmlResultViewers As List(Of RichEditControl) Private HtmlResultTabs As List(Of XtraTabPage) @@ -184,7 +183,7 @@ Public Class frmMonitor Private Function LoadGDPicture() As String Dim oSQL = "SELECT LICENSE FROM TBDD_3RD_PARTY_MODULES WHERE NAME = 'GDPICTURE'" - Return Database.GetScalarValue(oSQL) + Return CStr(Database.GetScalarValue(oSQL)) End Function @@ -203,7 +202,7 @@ Public Class frmMonitor Return False End If - Dim oSearch As Search = cmbSearches.EditValue + Dim oSearch As Search = CType(cmbSearches.EditValue, Search) InvisibleMarkedColumns.Clear() VisibleMarkedColumns.Clear() @@ -223,7 +222,7 @@ Public Class frmMonitor Dim oControls As List(Of Control) = LayoutControl1.Controls.Cast(Of Control).ToList() Dim oSQL As String - Dim oTable As DataTable + Dim oTable As DataTable = Nothing If oSearch.SQLCommand.Length > 0 Then oSQL = Patterns.ReplaceControlValues(oSearch.SQLCommand, oControls) @@ -442,13 +441,17 @@ Public Class frmMonitor Case ChartTypeEnum.Area oSerie = New Series(pChartParameters.Title, ViewType.Area) Case ChartTypeEnum.Pie - oSerie = New Series(pChartParameters.Title, ViewType.Pie) - oSerie.Label.TextPattern = "{V}" - oSerie.LegendTextPattern = "{A}" + oSerie = New Series(pChartParameters.Title, ViewType.Pie) With { + .LegendTextPattern = "{A}" + } + Case ChartTypeEnum.StackedBar + oSerie = New Series(pChartParameters.Title, ViewType.StackedBar) Case Else Return Nothing End Select + SetSerieLabels(oSerie, pChartParameters.ChartType, pChartParameters.LabelType) + Dim oSQL As String = Patterns.ReplaceControlValues(pChartParameters.SQLCommand, pControls) Logger.Debug($"SQL after replacing placeholder: [{0}]", oSQL) Dim oTable As DataTable = Await Database.GetDatatableAsync(oSQL) @@ -457,8 +460,8 @@ Public Class frmMonitor Dim yAxisTitle As String = pChartParameters.Value For Each oRow In oTable.Rows - Dim value1 As String = oRow.Item(xAxisTitle) - Dim value2 As String = oRow.Item(yAxisTitle) + Dim value1 As String = CStr(oRow.Item(xAxisTitle)) + Dim value2 As String = CStr(oRow.Item(yAxisTitle)) oSerie.Points.Add(New SeriesPoint(value1, value2)) Next @@ -468,11 +471,53 @@ Public Class frmMonitor End Function + Private Sub SetSerieLabels(pSerie As Series, pChartType As ChartTypeEnum, pLabelType As LabelTypeEnum) + + If (pLabelType = LabelTypeEnum.NoLabels) Then + pSerie.LabelsVisibility = DefaultBoolean.False + Exit Sub + End If + + pSerie.LabelsVisibility = DefaultBoolean.True + pSerie.Label.TextPattern = "{V}" + + Select Case pChartType + Case ChartTypeEnum.Bar + Dim barLabel As SideBySideBarSeriesLabel = TryCast(pSerie.Label, SideBySideBarSeriesLabel) + If barLabel IsNot Nothing Then + barLabel.Position = BarSeriesLabelPosition.Top + End If + Case ChartTypeEnum.Line + Dim lineLabel As PointSeriesLabel = TryCast(pSerie.Label, PointSeriesLabel) + If lineLabel IsNot Nothing Then + lineLabel.Position = PointLabelPosition.Outside + End If + Case ChartTypeEnum.Area + Dim areaLabel As PointSeriesLabel = TryCast(pSerie.Label, PointSeriesLabel) + If areaLabel IsNot Nothing Then + areaLabel.Position = PointLabelPosition.Outside + End If + Case ChartTypeEnum.Pie + Dim pieLabel As PieSeriesLabel = TryCast(pSerie.Label, PieSeriesLabel) + If pieLabel IsNot Nothing Then + pieLabel.Position = PieSeriesLabelPosition.Outside + End If + Case ChartTypeEnum.StackedBar + Dim stackedBarLabel As StackedBarSeriesLabel = TryCast(pSerie.Label, StackedBarSeriesLabel) + If stackedBarLabel IsNot Nothing Then + stackedBarLabel.Position = BarSeriesLabelPosition.Auto + End If + Case Else + + End Select + + End Sub + Private Sub SetChartTitle(pChartView As ChartControl, pTitle As String) ' Wenn bereits ein Titel vorhanden ist, wird kein neuer ergänzt ' relevant bei mehrere Charts in einem ChartControl If pChartView.Titles.Count = 0 Then - Dim oTitle As ChartTitle = New ChartTitle With { + Dim oTitle As New ChartTitle With { .Text = pTitle } pChartView.Titles.Add(oTitle) @@ -619,7 +664,7 @@ Public Class frmMonitor Return Else Dim oControl As Control = LayoutControl1.Controls.Find(oSearchParameter.PatternTitle, True).FirstOrDefault() - oControl.Text = e.EditValue + oControl.Text = CStr(e.EditValue) End If Await LoadData() @@ -663,7 +708,7 @@ Public Class frmMonitor Exit Sub End If - If pRootNode.Item("PARENT_ID") = 0 Then + If CType(pRootNode.Item("PARENT_ID"), Int32) = 0 Then ' Auswertung für Parent-Knoten ExpandCollapseNode(pRootNode) End If @@ -738,6 +783,7 @@ Public Class frmMonitor AdornerUIManager2.Hide() AdornerUIManager2.Elements.Clear() + ' TODO - Hier passt etwas noch nicht Root.Clear(disposeItemAndControls:=False) LayoutControl1.Clear(True, True) @@ -768,6 +814,9 @@ Public Class frmMonitor Dim oSQL = pParam.ItemString Dim oTable = Database.GetDatatable(oSQL) Return oTable + + Case Else + Return Nothing End Select End Function @@ -1196,7 +1245,7 @@ Public Class frmMonitor End Sub Private Sub GridViewResults_ColumnFilterChanged(sender As Object, e As EventArgs) - Dim oView As GridView = sender + Dim oView As GridView = CType(sender, GridView) SetResultCount(oView.DataRowCount) End Sub @@ -1246,7 +1295,7 @@ Public Class frmMonitor End Sub Private Sub SetResultCount(pResults As Integer) - lbResultCount.Caption = String.Format(lbResultCount.Tag, pResults) + lbResultCount.Caption = String.Format(CStr(lbResultCount.Tag), pResults) End Sub Private Sub SetSearchTimeValue(pValue As String) @@ -1258,7 +1307,7 @@ Public Class frmMonitor End Sub Private Sub SetVersion() - lbVersion.Caption = String.Format(lbVersion.Tag, System.Reflection.Assembly.GetEntryAssembly().GetName().Version) + lbVersion.Caption = String.Format(CStr(lbVersion.Tag), System.Reflection.Assembly.GetEntryAssembly().GetName().Version) End Sub Private Sub InitGrid() @@ -1327,8 +1376,8 @@ Public Class frmMonitor Try If Not IsNothing(SelectedChart) Then XtraSaveFileDialog1.Filter = "PDF Files (*.pdf*)|*.pdf" + XtraSaveFileDialog1.FileName = SelectedChart.Titles(0).ToString() If XtraSaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then - ' TODO: Filename ExportChart2Pdf(SelectedChart, XtraSaveFileDialog1.FileName) End If Else @@ -1342,9 +1391,9 @@ Public Class frmMonitor Private Sub btnExportChart2PNG_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnExportChart2PNG.ItemClick Try If Not IsNothing(SelectedChart) Then - XtraSaveFileDialog1.Filter = "PNG Files(* .png *)|*.png" + XtraSaveFileDialog1.Filter = "PNG Files (*.png*)|*.png" + XtraSaveFileDialog1.FileName = SelectedChart.Titles(0).ToString() If XtraSaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then - ' TODO: Filename ExportChartToImage(SelectedChart, XtraSaveFileDialog1.FileName) End If Else diff --git a/GUIs.Monitor/Helper/GridLoader.vb b/GUIs.Monitor/Helper/GridLoader.vb index 82ea7dc..5f453de 100644 --- a/GUIs.Monitor/Helper/GridLoader.vb +++ b/GUIs.Monitor/Helper/GridLoader.vb @@ -116,19 +116,19 @@ Public Class GridLoader oChartViewResultContainer.Panel1.AddControl(oSplitContainerTop) oChartViewResultContainer.Panel2.AddControl(oSplitContainerBottom) - Dim oChartControlTopLeft As ChartControl = New ChartControl With { + Dim oChartControlTopLeft As New ChartControl With { .Name = "ChartControlTopLeft", .Dock = DockStyle.Fill } - Dim oChartControlTopRight As ChartControl = New ChartControl With { + Dim oChartControlTopRight As New ChartControl With { .Name = "ChartControlTopRight", .Dock = DockStyle.Fill } - Dim oChartControlBottomLeft As ChartControl = New ChartControl With { + Dim oChartControlBottomLeft As New ChartControl With { .Name = "ChartControlBottomLeft", .Dock = DockStyle.Fill } - Dim oChartControlBottomRight As ChartControl = New ChartControl With { + Dim oChartControlBottomRight As New ChartControl With { .Name = "ChartControlBottomRight", .Dock = DockStyle.Fill } diff --git a/GUIs.Monitor/Helper/SearchLoader.vb b/GUIs.Monitor/Helper/SearchLoader.vb index 9a4600d..ce333c5 100644 --- a/GUIs.Monitor/Helper/SearchLoader.vb +++ b/GUIs.Monitor/Helper/SearchLoader.vb @@ -93,7 +93,7 @@ Public Class SearchLoader End Sub Public Sub LoadChartParameters() - Dim oSQL As String = $"SELECT * FROM TBMON_CHARTS" + Dim oSQL As String = $"SELECT * FROM TBMON_CHARTS WHERE ACTIVE = 1" Dim oTable As DataTable = Database.GetDatatable(oSQL) Dim oParameters As New List(Of ChartParameter) @@ -106,7 +106,8 @@ Public Class SearchLoader .SQLCommand = oRow.ItemEx("SQL_COMMAND", String.Empty), .ChartType = GetChartType(oRow.ItemEx("CHART_TYPE", String.Empty)), .Argument = oRow.ItemEx("ARGUMENT", String.Empty), - .Value = oRow.ItemEx("VALUE", String.Empty) + .Value = oRow.ItemEx("VALUE", String.Empty), + .LabelType = GetLabelType(oRow.ItemEx("LABEL_TYPE", String.Empty)) }) Next @@ -162,11 +163,24 @@ Public Class SearchLoader Return ChartTypeEnum.Line Case "PIE" Return ChartTypeEnum.Pie + Case "STACKEDBAR" + Return ChartTypeEnum.StackedBar Case Else Return ChartTypeEnum.Undefined End Select End Function + Private Function GetLabelType(pTypeString As String) As LabelTypeEnum + Select Case pTypeString.ToUpper + Case "NOLABELS" + Return LabelTypeEnum.NoLabels + Case "DEFAULT" + Return LabelTypeEnum.DefaultLabels + Case Else + Return LabelTypeEnum.NoLabels + End Select + End Function + Private Function GetChartPosType(pPosTypeId As Integer) As ChartPosEnum Select Case pPosTypeId Case 1