206 lines
6.2 KiB
C#
206 lines
6.2 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using System.Windows.Forms.DataVisualization.Charting;
|
|
using WeifenLuo.WinFormsUI.Docking;
|
|
|
|
namespace friction
|
|
{
|
|
public partial class PanelRadarGraph : DockContent
|
|
{
|
|
MainForm m_Owner = null;
|
|
DataHandler m_DataHandler = null;
|
|
|
|
string m_CurSpring = "";
|
|
bool m_bShowAlert = false;
|
|
|
|
Config.RANGE m_TempRange = Config.TEMP_ALL;
|
|
Config.RANGE m_HumidRange = Config.HUMID_ALL;
|
|
|
|
public PanelRadarGraph(MainForm owner, DataHandler data)
|
|
{
|
|
InitializeComponent();
|
|
|
|
m_Owner = owner;
|
|
m_DataHandler = data;
|
|
|
|
Theme.Apply(this);
|
|
Theme.Apply(rbAll);
|
|
Theme.Apply(rbNormalLow);
|
|
Theme.Apply(rbNormalHigh);
|
|
Theme.Apply(rbHighLow);
|
|
Theme.Apply(rbHighHigh);
|
|
Theme.Apply(rbLowTemp);
|
|
|
|
|
|
chart.ChartAreas[0].AxisY.Maximum = 10;
|
|
|
|
//chart.Series["SeriesHigh"].Color = Color.FromArgb(255, 200, 200, 200);
|
|
//chart.Series["SeriesPotential"].Color = Color.FromArgb(255, 180, 180, 180);
|
|
//chart.Series["SeriesNo"].Color = Color.FromArgb(255, 140, 140, 140);
|
|
|
|
chart.Series["SeriesHigh"].Color = Color.FromArgb(255, 255, 185, 185);
|
|
chart.Series["SeriesHigh"].Font = new Font(chart.Series["SeriesNo"].Font.FontFamily, 20.0f);
|
|
|
|
chart.Series["SeriesPotential"].Color = Color.FromArgb(255, 255, 255, 151);
|
|
chart.Series["SeriesPotential"].Font = new Font(chart.Series["SeriesNo"].Font.FontFamily, 20.0f);
|
|
|
|
chart.Series["SeriesNo"].Color = Color.FromArgb(255, 175, 255, 211);
|
|
chart.Series["SeriesNo"].Font = new Font(chart.Series["SeriesNo"].Font.FontFamily, 20.0f);
|
|
|
|
|
|
chart.Series["SeriesMax"].Color = Color.FromArgb(255, 192, 0, 0);
|
|
chart.Series["SeriesMax"]["RadarDrawingStyle"] = "Line";
|
|
chart.Series["SeriesMax"].BorderWidth = 3;
|
|
chart.Series["SeriesMax"].Font = new Font(chart.Series["SeriesNo"].Font.FontFamily, 20.0f);
|
|
|
|
chart.Series["SeriesAvg"].Color = Color.FromArgb(255, 229, 150, 9);
|
|
chart.Series["SeriesAvg"]["RadarDrawingStyle"] = "Line";
|
|
chart.Series["SeriesAvg"].BorderWidth = 3;
|
|
chart.Series["SeriesAvg"].Font = new Font(chart.Series["SeriesNo"].Font.FontFamily, 20.0f);
|
|
|
|
chart.Series["SeriesMin"].Color = Color.FromArgb(255, 79, 98, 40);
|
|
chart.Series["SeriesMin"]["RadarDrawingStyle"] = "Line";
|
|
chart.Series["SeriesMin"].BorderWidth = 3;
|
|
chart.Series["SeriesMin"].Font = new Font(chart.Series["SeriesNo"].Font.FontFamily, 20.0f);
|
|
|
|
chart.ChartAreas[0].AxisX.LabelStyle.Font = new Font(chart.ChartAreas[0].AxisX.LabelStyle.Font.FontFamily, 14.0f);
|
|
|
|
chart.ChartAreas[0].AxisX.MajorGrid.LineWidth = 1;
|
|
chart.ChartAreas[0].AxisY.MajorGrid.LineWidth = 1;
|
|
chart.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Black;
|
|
chart.ChartAreas[0].AxisX.MajorTickMark.Enabled = false;
|
|
chart.ChartAreas[0].AxisX.MinorTickMark.Enabled = false;
|
|
chart.ChartAreas[0].AxisY.MajorTickMark.Enabled = true;
|
|
chart.ChartAreas[0].AxisY.MajorTickMark.LineWidth = 1;
|
|
chart.ChartAreas[0].AxisY.MajorTickMark.LineColor = Color.FromArgb(150, 0, 0, 0);
|
|
chart.ChartAreas[0].AxisY.MinorTickMark.Enabled = false;
|
|
|
|
chart.ChartAreas[0].AxisX.LabelAutoFitStyle = LabelAutoFitStyles.DecreaseFont;
|
|
chart.ChartAreas[0].AxisX.IsLabelAutoFit = true;
|
|
|
|
foreach (var series in chart.Series)
|
|
series["AreaDrawingStyle"] = "Polygon";
|
|
|
|
panel1.BackColor = Color.Gray;
|
|
}
|
|
|
|
public void Reset()
|
|
{
|
|
m_CurSpring = "";
|
|
}
|
|
|
|
public void UpdateGraph()
|
|
{
|
|
string strSpring = m_DataHandler.GetCurSpring();
|
|
//if (m_CurSpring == strSpring)
|
|
// return;
|
|
|
|
lbSpring.Text = "Material Spring: " + strSpring;
|
|
lbSpring.BackColor = Color.Gray;
|
|
lbSpring.ForeColor = Color.Black;
|
|
|
|
foreach (var series in chart.Series)
|
|
series.Points.Clear();
|
|
|
|
List<DataHandler.RADAR_CHART> graphData = m_DataHandler.GetAvgAll(strSpring, m_TempRange, m_HumidRange);
|
|
|
|
List<string> xValues = new List<string>();
|
|
List<float> yValues = new List<float>();
|
|
|
|
foreach(var data in graphData)
|
|
{
|
|
chart.Series["SeriesMax"].Points.AddXY(data.m_strTable, data.m_fMax);
|
|
chart.Series["SeriesAvg"].Points.AddXY(data.m_strTable, data.m_fAvg);
|
|
chart.Series["SeriesMin"].Points.AddXY(data.m_strTable, data.m_fMin);
|
|
|
|
chart.Series["SeriesHigh"].Points.AddXY(data.m_strTable, (int)Config.ANALYSIS.RISK.HIGH);
|
|
chart.Series["SeriesPotential"].Points.AddXY(data.m_strTable, (int)Config.ANALYSIS.RISK.POTENTIAL);
|
|
chart.Series["SeriesNo"].Points.AddXY(data.m_strTable, (int)Config.ANALYSIS.RISK.NO);
|
|
}
|
|
|
|
m_CurSpring = strSpring;
|
|
|
|
if (graphData.Count < 3)
|
|
{
|
|
if (Visible == true)
|
|
MessageBox.Show(this, "데이터가 부족합니다");
|
|
else
|
|
m_bShowAlert = true;
|
|
}
|
|
}
|
|
|
|
public Bitmap CopyChart()
|
|
{
|
|
MemoryStream ms = new MemoryStream();
|
|
chart.SaveImage(ms, ChartImageFormat.Bmp);
|
|
Bitmap bm = new Bitmap(ms);
|
|
return bm;
|
|
}
|
|
|
|
private void chart_MouseClick(object sender, MouseEventArgs e)
|
|
{
|
|
HitTestResult result = chart.HitTest(e.X, e.Y);
|
|
if(result.ChartElementType == ChartElementType.AxisLabels &&
|
|
result.Object != null)
|
|
{
|
|
string strTable = (string)result.Object;
|
|
m_Owner.OnRadarSelectTable(strTable);
|
|
}
|
|
}
|
|
|
|
private void PanelRadarGraph_VisibleChanged(object sender, EventArgs e)
|
|
{
|
|
if(m_bShowAlert == true)
|
|
{
|
|
MessageBox.Show(this, "데이터가 부족합니다");
|
|
m_bShowAlert = false;
|
|
}
|
|
}
|
|
|
|
private void rbAll_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if(rbAll.Checked == true)
|
|
{
|
|
m_TempRange = Config.TEMP_ALL;
|
|
m_HumidRange = Config.HUMID_ALL;
|
|
}
|
|
else if (rbNormalLow.Checked == true)
|
|
{
|
|
m_TempRange = Config.TEMP_NORMAL;
|
|
m_HumidRange = Config.HUMID_LOW;
|
|
}
|
|
else if (rbNormalHigh.Checked == true)
|
|
{
|
|
m_TempRange = Config.TEMP_NORMAL;
|
|
m_HumidRange = Config.HUMID_HIGH;
|
|
}
|
|
else if (rbHighLow.Checked == true)
|
|
{
|
|
m_TempRange = Config.TEMP_HIGH;
|
|
m_HumidRange = Config.HUMID_LOW;
|
|
}
|
|
else if (rbHighHigh.Checked == true)
|
|
{
|
|
m_TempRange = Config.TEMP_HIGH;
|
|
m_HumidRange = Config.HUMID_HIGH;
|
|
}
|
|
else if (rbLowTemp.Checked == true)
|
|
{
|
|
m_TempRange = Config.TEMP_LOW;
|
|
m_HumidRange = Config.HUMID_ALL;
|
|
}
|
|
|
|
UpdateGraph();
|
|
}
|
|
}
|
|
}
|