浏览代码

报告程序颗粒尺寸表chart图,增加单颗粒查看

zhangjiaxin 18 小时之前
父节点
当前提交
c4766a3449

+ 225 - 13
OTSIncAReportApp/1-UI/Control_DEVCharts/DEVChart_ParticlesComposition.cs

@@ -299,9 +299,106 @@ namespace OTSIncAReportApp.Control_ECharts
 			}
            
         }
-        #endregion
+		#endregion
+
+		#region echarts
+
+		/// <summary>
+		/// 按照颗粒类别重新显示chart图
+		/// </summary>
+
+		public void DisplayTheChartAgainByParticleCategory(ReportCondition sourceGridData)
+        {
+			string stdId = "";
+			int stdIdIndex = 0;
+			//find the stdId condition
+			var STDIdItm = sourceGridData.ConditionItemList.Find(s => s.iItemId == OTS_REPORT_PROP_GRID_ITEMS.STD_ID);
+			if (STDIdItm != null)
+			{
+				stdId = STDIdItm.itemDisplayVal.ToString();
+				stdIdIndex = STDIdItm.comboDownList.IndexOf(stdId);
+			}
+
+
+
+
+			string sou = "";
+			int sel = 0;//选择颗粒范围(0为全部颗粒1为选择颗粒)
+			if (Report)
+			{
+				sou = m_DataMgr.ResultFilesList[m_DataMgr.GetWorkingResultId()].anotherFileName.ToString();
+				sel = 0;
+			}
+			else
+			{
+				sou = m_conditionChoose.m_conditionData.GetPropItemDisplayValueByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE).ToString();
+				sel = m_ReportApp.m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
+
+			}
+			Report = false;
+
+			if (m_ReportApp.more)
+			{
+				m_ReportApp.trans = false;
+			}
+			else
+			{
+				m_ReportApp.trans = true;
+			}
+			m_ReportApp.more = true;
+			List<DataTable> list_dt = GetListJsonStr();
+
+			bool bl = false;
+			for (int i = 0; i < list_dt.Count; i++)
+			{
+				if (list_dt[i].Rows.Count > 0)
+				{
+					bl = true;
+				}
+			}
+
+			List<DataTable> listDt = new List<DataTable>();
+			for (int i = 0; i < list_dt.Count; i++)
+			{
+				DataTable dt = list_dt[i].Clone();
+				for (int a = 0; a < list_dt[i].Rows.Count; a++)
+				{
+					if (list_dt[i].Rows[a]["name"].ToString() != "")
+					{
+						dt.Rows.Add(list_dt[i].Rows[a].ItemArray);
+					}
+				}
+				listDt.Add(dt);
+			}
+
+			prListData = listDt.Copy();
+			prListString.Clear();
+			for (int i = 0; i < list_dt.Count; i++)
+			{
+				ResultFile resultFile = m_DataMgr.ResultFilesList.Find(s => s.anotherFileName == sou.Split('+')[i]);
+				string str = resultFile.anotherFileName;
+				prListString.Add(str);
+			}
+
+			panel1.Dock = DockStyle.Fill;
+			chartControl1.Dock = DockStyle.Fill;
+			//int sel_pro = m_conditionChoose.m_conditionData.ProItemProIndex();
+			//if (sel_pro == 2)
+			//{
+				comboBox1.Visible = false;
+				Graphics_Stacking(list_dt[0],stdId);
+			//}
+			//else
+			//{
+			//	comboBox1.Visible = true;
+			//	Graphics();
+			//}
+		}
+
+						
+
+
 
-        #region echarts
 
         /// <summary>
         /// 通过m_list_chartstruct,组合json数据格式
@@ -545,27 +642,142 @@ namespace OTSIncAReportApp.Control_ECharts
 
         #endregion
 
-        private void Graphics_Stacking(DataTable dt)
+        private void Graphics_Stacking(DataTable dt,string stdId)
         {
 			chartControl1.Series.Clear();
 
+            DataTable dataTable = new DataTable();
+            dataTable.Columns.Add("name");
+			dataTable.Columns.Add("size");
+
+			if (stdId != "All")
+            {
+				for (int i = 0; i < dt.Rows.Count; i++)
+				{
+					if (dt.Rows[i]["name"].ToString() == stdId)
+					{
+                        for (int a = 7; a < dt.Columns.Count; a++)
+                        {
+							DataRow dr = dataTable.NewRow();
+                            dr["name"] = dt.Columns[a].ColumnName;
+                            dr["size"] = Convert.ToInt16(dt.Rows[i][a]);
+							dataTable.Rows.Add(dr);
+						}
+					}
+				}
+			}
+            
+            if (stdId == "All")
+            {
+                List<Series> seriesList = new List<Series>();
+
+                DataTable data = new DataTable();
+                data.Columns.Add("name");
+                data.Columns.Add("range");
+                data.Columns.Add("num");
+                for (int i = 0; i < dt.Rows.Count; i++)
+                {
+                    for (int a = 7; a < dt.Columns.Count; a++)
+                    {
+                        DataRow dr = data.NewRow();
+                        dr["name"] = dt.Rows[i]["name"].ToString();
+                        dr["range"] = dt.Columns[a].ColumnName;
+                        dr["num"] = dt.Rows[i][a].ToString();
+                        data.Rows.Add(dr);
+                    }
+                }
+
+
+                foreach (DataRow dr in data.DefaultView.ToTable(true, "name").Rows)
+                {
+                    Series s = new Series(dr["name"].ToString(), ViewType.StackedBar)
+                    {
+                        LegendTextPattern = dr["name"].ToString(),
+                        ArgumentScaleType = ScaleType.Qualitative,
+                    };
+                    foreach (DataRow drl in data.Select("name='" + dr["name"].ToString() + "'"))
+                        s.Points.Add(new SeriesPoint(drl["range"].ToString(), int.Parse(drl["num"].ToString())));
+                    s.LabelsVisibility = DefaultBoolean.False;
+                    seriesList.Add(s);
+                }
+
+                foreach (DataRow dr in data.DefaultView.ToTable(true, "name").Rows)
+                {
+                    Series s = new Series(dr["name"].ToString(), ViewType.StackedBar)
+                    {
+                        LegendTextPattern = dr["name"].ToString(),
+                        ArgumentScaleType = ScaleType.Qualitative,
+                    };
+                    foreach (DataRow drl in data.Select("name='" + dr["name"].ToString() + "'"))
+                        s.Points.Add(new SeriesPoint(drl["range"].ToString(), int.Parse(drl["num"].ToString())));
+                    s.LabelsVisibility = DefaultBoolean.False;
+                    seriesList.Add(s);
+                }
+                foreach (Series sr in seriesList.ToArray())
+                    chartControl1.Series.Add(sr);
+            }
+            else 
+            {
+				
+					
+
+					// 假设你已经有一个 ChartControl 实例,并且已经添加了一个饼图 Series
+					Series series = new Series(stdId, ViewType.Bar);
+
+					for (int a = 0; a < dataTable.Rows.Count; a++)
+					{
+						string name = dataTable.Rows[a]["name"].ToString();
+						double Cunt = Convert.ToDouble(dataTable.Rows[a]["size"]);
+						series.Points.Add(new SeriesPoint(name, Cunt));
+					}
+					series.LabelsVisibility = DefaultBoolean.True;
+					chartControl1.Series.Add(series);
+
+				
+			}
+
+
+                ((XYDiagram)chartControl1.Diagram).AxisY.Title.Text = "";
+			((XYDiagram)chartControl1.Diagram).AxisX.Title.Text = "";
+			((XYDiagram)chartControl1.Diagram).AxisY.Title.Visibility = DefaultBoolean.True;
+			((XYDiagram)chartControl1.Diagram).AxisX.Title.Visibility = DefaultBoolean.True;
+			((XYDiagram)chartControl1.Diagram).AxisY.Title.Font = new Font("Tahoma", 9);
+			((XYDiagram)chartControl1.Diagram).AxisX.Title.Font = new Font("Tahoma", 9);
+			((XYDiagram)chartControl1.Diagram).AxisY.Title.Alignment = System.Drawing.StringAlignment.Far;
+			((XYDiagram)chartControl1.Diagram).AxisX.Title.Alignment = System.Drawing.StringAlignment.Far;
+
+			//图例的位置定义
+			chartControl1.Legend.AlignmentVertical = LegendAlignmentVertical.Top;
+			chartControl1.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.RightOutside;
+			chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
+			chartControl1.Legend.Direction = LegendDirection.TopToBottom;
+
+			//十字准线光标
+			chartControl1.CrosshairEnabled = DefaultBoolean.True;
+			chartControl1.CrosshairOptions.ShowValueLine = true;
+			chartControl1.CrosshairOptions.ShowArgumentLabels = true;
+		}
+		private void Graphics_Stacking(DataTable dt)
+		{
+			chartControl1.Series.Clear();
+
 			List<Series> seriesList = new List<Series>();
 
-            DataTable data = new DataTable();
-            data.Columns.Add("name");
+			DataTable data = new DataTable();
+			data.Columns.Add("name");
 			data.Columns.Add("range");
 			data.Columns.Add("num");
 			for (int i = 0; i < dt.Rows.Count; i++)
-            {
-                for (int a = 7; a < dt.Columns.Count; a++)
-                {
+			{
+				for (int a = 7; a < dt.Columns.Count; a++)
+				{
 					DataRow dr = data.NewRow();
-                    dr["name"] = dt.Rows[i]["name"].ToString();
-                    dr["range"] = dt.Columns[a].ColumnName;
-                    dr["num"] = dt.Rows[i][a].ToString();
-                    data.Rows.Add(dr);
+					dr["name"] = dt.Rows[i]["name"].ToString();
+					dr["range"] = dt.Columns[a].ColumnName;
+					dr["num"] = dt.Rows[i][a].ToString();
+					data.Rows.Add(dr);
 				}
-            }
+			}
 
 
 			foreach (DataRow dr in data.DefaultView.ToTable(true, "name").Rows)

+ 9 - 4
OTSIncAReportApp/1-UI/OTSDisplaySourceGridData/frmReportConditionChoose.cs

@@ -569,12 +569,15 @@ namespace OTSIncAReportApp
                     list.Add(sampleData_partsizefile);
 
                     //尺寸计算方法
-
-
                     var sampleData5 = m_CurrentConditions[OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE];
                     list.Add(sampleData5);
 
-
+                    if ((int)sampleData3.iItemId == (int)OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_CHART_TYPE)
+                    {
+						//all particle types
+						var stditm = m_CurrentConditions[OTS_REPORT_PROP_GRID_ITEMS.STD_ID];
+						list.Add(stditm);
+					}
                 }
                 else if ((int)sampleData3.itemVal == (int)CALCULATE_CHART_TYPE.TRIO_CHART)
                 {
@@ -1026,7 +1029,9 @@ namespace OTSIncAReportApp
                             m_ReportApp.type = "pie";
                             m_ReportApp.m_ChartsWindow.Controls.Add(m_ReportApp.im_EChart_ParticlesComposition);
                             m_ReportApp.m_ChartsWindow.Activate();
-                            break;
+
+							m_ReportApp.im_EChart_ParticlesComposition.DisplayTheChartAgainByParticleCategory(m_conditionData);
+							break;
                         case CALCULATE_CHART_TYPE.TRIO_CHART:
 
                             int index = prop.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE);