Files
Million/Million Hunter/HunterSubForm/LoadResultViewerForm.cs
2022-09-15 18:11:56 +09:00

174 lines
6.6 KiB
C#

using DevExpress.XtraEditors;
using System;
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 DevExpress.XtraTreeList;
using Million;
using Million.SaveData;
using Million.FileDBManagement;
using System.Data.Common;
using Million.DbManagement;
namespace Million.HunterSubForm
{
public partial class SavedResultViewerForm : DevExpress.XtraEditors.XtraForm
{
private List<SavedResultData> savedResultDatas;
// Main 폼의 SaveResultData
private MainForm _mainForm;
public SavedResultViewerForm(MainForm mainForm)
{
InitializeComponent();
_mainForm = mainForm;
InitForm();
}
private void InitForm()
{
// 리스트 초기화
savedResultDatas?.Clear();
savedResultDatas = null;
savedResultDatas = new List<SavedResultData>();
// 저장된 파일에서 결과 정보 데이터 가져오기
// 예외처리
// 폴더 없으면 파일 생성
var directoryInfo = new DirectoryInfo(CommonProperty.SaveProgramDirecotryPath);
if (!directoryInfo.Exists)
{
directoryInfo.Create();
return;
}
// 결과 데이터 정보 가져오기
savedResultDatas = DBConnection.QueryGetExcuter_SavedResultData();
//foreach (var filePath in Directory.GetFiles(CommonProperty.SaveProgramDirecotryPath).ToList()
// .FindAll(item => item.Contains(CommonProperty.InfoExtend)))
//{
// var savedResult = FileManager.LoadResultDataInfoFromFile(filePath);
// savedResult.SavedInfoDataPath = filePath;
// savedResult.SavedResultDataPath =
// filePath.Replace(CommonProperty.InfoExtend, CommonProperty.DataExtend);
// savedResult.SavedResultAnalysisDataPath =
// filePath.Replace(CommonProperty.InfoExtend, CommonProperty.AnalysisExtendFolder);
// savedResultDatas.Add(savedResult);
//}
// 트리 리스트에 추가
treeList_SavedResultData.DataSource = savedResultDatas;
treeList_SavedResultData.RefreshDataSource();
}
// 정보 불러오기 버튼 클릭
private void simpleButton_SavedResultDataLoad_Click(object sender, EventArgs e)
{
// 저장된 데이터 정보 불러오기
InitForm();
}
// 마우스 클릭 시 이벤트 처리
private void treeList_SavedResultData_MouseClick(object sender, MouseEventArgs e)
{
var treeList = sender as TreeList;
if (treeList == null) return;
var hitInfo = treeList.CalcHitInfo(e.Location);
if (hitInfo.HitInfoType != HitInfoType.Cell) return;
var selectedResultData = (SavedResultData)treeList.GetDataRecordByNode(hitInfo.Node);
// 시간 데이터 추가
textEdit_StartDateTime.Text = selectedResultData.StartDateTime.Date.ToString();
textEdit_EndDateTime.Text = selectedResultData.EndDateTime.Date.ToString();
textEdit_SavedDateTime.Text = selectedResultData.SavedDateTime.Date.ToString();
textEdit_BuyRegularExpression.Text = selectedResultData.BuyRegularExpression;
textEdit_SellRegularExpression.Text = selectedResultData.SellRegularExpression;
// Buy/Sell 리스트에 데이터 추가
treeList_BuySetupList.DataSource = selectedResultData.BuySetupList;
treeList_SellSetupList.DataSource = selectedResultData.SellSetupList;
treeList_BuySetupList.RefreshDataSource();
treeList_SellSetupList.RefreshDataSource();
treeList_AnalysisResultData.DataSource = null;
var data = new List<int>();
data.Add(selectedResultData.Id);
treeList_AnalysisResultData.DataSource = DBConnection.QueryGetExcuter_SavedAnalysisData(data);
// 분석 데이터 정보 파일 항목 불러오기(.data)
// 폴더 검사
//if (Directory.Exists(selectedResultData.SavedResultAnalysisDataPath))
//{
// var fileList = Directory.GetFiles(selectedResultData.SavedResultAnalysisDataPath,
// "*info");
// var savedAnalysisDataList = new List<SavedAnalysisData>();
// foreach (var filePath in fileList)
// {
// var savedSnalysisData = FileManager.LoadResultAnalysisDataInfoFromFile(filePath);
// savedAnalysisDataList.Add(savedSnalysisData);
// }
// treeList_AnalysisResultData.DataSource = savedAnalysisDataList;
//}
treeList_AnalysisResultData.RefreshDataSource();
}
// 마우스 더블 클릭 시 이벤트 처리
private void treeList_SavedResultData_MouseDoubleClick(object sender, MouseEventArgs e)
{
var treeList = sender as TreeList;
if (treeList == null) return;
var hitInfo = treeList.CalcHitInfo(e.Location);
if (hitInfo.HitInfoType != HitInfoType.Cell) return;
var selectedResultData = (SavedResultData)treeList.GetDataRecordByNode(hitInfo.Node);
//Main 폼의 SaveResultData 초기화
_mainForm._saveResultData = null;
//Main 폼의 SaveResultData 초기화 (클론 복사 해야할 수 있음)
_mainForm._saveResultData = selectedResultData.Clone();
_mainForm._saveResultData.SearchResultList =
FileManager.LoadResultDataFromFile(selectedResultData.SavedResultDataPath);
_mainForm._saveResultData.SavedInfoDataPath = selectedResultData.SavedInfoDataPath;
_mainForm._saveResultData.SavedResultDataPath = selectedResultData.SavedResultDataPath;
_mainForm._saveResultData.SavedResultAnalysisDataPath =
selectedResultData.SavedResultAnalysisDataPath;
// 데이터가 있는 경우 버튼 색 변경
if (_mainForm._saveResultData.SearchResultList != null)
{
_mainForm.simpleButton_ViewResultData.Appearance.BackColor =
Color.FromArgb(128, 128, 255);
}
this.DialogResult = DialogResult.OK;
this.Close();
}
}
}