jj 06.10 diagram
This commit is contained in:
@@ -2,47 +2,188 @@
|
||||
|
||||
Public Class frmDiagrams
|
||||
|
||||
Private Sub frmDiagrams_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||
Private Function Get_Splitter_Layout_Filename() As String
|
||||
Dim Filename As String = String.Format("{0}-Diagram-SplitterLayout.xml", CURRENT_FORM_ID)
|
||||
Return System.IO.Path.Combine(Application.UserAppDataPath(), Filename)
|
||||
End Function
|
||||
|
||||
Private Function Get_Settings(settings As List(Of ClassSetting)) As List(Of ClassSetting)
|
||||
settings.Add(New ClassSetting("SplitterMainDistance", SplitContainerMain.SplitterDistance))
|
||||
settings.Add(New ClassSetting("SplitterTopDistance", SplitContainerTop.SplitterDistance))
|
||||
settings.Add(New ClassSetting("SplitterBottomDistance", SplitContainerBottom.SplitterDistance))
|
||||
|
||||
Return settings
|
||||
End Function
|
||||
|
||||
Private Sub Load_Settings()
|
||||
Try
|
||||
Dim CHART_ENTITY_SQL As String = "SELECT * FROM TBPMO_CHART_ENTITY WHERE ENTITY_ID = " & CURRENT_FORM_ID
|
||||
Dim CHART_ENTITY_DT As DataTable = ClassDatabase.Return_Datatable(CHART_ENTITY_SQL)
|
||||
' Load Splitter Settings
|
||||
Dim XMLPath As String = Get_Splitter_Layout_Filename()
|
||||
Dim layout As New ClassLayout(XMLPath)
|
||||
Dim settings As List(Of ClassSetting)
|
||||
settings = layout.Load()
|
||||
|
||||
' Check if Bottom Chart containers are needed
|
||||
Select Case CHART_ENTITY_DT.Rows.Count
|
||||
Case 0
|
||||
MsgBox("No Diagrams found")
|
||||
Case 1
|
||||
' Show only ChartTopLeft
|
||||
SplitContainerTop.Panel2Collapsed = True
|
||||
' Collapse SplitContainerBottom
|
||||
SplitContainerMain.Panel2Collapsed = True
|
||||
Case 2
|
||||
' Collapse SplitContainerBottom
|
||||
SplitContainerMain.Panel2Collapsed = True
|
||||
Case 3
|
||||
' Collapse ChartBottomRight
|
||||
SplitContainerBottom.Panel2Collapsed = True
|
||||
' Show SplitContainerBottom
|
||||
SplitContainerMain.Panel2Collapsed = False
|
||||
Case 4
|
||||
' Show SplitContainerBottom
|
||||
SplitContainerMain.Panel2Collapsed = False
|
||||
End Select
|
||||
' No Settings found, save current values
|
||||
If settings.Count = 0 Then
|
||||
'Adjust Width and Height of containers
|
||||
Dim containerW = Me.Width / 2
|
||||
Dim containerH = Me.Height / 2
|
||||
SplitContainerTop.SplitterDistance = containerW
|
||||
SplitContainerBottom.SplitterDistance = containerW
|
||||
SplitContainerMain.SplitterDistance = containerH
|
||||
|
||||
'Adjust With and Height of containers
|
||||
Dim containerW = Me.Width / 2
|
||||
SplitContainerTop.SplitterDistance = containerW
|
||||
SplitContainerBottom.SplitterDistance = containerW
|
||||
settings = Get_Settings(settings)
|
||||
layout.Save(settings)
|
||||
End If
|
||||
|
||||
Dim containerH = Me.Height / 2
|
||||
SplitContainerMain.SplitterDistance = containerH
|
||||
'Apply Settings
|
||||
For Each setting As ClassSetting In settings
|
||||
If setting._name = "SplitterMainDistance" Then
|
||||
SplitContainerMain.SplitterDistance = setting._value
|
||||
End If
|
||||
|
||||
' Create Charts
|
||||
For Each row As DataRow In CHART_ENTITY_DT.Rows
|
||||
Dim series As Series
|
||||
If setting._name = "SplitterTopDistance" Then
|
||||
SplitContainerTop.SplitterDistance = setting._value
|
||||
End If
|
||||
|
||||
If setting._name = "SplitterBottomDistance" Then
|
||||
SplitContainerBottom.SplitterDistance = setting._value
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
MsgBox("Error while loading Settings for frmDiagrams: " & vbNewLine & ex.Message)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub Configure_Split_Containers(VisibleContainers As Integer)
|
||||
Select Case VisibleContainers
|
||||
Case 0
|
||||
MsgBox("No Diagrams found")
|
||||
Case 1
|
||||
' Show only ChartTopLeft
|
||||
SplitContainerTop.Panel2Collapsed = True
|
||||
' Collapse SplitContainerBottom
|
||||
SplitContainerMain.Panel2Collapsed = True
|
||||
Case 2
|
||||
' Collapse SplitContainerBottom
|
||||
SplitContainerMain.Panel2Collapsed = True
|
||||
Case 3
|
||||
' Collapse ChartBottomRight
|
||||
SplitContainerBottom.Panel2Collapsed = True
|
||||
' Show SplitContainerBottom
|
||||
SplitContainerMain.Panel2Collapsed = False
|
||||
Case 4
|
||||
' Show SplitContainerBottom
|
||||
SplitContainerMain.Panel2Collapsed = False
|
||||
End Select
|
||||
End Sub
|
||||
|
||||
Private Sub frmDiagrams_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
|
||||
Dim XMLPath As String = Get_Splitter_Layout_Filename()
|
||||
Dim layout As New ClassLayout(XMLPath)
|
||||
Dim settings As New List(Of ClassSetting)
|
||||
|
||||
settings = Get_Settings(settings)
|
||||
layout.Save(settings)
|
||||
End Sub
|
||||
|
||||
Private Function Create_Series(title As String, type As String) As Series
|
||||
Dim series As Series
|
||||
|
||||
Select Case type
|
||||
Case "BAR"
|
||||
series = New Series(title, ViewType.Bar)
|
||||
Case "LINE"
|
||||
series = New Series(title, ViewType.Line)
|
||||
Case "AREA"
|
||||
series = New Series(title, ViewType.Area)
|
||||
Case "PIE"
|
||||
series = New Series(title, ViewType.Pie)
|
||||
series.Label.TextPattern = "{A}: {VP:p0}"
|
||||
Dim view As PieSeriesView = DirectCast(series.View, PieSeriesView)
|
||||
view.Titles.Add(New SeriesTitle())
|
||||
view.Titles(0).Text = title
|
||||
Case Else
|
||||
series = New Series(title, ViewType.Bar)
|
||||
End Select
|
||||
|
||||
Return series
|
||||
End Function
|
||||
|
||||
Private Function Select_Chart(index As Integer)
|
||||
Select Case index
|
||||
Case 0
|
||||
Return ChartTopLeft
|
||||
Case 1
|
||||
Return ChartTopRight
|
||||
Case 2
|
||||
Return ChartBottomLeft
|
||||
Case Else
|
||||
Return ChartBottomRight
|
||||
End Select
|
||||
End Function
|
||||
|
||||
Private Sub frmDiagrams_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||
Dim CHART_ENTITY_SQL, CHART_GROUPS_SQL As String
|
||||
Dim CHART_ENTITY_DT, CHART_GROUPS_DT As DataTable
|
||||
|
||||
CHART_ENTITY_SQL = String.Format("SELECT * FROM TBPMO_CHART_ENTITY WHERE ENTITY_ID = {0}", CURRENT_FORM_ID)
|
||||
CHART_GROUPS_SQL = String.Format("SELECT DISTINCT GROUP_ID FROM TBPMO_CHART_ENTITY WHERE ENTITY_ID = {0} ORDER BY GROUP_ID", CURRENT_FORM_ID)
|
||||
CHART_ENTITY_DT = ClassDatabase.Return_Datatable(CHART_ENTITY_SQL)
|
||||
CHART_GROUPS_DT = ClassDatabase.Return_Datatable(CHART_GROUPS_SQL)
|
||||
|
||||
Dim Groups As DataRowCollection = CHART_GROUPS_DT.Rows
|
||||
Dim GroupCount As Integer = Groups.Count
|
||||
|
||||
Load_Settings()
|
||||
Configure_Split_Containers(GroupCount)
|
||||
|
||||
If GroupCount > 1 Then
|
||||
For Each gRow As DataRow In Groups
|
||||
Dim groupIndex As Integer = Groups.IndexOf(gRow)
|
||||
Dim groupName As String = gRow.Item("GROUP_ID")
|
||||
|
||||
Dim groupCharts = CHART_ENTITY_DT.Select(String.Format("GROUP_ID = '{0}'", groupName))
|
||||
Dim chart As ChartControl
|
||||
|
||||
Dim i As Integer = CHART_ENTITY_DT.Rows.IndexOf(row)
|
||||
For Each cRow As DataRow In groupCharts
|
||||
|
||||
Dim type = cRow.Item("TYPE_CHART")
|
||||
Dim title = cRow.Item("TITLE")
|
||||
Dim guid = cRow.Item("GUID")
|
||||
Dim value = cRow.Item("VALUE")
|
||||
Dim argument = cRow.Item("ARGUMENT")
|
||||
Dim sql = cRow.Item("SQL_COMMAND")
|
||||
|
||||
Dim DATA_DT As DataTable = ClassDatabase.Return_Datatable(sql)
|
||||
|
||||
Dim series As Series = Create_Series(title, type)
|
||||
|
||||
' Select Current Chart
|
||||
chart = Select_Chart(groupIndex)
|
||||
|
||||
' Set DataSource
|
||||
chart.DataSource = DATA_DT
|
||||
|
||||
' Set shown Columns for Chart
|
||||
series.ArgumentDataMember = argument
|
||||
series.ValueDataMembers.AddRange(New String() {value})
|
||||
|
||||
'set some options
|
||||
chart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True
|
||||
|
||||
' Show Data
|
||||
chart.Series.Add(series)
|
||||
|
||||
Next ' End Charts
|
||||
Next 'End Groups
|
||||
Else
|
||||
' Create Charts
|
||||
For Each row As DataRow In CHART_ENTITY_DT.Rows
|
||||
|
||||
Dim chart As ChartControl
|
||||
|
||||
Dim chartIndex As Integer = CHART_ENTITY_DT.Rows.IndexOf(row)
|
||||
|
||||
Dim type = row.Item("TYPE_CHART")
|
||||
Dim title = row.Item("TITLE")
|
||||
@@ -53,29 +194,11 @@ Public Class frmDiagrams
|
||||
|
||||
Dim DATA_DT As DataTable = ClassDatabase.Return_Datatable(sql)
|
||||
|
||||
' Create series based on type
|
||||
Select Case type
|
||||
Case "BAR"
|
||||
series = New Series(title, ViewType.Bar)
|
||||
Case "LINE"
|
||||
series = New Series(title, ViewType.Line)
|
||||
Case "AREA"
|
||||
series = New Series(title, ViewType.Area)
|
||||
Case Else
|
||||
Throw New Exception("Unknown Chart type for id " & title)
|
||||
End Select
|
||||
' Create Series based on type
|
||||
Dim series As Series = Create_Series(title, type)
|
||||
|
||||
' Select Current Chart
|
||||
Select Case i
|
||||
Case 0
|
||||
chart = ChartTopLeft
|
||||
Case 1
|
||||
chart = ChartTopRight
|
||||
Case 2
|
||||
chart = ChartBottomLeft
|
||||
Case Else
|
||||
chart = ChartBottomRight
|
||||
End Select
|
||||
chart = Select_Chart(chartIndex)
|
||||
|
||||
' Set DataSource
|
||||
chart.DataSource = DATA_DT
|
||||
@@ -84,12 +207,13 @@ Public Class frmDiagrams
|
||||
series.ArgumentDataMember = argument
|
||||
series.ValueDataMembers.AddRange(New String() {value})
|
||||
|
||||
'set some options
|
||||
chart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True
|
||||
|
||||
' Show Data
|
||||
chart.Series.Add(series)
|
||||
Next
|
||||
|
||||
Catch ex As Exception
|
||||
MsgBox("Error While loading Diagram Data: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||||
End Try
|
||||
End If
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
Reference in New Issue
Block a user