Anzeige von Labels, Chart-Typ: StackedBar, Dateinamen für Chart-Export

This commit is contained in:
2023-04-17 14:47:51 +02:00
parent e735a061d8
commit e8e30e8f62
5 changed files with 96 additions and 26 deletions

View File

@@ -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