| 
					
				 | 
			
			
				@@ -34,6 +34,7 @@ using System.Windows.Controls; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using SciChart.Charting.Model.ChartData;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using MECF.Framework.UI.Client.Converter;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using MECF.Framework.UI.Client.CenterViews.Operations.RealTime;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -109,6 +110,7 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public ObservableCollection<IRenderableSeries> SelectedData { get; set; }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public ObservableCollection<IRenderableSeries> SynSelectedData { get; set; }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public List<ParameterNode> DoubleParameterNodes { get; set; } = new List<ParameterNode>();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public List<ProcessHistoryLot> RecipeDatas { get; set; }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -300,7 +302,12 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             SelectedData = new ObservableCollection<IRenderableSeries>();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             SynSelectedData = new ObservableCollection<IRenderableSeries>();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             VisibleRangeValue = new DoubleRange(0, 10);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DoubleParameterNodes = _realtimeProvider.GetParameters(out dict).ToList();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (int j = 0; j < ParameterNodes.Count; j++)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ParameterNodes[j].IsVisibilityParentNode = Visibility.Hidden;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                DoubleParameterNodes[j].IsVisibilityParentNode = Visibility.Hidden;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // Annotations = new AnnotationCollection();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             _thread = new PeriodicJob(200, MonitorData, "ProcessDetail", true);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -452,11 +459,7 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (_isAdding)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     return true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 bool allUpdated = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                for (int j = 0; j < ParameterNodes.Count; j++)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ParameterNode par = ParameterNodes[j];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    par.IsVisibilityParentNode = Visibility.Hidden;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 lock (_lockSelection)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     foreach (var item in _lstTokenTimeData)
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -505,14 +508,13 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                         maxValue = pointValueList[i];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                averageValue = sumValue / pointValueList.Count;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                averageValue = pointValueList.Count == 0 ? 0 : sumValue / pointValueList.Count;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 for (int i = 0; i < pointValueList.Count; i++)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     stdevValue += Math.Pow(pointValueList[i] - averageValue, 2);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                stdevValue = stdevValue / pointValueList.Count;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                stdevValue = pointValueList.Count == 0 ? 0 : stdevValue / pointValueList.Count;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 sigma3Value = Math.Sqrt(stdevValue) * 3;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -621,34 +623,8 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 try
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    var items = SelectedData.Where(x => (x as ChartDataLine<T>).DataSource == dataSource);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    foreach (var item in items)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        var seriesItem = item as ChartDataLine<T>;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (seriesItem == null)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            continue;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        foreach (var data in historyData)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            var dataKey = _processDetailDisplayDic.ContainsKey(seriesItem.DataName) ? _processDetailDisplayDic[seriesItem.DataName] : seriesItem.DataName;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (data.Key != dataKey)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                continue;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            seriesItem.Capacity += data.Value.Count;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            //DateTime beginTime = StepStartTime;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            for (int i = 0; i < data.Value.Count; i++)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                var historyDataItem = data.Value[i];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if (typeof(T) == typeof(double))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    //xData = Math.Round((historyDataItem.dateTime - beginTime).TotalMilliseconds / 1000, 0, MidpointRounding.AwayFromZero);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    seriesItem.Append((T)Convert.ChangeType((historyDataItem.dateTime - StepStartTime).TotalMilliseconds / 1000d, typeof(T)), historyDataItem.value);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                else
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    seriesItem.Append((T)Convert.ChangeType(historyDataItem.dateTime, typeof(T)), historyDataItem.value);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    FillDataToChart(SelectedData, dataSource, historyData);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    FillDataToChart(SynSelectedData, dataSource, historyData);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     RefresCharView();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 catch (Exception ex)
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -656,6 +632,39 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     LOG.Write(ex);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        void FillDataToChart(ObservableCollection<IRenderableSeries> series, string dataSource, Dictionary<string, List<HistoryDataItem>> historyData)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var items = series.Where(x => (x as ChartDataLine<T>).DataSource == dataSource);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (items == null) return;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            foreach (var item in items)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var seriesItem = item as ChartDataLine<T>;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (seriesItem == null)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    continue;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach (var data in historyData)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var dataKey = _processDetailDisplayDic.ContainsKey(seriesItem.DataName) ? _processDetailDisplayDic[seriesItem.DataName] : seriesItem.DataName;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (data.Key != dataKey)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        continue;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    seriesItem.Capacity += data.Value.Count;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //DateTime beginTime = StepStartTime;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (int i = 0; i < data.Value.Count; i++)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        var historyDataItem = data.Value[i];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (typeof(T) == typeof(double))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            //xData = Math.Round((historyDataItem.dateTime - beginTime).TotalMilliseconds / 1000, 0, MidpointRounding.AwayFromZero);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            seriesItem.Append((T)Convert.ChangeType((historyDataItem.dateTime - StepStartTime).TotalMilliseconds / 1000d, typeof(T)), historyDataItem.value);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        else
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            seriesItem.Append((T)Convert.ChangeType(historyDataItem.dateTime, typeof(T)), historyDataItem.value);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// <summary>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// 获取时间列表
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -699,14 +708,14 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void TxtMouseLeftButtonDown(ParameterNode node)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void TxtMouseLeftButtonDown(ParameterNode node, ObservableCollection<IRenderableSeries> series)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             node.Selected = !node.Selected;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ParameterCheck(node);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ParameterCheck(node, series);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void ParameterCheck(ParameterNode node)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void ParameterCheck(ParameterNode node, ObservableCollection<IRenderableSeries> series)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            bool result = RefreshTreeStatusToChild(node);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bool result = RefreshTreeStatusToChild(node, series);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!result)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 node.Selected = !node.Selected;
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -719,7 +728,7 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// <summary>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// Refresh tree node status from current to children, and add data to SelectedData
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// </summary>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private bool RefreshTreeStatusToChild(ParameterNode node)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private bool RefreshTreeStatusToChild(ParameterNode node, ObservableCollection<IRenderableSeries> SelectedData)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (node?.ChildNodes.Count > 0)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -728,7 +737,7 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     ParameterNode n = node.ChildNodes[i];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     n.Selected = node.Selected;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (!RefreshTreeStatusToChild(n))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!RefreshTreeStatusToChild(n, SelectedData))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         n.Selected = !n.Selected;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         return false;
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -741,17 +750,10 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 try
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var item = SelectedData?.FirstOrDefault(x => (x as ChartDataLine<T>).DataName == node.Name);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (item == null) item = SynSelectedData.FirstOrDefault(x => (x as ChartDataLine<T>).DataName == node.Name);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     bool isExist = item != null;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (isExist && !node.Selected)//删除
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         SelectedData.Remove(item);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        SynSelectedData.Remove(item);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (SynSelectedData.Count == 0 && this.view.syncChart.Visibility == Visibility.Visible)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            this.view.syncChart.Visibility = Visibility.Hidden;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            Grid.SetRowSpan(this.view.sciChart, 2);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     else
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     {
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -858,12 +860,6 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 RefreshTreeStatusToParent(cp.Tag as ParameterNode);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             SelectedData.Clear();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SynSelectedData.Clear();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (this.view.syncChart.Visibility == Visibility.Visible)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                this.view.syncChart.Visibility = Visibility.Hidden;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Grid.SetRowSpan(this.view.sciChart, 2);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private void SetParameterNode(ObservableCollection<ParameterNode> nodes, bool isChecked)
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1237,6 +1233,36 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.view.sciChart.ZoomExtents();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void ArrowClick(string direction)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            switch (direction)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                case "Up":
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (VisibleRangeValue is DoubleRange uprange)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        VisibleRangeValue = new DoubleRange(uprange.Min + YScale, uprange.Max + YScale);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                case "Down":
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (VisibleRangeValue is DoubleRange downrange)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        VisibleRangeValue = new DoubleRange(downrange.Min - YScale, downrange.Max - YScale);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                case "Left":
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (VisibleRangeTime is DoubleRange leftrange)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        VisibleRangeTime = new DoubleRange(leftrange.Min - XScale, leftrange.Max - XScale);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                case "Right":
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (VisibleRangeTime is DoubleRange range)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        VisibleRangeTime = new DoubleRange(range.Min + XScale, range.Max + XScale);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public void BackPan()//前移
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if ((_directionByte & 0x01) == 1)//x
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1374,7 +1400,8 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     allCheckNode.AddRange(GetAllCheckedLeafNode(x));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                allCheckNode.ForEach(x => { ParameterCheck(x); });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                allCheckNode.ForEach(x => { ParameterCheck(x, SelectedData); });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 |