using OTSCLRINTERFACE;
using OTSIncAReportApp.OTSSampleReportInfo;
using OTSIncAReportApp.SysMgrTools;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
namespace OTSIncAReportApp.OTSDataMgrFunction
{
///
/// 框架与底层进行交互的操作类
///
public class DataMgrFun
{
#region 变量定义
/// 报告文件操作类
///
public CReportMgrClr m_ReportMgr = null;
///
/// 报告主进程框架对象
///
private frmReportApp m_ReportApp = null;
#endregion
#region 构造函数
///
/// 构造函数
///
///
public DataMgrFun(frmReportApp ReportApp)
{
m_ReportApp = ReportApp;
Language lan = new Language();
table = lan.GetNameTable("DataMgrFun");
if (null == m_ReportMgr)
{
//初始化相关变量
m_ReportMgr = new CReportMgrClr();
}
//m_pRptParamFileMgr = new CRptParamFileMgrClr();
//m_pRptParamFileMgr.SetRptParamFile(m_ReportProjFileMgr.GetRptParamFileClr());
}
//国际化存储信息
Hashtable table;
#endregion
#region 获取组合项相关方法
///
/// 根据系统设置的默认粒级表路径,获取所有的粒级表文件List
///
///
public List GetPartSizeFileList()
{
List ret_list = new List();
//遍历粒级文件夹
DirectoryInfo theFolder = new DirectoryInfo(m_ReportApp.m_RptConfigFile.FileFolderSize);
if (!theFolder.Exists)
return ret_list;
//读取遍历粒级文件信息
foreach (FileInfo nextifile in theFolder.GetFiles())
{
//找出粒级文件
if (nextifile.Name.Contains(".psf") == true || nextifile.Name.Contains(".PSF") == true)
{
ret_list.Add(nextifile.Name);
}
}
return ret_list;
}
///
/// 根据系统设置默认的粒级表的路径,获取粒级表List
///
///
///
public List GetPartSizeList()
{
DataSet ds = DataOperation.DataAccess.XMLoperate.GetXml(m_ReportApp.m_RptConfigFile.FileFolderSize + m_ReportApp.m_RptConfigFile.PartSizeFile);
string sizestr = ds.Tables[0].Rows[0]["Sizes"].ToString();
List sizeList = new List();
for (int i = 0; i < sizestr.Split(',').Length - 1; i++)
{
if (sizestr.Split(',')[i].Length > 0)
{
double d1 = Convert.ToDouble(sizestr.Split(',')[i]);
double d2 = Convert.ToDouble(sizestr.Split(',')[i + 1]);
sizeList.Add(d1.ToString() + "~" + d2.ToString());
}
}
double d = Convert.ToDouble(sizestr.Split(',')[sizestr.Split(',').Length - 1]);
sizeList.Add(d.ToString() + "~MAX");
return sizeList;
}
///
/// 根据传入的粒级表目录,获取粒级表List
///
///
public List GetPartSizeList(string path)
{
DataSet ds = DataOperation.DataAccess.XMLoperate.GetXml(path);
string sizestr = ds.Tables[0].Rows[0]["Sizes"].ToString();
List sizeList = new List();
for (int i = 0; i < sizestr.Split(',').Length - 1; i++)
{
if (sizestr.Split(',')[i].Length > 0)
{
double d1 = Convert.ToDouble(sizestr.Split(',')[i]);
double d2 = Convert.ToDouble(sizestr.Split(',')[i + 1]);
sizeList.Add(d1.ToString() + "~" + d2.ToString());
}
}
double d = Convert.ToDouble(sizestr.Split(',')[sizestr.Split(',').Length - 1]);
sizeList.Add(d.ToString() + "~MAX");
return sizeList;
}
///
/// 获取三元相图模板名称列表
///
///
public List GetTriTemplateNameList()
{
string pathtpf = m_ReportApp.m_RptConfigFile.FileFolderTrigTemp + m_ReportApp.m_RptConfigFile.TriTempFile;
List ret_list = new List();
DataSet ds = DataOperation.DataAccess.XMLoperate.GetXmlData(pathtpf, "XMLData");
DataTable dt = ds.Tables["Member"];
foreach (DataRow item in dt.Rows)
{
if (item["TemplateName"].ToString() != "")
{
ret_list.Add(item["TemplateName"].ToString());
}
}
return ret_list;
}
///
/// 获取测量结果名称列表
///
///
public List GetSampleListName()
{
List ret_list = new List();
var resultfileList = m_ReportApp.resultFilesList;
foreach (var item in resultfileList)
{
ret_list.Add(item.FileName);
}
if (m_ReportApp.MoreSource != "")
{
ret_list.Add(m_ReportApp.MoreSource);
}
return ret_list;
}
///
/// 获取计算方法列表
///
///
public List GetSizeCalMethodTypeList()
{
List ret_list = new List() { "DMAX", "DMIN", "Area", "FERET" };
return ret_list;
}
///
/// 数据类型,全部颗粒,分析颗粒
///
///
public List GetDataSourceTypeList()
{
string sscaptionname23 = table["sscaptionname23"].ToString();
string sscaptionname24 = table["sscaptionname24"].ToString();
List ret_list = new List() { sscaptionname23, sscaptionname24 };
return ret_list;
}
#endregion
#region [属性选项Grid窗体]相关封装方法
///
/// 界面显示Grid
///
private SampleData NewGridData(int tbindex, OTS_REPORT_PROP_GRID_ITEMS iItemId, string sSCaptionName, OTS_ITEM_TYPES iItemValType, bool bReadOnly, string sDescriptionInfo, object itemVal, List comboDownList)
{
string text = "";
string des = "" ;
string downlist = "";
//OTSDataType.XmlResourceData.GetInstance().GetStringByKey(tbindex, 20000,ref text, ref des, ref downlist);
SampleData sampleData = new SampleData();
sampleData.iItemId = iItemId;
sampleData.sSCaptionName = sSCaptionName;
sampleData.iItemValType = iItemValType;
sampleData.bReadOnly = bReadOnly;
sampleData.sDescriptionInfo = des;
//if (comboDownList.Count==0)
//{
// List liststr = new List();
// if (downlist!="")
// {
// string[] arrTemp = downlist.Split(',');
// for (int i = 0; i < arrTemp.Count(); i++)
// {
// liststr.Add(arrTemp[i]);
// }
// sampleData.itemVal = liststr[0];
// sampleData.comboDownList = liststr;
// }
// else
// {
// sampleData.itemVal = "0";
// sampleData.comboDownList = liststr;
// }
//}
//else
//{
sampleData.itemVal = itemVal;
sampleData.comboDownList = comboDownList;
//}
return sampleData;
}
///
/// 初始化加载sourceGrid各项
///
///
/// SampleData1
private List GetSourceGridData(int tbindex)
{
List list = new List();
if (tbindex == 0)//分布图页
{
//测量结果数据
List list_source_str = GetSampleListName();
list.Add(NewGridData(tbindex, 0, table["sscaptionname1"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Select Measurement Result", list_source_str[m_ReportApp.WorkingResult], list_source_str));
//bse,颗粒分类图
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE, table["sscaptionname2"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Survey Chart Type", "BSE", new List() { "BSE", table["sscaptionname13"].ToString(), "Original", "原图颗粒分布" }));
//测量图类型
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE, table["sscaptionname3"].ToString(), OTS_ITEM_TYPES.COMBO, false, "chart display mode", table["sscaptionname14"].ToString(), new List() { table["sscaptionname14"].ToString(), table["sscaptionname15"].ToString() }));
//测量图显示方式
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE, table["sscaptionname4"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Particle Type", table["sscaptionname16"].ToString(), new List() { table["sscaptionname16"].ToString(), table["sscaptionname17"].ToString() }));
//粒级表
List list_partsizelist = GetPartSizeFileList();//从系统默认的路径中查找出所有的粒级表文件
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE, "粒级表", OTS_ITEM_TYPES.COMBO, false, "Particle Table", list_partsizelist[0], list_partsizelist));
//粒级
List sizeList = GetPartSizeList();//获取粒级后额外增加全部,自定义,选项
sizeList.Insert(0, table["sscaptionname16"].ToString());//全部
sizeList.Insert(1, table["sscaptionname18"].ToString());//自定义
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS, table["sscaptionname5"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Grain Size", table["sscaptionname16"].ToString(), sizeList));
//自定义最小
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN, table["sscaptionname6"].ToString(), OTS_ITEM_TYPES.DOUBLE, false, "Smallest Particle", "0",new List { }));
//自定义最大
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX, table["sscaptionname7"].ToString(), OTS_ITEM_TYPES.DOUBLE, false, "Maximum Particle","0",new List { }));
//测量数据
List list3 = new List() { table["sscaptionname19"].ToString(), table["sscaptionname20"].ToString(), table["sscaptionname21"].ToString() };
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE, table["sscaptionname22"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Measured Data", list3[0], list3));
//计算方式
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE, table["sscaptionname8"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Dimension calculation method", "DMAX", GetSizeCalMethodTypeList()));
}
else if (tbindex == 1)//Grid表格页
{
//测量结果数据
List list_source_str = GetSampleListName();
list.Add(NewGridData(tbindex,0, table["sscaptionname1"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Select Measurement Result", list_source_str[m_ReportApp.WorkingResult], list_source_str));
//数据类型
List list_datasourcetypelist = GetDataSourceTypeList();
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE, table["sscaptionname9"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Data Type", list_datasourcetypelist[0], list_datasourcetypelist));
//数据表类型
//string sSCaptionName10 = table["sscaptionname10"].ToString();
List list2 = new List() { table["sscaptionname25"].ToString(), table["sscaptionname26"].ToString(), table["sscaptionname27"].ToString(), table["sscaptionname28"].ToString(), table["sscaptionname29"].ToString(), table["sscaptionname30"].ToString()};
string[] aa = m_ReportApp.Text.Split('-');
List listStd = new List() { "国标一", "国标二", "美标", "德标" };
list2.AddRange(listStd);
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_TABLE_TYPE, table["sscaptionname10"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Data table type", list2[0], list2));
//粒级表
List list_partsizelist = GetPartSizeFileList();//从系统默认的路径中查找出所有的粒级表文件
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE, "粒级表", OTS_ITEM_TYPES.COMBO, false, "Particle Table", list_partsizelist[0], list_partsizelist));
//尺寸计算方法
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE, table["sscaptionname8"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Dimension Calculation Method", "DMAX", GetSizeCalMethodTypeList()));
}
else if (tbindex == 2)//Chart图页
{
//测量结果数据
List list_source_str = GetSampleListName();
list.Add(NewGridData(tbindex,0, table["sscaptionname1"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Select Measurement Result", list_source_str[m_ReportApp.WorkingResult], list_source_str));
//数据类型
List list_datasourcetypelist = GetDataSourceTypeList();
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE, table["sscaptionname9"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Data Type", list_datasourcetypelist[0], list_datasourcetypelist));
//数据图类型
List list2 = new List() { "常用夹杂物分类", table["sscaptionname27"].ToString(), table["sscaptionname28"].ToString(), table["sscaptionname29"].ToString(), table["sscaptionname12"].ToString() };
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_CHART_TYPE, table["sscaptionname10"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Data graph type", list2[0], list2));
//三元相图模板
List trio_listname = GetTriTemplateNameList();
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE, table["sscaptionname12"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Ternary phase diagram", trio_listname.First(), trio_listname));
//粒级表
List list_partsizelist = GetPartSizeFileList();
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE, "粒级表", OTS_ITEM_TYPES.COMBO, false, "Particle Table", list_partsizelist[0], list_partsizelist));
//尺寸计算法
list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE, table["sscaptionname8"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Dimension Calculation Method", "DMAX", GetSizeCalMethodTypeList()));
}
return list;
}
///
/// 分发SourceGrid,各选项值改变事件
///
///
///
///
///
///
public OTSSampleMeaInfo ChangeSouceGrid(int tbindex, OTS_REPORT_PROP_GRID_ITEMS typ, string val, int sel)
{
OTSSampleMeaInfo ret = new OTSSampleMeaInfo();
ret = m_ReportApp.SourceGridDataList[tbindex];
switch (tbindex)
{
case 0:
ret = ChangeSouceGrid_Image(typ, val, sel);
break;
case 1:
ret = ChangeSouceGrid_Grid(typ, val, sel);
break;
case 2:
ret = ChangeSouceGrid_Chart(typ, val, sel);
break;
}
return ret;
}
///
/// SourceGrid,分析图页面组合各项方法
///
///
///
///
///
public OTSSampleMeaInfo ChangeSouceGrid_Image(OTS_REPORT_PROP_GRID_ITEMS typ, string val, int sel)
{
OTSSampleMeaInfo ret = new OTSSampleMeaInfo();
ret = m_ReportApp.SourceGridDataList[0];
//string strlist = ret.TSampleParam.sSampleTitleName;
List list_showgrid_item = ret.TSampleParam.List_ShowGrid_Items;
//测量结果数据
if (typ == OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE)
{
if (val.Contains("+"))
{
ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE)].itemVal = val;
}
else
{
DataOperation.Model.ResultFile resultFile = m_ReportApp.resultFilesList.Find(s => s.FileName == val);
int index = m_ReportApp.resultFilesList.IndexOf(resultFile);
m_ReportApp.WorkingResult = index;
}
}
//测量图类型
if (typ == OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE)
{
}
////---------------------------------------------------------------
//测量图显示方式
if (typ == OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE)
{
if (sel == 0)//选择分布图
{
//strlist = ",0,2,3,7,10,13,";
list_showgrid_item = new List(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0
OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2
OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3
OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE,//7
OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS,//10
OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13
if (ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE)].comboDownList.IndexOf(ret.SampleDataList[4].itemVal.ToString()) != 0)
{
//strlist = ",0,2,3,7,10,11,12,13,";
list_showgrid_item = new List(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0
OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2
OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3
OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE,//7
OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS,//10
OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN,//11
OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX,//12
OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13
}
}
else if (sel == 1)//选择排序图时
{
//strlist = ",0,2,3,4,13,";
list_showgrid_item = new List(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0
OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2
OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3
OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE,//4
OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13
}
}
//颗粒类型
if (typ == OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE)
{
}
//测量数据
if (typ == OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE)
{
if (sel == 0)//全部颗粒类型
{
//strlist = ",0,2,3,4,13,";
list_showgrid_item = new List(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0
OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2
OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3
OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE,//4
OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13
}
else if (sel == 1)//分析颗粒类型
{
list_showgrid_item = new List(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0
OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2
OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3
OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE,//4
OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13
}
else if (sel == 2)//颗粒尺寸类型
{
list_showgrid_item = new List(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0
OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2
OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3
OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE,//4
OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE,//9
OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS,//10
OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13
}
}
//颗粒粒级表
if (typ == OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)
{
//点击下拉框,级联联动事件
int idx = m_ReportApp.m_DataMgrFun.GetSampleIndexByPropItemName(m_ReportApp.SourceGridData.SampleDataList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);
List list_partsize = GetPartSizeList(m_ReportApp.m_RptConfigFile.FileFolderSize + ret.SampleDataList[idx].itemVal.ToString());
List list_partsizeChart = new List();
for (int i = 0; i < ret.SampleDataList[idx].comboDownList.Count;i++)
list_partsizeChart.Add(ret.SampleDataList[idx].comboDownList[i].ToString());
string sscaptionname16 = table["sscaptionname16"].ToString();
string sscaptionname18 = table["sscaptionname18"].ToString();
list_partsize.Insert(0, sscaptionname16);//全部
list_partsize.Insert(1, sscaptionname18);//自定义
ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)].itemVal = ret.SampleDataList[idx].itemVal.ToString();
ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)].comboDownList = list_partsizeChart;
ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS)].comboDownList = list_partsize;
m_ReportApp.m_RptConfigFile.PartSizeFile = ret.SampleDataList[idx].itemVal.ToString();
}
//粒级
if (typ == OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS)
{
switch (sel)
{
case 0:
list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN);//11
list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX);//12
break;
case 1:
if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN))
{
list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN);//11
list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX);//12
}
ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN)].bReadOnly = false;
ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN)].itemVal = "0";
ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX)].bReadOnly = false;
ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX)].itemVal = "0";
break;
default:
if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN))
{
list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN);//11
list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX);//12
}
string[] v = ret.SampleDataList[5].itemVal.ToString().Split('~');
ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN)].bReadOnly = true;
ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN)].itemVal = v[0];
ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX)].bReadOnly = true;
ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX)].itemVal = v[1];
break;
}
}
//尺寸计算法
if (typ == OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE)
{
}
//ret.TSampleParam.sSampleTitleName = strlist;
ret.TSampleParam.List_ShowGrid_Items = list_showgrid_item;
ret = FilterData(ret);
return ret;
}
///
///
///
///
///
///
public int GetSampleIndexByPropItemName(List in_list_sampledata, OTS_REPORT_PROP_GRID_ITEMS in_orpgi)
{
for (int i = 0; i < in_list_sampledata.Count; i++)
{
if (in_list_sampledata[i].iItemId == in_orpgi)
{
return i;
}
}
return -1;
}
///
/// SourceGrid,Grid表格部份组合各项方法
///
///
///
///
///
public OTSSampleMeaInfo ChangeSouceGrid_Grid(OTS_REPORT_PROP_GRID_ITEMS typ, string val, int sel)
{
OTSSampleMeaInfo ret = new OTSSampleMeaInfo();
ret = m_ReportApp.SourceGridDataList[1];
//string strlist = ret.TSampleParam.sSampleTitleName;
List list_showgrid_item = ret.TSampleParam.List_ShowGrid_Items;
//测量结果数据
if (typ == OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE)
{
if (val.Contains("+"))
{
ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE)].itemVal = val;
}
else
{
DataOperation.Model.ResultFile resultFile = m_ReportApp.resultFilesList.Find(s => s.FileName == val);
int index = m_ReportApp.resultFilesList.IndexOf(resultFile);
m_ReportApp.WorkingResult = index;
}
}
//数据类型
if (typ == OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE)
{
}
//数据表类型
if (typ == OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_TABLE_TYPE)
{
switch (sel)
{
case 2://颗粒成份
if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE))//13
{
list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE);
}
list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);//9
break;
case 4://颗粒尺寸分布
if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE))//9
{
list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);
}
if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE))//13
{
list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE);
}
break;
default://其它Grid模块不需要,粒级表和尺寸计算法
list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);//9
//list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE);//13
break;
}
}
//颗粒粒级表
if (typ == OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)
{
m_ReportApp.m_RptConfigFile.PartSizeFile = ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)].itemVal.ToString();
}
//尺寸计算方法
if (typ == OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE)
{
}
//ret.TSampleParam.sSampleTitleName = strlist;
ret.TSampleParam.List_ShowGrid_Items = list_showgrid_item;
ret = FilterData(ret);
return ret;
}
///
/// SourceGrid,Chart图表部份组合各项方法
///
///
///
///
///
public OTSSampleMeaInfo ChangeSouceGrid_Chart(OTS_REPORT_PROP_GRID_ITEMS typ, string val, int sel)
{
OTSSampleMeaInfo ret = new OTSSampleMeaInfo();
ret = m_ReportApp.SourceGridDataList[2];
//string strlist = ret.TSampleParam.sSampleTitleName;
List list_showgrid_item = ret.TSampleParam.List_ShowGrid_Items;
//测量结果数据
if (typ == OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE)
{
if (val.Contains("+"))
{
//ret.SampleDataList[1].bReadOnly = true;
//ret.SampleDataList[1].itemVal = ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE)].comboDownList[0];
ret.SampleDataList[0].itemVal = val;
}
else
{
//ret.SampleDataList[1].bReadOnly = false;
DataOperation.Model.ResultFile resultFile = m_ReportApp.resultFilesList.Find(s => s.FileName == val);
int index = m_ReportApp.resultFilesList.IndexOf(resultFile);
m_ReportApp.WorkingResult = index;
}
}
//数据类型
if (typ == OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE)
{
}
//数据图类型
if (typ == OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_CHART_TYPE)
{
switch (sel)
{
case 4://三元相图
if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE) && !list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE) && !list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE))
{
list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE);
list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);
list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE);//15
}
else if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE))
{
list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE);//15
}
break;
case 3://颗粒尺寸分布图
if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE))//9
{
list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);
}
if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE))//13
{
list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE);
}
if (list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE))//15
{
list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE);
}
break;
default:
list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);
list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE);//15
break;
}
}
//三元相图模板
if (typ == OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE)
{
}
//颗粒种类
if (typ == OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE)
{
}
//颗粒粒级表
if (typ == OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)
{
m_ReportApp.m_RptConfigFile.PartSizeFile = ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)].itemVal.ToString();
}
//尺寸计算方法
if (typ == OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE)
{
}
//ret.TSampleParam.sSampleTitleName = strlist;
ret.TSampleParam.List_ShowGrid_Items = list_showgrid_item;
ret = FilterData(ret);
return ret;
}
///
/// 按照枚举字符串,过滤Source掉不显示的项
///
///
///
private OTSSampleMeaInfo FilterData(OTSSampleMeaInfo source)
{
OTSSampleMeaInfo ret = new OTSSampleMeaInfo();
ret.TabIndex = source.TabIndex;
//new
List list_shogrid_items = source.TSampleParam.List_ShowGrid_Items;
for (int i = 0; i < source.SampleDataList.Count; i++)
{
if (list_shogrid_items.Contains(source.SampleDataList[i].iItemId))
{
ret.SampleDataList.Add(source.SampleDataList[i]);
}
}
return ret;
}
///
/// 获取sourceGrid数据
///
///
///
public bool GetWorkSamplePropertyVal(ref OTSSampleMeaInfo SMeasureInfo)
{
int tabindex = (int)m_ReportApp.m_PropWindow.tabIndex;
if (m_ReportApp.WorkingResult == -1)
{
return false;
}
if (m_ReportApp.SourceGridData.SampleDataList.Count > 0)
{
OTSSampleMeaInfo a = m_ReportApp.SourceGridData;
//if (a.TSampleParam.sSampleTitleName == null)
//{
// a.TSampleParam.sSampleTitleName = m_ReportApp.SourceGridDataListLog[a.TabIndex].TSampleParam.sSampleTitleName;
//}
//new
if (a.TSampleParam.List_ShowGrid_Items == null)
{
a.TSampleParam.List_ShowGrid_Items = m_ReportApp.SourceGridDataListLog[a.TabIndex].TSampleParam.List_ShowGrid_Items;
}
m_ReportApp.SourceGridDataListLog[a.TabIndex] = a;
OTSSampleMeaInfo b = m_ReportApp.SourceGridDataListLog[tabindex];
SMeasureInfo = FilterData(b);
m_ReportApp.SourceGridData = SMeasureInfo;
}
else
{
OTSSampleMeaInfo data = new OTSSampleMeaInfo();
data.TabIndex = 0;
//data.TSampleParam.sSampleTitleName = ",0,2,3,7,9,10,13,";
data.TSampleParam.List_ShowGrid_Items = new List { OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0
OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2
OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3
OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE,//7
OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE,//9
OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS,//10
OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE};//13
data.SampleDataList = GetSourceGridData(0);
m_ReportApp.SourceGridDataList.Add(data);
m_ReportApp.SourceGridDataListLog.Add(data);
OTSSampleMeaInfo data1 = new OTSSampleMeaInfo();
data1.TabIndex = 1;
//data1.TSampleParam.sSampleTitleName = ",0,1,5,";
data1.TSampleParam.List_ShowGrid_Items = new List { OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0
OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE,//1
OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_TABLE_TYPE};//5
data1.SampleDataList = GetSourceGridData(1);
m_ReportApp.SourceGridDataList.Add(data1);
m_ReportApp.SourceGridDataListLog.Add(data1);
OTSSampleMeaInfo data2 = new OTSSampleMeaInfo();
data2.TabIndex = 2;
//data2.TSampleParam.sSampleTitleName = ",0,1,6,";
data2.TSampleParam.List_ShowGrid_Items = new List { OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0
OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE,//1
OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_CHART_TYPE };
//,//6
//OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE};//13
data2.SampleDataList = GetSourceGridData(2);
m_ReportApp.SourceGridDataList.Add(data2);
m_ReportApp.SourceGridDataListLog.Add(data2);
switch (tabindex)
{
case 0:
SMeasureInfo = FilterData(data);
break;
case 1:
SMeasureInfo = FilterData(data1);
break;
case 2:
SMeasureInfo = FilterData(data2);
break;
}
m_ReportApp.SourceGridData = SMeasureInfo;
}
return true;
}
#endregion
#region [测量结果treeview]相关封装方法
///
/// 获取测量结果treeview树测量结果名
///
///
public string GetSampleName()
{
//获取样品名
String sWorkSampleName = m_ReportApp.resultFilesList[m_ReportApp.WorkingResult].FileName;
if (null == sWorkSampleName)
{
return "";
}
return sWorkSampleName;
}
#endregion
#region 自定义方法相关
///
/// 显示默认图表
///
public void ShowsTheDefaultPic()
{
try
{
if (m_ReportApp.resultFilesList.Count > 0)
{
m_ReportApp.m_PropWindow.m_SampleGrid.ShowDataDiagram((int)m_ReportApp.m_PropWindow.tabIndex);
}
}
catch (Exception ex)
{
//日记记录
string str = ex.ToString();
}
}
#endregion
}
}