Files
friction/PanelCompatibility.cs
mjjo53 b906236fef MaterialCompatibleMap 수정
- datagridview cell을 계속 그리는 문제 해결
 - 5가지 상태창 표시
 - layout 수정

RadarGraph 수정
 - 팝업창 두번씩 뜨지 않도록 수정
 - layout 수정
2017-08-10 01:01:49 +09:00

279 lines
8.0 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;
namespace friction
{
public partial class PanelCompatibility : DockContent
{
const int HEADER_SIZE = 100;
MainForm m_Owner = null;
DataHandler m_DataHandler = null;
public PanelCompatibility(MainForm owner, DataHandler dataHandler)
{
InitializeComponent();
m_Owner = owner;
m_DataHandler = dataHandler;
Theme.Apply(this);
Theme.Apply(dgvMap);
Theme.Apply(btPivot);
dgvMap.CellPainting += DgvMap_CellPainting;
dgvMap.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
dgvMap.ColumnHeadersHeight = HEADER_SIZE;
dgvMap.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;
dgvMap.RowHeadersWidth = HEADER_SIZE;
dgvMap.DefaultCellStyle.Format = "N0";
dgvMap.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.False;
dgvMap.RowHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.False;
dgvMap.CellToolTipTextNeeded += DgvMap_CellToolTipTextNeeded;
}
private void DgvMap_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
{
e.ToolTipText = "tooltip";
}
public void UpdateData()
{
var Springs = m_DataHandler.GetSpringList();
var Tables = m_DataHandler.GetTableList();
dgvMap.Rows.Clear();
dgvMap.Columns.Clear();
int iCol = dgvMap.Columns.Add("table", "table");
dgvMap.Columns[iCol].SortMode = DataGridViewColumnSortMode.NotSortable;
foreach (var table in Tables)
{
string strHeaderText = table;
//if (strHeaderText.Length > 10)
// strHeaderText = strHeaderText.Substring(0, 7) + "...";
iCol = dgvMap.Columns.Add(table, strHeaderText);
dgvMap.Columns[iCol].Width = 10;
dgvMap.Columns[iCol].SortMode = DataGridViewColumnSortMode.NotSortable;
dgvMap.Columns[iCol].HeaderCell.ToolTipText = table;
}
int iRow = dgvMap.Rows.Add();
dgvMap.Rows[iRow].HeaderCell.Value = "spring";
foreach (var spring in Springs)
{
iRow = dgvMap.Rows.Add();
dgvMap.Rows[iRow].HeaderCell.Value = spring;
dgvMap.Rows[iRow].HeaderCell.ToolTipText = spring;
var Averages = m_DataHandler.GetAvgAll(spring, Config.TEMP_ALL, Config.HUMID_ALL);
foreach(var avg in Averages)
{
if(avg.m_fMax > 0)
{
var cell = dgvMap.Rows[iRow].Cells[avg.m_strTable];
cell.Value = avg.m_fMax;
Config.ANALYSIS.RISK Risk = Config.ANALYSIS.GetRisk(avg.m_fMax);
switch(Risk)
{
case Config.ANALYSIS.RISK.NO:
cell.Style.BackColor = Theme.Green;
break;
case Config.ANALYSIS.RISK.POTENTIAL:
cell.Style.BackColor = Theme.Yellow;
break;
case Config.ANALYSIS.RISK.HIGH:
cell.Style.BackColor = Theme.Red;
break;
}
}
}
}
foreach (DataGridViewColumn column in dgvMap.Columns)
{
column.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCellsExceptHeader;
column.ReadOnly = true;
}
}
public object[] GetData()
{
List<string> ColumnHeaders = new List<string>();
List<string> RowHeaders = new List<string>();
var dt = new DataTable();
dt.Columns.Add(" ");
foreach (DataGridViewColumn column in dgvMap.Columns)
{
if (column.Visible)
dt.Columns.Add(column.HeaderText);
ColumnHeaders.Add(column.HeaderText);
}
object[] cellValues = new object[dgvMap.Columns.Count];
foreach (DataGridViewRow row in dgvMap.Rows)
{
for (int i = 0; i < row.Cells.Count; i++)
cellValues[i] = row.Cells[i].Value;
dt.Rows.Add(cellValues);
RowHeaders.Add((string)row.HeaderCell.Value);
}
return new object[]{ dt, ColumnHeaders, RowHeaders };
}
private void DgvMap_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
DataGridView view = sender as DataGridView;
if (e.RowIndex == -1 && e.ColumnIndex >= 0)
{
Brush brush = new SolidBrush(this.dgvMap.ForeColor);
e.PaintBackground(e.ClipBounds, true);
Rectangle rect = view.GetColumnDisplayRectangle(e.ColumnIndex, true);
Size titleSize = TextRenderer.MeasureText(e.Value.ToString(), e.CellStyle.Font);
//if (view.ColumnHeadersHeight < titleSize.Width)
// view.ColumnHeadersHeight = titleSize.Width;
//if (view.ColumnHeadersHeight > HEADER_SIZE)
// view.ColumnHeadersHeight = HEADER_SIZE;
e.Graphics.TranslateTransform(0, titleSize.Width);
e.Graphics.RotateTransform(-90.0F);
e.Graphics.DrawString(e.Value.ToString(), this.Font, brush,
new PointF(rect.Y - (view.ColumnHeadersHeight - titleSize.Width), rect.X + (e.CellBounds.Width - titleSize.Height) / 2));
e.Graphics.RotateTransform(90.0F);
e.Graphics.TranslateTransform(0, -titleSize.Width);
e.Handled = true;
}
}
void Pivot()
{
object[] viewData = GetData();
DataTable data = (DataTable)viewData[0];
List<string> ColumnHeaders = (List<string>)viewData[1];
List<string> RowHeaders = (List<string>)viewData[2];
dgvMap.Rows.Clear();
dgvMap.Columns.Clear();
int iColSize = ColumnHeaders.Count;
int iRowSize = RowHeaders.Count - 1;
for (int i = 0; i < iRowSize; i++)
dgvMap.Columns.Add(RowHeaders[i], RowHeaders[i]);
for (int iCol = 0; iCol < iColSize; iCol++)
{
int iRowIdx = dgvMap.Rows.Add();
dgvMap.Rows[iRowIdx].HeaderCell.Value = ColumnHeaders[iCol];
for (int iRow = 0; iRow < iRowSize; iRow++)
{
DataGridViewCell cell = dgvMap.Rows[iRowIdx].Cells[iRow];
cell.Value = data.Rows[iRow][iCol];
float fValue = 0;
if (cell.Value.GetType() != typeof(System.DBNull))
{
float.TryParse((string)cell.Value, out fValue);
Config.ANALYSIS.RISK Risk = Config.ANALYSIS.GetRisk(fValue);
switch (Risk)
{
case Config.ANALYSIS.RISK.NO:
cell.Style.BackColor = Theme.Green;
break;
case Config.ANALYSIS.RISK.POTENTIAL:
cell.Style.BackColor = Theme.Yellow;
break;
case Config.ANALYSIS.RISK.HIGH:
cell.Style.BackColor = Theme.Red;
break;
}
}
}
}
for (int i = 0; i < iRowSize; i++)
dgvMap.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCellsExceptHeader;
}
private void btPivot_Click(object sender, EventArgs e)
{
Pivot();
}
private void dgvMap_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0 || e.ColumnIndex < 0)
return;
if (dgvMap.Rows.Count < e.RowIndex || dgvMap.Columns.Count < e.ColumnIndex)
return;
DataGridViewCell cell = dgvMap.Rows[e.RowIndex].Cells[e.ColumnIndex];
if (cell.Value == null || cell.Value.GetType() == typeof(System.DBNull))
{
Label[] aLabels = { lbNormalLow, lbNormalHigh, lbHighLow, lbHighHigh, lbLowTemp };
for (int i = 0; i < aLabels.Length; i++)
{
aLabels[i].Text = "";
Theme.Apply(aLabels[i]);
}
}
else
{
string strSpring = "";
string strTable = "";
if ((string)dgvMap.Rows[0].HeaderCell.Value == "spring")
{
strSpring = (string)dgvMap.Rows[e.RowIndex].HeaderCell.Value;
strTable = dgvMap.Columns[e.ColumnIndex].HeaderText;
}
else
{
strTable = (string)dgvMap.Rows[e.RowIndex].HeaderCell.Value;
strSpring = dgvMap.Columns[e.ColumnIndex].HeaderText;
}
List<float> maxes = m_DataHandler.GetMaxes(strSpring, strTable);
Label[] aLabels = { lbNormalLow, lbNormalHigh, lbHighLow, lbHighHigh, lbLowTemp };
for (int i = 0; i < aLabels.Length; i++)
{
aLabels[i].Text = maxes[i].ToString("N0");
Config.ANALYSIS.RISK Risk = Config.ANALYSIS.GetRisk(maxes[i]);
switch (Risk)
{
case Config.ANALYSIS.RISK.NO:
aLabels[i].BackColor = Theme.Green;
break;
case Config.ANALYSIS.RISK.POTENTIAL:
aLabels[i].BackColor = Theme.Yellow;
break;
case Config.ANALYSIS.RISK.HIGH:
aLabels[i].BackColor = Theme.Red;
break;
}
}
detailPanel.Visible = true;
}
}
}
}