INT_PT002/INT_PT002/Controls/Log/ControlMenuLogAlarm.cs

220 lines
7.1 KiB
C#
Raw Normal View History

2023-02-13 00:43:01 +00:00
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
2023-03-23 05:12:16 +00:00
using System.IO;
2023-02-13 00:43:01 +00:00
using INT_PT002.Forms;
2023-03-23 05:12:16 +00:00
using INT_PT002.DataStore;
using INT_PT002.DialogForms;
2023-02-13 00:43:01 +00:00
namespace INT_PT002.Controls
{
2023-03-06 04:52:55 +00:00
public partial class ControlMenuLogAlarm : UserControl
2023-02-13 00:43:01 +00:00
{
#region Field
private FormMenu m_ParentForm;
2023-03-23 05:12:16 +00:00
private Define.E_DataType SelecteDataType;
private List<DataBackupYear> ListAlarmFile;
2023-02-13 00:43:01 +00:00
#endregion
#region Constructor
2023-03-06 04:52:55 +00:00
public ControlMenuLogAlarm(FormMenu parent)
2023-02-13 00:43:01 +00:00
{
InitializeComponent();
this.ParentForm = parent;
2023-03-23 05:12:16 +00:00
2023-02-13 00:43:01 +00:00
this.Initialize();
2023-03-23 05:12:16 +00:00
this.DefaultSetting();
2023-02-13 00:43:01 +00:00
}
#endregion
#region Property
public FormMenu ParentForm
{
get { return this.m_ParentForm; }
private set { this.m_ParentForm = value; }
}
#endregion
#region Method
private void Initialize()
{
2023-03-06 04:52:55 +00:00
this.smartGroupBox1.Text = "Log > Alarm";
2023-02-13 00:43:01 +00:00
}
2023-03-23 05:12:16 +00:00
private void DefaultSetting()
{
this.SelecteDataType = Define.E_DataType.None;
this.ListAlarmFile = new List<DataBackupYear>();
}
public void LoadFile(string fullFilePath)
{
if (fullFilePath.Contains("_Alarm") == false)
return;
this.smartFile1.FilePathName = fullFilePath;
this.smartFile1.Open();
this.smartFile1.StringType.EncodingType = SmartX.SmartFile.Encodings.ANSI;
try
{
this.smartFile1.StringType.FillBuffer();
long lineNum = this.smartFile1.StringType.GetCount();
for (int i = 1; i < lineNum; i++)
{
this.listBox.AddItem(this.smartFile1.StringType.ReadBuffer(i));
}
}
catch
{
DialogFormMessage myMsg = new DialogFormMessage(16, this.ParentForm.ParentForm.SystemConfig.LANGUAGE);
myMsg.ShowDialog();
this.smartFile1.Close();
}
this.smartFile1.Close();
}
2023-03-23 05:12:16 +00:00
private void UpdateDisplayFile()
{
int fileCount = 0;
//TreeNode node;
List<string> years = new List<string>();
List<string> months = new List<string>();
List<string> days = new List<string>();
2023-03-30 10:56:06 +00:00
this.treeView.Nodes.Clear();
2023-03-23 05:12:16 +00:00
this.ListAlarmFile.Clear();
DirectoryInfo dir = new DirectoryInfo(this.ParentForm.ParentForm.PathDataAlarmFolder);
2023-03-23 05:12:16 +00:00
List<string> fileNames = new List<string>();
// 폴더 체크
if (dir.Exists == false)
dir.Create();
// year 폴더 가져오기
DirectoryInfo[] yearDirectorys = dir.GetDirectories();
// year 폴더 정렬
years = this.ParentForm.DirectorySort(yearDirectorys);
// Alarm File 리스트 생성
2023-03-23 05:12:16 +00:00
if (years.Count != 0)
{
// Year
foreach (string year in years)
{
DataBackupYear y = new DataBackupYear(year);
DirectoryInfo monthDir = new DirectoryInfo(string.Format("{0}{1}", this.ParentForm.ParentForm.PathDataAlarmFolder, year));
DirectoryInfo[] monthDirectorys = monthDir.GetDirectories();
months = this.ParentForm.DirectorySort(monthDirectorys);
if (months.Count != 0)
{
// Month
foreach (string month in months)
{
DirectoryInfo dayDir = new DirectoryInfo(string.Format("{0}{1}\\{2}", this.ParentForm.ParentForm.PathDataAlarmFolder, year, month));
FileInfo[] dayFiles = dayDir.GetFiles();
days = this.DayAlarmDirectorySort(dayFiles);
2023-03-23 05:12:16 +00:00
DataBackupMonth m = new DataBackupMonth(month);
m.Days = days;
y.Months.Add(m);
}
this.ListAlarmFile.Add(y);
}
else
{
this.ListAlarmFile.Add(y);
}
}
// node 생성
for (int i = 0; i < this.ListAlarmFile.Count; i++)
{
TreeNode node = new TreeNode(this.ListAlarmFile[i].Year);
for (int j = 0; j < this.ListAlarmFile[i].Months.Count; j++)
{
TreeNode nodeMonth = new TreeNode(this.ListAlarmFile[i].Months[j].Month);
for (int k = 0; k < this.ListAlarmFile[i].Months[j].Days.Count; k++)
{
nodeMonth.Nodes.Add(this.ListAlarmFile[i].Months[j].Days[k]);
fileCount++;
}
node.Nodes.Add(nodeMonth);
}
2023-03-30 10:56:06 +00:00
this.treeView.Nodes.Add(node);
2023-03-23 05:12:16 +00:00
}
}
2023-03-31 01:47:21 +00:00
this.labelCount.Text = string.Format("{0} ", fileCount);
2023-03-23 05:12:16 +00:00
}
private List<string> DayAlarmDirectorySort(FileInfo[] files)
2023-03-23 05:12:16 +00:00
{
List<string> listFile = new List<string>();
Dictionary<string, int> dirNames = new Dictionary<string, int>();
2023-03-31 01:47:21 +00:00
Dictionary<string, int> dirNamesSort = new Dictionary<string, int>();
2023-03-23 05:12:16 +00:00
2023-03-31 01:47:21 +00:00
#region File List 날짜 순서대로 정렬
2023-03-23 05:12:16 +00:00
foreach (FileInfo file in files)
2023-03-31 01:47:21 +00:00
dirNames.Add(file.Name, int.Parse(file.Name.Substring(0, 8)));
2023-03-23 05:12:16 +00:00
2023-03-31 01:47:21 +00:00
var vrList = dirNames.Keys.ToList();
vrList.Sort();
2023-03-23 05:12:16 +00:00
foreach (var v in vrList)
2023-03-31 01:47:21 +00:00
dirNamesSort.Add(v, dirNames[v]);
foreach (var v in dirNamesSort)
2023-03-23 05:12:16 +00:00
listFile.Add(v.Key);
2023-03-31 01:47:21 +00:00
2023-03-23 05:12:16 +00:00
#endregion
return listFile;
}
2023-02-13 00:43:01 +00:00
public void DisplayRefresh()
{
this.ParentForm.ParentForm.CurrentSystemStatus.CurrentDisplayMode = Define.E_DisplayModeStore.LogAlarm;
2023-03-31 01:47:21 +00:00
this.ParentForm.ParentForm.SetDisplayMode(Define.E_EquipmentMode.Menu);
this.SelecteDataType = Define.E_DataType.None;
this.UpdateDisplayFile();
2023-03-30 10:56:06 +00:00
this.treeView.ExpandAll();
2023-02-13 00:43:01 +00:00
if (int.Parse(this.labelCount.Text) == 0)
{
DialogFormMessage msg = new DialogFormMessage(36, this.ParentForm.ParentForm.SystemConfig.LANGUAGE);
msg.ShowDialog();
return;
}
2023-02-13 00:43:01 +00:00
}
#endregion
#region Event Handler
2023-03-31 01:47:21 +00:00
private void treeViewLogAlarm_AfterSelect(object sender, TreeViewEventArgs e)
{
this.labelFileName.Text = e.Node.Text;
this.LoadFile(this.ParentForm.ParentForm.PathDataInspectionFolder + this.treeView.SelectedNode.FullPath);
2023-03-31 01:47:21 +00:00
}
2023-02-13 00:43:01 +00:00
#endregion
}
}